diff options
author | Aaron Plattner <aplattner@nvidia.com> | 2008-04-10 13:54:30 -0700 |
---|---|---|
committer | Aaron Plattner <aplattner@nvidia.com> | 2008-04-10 13:54:30 -0700 |
commit | e595fe4cfdc12c8e6eaea71c11f79addecd97ecc (patch) | |
tree | d1e0865fa365a2023824234c9a693ef22e3ccdd7 | |
parent | b27db3d10d58b821e87fbe3f46166e02dc589855 (diff) |
173.08173.08
57 files changed, 9076 insertions, 7390 deletions
@@ -121,6 +121,7 @@ GTK_LDFLAGS := $(shell $(PKG_CONFIG) --libs gtk+-2.0) X11_LIBS := $(X11_LIB_DIRS) -Wl,-Bstatic -lXxf86vm -Wl,-Bdynamic -lX11 -lXext XNVCTRL_LIB := src/libXNVCtrl/libXNVCtrl.a +XNVCTRL_DIR := src/libXNVCtrl XF86PARSER_LIB := src/XF86Config-parser/libXF86Config-parser.a XF86PARSER_DIR := src/XF86Config-parser @@ -234,12 +235,15 @@ $(STAMP_C): $(filter-out $(OBJS_DIR)/$(STAMP_C:.c=.o), $(OBJS)) $(XF86PARSER_LIB): $(MAKE) NV_CFLAGS='$(NV_CFLAGS)' -C $(XF86PARSER_DIR) +$(XNVCTRL_LIB): + $(MAKE) CFLAGS='$(ALL_CFLAGS)' LDFLAGS='$(ALL_LDFLAGS)' -C $(XNVCTRL_DIR) + $(NVIDIA_SETTINGS): $(OBJS) $(XNVCTRL_LIB) $(XF86PARSER_LIB) $(CC) $(OBJS) $(ALL_CFLAGS) $(ALL_LDFLAGS) $(XNVCTRL_LIB) $(XF86PARSER_LIB) -o $@ .PHONY: $(XF86PARSER_LIB) dist clean clobber -dist: +dist: $(XNVCTRL_LIB) @ if [ -d $(NVIDIA_SETTINGS_DISTDIR) ]; then \ chmod 755 $(NVIDIA_SETTINGS_DISTDIR); \ fi @@ -262,7 +266,7 @@ dist: rm -rf $(NVIDIA_SETTINGS_DISTDIR) clean clobber: - rm -rf $(OBJS_DIR) $(DEPS_DIR) $(STAMP_C) $(NVIDIA_SETTINGS) + rm -rf $(OBJS_DIR) $(DEPS_DIR) $(STAMP_C) $(NVIDIA_SETTINGS) $(XNVCTRL_LIB) find . -name "*~" -exec rm -f \{\} \; -include $(DEPS) diff --git a/samples/nv-control-events.c b/samples/nv-control-events.c index 1f40fed..cfcc3e1 100644 --- a/samples/nv-control-events.c +++ b/samples/nv-control-events.c @@ -42,7 +42,7 @@ int main(void) Display *dpy; Bool ret; int event_base, error_base; - int num_screens, num_gpus, num_framelocks, num_vcscs, i; + int num_screens, num_gpus, num_framelocks, num_vcs, i; int sources; XEvent event; XNVCtrlAttributeChangedEvent *nvevent; @@ -101,13 +101,13 @@ int main(void) return 1; } - /* Query number of VCSC (Visual Computing System Controllers) devices */ + /* Query number of VCS (Visual Computing System) devices */ ret = XNVCTRLQueryTargetCount(dpy, NV_CTRL_TARGET_TYPE_VCSC, - &num_vcscs); + &num_vcs); if (ret != True) { fprintf(stderr, "Failed to query the number of Visual Computing " - "System Controllers devices on '%s'.\n", + "System devices on '%s'.\n", XDisplayName(NULL)); return 1; } @@ -228,21 +228,21 @@ int main(void) sources++; } - /* Register to receive on all VCSC targets */ + /* Register to receive on all VCS targets */ - for (i = 0; i < num_vcscs; i++ ) { + for (i = 0; i < num_vcs; i++ ) { ret = XNVCtrlSelectTargetNotify(dpy, NV_CTRL_TARGET_TYPE_VCSC, i, TARGET_ATTRIBUTE_CHANGED_EVENT, True); if (ret != True) { - printf("- Unable to register to receive NV-CONTROL VCSC " - "target events for VCSC %d on '%s'.\n", + printf("- Unable to register to receive NV-CONTROL VCS " + "target events for VCS %d on '%s'.\n", i, XDisplayName(NULL)); continue; } - printf("+ Listening to TARGET_ATTRIBUTE_CHANGE_EVENTs on VCSC " + printf("+ Listening to TARGET_ATTRIBUTE_CHANGE_EVENTs on VCS " "%d.\n", i); sources++; } @@ -321,7 +321,7 @@ static const char *target2str(int n) case NV_CTRL_TARGET_TYPE_X_SCREEN: return "X Screen"; break; case NV_CTRL_TARGET_TYPE_GPU: return "GPU"; break; case NV_CTRL_TARGET_TYPE_FRAMELOCK: return "Frame Lock"; break; - case NV_CTRL_TARGET_TYPE_VCSC: return "VCSC"; break; + case NV_CTRL_TARGET_TYPE_VCSC: return "VCS"; break; default: return "Unknown"; } @@ -360,7 +360,6 @@ static const char *attr2str(int n) case NV_CTRL_FRAMELOCK_TEST_SIGNAL: return "frame lock test signal"; break; case NV_CTRL_FRAMELOCK_ETHERNET_DETECTED: return "frame lock ethernet detected"; break; case NV_CTRL_FRAMELOCK_VIDEO_MODE: return "frame lock video mode"; break; - case NV_CTRL_FORCE_GENERIC_CPU: return "force generic cpu"; break; case NV_CTRL_OPENGL_AA_LINE_GAMMA: return "opengl aa line gamma"; break; case NV_CTRL_FLIPPING_ALLOWED: return "flipping allowed"; break; case NV_CTRL_TEXTURE_CLAMPING: return "texture clamping"; break; diff --git a/samples/nv-control-targets.c b/samples/nv-control-targets.c index 9866df3..89952cf 100644 --- a/samples/nv-control-targets.c +++ b/samples/nv-control-targets.c @@ -89,7 +89,7 @@ int main(int argc, char *argv[]) int major, minor; int num_gpus, num_screens, num_gsyncs; - int num_vcscs; + int num_vcs; int gpu, screen; int display_devices, mask; int *pData; @@ -172,18 +172,18 @@ int main(int argc, char *argv[]) printf(" number of Frame Lock Devices: %d\n", num_gsyncs); - /* Get the number of Visual Computing System Controller devices in + /* Get the number of Visual Computing System devices in * the system */ ret = XNVCTRLQueryTargetCount(dpy, NV_CTRL_TARGET_TYPE_VCSC, - &num_vcscs); + &num_vcs); if (!ret) { - fprintf(stderr, "Failed to query number of VCSCs\n"); + fprintf(stderr, "Failed to query number of VCS\n"); return 1; } - printf(" number of Visual Computing System Controllers: %d\n", - num_vcscs); + printf(" number of Visual Computing System Devices: %d\n", + num_vcs); /* display information about all GPUs */ diff --git a/src/gtk+-2.x/Makefile.inc b/src/gtk+-2.x/Makefile.inc index 5f7bd6d..7802fac 100644 --- a/src/gtk+-2.x/Makefile.inc +++ b/src/gtk+-2.x/Makefile.inc @@ -61,8 +61,10 @@ SRC += \ ctkscreen.c \ ctkgpu.c \ ctkbanner.c \ - ctkvcsc.c \ + ctkvcs.c \ ctkdisplayconfig-utils.c \ + ctkgvo-banner.c \ + ctkgvo-sync.c \ ctkpowersavings.c @@ -104,8 +106,11 @@ EXTRA_DIST += \ ctkscreen.h \ ctkgpu.h \ ctkbanner.h \ - ctkvcsc.h \ + ctkvcs.h \ ctkdisplayconfig-utils.h \ + ctkpowersavings.h \ + ctkgvo-banner.h \ + ctkgvo-sync.h \ ctkpowersavings.h dist_list:: diff --git a/src/gtk+-2.x/ctkbanner.c b/src/gtk+-2.x/ctkbanner.c index adbe679..d8361f7 100644 --- a/src/gtk+-2.x/ctkbanner.c +++ b/src/gtk+-2.x/ctkbanner.c @@ -56,10 +56,11 @@ #include "penguin_pixdata.h" #include "rotation_pixdata.h" #include "sdi_pixdata.h" +#include "sdi_shared_sync_bnc_pixdata.h" #include "solaris_pixdata.h" #include "thermal_pixdata.h" #include "tv_pixdata.h" -#include "vcsc_pixdata.h" +#include "vcs_pixdata.h" #include "x_pixdata.h" #include "xvideo_pixdata.h" @@ -370,10 +371,11 @@ static gboolean select_artwork(BannerArtworkType artwork, { BANNER_ARTWORK_PENGUIN, TRUE, 16, &penguin_pixdata }, { BANNER_ARTWORK_ROTATION, FALSE, 16, &rotation_pixdata }, { BANNER_ARTWORK_SDI, FALSE, 16, &sdi_pixdata }, + { BANNER_ARTWORK_SDI_SHARED_SYNC_BNC, FALSE, 16, &sdi_shared_sync_bnc_pixdata }, { BANNER_ARTWORK_SOLARIS, TRUE, 16, &solaris_pixdata }, { BANNER_ARTWORK_THERMAL, FALSE, 16, &thermal_pixdata }, { BANNER_ARTWORK_TV, FALSE, 16, &tv_pixdata }, - { BANNER_ARTWORK_VCSC, FALSE, 16, &vcsc_pixdata }, + { BANNER_ARTWORK_VCS, FALSE, 16, &vcs_pixdata }, { BANNER_ARTWORK_X, FALSE, 16, &x_pixdata }, { BANNER_ARTWORK_XVIDEO, FALSE, 16, &xvideo_pixdata }, { BANNER_ARTWORK_INVALID, FALSE, 16, NULL }, diff --git a/src/gtk+-2.x/ctkdisplayconfig.c b/src/gtk+-2.x/ctkdisplayconfig.c index 9206323..e52e8c4 100644 --- a/src/gtk+-2.x/ctkdisplayconfig.c +++ b/src/gtk+-2.x/ctkdisplayconfig.c @@ -120,6 +120,7 @@ static void update_banner(XConfigPtr config); #define GTK_RESPONSE_USER_DISPLAY_ENABLE_TWINVIEW 1 #define GTK_RESPONSE_USER_DISPLAY_ENABLE_XSCREEN 2 +#define MIN_LAYOUT_SCREENSIZE 600 typedef struct SwitchModeCallbackInfoRec { CtkDisplayConfig *ctk_object; int screen; @@ -149,6 +150,9 @@ static int __position_table[] = { CONF_ADJ_ABSOLUTE, /* Layout tooltips */ +static const char * __layout_hidden_label_help = +"To select a display, use the \"Model\" dropdown menu."; + static const char * __layout_xinerama_button_help = "The Enable Xinerama checkbox enables the Xinerama X extension; changing " "this option will require restarting your X server."; @@ -233,9 +237,9 @@ static const char * __screen_metamode_delete_button_help = static const char * __apply_button_help = "The Apply button allows you to apply changes made to the server layout."; -static const char * __probe_button_help = -"The probe button allows you to probe for new display devices that may " -"have been hotplugged."; +static const char * __detect_displays_button_help = +"The Detect Displays button allows you to probe for new display devices " +"that may have been hotplugged."; static const char * __advanced_button_help = "The Advanced/Basic button toggles between a basic view, and an advanced view " @@ -893,6 +897,30 @@ static void screen_primary_display_toggled(GtkWidget *widget, +/** screen_size_changed() ***************************************** + * + * Hides layout widget. + * + **/ + +static void screen_size_changed(GdkScreen *screen, + gpointer user_data) +{ + CtkDisplayConfig *ctk_object = CTK_DISPLAY_CONFIG(user_data); + gint h = gdk_screen_get_height(screen); + + if ( h < MIN_LAYOUT_SCREENSIZE ) { + gtk_widget_hide_all(ctk_object->obj_layout); + gtk_widget_show(ctk_object->label_layout); + return; + } + + gtk_widget_hide(ctk_object->label_layout); + gtk_widget_show_all(ctk_object->obj_layout); +} /* screen_size_changed() */ + + + /** ctk_display_config_new() ***************************************** * * Display Configuration widget creation. @@ -911,8 +939,9 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle, GtkWidget *hbox; GtkWidget *hbox2; GtkWidget *vbox; + GdkScreen *screen; GtkWidget *label; - + GtkWidget *eventbox; GtkRequisition req; @@ -920,7 +949,7 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle, GtkWidget *menu_item; gchar *err_str = NULL; - + gchar *layout_str = NULL; /* * Create the ctk object @@ -1001,6 +1030,19 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle, * */ + /* Create label to replace layout widget */ + + eventbox = gtk_event_box_new(); + layout_str = g_strdup_printf("(hidden because screen height is less than %d pixels)", MIN_LAYOUT_SCREENSIZE); + ctk_object->label_layout = gtk_label_new(layout_str); + gtk_container_add(GTK_CONTAINER(eventbox), ctk_object->label_layout); + ctk_config_set_tooltip(ctk_config, eventbox, __layout_hidden_label_help); + g_free(layout_str); + screen = gtk_widget_get_screen(GTK_WIDGET(ctk_object)); + g_signal_connect(G_OBJECT(screen), "size-changed", + G_CALLBACK(screen_size_changed), + (gpointer) ctk_object); + /* Xinerama button */ ctk_object->chk_xinerama_enabled = @@ -1342,7 +1384,7 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle, /* Probe button */ ctk_object->btn_probe = gtk_button_new_with_label("Detect Displays"); ctk_config_set_tooltip(ctk_config, ctk_object->btn_probe, - __probe_button_help); + __detect_displays_button_help); g_signal_connect(G_OBJECT(ctk_object->btn_probe), "clicked", G_CALLBACK(probe_clicked), (gpointer) ctk_object); @@ -1385,23 +1427,16 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle, { /* Layout section */ - frame = gtk_frame_new("Layout"); - hbox = gtk_hbox_new(TRUE, 5); /* main panel */ - vbox = gtk_vbox_new(TRUE, 5); /* layout panel */ - gtk_box_pack_start(GTK_BOX(ctk_object), hbox, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 5); - gtk_widget_set_size_request(frame, -1, 200); - - hbox = gtk_hbox_new(FALSE, 5); /* layout panel */ - gtk_container_set_border_width(GTK_CONTAINER(hbox), 5); + frame = gtk_frame_new("Layout"); /* main panel */ + gtk_box_pack_start(GTK_BOX(ctk_object), frame, FALSE, FALSE, 0); vbox = gtk_vbox_new(FALSE, 5); - gtk_container_add(GTK_CONTAINER(frame), hbox); - gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 5); + gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); + gtk_container_add(GTK_CONTAINER(frame), vbox); /* Pack the layout widget */ gtk_box_pack_start(GTK_BOX(vbox), ctk_object->obj_layout, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(vbox), eventbox, TRUE, TRUE, 0); /* Xinerama checkbox */ gtk_box_pack_start(GTK_BOX(vbox), ctk_object->chk_xinerama_enabled, @@ -1771,6 +1806,8 @@ GtkTextBuffer *ctk_display_config_create_help(GtkTextTagTable *table, "You may drag display devices around to reposition them. " "When in advanced view, the display's panning domain may " "be resized by holding shift while dragging."); + ctk_help_heading(b, &i, "Layout Hidden Label"); + ctk_help_para(b, &i, __layout_hidden_label_help); ctk_help_heading(b, &i, "Enable Xinerama"); ctk_help_para(b, &i, "%s. This setting is only available when multiple " "X screens are present.", __layout_xinerama_button_help); @@ -1829,10 +1866,15 @@ GtkTextBuffer *ctk_display_config_create_help(GtkTextTagTable *table, ctk_help_para(b, &i, ""); ctk_help_heading(b, &i, "Buttons"); - ctk_help_heading(b, &i, "Probe"); - ctk_help_para(b, &i, __apply_button_help); + ctk_help_heading(b, &i, "Apply"); + ctk_help_para(b, &i, "%s Note that not all settings can be applied to an " + "active X server; these require restarting the X server " + "after saving the desired settings to the X configuration " + "file. Examples of such settings include changing the " + "position of any X screen, adding/removing an X screen, and " + "changing the X screen color depth.", __apply_button_help); ctk_help_heading(b, &i, "Detect Displays"); - ctk_help_para(b, &i, __probe_button_help); + ctk_help_para(b, &i, __detect_displays_button_help); ctk_help_heading(b, &i, "Advanced/Basic..."); ctk_help_para(b, &i, "%s. The Basic view modifies the currently active " "MetaMode for an X screen, while the Advanced view exposes " @@ -1865,7 +1907,15 @@ static void setup_layout_frame(CtkDisplayConfig *ctk_object) nvLayoutPtr layout = ctk_object->layout; nvGpuPtr gpu; int num_screens; + GdkScreen *s; + /* + * Hide/Shows the layout widget based on the current screen size. + * If the screen is too small, the layout widget is hidden and a + * message is shown instead. + */ + s = gtk_widget_get_screen(GTK_WIDGET(ctk_object)); + screen_size_changed(s, ctk_object); /* Only allow Xinerama when there are multiple X screens */ num_screens = 0; @@ -6152,6 +6202,10 @@ static void apply_clicked(GtkWidget *widget, gpointer user_data) nv_error_msg("Failed to set primary display" "for screen %d (GPU:%s)", screen->scrnum, screen->gpu->name); + } else { + /* Make sure other parts of nvidia-settings get updated */ + ctk_event_emit_string(screen->ctk_event, 0, + NV_CTRL_STRING_TWINVIEW_XINERAMA_INFO_ORDER); } } } diff --git a/src/gtk+-2.x/ctkdisplayconfig.h b/src/gtk+-2.x/ctkdisplayconfig.h index 0921447..3a8348d 100644 --- a/src/gtk+-2.x/ctkdisplayconfig.h +++ b/src/gtk+-2.x/ctkdisplayconfig.h @@ -64,13 +64,13 @@ typedef struct _CtkDisplayConfig /* Layout */ nvLayoutPtr layout; GtkWidget *obj_layout; + GtkWidget *label_layout; GtkWidget *chk_xinerama_enabled; GtkWidget *chk_primary_display; GtkWidget *notebook; /* Tabbed notebook for display and X screen pages */ - /* Display - Info */ GtkWidget *display_page; diff --git a/src/gtk+-2.x/ctkdropdownmenu.c b/src/gtk+-2.x/ctkdropdownmenu.c index db46ef9..3fea606 100644 --- a/src/gtk+-2.x/ctkdropdownmenu.c +++ b/src/gtk+-2.x/ctkdropdownmenu.c @@ -147,6 +147,23 @@ GtkWidget* ctk_drop_down_menu_new(guint flags) /* + * ctk_drop_down_menu_reset() - Clears the internal menu + */ + +void ctk_drop_down_menu_reset(CtkDropDownMenu *d) +{ + g_free(d->values); + d->values = NULL; + + d->num_entries = 0; + + d->menu = gtk_menu_new(); + +} /* ctk_drop_down_menu_reset() */ + + + +/* * ctk_drop_down_menu_append_item() - add a new entry to the drop down * menu */ diff --git a/src/gtk+-2.x/ctkdropdownmenu.h b/src/gtk+-2.x/ctkdropdownmenu.h index 6d3fa19..b1ee87d 100644 --- a/src/gtk+-2.x/ctkdropdownmenu.h +++ b/src/gtk+-2.x/ctkdropdownmenu.h @@ -95,6 +95,9 @@ void ctk_drop_down_menu_set_current_value (CtkDropDownMenu *d, void ctk_drop_down_menu_set_value_sensitive (CtkDropDownMenu *d, gint value, gboolean sensitive); +void ctk_drop_down_menu_reset (CtkDropDownMenu *d); + + G_END_DECLS diff --git a/src/gtk+-2.x/ctkevent.c b/src/gtk+-2.x/ctkevent.c index fb0483b..10ecf7d 100644 --- a/src/gtk+-2.x/ctkevent.c +++ b/src/gtk+-2.x/ctkevent.c @@ -40,6 +40,7 @@ #include "ctkevent.h" #include "NVCtrlLib.h" +#include "msg.h" static void ctk_event_class_init(CtkEventClass *ctk_event_class); @@ -69,6 +70,7 @@ typedef struct __CtkEventSourceRec { } CtkEventSource; +static guint string_signals[NV_CTRL_STRING_LAST_ATTRIBUTE + 1]; static guint signals[NV_CTRL_LAST_ATTRIBUTE + 1]; static guint signal_RRScreenChangeNotify; @@ -155,7 +157,6 @@ static void ctk_event_class_init(CtkEventClass *ctk_event_class) MAKE_SIGNAL(NV_CTRL_FRAMELOCK_ETHERNET_DETECTED); MAKE_SIGNAL(NV_CTRL_FRAMELOCK_VIDEO_MODE); MAKE_SIGNAL(NV_CTRL_FRAMELOCK_SYNC_RATE); - MAKE_SIGNAL(NV_CTRL_FORCE_GENERIC_CPU); MAKE_SIGNAL(NV_CTRL_OPENGL_AA_LINE_GAMMA); MAKE_SIGNAL(NV_CTRL_FLIPPING_ALLOWED); MAKE_SIGNAL(NV_CTRL_FORCE_STEREO); @@ -244,7 +245,14 @@ static void ctk_event_class_init(CtkEventClass *ctk_event_class) MAKE_SIGNAL(NV_CTRL_FRAMELOCK_SYNC_RATE_4); MAKE_SIGNAL(NV_CTRL_GVO_LOCK_OWNER); MAKE_SIGNAL(NV_CTRL_NUM_GPU_ERRORS_RECOVERED); + MAKE_SIGNAL(NV_CTRL_REFRESH_RATE_3); + MAKE_SIGNAL(NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED); + MAKE_SIGNAL(NV_CTRL_GVO_SYNC_LOCK_STATUS); + MAKE_SIGNAL(NV_CTRL_GVO_ANC_TIME_CODE_GENERATION); MAKE_SIGNAL(NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS); + MAKE_SIGNAL(NV_CTRL_GVO_COMPOSITE); + MAKE_SIGNAL(NV_CTRL_GVO_COMPOSITE_ALPHA_KEY); + MAKE_SIGNAL(NV_CTRL_GVO_COMPOSITE_NUM_KEY_RANGES); MAKE_SIGNAL(NV_CTRL_NOTEBOOK_DISPLAY_CHANGE_LID_EVENT); #undef MAKE_SIGNAL @@ -260,6 +268,50 @@ static void ctk_event_class_init(CtkEventClass *ctk_event_class) #warning "There are attributes that do not emit signals!" #endif + /* make signals for string attribute */ + for (i = 0; i <= NV_CTRL_STRING_LAST_ATTRIBUTE; i++) string_signals[i] = 0; + +#define MAKE_STRING_SIGNAL(x) \ + string_signals[x] = g_signal_new(("CTK_EVENT_" #x), \ + G_OBJECT_CLASS_TYPE(ctk_event_class), \ + G_SIGNAL_RUN_LAST, 0, NULL, NULL, \ + g_cclosure_marshal_VOID__POINTER, \ + G_TYPE_NONE, 1, G_TYPE_POINTER); + + MAKE_STRING_SIGNAL(NV_CTRL_STRING_PRODUCT_NAME); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_VBIOS_VERSION); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_NVIDIA_DRIVER_VERSION); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_DISPLAY_DEVICE_NAME); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_TV_ENCODER_NAME); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_DDCCI_MISC_TRANSMIT_DISPLAY_DESCRIPTOR); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_DDCCI_MISC_AUXILIARY_DISPLAY_DATA); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_GVO_FIRMWARE_VERSION); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_CURRENT_MODELINE); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_ADD_MODELINE); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_DELETE_MODELINE); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_CURRENT_METAMODE); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_ADD_METAMODE); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_DELETE_METAMODE); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_VCSC_PRODUCT_NAME); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_VCSC_PRODUCT_ID); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_VCSC_SERIAL_NUMBER); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_VCSC_BUILD_DATE); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_VCSC_FIRMWARE_VERSION); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_VCSC_FIRMWARE_REVISION); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_VCSC_HARDWARE_VERSION); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_VCSC_HARDWARE_REVISION); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_MOVE_METAMODE); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_VALID_HORIZ_SYNC_RANGES); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_VALID_VERT_REFRESH_RANGES); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_XINERAMA_SCREEN_INFO); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_TWINVIEW_XINERAMA_INFO_ORDER); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_SLI_MODE); + MAKE_STRING_SIGNAL(NV_CTRL_STRING_PERFORMANCE_MODES); +#undef MAKE_STRING_SIGNAL + +#if NV_CTRL_STRING_LAST_ATTRIBUTE != NV_CTRL_STRING_PERFORMANCE_MODES +#warning "There are attributes that do not emit signals!" +#endif /* Make XRandR signal */ signal_RRScreenChangeNotify = @@ -470,7 +522,9 @@ static gboolean ctk_event_dispatch(GSource *source, * Handle the ATTRIBUTE_CHANGED_EVENT NV-CONTROL event */ - if (event.type == (event_source->event_base + ATTRIBUTE_CHANGED_EVENT)) { + if (event_source->event_base != -1 && + (event.type == (event_source->event_base + ATTRIBUTE_CHANGED_EVENT))) { + XNVCtrlAttributeChangedEvent *nvctrlevent = (XNVCtrlAttributeChangedEvent *) &event; @@ -483,6 +537,7 @@ static gboolean ctk_event_dispatch(GSource *source, event_struct.attribute = nvctrlevent->attribute; event_struct.value = nvctrlevent->value; event_struct.display_mask = nvctrlevent->display_mask; + event_struct.availability = TRUE; /* * XXX Is emitting a signal with g_signal_emit() really @@ -495,14 +550,15 @@ static gboolean ctk_event_dispatch(GSource *source, NV_CTRL_TARGET_TYPE_X_SCREEN, nvctrlevent->screen); } - } /* * Handle the TARGET_ATTRIBUTE_CHANGED_EVENT NV-CONTROL event */ - if (event.type == (event_source->event_base - +TARGET_ATTRIBUTE_CHANGED_EVENT)) { + } else if (event_source->event_base != -1 && + (event.type == (event_source->event_base + +TARGET_ATTRIBUTE_CHANGED_EVENT))) { + XNVCtrlAttributeChangedEventTarget *nvctrlevent = (XNVCtrlAttributeChangedEventTarget *) &event; @@ -515,7 +571,43 @@ static gboolean ctk_event_dispatch(GSource *source, event_struct.attribute = nvctrlevent->attribute; event_struct.value = nvctrlevent->value; event_struct.display_mask = nvctrlevent->display_mask; + event_struct.availability = TRUE; + + /* + * XXX Is emitting a signal with g_signal_emit() really + * the "correct" way of dispatching the event? + */ + CTK_EVENT_BROADCAST(event_source, + signals[nvctrlevent->attribute], + &event_struct, + nvctrlevent->target_type, + nvctrlevent->target_id); + } + + /* + * Handle the TARGET_ATTRIBUTE_AVAILABILITY_CHANGED_EVENT + * NV-CONTROL event. + */ + + } else if (event_source->event_base != -1 && + (event.type == (event_source->event_base + + TARGET_ATTRIBUTE_AVAILABILITY_CHANGED_EVENT))) { + + XNVCtrlAttributeChangedEventTargetAvailability *nvctrlevent = + (XNVCtrlAttributeChangedEventTargetAvailability *) &event; + + /* make sure the attribute is in our signal array */ + + if ((nvctrlevent->attribute >= 0) && + (nvctrlevent->attribute <= NV_CTRL_LAST_ATTRIBUTE) && + (signals[nvctrlevent->attribute] != 0)) { + + event_struct.attribute = nvctrlevent->attribute; + event_struct.value = nvctrlevent->value; + event_struct.display_mask = nvctrlevent->display_mask; + event_struct.availability = nvctrlevent->availability; + /* * XXX Is emitting a signal with g_signal_emit() really * the "correct" way of dispatching the event? @@ -527,14 +619,46 @@ static gboolean ctk_event_dispatch(GSource *source, nvctrlevent->target_type, nvctrlevent->target_id); } - } + /* + * Handle the TARGET_STRING_ATTRIBUTE_CHANGED_EVENT + * NV-CONTROL event. + */ + } else if (event_source->event_base != -1 && + (event.type == (event_source->event_base + + TARGET_STRING_ATTRIBUTE_CHANGED_EVENT))) { + XNVCtrlStringAttributeChangedEventTarget *nvctrlevent = + (XNVCtrlStringAttributeChangedEventTarget *) &event; + + /* make sure the attribute is in our signal array */ + + if ((nvctrlevent->attribute >= 0) && + (nvctrlevent->attribute <= NV_CTRL_STRING_LAST_ATTRIBUTE) && + (string_signals[nvctrlevent->attribute] != 0)) { + + event_struct.attribute = nvctrlevent->attribute; + event_struct.value = 0; + event_struct.display_mask = nvctrlevent->display_mask; + event_struct.availability = TRUE; + /* + * XXX Is emitting a signal with g_signal_emit() really + * the "correct" way of dispatching the event? + */ + + CTK_EVENT_BROADCAST(event_source, + string_signals[nvctrlevent->attribute], + &event_struct, + nvctrlevent->target_type, + nvctrlevent->target_id); + } /* * Also handle XRandR events. */ - if (event_source->randr_event_base != -1 && - event.type == - (event_source->randr_event_base + RRScreenChangeNotify)) { + + } else if (event_source->randr_event_base != -1 && + (event.type == + (event_source->randr_event_base + RRScreenChangeNotify))) { + XRRScreenChangeNotifyEvent *xrandrevent = (XRRScreenChangeNotifyEvent *)&event; int screen; @@ -548,6 +672,14 @@ static gboolean ctk_event_dispatch(GSource *source, NV_CTRL_TARGET_TYPE_X_SCREEN, screen); } + + /* + * Trap events that get registered but are not handled + * properly. + */ + + } else { + nv_warning_msg("Unknown event type %d.", event.type); } return TRUE; @@ -594,3 +726,46 @@ void ctk_event_emit(CtkEvent *ctk_event, NvCtrlGetTargetId(ctk_event->handle)); } /* ctk_event_emit() */ + + + +/* ctk_event_emit_string() - Emits signal(s) on a registered ctk_event object. + * This function is primarly used to simulate NV-CONTROL events such + * that various parts of nvidia-settings can communicate (internally) + */ +void ctk_event_emit_string(CtkEvent *ctk_event, + unsigned int mask, int attrib) +{ + CtkEventStruct event; + CtkEventSource *source; + Display *dpy = NvCtrlGetDisplayPtr(ctk_event->handle); + + + if (attrib > NV_CTRL_STRING_LAST_ATTRIBUTE) return; + + + /* Find the event source */ + source = event_sources; + while (source) { + if (source->dpy == dpy) { + break; + } + source = source->next; + } + if (!source) return; + + + /* Broadcast event to all relavent ctk_event objects */ + + event.attribute = attrib; + event.value = 0; + event.display_mask = mask; + + CTK_EVENT_BROADCAST(source, + string_signals[attrib], + &event, + NvCtrlGetTargetType(ctk_event->handle), + NvCtrlGetTargetId(ctk_event->handle)); + +} /* ctk_event_emit_string() */ + diff --git a/src/gtk+-2.x/ctkevent.h b/src/gtk+-2.x/ctkevent.h index 9eb77d4..721271d 100644 --- a/src/gtk+-2.x/ctkevent.h +++ b/src/gtk+-2.x/ctkevent.h @@ -69,6 +69,7 @@ struct _CtkEventStruct gint attribute; gint value; guint display_mask; + gboolean availability; }; GType ctk_event_get_type (void) G_GNUC_CONST; @@ -76,6 +77,8 @@ GtkObject* ctk_event_new (NvCtrlAttributeHandle*); void ctk_event_emit(CtkEvent *ctk_event, unsigned int mask, int attrib, int value); +void ctk_event_emit_string(CtkEvent *ctk_event, + unsigned int mask, int attrib); #define CTK_EVENT_NAME(x) ("CTK_EVENT_" #x) diff --git a/src/gtk+-2.x/ctkframelock.c b/src/gtk+-2.x/ctkframelock.c index 71898ed..33af997 100644 --- a/src/gtk+-2.x/ctkframelock.c +++ b/src/gtk+-2.x/ctkframelock.c @@ -83,7 +83,7 @@ enum * that entry. */ -#define NUM_GPU_SIGNALS 5 +#define NUM_GPU_SIGNALS 6 const char *__GPUSignals[NUM_GPU_SIGNALS] = { @@ -91,7 +91,8 @@ const char *__GPUSignals[NUM_GPU_SIGNALS] = CTK_EVENT_NAME(NV_CTRL_FRAMELOCK_SLAVES), CTK_EVENT_NAME(NV_CTRL_FRAMELOCK_SYNC), CTK_EVENT_NAME(NV_CTRL_FRAMELOCK_TEST_SIGNAL), - CTK_EVENT_NAME(NV_CTRL_REFRESH_RATE) + CTK_EVENT_NAME(NV_CTRL_REFRESH_RATE), + CTK_EVENT_NAME(NV_CTRL_REFRESH_RATE_3) }; /* @@ -184,6 +185,7 @@ struct _nvDisplayDataRec { GtkWidget *rate_label; GtkWidget *rate_text; guint rate; + guint rate_precision; GtkWidget *stereo_label; GtkWidget *stereo_hbox; /* LED */ @@ -401,6 +403,11 @@ static GtkWidget *create_error_msg_dialog(CtkFramelock *ctk_framelock) GTK_RESPONSE_OK, NULL); + /* Prevent the dialog from being deleted when closed */ + g_signal_connect(G_OBJECT(dialog), "delete-event", + G_CALLBACK(gtk_widget_hide_on_delete), + (gpointer) dialog); + g_signal_connect_swapped(GTK_OBJECT(dialog), "response", G_CALLBACK(gtk_widget_hide_all), GTK_OBJECT(dialog)); @@ -547,6 +554,11 @@ static GtkWidget *create_add_devices_dialog(CtkFramelock *ctk_framelock) GTK_RESPONSE_OK, NULL); + /* Prevent the dialog from being deleted when closed */ + g_signal_connect(G_OBJECT(dialog), "delete-event", + G_CALLBACK(gtk_widget_hide_on_delete), + (gpointer) dialog); + g_signal_connect (GTK_OBJECT(dialog), "response", G_CALLBACK(add_devices_response), GTK_OBJECT(ctk_framelock)); @@ -599,7 +611,6 @@ static GtkWidget *create_add_devices_dialog(CtkFramelock *ctk_framelock) TRUE, TRUE, 0); return dialog; - } @@ -631,6 +642,11 @@ static GtkWidget *create_remove_devices_dialog(CtkFramelock *ctk_framelock) GTK_RESPONSE_OK, NULL); + /* Prevent the dialog from being deleted when closed */ + g_signal_connect(G_OBJECT(dialog), "delete-event", + G_CALLBACK(gtk_widget_hide_on_delete), + (gpointer) dialog); + g_signal_connect(GTK_OBJECT(dialog), "response", G_CALLBACK(remove_devices_response), GTK_OBJECT(ctk_framelock)); @@ -3470,13 +3486,29 @@ void list_entry_update_display_status(CtkFramelock *ctk_framelock, gtk_widget_set_sensitive(data->stereo_label, FALSE); update_image(data->stereo_hbox, ctk_framelock->led_grey); } else { + nvGPUDataPtr gpu_data; + gint timing = TRUE; gint stereo_sync; - NvCtrlGetAttribute(data->handle, NV_CTRL_FRAMELOCK_STEREO_SYNC, - &stereo_sync); + + /* If the display's GPU is not recieving timing, activate the + * stereo label but make sure to gray out the LED. + */ gtk_widget_set_sensitive(data->stereo_label, TRUE); - update_image(data->stereo_hbox, - stereo_sync ? ctk_framelock->led_green : - ctk_framelock->led_red); + + if (entry->parent) { + gpu_data = (nvGPUDataPtr)(entry->parent->data); + NvCtrlGetAttribute(gpu_data->handle, NV_CTRL_FRAMELOCK_TIMING, + &timing); + } + if (!timing) { + update_image(data->stereo_hbox, ctk_framelock->led_grey); + } else { + NvCtrlGetAttribute(data->handle, NV_CTRL_FRAMELOCK_STEREO_SYNC, + &stereo_sync); + update_image(data->stereo_hbox, + stereo_sync ? ctk_framelock->led_green : + ctk_framelock->led_red); + } } } @@ -3485,7 +3517,7 @@ void list_entry_update_display_status(CtkFramelock *ctk_framelock, /** list_entry_update_status() *************************************** * * Updates the (GUI) state of a list entry, its children and siblings - * by queryin ghte X Server. + * by querying the X Server. * */ void list_entry_update_status(CtkFramelock *ctk_framelock, @@ -3932,6 +3964,7 @@ static void gpu_state_received(GtkObject *object, case NV_CTRL_REFRESH_RATE: + case NV_CTRL_REFRESH_RATE_3: /* Update the display device's refresh rate */ display_entry = get_display_on_gpu(gpu_entry, event->display_mask); if (display_entry && display_entry->data) { @@ -3942,8 +3975,18 @@ static void gpu_state_received(GtkObject *object, (nvDisplayDataPtr)(display_entry->data); display_data->rate = event->value; - fvalue = ((float)(display_data->rate)) / 100.0f; - snprintf(str, 32, "%.2f Hz", fvalue); + if (event->attribute == NV_CTRL_REFRESH_RATE_3 && + display_data->rate_precision == 3) { + fvalue = ((float)(display_data->rate)) / 1000.0f; + snprintf(str, 32, "%.3f Hz", fvalue); + } else if (display_data->rate_precision == 2 ){ + fvalue = ((float)(display_data->rate)) / 100.0f; + snprintf(str, 32, "%.2f Hz", fvalue); + } else { + // wrong signal (got 2 but support 3 or got 3 but + // don't support it); + break; + } gtk_label_set_text(GTK_LABEL(display_data->rate_text), str); } @@ -4709,7 +4752,7 @@ static unsigned int add_display_devices(CtkFramelock *ctk_framelock, unsigned int master_mask; unsigned int slaves_mask; gfloat fvalue; /* To print the refresh rate */ - gchar str[32]; + gchar rr_str[32]; nvListEntryPtr server_entry = NULL; nvDisplayDataPtr server_data = NULL; @@ -4803,10 +4846,24 @@ static unsigned int add_display_devices(CtkFramelock *ctk_framelock, goto fail; } - ret = NvCtrlGetDisplayAttribute(gpu_data->handle, - display_mask, - NV_CTRL_REFRESH_RATE, - (int *)&(display_data->rate)); + // If we can't get either percision, then fail + if (NvCtrlSuccess != + (ret = NvCtrlGetDisplayAttribute(gpu_data->handle, + display_mask, + NV_CTRL_REFRESH_RATE_3, + (int *)&(display_data->rate)))) { + ret = NvCtrlGetDisplayAttribute(gpu_data->handle, + display_mask, + NV_CTRL_REFRESH_RATE, + (int *)&(display_data->rate)); + fvalue = ((float)(display_data->rate)) / 100.0f; + snprintf(rr_str, 32, "%.2f Hz", fvalue); + display_data->rate_precision = 2; + } else { + fvalue = ((float)(display_data->rate)) / 1000.0f; + snprintf(rr_str, 32, "%.3f Hz", fvalue); + display_data->rate_precision = 3; + } if (ret != NvCtrlSuccess) { goto fail; } @@ -4826,9 +4883,7 @@ static unsigned int add_display_devices(CtkFramelock *ctk_framelock, __client_checkbox_help); display_data->rate_label = gtk_label_new("Refresh:"); - fvalue = ((float)(display_data->rate)) / 100.0f; - snprintf(str, 32, "%.2f Hz", fvalue); - display_data->rate_text = gtk_label_new(str); + display_data->rate_text = gtk_label_new(rr_str); display_data->stereo_label = gtk_label_new("Stereo"); display_data->stereo_hbox = gtk_hbox_new(FALSE, 0); @@ -5083,7 +5138,7 @@ static unsigned int add_framelock_devices(CtkFramelock *ctk_framelock, if (ret != NvCtrlSuccess) { goto fail; } - revision_str = g_strdup_printf("%d", val); + revision_str = g_strdup_printf("0x%X", val); /* Create the frame lock widgets */ framelock_data->label = gtk_label_new(""); @@ -5566,7 +5621,9 @@ GtkTextBuffer *ctk_framelock_create_help(GtkTextTagTable *table) ctk_help_para(b, &i, "Stereo LED: This indicates whether or not the " "display device is sync'ed to the stereo signal coming from " "the G-Sync device. This LED is only available to display " - "devices set as clients when frame lock is enabled."); + "devices set as clients when frame lock is enabled. The " + "Stereo LED is dependent on the parent GPU being in sync " + "with the input timing signal."); ctk_help_heading(b, &i, "Adding Devices"); ctk_help_para(b, &i, __add_devices_button_help); diff --git a/src/gtk+-2.x/ctkgvo-banner.c b/src/gtk+-2.x/ctkgvo-banner.c new file mode 100644 index 0000000..6669ab9 --- /dev/null +++ b/src/gtk+-2.x/ctkgvo-banner.c @@ -0,0 +1,891 @@ +/* + * nvidia-settings: A tool for configuring the NVIDIA X driver on Unix + * and Linux systems. + * + * Copyright (C) 2004 NVIDIA Corporation. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of Version 2 of the GNU General Public + * License as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See Version 2 + * of the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the: + * + * Free Software Foundation, Inc. + * 59 Temple Place - Suite 330 + * Boston, MA 02111-1307, USA + * + */ + +/* + * The CtkGvoBanner widget is in charge of displaying the GVO Banner image. + * The LEDs are drawn based on the state currently set by the + * ctk_gvo_banner_update_video_output() and + * ctk_gvo_banner_update_video_input() functions. It is the caller's + * job to set the appropriate state so that the banner can be drawn correctly. + */ + +#include <gtk/gtk.h> +#include <string.h> + +#include "NvCtrlAttributes.h" + +#include "ctkhelp.h" +#include "ctkgvo-banner.h" +#include "ctkutils.h" +#include "ctkimage.h" +#include "ctkbanner.h" + +#include "msg.h" + + + +/* values for controlling LED state */ + +#define GVO_LED_VID_OUT_NOT_IN_USE 0 +#define GVO_LED_VID_OUT_HD_MODE 1 +#define GVO_LED_VID_OUT_SD_MODE 2 + +#define GVO_LED_SDI_SYNC_NONE 0 +#define GVO_LED_SDI_SYNC_HD 1 +#define GVO_LED_SDI_SYNC_SD 2 +#define GVO_LED_SDI_SYNC_ERROR 3 + +#define GVO_LED_COMP_SYNC_NONE 0 +#define GVO_LED_COMP_SYNC_SYNC 1 + +/* LED colors */ + +#define LED_GREY 0 +#define LED_GREEN 1 +#define LED_YELLOW 2 +#define LED_RED 3 + +/* How often the LEDs in the banner should be updated */ + +#define UPDATE_GVO_BANNER_TIME_INTERVAL 200 +#define DEFAULT_GVO_PROBE_TIME_INTERVAL 1000 + + + + +/* Position of LEDs relative to the SDI image, used for drawing LEDs */ + +static int __led_pos_x[] = { 74, 101, 128, 156 }; // From sdi.png +static int __led_pos_y = 36; // From sdi.png + + + +/* local prototypes */ + +static void composite_callback(CtkBanner *ctk_banner, void *data); + +static gboolean update_gvo_banner_led_images(gpointer data); +static gboolean update_gvo_banner_led_images_shared_sync_bnc(gpointer data); + +static void update_gvo_banner_led_state(CtkGvoBanner *ctk_gvo_banner); + +static void gvo_event_received(GtkObject *object, + gpointer arg1, + gpointer user_data); + + + +/* + * ctk_gvo_banner_get_type() - Returns the GType for a CtkGvoBanner object + */ + +GType ctk_gvo_banner_get_type(void) +{ + static GType ctk_gvo_banner_type = 0; + + if (!ctk_gvo_banner_type) { + static const GTypeInfo ctk_gvo_banner_info = { + sizeof (CtkGvoBannerClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + NULL, /* constructor */ + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof (CtkGvoBanner), + 0, /* n_preallocs */ + NULL, /* instance_init */ + }; + + ctk_gvo_banner_type = + g_type_register_static(GTK_TYPE_VBOX, "CtkGvoBanner", + &ctk_gvo_banner_info, 0); + } + + return ctk_gvo_banner_type; + +} /* ctk_gvo_banner_get_type() */ + + + +/* + * ctk_gvo_banner_new() - constructor for the CtkGvoBanner widget + */ + +GtkWidget* ctk_gvo_banner_new(NvCtrlAttributeHandle *handle, + CtkConfig *ctk_config, + CtkEvent *ctk_event) +{ + GObject *object; + CtkGvoBanner *ctk_gvo_banner; + ReturnStatus ret; + gint val; + gint caps; + + + /* make sure we have a handle */ + + g_return_val_if_fail(handle != NULL, NULL); + + /* check if this screen supports GVO */ + + ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_SUPPORTED, &val); + if ((ret != NvCtrlSuccess) || (val != NV_CTRL_GVO_SUPPORTED_TRUE)) { + /* GVO not available */ + return NULL; + } + + /* get the GVO capabilities */ + + ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_CAPABILITIES, &caps); + if (ret != NvCtrlSuccess) { + return NULL; + } + + /* create the CtkGvoBanner object */ + + object = g_object_new(CTK_TYPE_GVO_BANNER, NULL); + + /* initialize fields in the CtkGvoBanner object */ + + ctk_gvo_banner = CTK_GVO_BANNER(object); + ctk_gvo_banner->handle = handle; + ctk_gvo_banner->ctk_config = ctk_config; + ctk_gvo_banner->ctk_event = ctk_event; + ctk_gvo_banner->parent_box = NULL; + + /* handle GVO devices that share the sync input differently */ + + ctk_gvo_banner->shared_sync_bnc = + (caps & NV_CTRL_GVO_CAPABILITIES_SHARED_SYNC_BNC) ? TRUE : FALSE; + + /* create the banner image */ + + if (ctk_gvo_banner->shared_sync_bnc) { + ctk_gvo_banner->image = + ctk_banner_image_new_with_callback + (BANNER_ARTWORK_SDI_SHARED_SYNC_BNC, + composite_callback, + ctk_gvo_banner); + } else { + ctk_gvo_banner->image = + ctk_banner_image_new_with_callback(BANNER_ARTWORK_SDI, + composite_callback, + ctk_gvo_banner); + } + + g_object_ref(ctk_gvo_banner->image); + + gtk_box_pack_start(GTK_BOX(ctk_gvo_banner), ctk_gvo_banner->image, + FALSE, FALSE, 0); + + ctk_gvo_banner->ctk_banner = NULL; + + /* initialize LED state */ + + ctk_gvo_banner->state[GVO_BANNER_VID1] = GVO_LED_VID_OUT_NOT_IN_USE; + ctk_gvo_banner->state[GVO_BANNER_VID2] = GVO_LED_VID_OUT_NOT_IN_USE; + ctk_gvo_banner->state[GVO_BANNER_SDI] = GVO_LED_SDI_SYNC_NONE; + ctk_gvo_banner->state[GVO_BANNER_COMP] = GVO_LED_COMP_SYNC_NONE; + + ctk_gvo_banner->img[GVO_BANNER_VID1] = LED_GREY; + ctk_gvo_banner->img[GVO_BANNER_VID2] = LED_GREY; + ctk_gvo_banner->img[GVO_BANNER_SDI] = LED_GREY; + ctk_gvo_banner->img[GVO_BANNER_COMP] = LED_GREY; + + /* Get the current GVO state */ + + ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_LOCK_OWNER, &val); + if (ret != NvCtrlSuccess) { + val = NV_CTRL_GVO_LOCK_OWNER_NONE; + } + ctk_gvo_banner->gvo_lock_owner = val; + + ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_SYNC_MODE, &val); + if (ret != NvCtrlSuccess) { + val = NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING; + } + ctk_gvo_banner->sync_mode = val; + + ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_SYNC_SOURCE, &val); + if (ret != NvCtrlSuccess) { + val = NV_CTRL_GVO_SYNC_SOURCE_COMPOSITE; + } + ctk_gvo_banner->sync_source = val; + + ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT, &val); + if (ret != NvCtrlSuccess) { + val = NV_CTRL_GVO_VIDEO_FORMAT_NONE; + } + ctk_gvo_banner->output_video_format = val; + + ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_DATA_FORMAT, &val); + if (ret != NvCtrlSuccess) { + val = NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB444; + } + ctk_gvo_banner->output_data_format = val; + + /* Update the current LED state */ + + update_gvo_banner_led_state(ctk_gvo_banner); + + /* + * register a timeout function (directly with glib, not through + * ctk_config) to update the LEDs + */ + + if (ctk_gvo_banner->shared_sync_bnc) { + g_timeout_add(UPDATE_GVO_BANNER_TIME_INTERVAL, + update_gvo_banner_led_images_shared_sync_bnc, + ctk_gvo_banner); + } else { + g_timeout_add(UPDATE_GVO_BANNER_TIME_INTERVAL, + update_gvo_banner_led_images, + ctk_gvo_banner); + } + + /* Add a timer so we can probe the hardware */ + + ctk_config_add_timer(ctk_gvo_banner->ctk_config, + DEFAULT_GVO_PROBE_TIME_INTERVAL, + "Graphics To Video Probe", + (GSourceFunc) ctk_gvo_banner_probe, + (gpointer) ctk_gvo_banner); + + /* Listen for events */ + + g_signal_connect(G_OBJECT(ctk_gvo_banner->ctk_event), + CTK_EVENT_NAME(NV_CTRL_GVO_LOCK_OWNER), + G_CALLBACK(gvo_event_received), + (gpointer) ctk_gvo_banner); + + g_signal_connect(G_OBJECT(ctk_gvo_banner->ctk_event), + CTK_EVENT_NAME(NV_CTRL_GVO_SYNC_MODE), + G_CALLBACK(gvo_event_received), + (gpointer) ctk_gvo_banner); + + g_signal_connect(G_OBJECT(ctk_gvo_banner->ctk_event), + CTK_EVENT_NAME(NV_CTRL_GVO_SYNC_SOURCE), + G_CALLBACK(gvo_event_received), + (gpointer) ctk_gvo_banner); + + g_signal_connect(G_OBJECT(ctk_gvo_banner->ctk_event), + CTK_EVENT_NAME(NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT), + G_CALLBACK(gvo_event_received), + (gpointer) ctk_gvo_banner); + + g_signal_connect(G_OBJECT(ctk_gvo_banner->ctk_event), + CTK_EVENT_NAME(NV_CTRL_GVO_DATA_FORMAT), + G_CALLBACK(gvo_event_received), + (gpointer) ctk_gvo_banner); + + /* show the GVO banner widget */ + + gtk_widget_show_all(GTK_WIDGET(ctk_gvo_banner)); + + return GTK_WIDGET(ctk_gvo_banner); + +} /* ctk_gvo_banner_new() */ + + + +/* + * draw_led() - Updates the LED to the given color in the banner's + * backing pixbuf. + */ + +static void draw_led(CtkBanner *ctk_banner, int led, int color) { + + /* Which LED to draw */ + int dst_x = ctk_banner->artwork_x +__led_pos_x[led]; + int dst_y = ctk_banner->artwork_y +__led_pos_y; + + /* Offset LED color into LED position */ + int offset_x = ctk_banner->artwork_x +__led_pos_x[led] -__led_pos_x[color]; + int offset_y = ctk_banner->artwork_y; + + gdk_pixbuf_composite(ctk_banner->artwork.pixbuf, // src + ctk_banner->back.pixbuf, // dest + dst_x, // dest_x + dst_y, // dest_y + 10, // dest_width + 10, // dest_height + offset_x, // offset_x + offset_y, // offset_y + 1.0, // scale_x + 1.0, // scale_y + GDK_INTERP_BILINEAR, // interp_type + 255); // overall_alpha + +} /* draw_led() */ + + + +/* + * composite_callback() - Draws all the LEDs to the banner. + */ + +static void composite_callback(CtkBanner *ctk_banner, void *data) +{ + CtkGvoBanner *ctk_gvo_banner = (CtkGvoBanner *) data; + int i; + int last_led; + + /* Grab the latest banner widget */ + ctk_gvo_banner->ctk_banner = GTK_WIDGET(ctk_banner); + + /* Draw the current state */ + last_led = ctk_gvo_banner->shared_sync_bnc ? 3 : 4; + + for (i = 0; i < last_led; i++) { + draw_led(ctk_banner, i, ctk_gvo_banner->img[i]); + } + +} /* composite_callback() */ + + + +/* + * update_led_image() - Updates the state of an LED and causes and + * expose event. + */ + +static void update_led_image(CtkGvoBanner *banner, int led, int color) +{ + GtkWidget *ctk_banner = banner->ctk_banner; + GdkRectangle rec = {0, __led_pos_y, 10, 10}; + + /* Update the state of the LED */ + banner->img[led] = color; + + /* Draw the LED and tell gdk to draw it to the window */ + if (ctk_banner && ctk_banner->window) { + + draw_led(CTK_BANNER(ctk_banner), led, color); + + rec.x = CTK_BANNER(ctk_banner)->artwork_x + __led_pos_x[led]; + rec.y = CTK_BANNER(ctk_banner)->artwork_y + __led_pos_y; + gdk_window_invalidate_rect(ctk_banner->window, &rec, TRUE); + } + +} /* update_led_image() */ + + + +/* + * update_gvo_banner_led_images() - called by a timer to update the LED images + * based on current state + */ + +static gboolean update_gvo_banner_led_images(gpointer data) +{ + guint8 old, new; + CtkGvoBanner *banner = (CtkGvoBanner *) data; + + /* + * we store the flashing state here: + * + * 0 == no LED is currently flashing + * 1 == some LED is flashing; currently "on" (lit) + * 2 == some LED is flashing; currently "off" (grey) + * + * this is used to track the current state, so that we can make + * all LEDs flash at the same time. + */ + + gint flashing = 0; + + + /* Vid 1 out */ + + old = banner->img[GVO_BANNER_VID1]; + + if (banner->state[GVO_BANNER_VID1] == GVO_LED_VID_OUT_HD_MODE) { + new = (old == LED_GREY) ? LED_GREEN: LED_GREY; + flashing = (new == LED_GREY) ? 2 : 1; + + } else if (banner->state[GVO_BANNER_VID1] == GVO_LED_VID_OUT_SD_MODE) { + new = (old == LED_GREY) ? LED_YELLOW: LED_GREY; + flashing = (new == LED_GREY) ? 2 : 1; + + } else { + new = LED_GREY; + } + + if (old != new) { + update_led_image(banner, GVO_BANNER_VID1, new); + } + + /* Vid 2 out */ + + old = banner->img[GVO_BANNER_VID2]; + + if (banner->state[GVO_BANNER_VID2] == GVO_LED_VID_OUT_HD_MODE) { + if (flashing) { + new = (flashing == 1) ? LED_GREEN: LED_GREY; + } else { + new = (old == LED_GREY) ? LED_GREEN: LED_GREY; + flashing = (new == LED_GREY) ? 2 : 1; + } + } else if (banner->state[GVO_BANNER_VID2] == GVO_LED_VID_OUT_SD_MODE) { + if (flashing) { + new = (flashing == 1) ? LED_YELLOW: LED_GREY; + } else { + new = (old == LED_GREY) ? LED_YELLOW: LED_GREY; + flashing = (new == LED_GREY) ? 2 : 1; + } + } else { + new = LED_GREY; + } + + if (old != new) { + update_led_image(banner, GVO_BANNER_VID2, new); + } + + /* SDI sync */ + + old = banner->img[GVO_BANNER_SDI]; + + if (banner->state[GVO_BANNER_SDI] == GVO_LED_SDI_SYNC_HD) { + if (flashing) { + new = (flashing == 1) ? LED_GREEN : LED_GREY; + } else { + new = (banner->img[GVO_BANNER_SDI] == LED_GREY) ? + LED_GREEN : LED_GREY; + flashing = (new == LED_GREY) ? 2 : 1; + } + } else if (banner->state[GVO_BANNER_SDI] == GVO_LED_SDI_SYNC_SD) { + if (flashing) { + new = (flashing == 1) ? LED_YELLOW : LED_GREY; + } else { + new = (banner->img[GVO_BANNER_SDI] == LED_GREY) ? + LED_YELLOW : LED_GREY; + flashing = (new == LED_GREY) ? 2 : 1; + } + } else if (banner->state[GVO_BANNER_SDI] == GVO_LED_SDI_SYNC_ERROR) { + new = LED_YELLOW; + } else { + new = LED_GREY; + } + + if (old != new) { + update_led_image(banner, GVO_BANNER_SDI, new); + } + + /* COMP sync */ + + old = banner->img[GVO_BANNER_COMP]; + + if (banner->state[GVO_BANNER_COMP] == GVO_LED_COMP_SYNC_SYNC) { + if (flashing) { + new = (flashing == 1) ? LED_GREEN : LED_GREY; + } else { + new = (banner->img[GVO_BANNER_COMP] == LED_GREY) ? + LED_GREEN : LED_GREY; + } + } else { + new = LED_GREY; + } + + if (old != new) { + update_led_image(banner, GVO_BANNER_COMP, new); + } + + return TRUE; + +} /* update_gvo_banner_led_images() */ + + + +/* + * update_gvo_banner_led_images_shared_sync_bnc() - called by a timer to + * update the LED images based on current state for GVO devices that have + * a shared input sync signal BNC connector. + */ + +static gboolean update_gvo_banner_led_images_shared_sync_bnc(gpointer data) +{ + guint8 old, new; + CtkGvoBanner *banner = (CtkGvoBanner *) data; + + /* Flash is used to make all the LEDs flash at the same time. */ + + banner->flash = !banner->flash; + + + /* Vid 1 out */ + + old = banner->img[GVO_BANNER_VID1]; + + if (banner->state[GVO_BANNER_VID1] != GVO_LED_VID_OUT_NOT_IN_USE) { + new = banner->flash ? LED_GREEN : LED_GREY; + } else { + new = LED_GREY; + } + + if (old != new) { + update_led_image(banner, GVO_BANNER_VID1, new); + } + + /* Vid 2 out */ + + old = banner->img[GVO_BANNER_VID2]; + + if (banner->state[GVO_BANNER_VID2] != GVO_LED_VID_OUT_NOT_IN_USE) { + new = banner->flash ? LED_GREEN : LED_GREY; + } else { + new = LED_GREY; + } + + if (old != new) { + update_led_image(banner, GVO_BANNER_VID2, new); + } + + /* Sync */ + + /* For this GVO device both the SDI and Composite sync signals + * share the same LED. This LED doesn't care about the lock + * status of the input signal/output video. + */ + + old = banner->img[GVO_BANNER_SDI]; + + if ((banner->sync_mode != NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING) && + (((banner->sync_source == NV_CTRL_GVO_SYNC_SOURCE_COMPOSITE) && + banner->state[GVO_BANNER_COMP] != GVO_LED_COMP_SYNC_NONE) || + ((banner->sync_source == NV_CTRL_GVO_SYNC_SOURCE_SDI) && + banner->state[GVO_BANNER_SDI] != GVO_LED_SDI_SYNC_NONE))) { + + if (banner->input_video_format != NV_CTRL_GVO_VIDEO_FORMAT_NONE) { + /* LED blinks if video format is detected */ + new = banner->flash ? LED_GREEN : LED_GREY; + } else { + /* LED is solid green if the input video format is not detected. */ + new = LED_GREEN; + } + + } else { + new = LED_GREY; + } + + if (old != new) { + update_led_image(banner, GVO_BANNER_SDI, new); + } + + return TRUE; + +} /* update_gvo_banner_led_images_shared_sync_bnc() */ + + + +/* + * ctk_gvo_banner_update_video_output() - update banner state of the + * GVO video output LEDs accordingly, based on the current + * output_video_format and output_data_format. + */ + +static void update_video_output_state(CtkGvoBanner *banner, + gint output_video_format, + gint output_data_format) +{ + if (output_video_format == NV_CTRL_GVO_VIDEO_FORMAT_NONE) { + banner->state[GVO_BANNER_VID1] = GVO_LED_VID_OUT_NOT_IN_USE; + banner->state[GVO_BANNER_VID2] = GVO_LED_VID_OUT_NOT_IN_USE; + } else if ((output_video_format == + NV_CTRL_GVO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC) || + (output_video_format == + NV_CTRL_GVO_VIDEO_FORMAT_576I_50_00_SMPTE259_PAL)) { + banner->state[GVO_BANNER_VID1] = GVO_LED_VID_OUT_SD_MODE; + banner->state[GVO_BANNER_VID2] = GVO_LED_VID_OUT_SD_MODE; + } else { + banner->state[GVO_BANNER_VID1] = GVO_LED_VID_OUT_HD_MODE; + banner->state[GVO_BANNER_VID2] = GVO_LED_VID_OUT_HD_MODE; + } + + if (output_data_format == NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB422) { + banner->state[GVO_BANNER_VID2] = GVO_LED_VID_OUT_NOT_IN_USE; + } + +} /* update_video_output_state() */ + + + +/* + * ctk_gvo_banner_update_video_input() - update banner state of the + * video input GVO banner LEDs accordingly, based on the current sdi + * and composite input. + */ + +static void update_video_input_state(CtkGvoBanner *banner, + gint sdi, gint comp) +{ + if (sdi == NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_HD) { + banner->state[GVO_BANNER_SDI] = GVO_LED_SDI_SYNC_HD; + } else if (sdi == NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_SD) { + banner->state[GVO_BANNER_SDI] = GVO_LED_SDI_SYNC_SD; + } else { + banner->state[GVO_BANNER_SDI] = GVO_LED_SDI_SYNC_NONE; + } + + banner->state[GVO_BANNER_COMP] = comp ? + GVO_LED_COMP_SYNC_SYNC : GVO_LED_COMP_SYNC_NONE; + +} /* update_video_input_state() */ + + + +/* + * update_gvo_banner_led_state() - Modifies the LED state based on the + * current GVO state. + */ + +static void update_gvo_banner_led_state(CtkGvoBanner *ctk_gvo_banner) +{ + /* Update input state */ + + update_video_input_state(ctk_gvo_banner, + ctk_gvo_banner->sdi_sync_input_detected, + ctk_gvo_banner->composite_sync_input_detected); + + /* Update output state */ + + if (ctk_gvo_banner->gvo_lock_owner != + NV_CTRL_GVO_LOCK_OWNER_NONE) { + update_video_output_state(ctk_gvo_banner, + ctk_gvo_banner->output_video_format, + ctk_gvo_banner->output_data_format); + } else { + update_video_output_state(ctk_gvo_banner, + NV_CTRL_GVO_VIDEO_FORMAT_NONE, + ctk_gvo_banner->output_data_format); + } + +} /* update_gvo_banner_led_state() */ + + + +/* + * ctk_gvo_banner_probe() - query the incoming signal and state of + * the GVO board. + */ + +gint ctk_gvo_banner_probe(gpointer data) +{ + ReturnStatus ret; + gint val; + CtkGvoBanner *ctk_gvo_banner = CTK_GVO_BANNER(data); + + + // XXX We could get notified of these (sync source/mode) and + // not have to probe - ie, it could be the job of the + // caller/user of the ctk_gvo_banner widget to notify the + // banner when these change. We don't however since doing + // that could be prone to bitrot. + + /* query NV_CTRL_GVO_SYNC_MODE */ + + ret = NvCtrlGetAttribute(ctk_gvo_banner->handle, + NV_CTRL_GVO_SYNC_MODE, &val); + + if (ret != NvCtrlSuccess) { + val = NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING; + } + + ctk_gvo_banner->sync_mode = val; + + + /* query NV_CTRL_GVO_SYNC_SOURCE */ + + ret = NvCtrlGetAttribute(ctk_gvo_banner->handle, + NV_CTRL_GVO_SYNC_SOURCE, &val); + + if (ret != NvCtrlSuccess) { + val = NV_CTRL_GVO_SYNC_SOURCE_COMPOSITE; + } + + ctk_gvo_banner->sync_source = val; + + + /* query NV_CTRL_GVO_INPUT_VIDEO_FORMAT */ + + ret = NvCtrlGetAttribute(ctk_gvo_banner->handle, + NV_CTRL_GVO_INPUT_VIDEO_FORMAT, &val); + + if (ret != NvCtrlSuccess) { + val = NV_CTRL_GVO_VIDEO_FORMAT_NONE; + } + + ctk_gvo_banner->input_video_format = val; + + + /* query COMPOSITE_SYNC_INPUT_DETECTED */ + + ret = NvCtrlGetAttribute(ctk_gvo_banner->handle, + NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED, &val); + + if (ret != NvCtrlSuccess) { + val = NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED_FALSE; + } + + ctk_gvo_banner->composite_sync_input_detected = val; + + + /* query SDI_SYNC_INPUT_DETECTED */ + + ret = NvCtrlGetAttribute(ctk_gvo_banner->handle, + NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED, &val); + + if (ret != NvCtrlSuccess) { + val = NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_NONE; + } + + ctk_gvo_banner->sdi_sync_input_detected = val; + + + /* query SYNC_LOCK_STATUS */ + + ret = NvCtrlGetAttribute(ctk_gvo_banner->handle, + NV_CTRL_GVO_SYNC_LOCK_STATUS, &val); + + if (ret != NvCtrlSuccess) { + val = NV_CTRL_GVO_SYNC_LOCK_STATUS_UNLOCKED; + } + + ctk_gvo_banner->sync_lock_status = val; + + + /* Update the banner state */ + + update_gvo_banner_led_state(ctk_gvo_banner); + + + /* Update the banner's parent */ + + if (ctk_gvo_banner->probe_callback) { + ctk_gvo_banner->probe_callback(ctk_gvo_banner->probe_callback_data); + } + + return TRUE; + +} /* ctk_gvo_banner_probe() */ + + + +/* + * gvo_event_received() - Handles updating the state of the GVO banner + * for event-driven NV-CONTROL attributes. + */ + +static void gvo_event_received(GtkObject *object, + gpointer arg1, + gpointer user_data) +{ + CtkEventStruct *event_struct = (CtkEventStruct *) arg1; + CtkGvoBanner *ctk_gvo_banner = CTK_GVO_BANNER(user_data); + gint attribute = event_struct->attribute; + gint value = event_struct->value; + + switch (attribute) { + case NV_CTRL_GVO_SYNC_MODE: + ctk_gvo_banner->sync_mode = value; + break; + + case NV_CTRL_GVO_SYNC_SOURCE: + ctk_gvo_banner->sync_source = value; + break; + + case NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT: + ctk_gvo_banner->output_video_format = value; + break; + + case NV_CTRL_GVO_DATA_FORMAT: + ctk_gvo_banner->output_data_format = value; + break; + + case NV_CTRL_GVO_LOCK_OWNER: + ctk_gvo_banner->gvo_lock_owner = value; + break; + + default: + return; + } + + update_gvo_banner_led_state(ctk_gvo_banner); + +} /* gvo_event_recieved() */ + + + +/* ctk_gvo_banner_set_parent() - Sets which parent page owns + * (is currently displaying) the gvo banner widget. + */ + +void ctk_gvo_banner_set_parent(CtkGvoBanner *ctk_gvo_banner, + GtkWidget *new_parent_box, + ctk_gvo_banner_probe_callback probe_callback, + gpointer probe_callback_data) +{ + /* Repack the banner into the new parent */ + + if (ctk_gvo_banner->parent_box != new_parent_box) { + + if (ctk_gvo_banner->parent_box) { + gtk_container_remove(GTK_CONTAINER(ctk_gvo_banner->parent_box), + GTK_WIDGET(ctk_gvo_banner)); + } + + if (new_parent_box) { + gtk_container_add(GTK_CONTAINER(new_parent_box), + GTK_WIDGET(ctk_gvo_banner)); + } + } + + /* Start/stop the GVO probe */ + + if (!ctk_gvo_banner->parent_box && new_parent_box) { + + ctk_config_start_timer(ctk_gvo_banner->ctk_config, + (GSourceFunc) ctk_gvo_banner_probe, + (gpointer) ctk_gvo_banner); + + } else if (ctk_gvo_banner->parent_box && !new_parent_box) { + + ctk_config_stop_timer(ctk_gvo_banner->ctk_config, + (GSourceFunc) ctk_gvo_banner_probe, + (gpointer) ctk_gvo_banner); + } + + /* Keep track of the current banner owner */ + + ctk_gvo_banner->parent_box = new_parent_box; + + ctk_gvo_banner->probe_callback = probe_callback; + ctk_gvo_banner->probe_callback_data = probe_callback_data; + + /* If we are programming a callback, do an initial probe */ + + if (probe_callback) { + ctk_gvo_banner_probe((gpointer)(ctk_gvo_banner)); + } + +} /* ctk_gvo_banner_set_parent() */ diff --git a/src/gtk+-2.x/ctkgvo-banner.h b/src/gtk+-2.x/ctkgvo-banner.h new file mode 100644 index 0000000..126ede1 --- /dev/null +++ b/src/gtk+-2.x/ctkgvo-banner.h @@ -0,0 +1,116 @@ +/* + * nvidia-settings: A tool for configuring the NVIDIA X driver on Unix + * and Linux systems. + * + * Copyright (C) 2004 NVIDIA Corporation. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of Version 2 of the GNU General Public + * License as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See Version 2 + * of the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the: + * + * Free Software Foundation, Inc. + * 59 Temple Place - Suite 330 + * Boston, MA 02111-1307, USA + * + */ + +#ifndef __CTK_GVO_BANNER_H__ +#define __CTK_GVO_BANNER_H__ + +#include "NvCtrlAttributes.h" +#include "ctkconfig.h" +#include "ctkevent.h" + +G_BEGIN_DECLS + + +#define CTK_TYPE_GVO_BANNER (ctk_gvo_banner_get_type()) + +#define CTK_GVO_BANNER(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), CTK_TYPE_GVO_BANNER, CtkGvoBanner)) + +#define CTK_GVO_BANNER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), CTK_TYPE_GVO_BANNER, CtkGvoBannerClass)) + +#define CTK_IS_GVO_BANNER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CTK_TYPE_GVO_BANNER)) + +#define CTK_IS_GVO_BANNER_CLASS(class) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), CTK_TYPE_GVO_BANNER)) + +#define CTK_GVO_BANNER_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), CTK_TYPE_GVO_BANNER, CtkGvoBannerClass)) + + + +typedef gint (* ctk_gvo_banner_probe_callback) (gpointer data); + +typedef struct _CtkGvoBanner CtkGvoBanner; +typedef struct _CtkGvoBannerClass CtkGvoBannerClass; + +#define GVO_BANNER_VID1 0 +#define GVO_BANNER_VID2 1 +#define GVO_BANNER_SDI 2 +#define GVO_BANNER_COMP 3 + +struct _CtkGvoBanner +{ + GtkVBox parent; + + NvCtrlAttributeHandle *handle; + GtkWidget *parent_box; + CtkConfig *ctk_config; + CtkEvent *ctk_event; + + gint sync_mode; + gint sync_source; + gboolean shared_sync_bnc; // GVO device has single sync BNC + + GtkWidget *image; // Image + GtkWidget *ctk_banner; // CtkBanner widget using the image + + gboolean flash; // Used to flash the LEDs at the same time + guint8 img[4]; // Current color of LEDs + guint state[4]; // Current state of LEDs + + ctk_gvo_banner_probe_callback probe_callback; // Function to call + gpointer probe_callback_data; + + // Other GVO state probed + gint gvo_lock_owner; + gint output_video_format; + gint output_data_format; + gint input_video_format; + gint composite_sync_input_detected; + gint sdi_sync_input_detected; + gint sync_lock_status; +}; + +struct _CtkGvoBannerClass +{ + GtkVBoxClass parent_class; +}; + + +GType ctk_gvo_banner_get_type (void) G_GNUC_CONST; +GtkWidget* ctk_gvo_banner_new (NvCtrlAttributeHandle *, CtkConfig *, + CtkEvent *); + +gint ctk_gvo_banner_probe(gpointer data); + +void ctk_gvo_banner_set_parent(CtkGvoBanner *ctk_gvo_banner, + GtkWidget *new_parent_box, + ctk_gvo_banner_probe_callback probe_callback, + gpointer probe_callback_data); + +G_END_DECLS + +#endif /* __CTK_GVO_BANNER_H__*/ diff --git a/src/gtk+-2.x/ctkgvo-csc.c b/src/gtk+-2.x/ctkgvo-csc.c index c00314d..e1ba826 100644 --- a/src/gtk+-2.x/ctkgvo-csc.c +++ b/src/gtk+-2.x/ctkgvo-csc.c @@ -127,10 +127,32 @@ static GtkWidget *build_opengl_only_msg (void); #define CSC_STANDARD_IDENTITY_STRING "Identity" - #define FRAME_BORDER 5 +/* General information help */ + +static const char * __override_help = +"The Override default Color Space Conversion checkbox will toggle use of " +"custom CSC."; + +static const char * __initialize_help = +"The Initialize Color Space Conversion dropdown allows you to select between " +"some standard CSC configurations."; + +static const char * __csc_help = +"The color space conversion matrix defines the paramaters used for " +"converting the color data."; + +static const char * __apply_immediately_help = +"The Apply Changes Immediately checkbox toggles whether or not changes made " +"to the CSC matrix immediately take effect."; + +static const char * __apply_help = +"The Apply button sends the new values of the color space conversion matrix " +"to the server."; + + GType ctk_gvo_csc_get_type(void) { @@ -215,6 +237,7 @@ GtkWidget* ctk_gvo_csc_new(NvCtrlAttributeHandle *handle, ctk_gvo_csc->handle = handle; ctk_gvo_csc->ctk_config = ctk_config; ctk_gvo_csc->gvo_parent = gvo_parent; + ctk_gvo_csc->caps = caps; gtk_box_set_spacing(GTK_BOX(object), 10); @@ -229,6 +252,9 @@ GtkWidget* ctk_gvo_csc_new(NvCtrlAttributeHandle *handle, ctk_gvo_csc->overrideButton = gtk_check_button_new_with_label ("Override default Color Space Conversion"); + + ctk_config_set_tooltip(ctk_config, ctk_gvo_csc->overrideButton, + __override_help); g_signal_connect(GTK_OBJECT(ctk_gvo_csc->overrideButton), "toggled", G_CALLBACK(override_button_toggled), ctk_gvo_csc); @@ -303,6 +329,11 @@ GtkWidget* ctk_gvo_csc_new(NvCtrlAttributeHandle *handle, ctk_gvo_csc->initializeDropDown = ctk_drop_down_menu_new(CTK_DROP_DOWN_MENU_FLAG_MONOSPACE); + + ctk_config_set_tooltip + (ctk_config, + CTK_DROP_DOWN_MENU(ctk_gvo_csc->initializeDropDown)->option_menu, + __initialize_help); ctk_drop_down_menu_append_item (CTK_DROP_DOWN_MENU(ctk_gvo_csc->initializeDropDown), @@ -400,6 +431,10 @@ GtkWidget* ctk_gvo_csc_new(NvCtrlAttributeHandle *handle, ctk_gvo_csc->matrix[row][column], row + 1, column+1); + + ctk_config_set_tooltip(ctk_config, + ctk_gvo_csc->matrixWidget[row][column], + __csc_help); } } @@ -435,6 +470,9 @@ GtkWidget* ctk_gvo_csc_new(NvCtrlAttributeHandle *handle, ctk_gvo_csc->offset[row], row+1, 0); + + ctk_config_set_tooltip(ctk_config, + ctk_gvo_csc->offsetWidget[row], __csc_help); } @@ -469,6 +507,9 @@ GtkWidget* ctk_gvo_csc_new(NvCtrlAttributeHandle *handle, ctk_gvo_csc->scale[row], row+1, 0); + + ctk_config_set_tooltip(ctk_config, + ctk_gvo_csc->scaleWidget[row], __csc_help); } @@ -479,8 +520,12 @@ GtkWidget* ctk_gvo_csc_new(NvCtrlAttributeHandle *handle, if (caps & NV_CTRL_GVO_CAPABILITIES_APPLY_CSC_IMMEDIATELY) { - ctk_gvo_csc->applyImmediateButton = gtk_check_button_new_with_label - ("Apply Changes Immediately"); + ctk_gvo_csc->applyImmediateButton = + gtk_check_button_new_with_label("Apply Changes Immediately"); + + ctk_config_set_tooltip(ctk_config, + ctk_gvo_csc->applyImmediateButton, + __apply_immediately_help); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(ctk_gvo_csc->applyImmediateButton), FALSE); @@ -504,6 +549,8 @@ GtkWidget* ctk_gvo_csc_new(NvCtrlAttributeHandle *handle, ctk_gvo_csc->applyButton = gtk_button_new_from_stock(GTK_STOCK_APPLY); + ctk_config_set_tooltip(ctk_config, ctk_gvo_csc->applyButton, __apply_help); + g_signal_connect(GTK_OBJECT(ctk_gvo_csc->applyButton), "clicked", G_CALLBACK(apply_button_clicked), @@ -1053,13 +1100,11 @@ void ctk_gvo_csc_select(GtkWidget *widget) CtkGvoCsc *ctk_gvo_csc = CTK_GVO_CSC(widget); CtkGvo *ctk_gvo = ctk_gvo_csc->gvo_parent; - /* Grab the GVO parent banner */ + /* Grab the GVO banner */ - gtk_container_add(GTK_CONTAINER(ctk_gvo_csc->banner_box), - ctk_gvo->banner.widget); - - ctk_config_start_timer(ctk_gvo->ctk_config, (GSourceFunc) ctk_gvo_probe, - (gpointer) ctk_gvo); + ctk_gvo_banner_set_parent(CTK_GVO_BANNER(ctk_gvo->banner), + ctk_gvo_csc->banner_box, + NULL, NULL); } @@ -1069,11 +1114,78 @@ void ctk_gvo_csc_unselect(GtkWidget *widget) CtkGvoCsc *ctk_gvo_csc = CTK_GVO_CSC(widget); CtkGvo *ctk_gvo = ctk_gvo_csc->gvo_parent; - /* Return the GVO parent banner */ - - gtk_container_remove(GTK_CONTAINER(ctk_gvo_csc->banner_box), - ctk_gvo->banner.widget); + /* Release the GVO banner */ - ctk_config_stop_timer(ctk_gvo->ctk_config, (GSourceFunc) ctk_gvo_probe, - (gpointer) ctk_gvo); + ctk_gvo_banner_set_parent(CTK_GVO_BANNER(ctk_gvo->banner), + NULL, NULL, NULL); } + + + +/* + * ctk_gvo_csc_create_help() - Create color space conversion help page + */ + +GtkTextBuffer *ctk_gvo_csc_create_help(GtkTextTagTable *table, + CtkGvoCsc *ctk_gvo_csc) +{ + GtkTextIter i; + GtkTextBuffer *b; + + b = gtk_text_buffer_new(table); + + gtk_text_buffer_get_iter_at_offset(b, &i, 0); + + ctk_help_title(b, &i, "Color Space Conversion Help"); + ctk_help_para(b, &i, "This page gives access to configuration of " + "the SDI (GVO) color space conversion."); + + ctk_help_heading(b, &i, "Override default Color Space Conversion"); + ctk_help_para(b, &i, __override_help); + + ctk_help_heading(b, &i, "Initialize Color Space Conversion"); + ctk_help_para(b, &i, __initialize_help); + + ctk_help_heading(b, &i, "Color Space Conversion Matrix, Offset and Scale"); + ctk_help_para(b, &i, "%s RGB color is converted to YCrCb in the " + "following manner:", + __csc_help); + ctk_help_para(b, &i, + "Y = Ky + Sy * ( Ry*R + Gy*G + By*B )\n" + "Cb = Kcb + Scb * ( Rcb*R + Gcb*G + Bcb*B )\n" + "Cr = Kcr + Scr * ( Rcr*R + Gcr*G + Bcr*B )"); + ctk_help_para(b, &i, "Where:"); + ctk_help_para(b, &i, + "Ky = Y (luma) Offset\n" + "Kcb = Cr (red chroma) Offset\n" + "Kcr = Cb (blue chroma) Offset"); + ctk_help_para(b, &i, + "Sy = Y scaling factor\n" + "Scb = Cb Scaling factor\n" + "Scr = Cr Scaling factor"); + ctk_help_para(b, &i, + "Ry = Red coeficient for Y\n" + "Rcb = Red coeficient for Cb\n" + "Rcr = Red coeficient for Cr"); + ctk_help_para(b, &i, + "Gy = Green coeficient for Y\n" + "Gcb = Green coeficient for Cb\n" + "Gcr = Green coeficient for Cr"); + ctk_help_para(b, &i, + "By = Blue coeficient for Y\n" + "Bcb = Blue coeficient for Cb\n" + "Bcr = Blue coeficient for Cr"); + + if (ctk_gvo_csc->caps & NV_CTRL_GVO_CAPABILITIES_APPLY_CSC_IMMEDIATELY) { + ctk_help_heading(b, &i, "Apply Changes Immediately"); + ctk_help_para(b, &i, __apply_immediately_help); + } + + ctk_help_heading(b, &i, "Apply"); + ctk_help_para(b, &i, __apply_help); + + ctk_help_finish(b); + + return b; + +} /* ctk_gvo_csc_create_help() */ diff --git a/src/gtk+-2.x/ctkgvo-csc.h b/src/gtk+-2.x/ctkgvo-csc.h index 01a86c4..ff50cfe 100644 --- a/src/gtk+-2.x/ctkgvo-csc.h +++ b/src/gtk+-2.x/ctkgvo-csc.h @@ -29,6 +29,7 @@ #include "ctkconfig.h" #include "ctkgvo.h" + G_BEGIN_DECLS #define CTK_TYPE_GVO_CSC (ctk_gvo_csc_get_type()) @@ -65,6 +66,8 @@ struct _CtkGvoCsc CtkGvo *gvo_parent; GtkWidget *banner_box; + int caps; + float matrix[3][3]; // [row][column] float offset[3]; float scale[3]; @@ -96,8 +99,7 @@ GType ctk_gvo_csc_get_type (void) G_GNUC_CONST; GtkWidget* ctk_gvo_csc_new (NvCtrlAttributeHandle *, CtkConfig *, CtkEvent *, CtkGvo *); -//GtkTextBuffer *ctk_gvo_csc_create_help(GtkTextTagTable *, -// CtkGvoCsc *); +GtkTextBuffer *ctk_gvo_csc_create_help(GtkTextTagTable *, CtkGvoCsc *); void ctk_gvo_csc_select(GtkWidget *); void ctk_gvo_csc_unselect(GtkWidget *); diff --git a/src/gtk+-2.x/ctkgvo-sync.c b/src/gtk+-2.x/ctkgvo-sync.c new file mode 100644 index 0000000..3aeb4be --- /dev/null +++ b/src/gtk+-2.x/ctkgvo-sync.c @@ -0,0 +1,1509 @@ +/* + * nvidia-settings: A tool for configuring the NVIDIA X driver on Unix + * and Linux systems. + * + * Copyright (C) 2004 NVIDIA Corporation. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of Version 2 of the GNU General Public + * License as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See Version 2 + * of the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the: + * + * Free Software Foundation, Inc. + * 59 Temple Place - Suite 330 + * Boston, MA 02111-1307, USA + * + */ + +#include <gtk/gtk.h> +#include <NvCtrlAttributes.h> + +#include <string.h> + +#include "ctkimage.h" + +#include "ctkgvo.h" +#include "ctkgvo-sync.h" + +#include "ctkconfig.h" +#include "ctkhelp.h" + +#include "ctkdropdownmenu.h" + + +/* + * The CtkGvoSync widget is used to provide a way for configuring + * how the SDI device synchronises with an input signal source. + */ + +#define FRAME_BORDER 5 +#define TABLE_PADDING 5 + + +#define DEFAULT_DETECT_INPUT_TIME_INTERVAL 2000 + + +#define SYNC_FORMAT_SDI 0 +#define SYNC_FORMAT_COMP_AUTO 1 +#define SYNC_FORMAT_COMP_BI_LEVEL 2 +#define SYNC_FORMAT_COMP_TRI_LEVEL 3 + +static const GvoFormatName syncFormatNames[] = { + { SYNC_FORMAT_SDI, "SDI Sync" }, + { SYNC_FORMAT_COMP_AUTO, "COMP Sync" }, + { SYNC_FORMAT_COMP_BI_LEVEL, "COMP Sync (Bi-level)" }, + { SYNC_FORMAT_COMP_TRI_LEVEL, "COMP Sync (Tri-level)" }, + { -1, NULL }, +}; + +extern const GvoFormatName videoFormatNames[]; + + + +/* local prototypes */ + +static GtkWidget *start_menu(const gchar *name, GtkWidget *table, + const gint row); +static void finish_menu(GtkWidget *menu, GtkWidget *table, const gint row); + + +static gboolean query_init_gvo_sync_state(CtkGvoSync *ctk_gvo_sync); +static void init_composite_termination(CtkGvoSync *ctk_gvo_sync); +static void init_sync_format_menu(CtkGvoSync *ctk_gvo_sync); +static void register_for_gvo_sync_events(CtkGvoSync *ctk_gvo_sync); + + +static void update_gvo_sync_sensitivity(CtkGvoSync *ctk_gvo_sync); +static void update_input_video_format_text_entry(CtkGvoSync *ctk_gvo_sync); +static void post_composite_termination_toggled(CtkGvoSync *ctk_gvo_sync, + gboolean enabled); +static void update_delay_spin_buttons_range(CtkGvoSync *ctk_gvo_sync); + + +static void detect_input_toggled(GtkToggleButton *togglebutton, + CtkGvoSync *ctk_gvo_sync); +static gint detect_input_done(gpointer data); +static void composite_termination_toggled(GtkWidget *button, + CtkGvoSync *ctk_gvo_sync); +static void sync_mode_changed(CtkDropDownMenu *menu, gpointer user_data); +static void sync_format_changed(CtkDropDownMenu *menu, gpointer user_data); +static void hsync_delay_changed(GtkSpinButton *spinbutton, gpointer user_data); +static void vsync_delay_changed(GtkSpinButton *spinbutton, gpointer user_data); + + +static void gvo_sync_event_received(GtkObject *object, + gpointer arg1, + gpointer user_data); +static gint gvo_sync_probe_callback(gpointer data); + + + +/* Help tooltips */ + +static const char * __input_video_format_help = +"The Input Video Format text entry indicates the input video format detected " +"on the input BNC."; + +static const char * __input_video_format_detect_help = +"The Input Video Format Detect button will (re)detect the video format on " +"the input BNC."; + +static const char * __composite_termination_help = +"The Enable Composite Termination checkbox enables the 75 ohm termination " +"of the composite input signal"; + +static const char * __sync_mode_help = +"The Sync Mode dropdown allows you to select how the SDI device syncs its " +"output to the input signal."; + +static const char * __sync_format_help = +"The Sync Format dropdown allows you to select the format of the input sync " +"signal."; + +static const char * __sync_status_help = +"The Sync Status reports on how the SDI device is currently syncing to the " +"input sync signal."; + +static const char * __hsync_delay_help = +"The HSync Delay entry allows you to specify the horizontal delay between the " +"input signal and the output signal generated by the SDI device."; + +static const char * __vsync_delay_help = +"The VSync Delay entry allows you to specify the vertical delay between the " +"input signal and the output signal generated by the SDI device."; + + + +/**** Utility Functions ******************************************************/ + +/* + * ctk_gvo_sync_get_type() - Returns the CtkGvoSync "class" type + */ + +GType ctk_gvo_sync_get_type(void) +{ + static GType ctk_gvo_sync_type = 0; + + if (!ctk_gvo_sync_type) { + static const GTypeInfo ctk_gvo_sync_info = { + sizeof (CtkGvoSyncClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + NULL, /* class_init, */ + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof (CtkGvoSync), + 0, /* n_preallocs */ + NULL, /* instance_init */ + }; + + ctk_gvo_sync_type = + g_type_register_static (GTK_TYPE_VBOX, + "CtkGvoSync", &ctk_gvo_sync_info, 0); + } + + return ctk_gvo_sync_type; + +} /* ctk_gvo_sync_get_type() */ + + + +/* + * max_input_video_format_text_entry_length() + */ + +static int max_input_video_format_text_entry_length(void) +{ + gint i, tmp, max = 0; + + for (i = 0; videoFormatNames[i].name; i++) { + tmp = strlen(videoFormatNames[i].name); + if (max < tmp) max = tmp; + } + + return max; + +} /* max_input_video_format_text_entry_length() */ + + + +/* + * get_current_sync_format() - given the current state of the + * sync source and composite detection mode, return the value + * to use for the sync format dropdown. + */ + +static gint get_current_sync_format(CtkGvoSync *ctk_gvo_sync) +{ + /* Setup the sync format menu */ + + if (ctk_gvo_sync->sync_source == NV_CTRL_GVO_SYNC_SOURCE_SDI) { + return SYNC_FORMAT_SDI; + } else if (ctk_gvo_sync->comp_mode == + NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_AUTO) { + return SYNC_FORMAT_COMP_AUTO; + } else if (ctk_gvo_sync->comp_mode == + NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_BI_LEVEL) { + return SYNC_FORMAT_COMP_BI_LEVEL; + } else if (ctk_gvo_sync->comp_mode == + NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_TRI_LEVEL){ + return SYNC_FORMAT_COMP_TRI_LEVEL; + } + + // should not get here + return SYNC_FORMAT_SDI; + +} /* get_current_sync_format() */ + + + +/* + * sync_signal_detected() - Returns whether or not a sync signal + * is currently detected. + */ + +static gboolean sync_signal_detected(CtkGvoSync *ctk_gvo_sync) +{ + /* Is a sync signal detected? */ + + if ((ctk_gvo_sync->comp_sync_input_detected != + NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED_FALSE) || + (ctk_gvo_sync->sdi_sync_input_detected != + NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_NONE)) { + + return TRUE; + } + + return FALSE; +} + + + +/* + * set_sync_format_menu() - Selects the sync format drop down menu + * entry based on the current sync source and composite detection mode. + */ + +static void set_sync_format_menu(CtkGvoSync *ctk_gvo_sync) +{ + gint val = get_current_sync_format(ctk_gvo_sync); + + ctk_drop_down_menu_set_current_value + (CTK_DROP_DOWN_MENU(ctk_gvo_sync->sync_format_menu), val); +} + + + +/* + * update_sync_lock_status_text() - Sets the correct text based on the + * current state of input sync lock. + */ + +static void update_sync_lock_status_text(CtkGvoSync *ctk_gvo_sync) +{ + gchar *str = "Free Running"; + + switch (ctk_gvo_sync->sync_mode) { + + case NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING: + gtk_widget_set_sensitive(ctk_gvo_sync->sync_lock_status_text, FALSE); + break; + + case NV_CTRL_GVO_SYNC_MODE_GENLOCK: + gtk_widget_set_sensitive(ctk_gvo_sync->sync_lock_status_text, TRUE); + if (ctk_gvo_sync->sync_lock_status == + NV_CTRL_GVO_SYNC_LOCK_STATUS_LOCKED) { + str = "GenLocked"; + } + break; + + case NV_CTRL_GVO_SYNC_MODE_FRAMELOCK: + gtk_widget_set_sensitive(ctk_gvo_sync->sync_lock_status_text, TRUE); + if (ctk_gvo_sync->sync_lock_status == + NV_CTRL_GVO_SYNC_LOCK_STATUS_LOCKED) { + str = "FrameLocked"; + } break; + + default: + gtk_widget_set_sensitive(ctk_gvo_sync->sync_lock_status_text, FALSE); + str = "Unknown"; + break; + } + + gtk_label_set_text(GTK_LABEL(ctk_gvo_sync->sync_lock_status_text), str); + +} /* update_sync_lock_status_text() */ + + + + +/**** Creation Functions *****************************************************/ + +/* + * ctk_gvo_sync_new() - create a CtkGvoSync widget + */ + +GtkWidget* ctk_gvo_sync_new(NvCtrlAttributeHandle *handle, + GtkWidget *parent_window, + CtkConfig *ctk_config, + CtkEvent *ctk_event, + CtkGvo *gvo_parent) +{ + GObject *object; + CtkGvoSync *ctk_gvo_sync; + GtkWidget *frame; + GtkWidget *hbox; + GtkWidget *label; + GtkWidget *alignment; + GtkWidget *button; + + GtkWidget *table, *menu; + + gint val, i, width, height; + ReturnStatus ret; + gint row; + + + /* make sure we have a handle */ + + g_return_val_if_fail(handle != NULL, NULL); + + /* create and initialize the object */ + + object = g_object_new(CTK_TYPE_GVO_SYNC, NULL); + + ctk_gvo_sync = CTK_GVO_SYNC(object); + ctk_gvo_sync->handle = handle; + ctk_gvo_sync->parent_window = parent_window; + ctk_gvo_sync->ctk_config = ctk_config; + ctk_gvo_sync->ctk_event = ctk_event; + ctk_gvo_sync->gvo_parent = gvo_parent; + + /* Query the current GVO state */ + + if ( !query_init_gvo_sync_state(ctk_gvo_sync) ) { + // Free the object + g_object_ref(object); + gtk_object_sink(GTK_OBJECT(object)); + g_object_unref(object); + return NULL; + } + + /* set container properties for the widget */ + + gtk_box_set_spacing(GTK_BOX(object), 10); + + /* banner */ + + hbox = gtk_hbox_new(FALSE, 0); + gtk_box_pack_start(GTK_BOX(object), hbox, FALSE, FALSE, 0); + + ctk_gvo_sync->banner_box = hbox; + + /* + * Sync options + */ + + frame = gtk_frame_new("Sync Options"); + ctk_gvo_sync->frame = frame; + + gtk_box_pack_start(GTK_BOX(object), frame, FALSE, FALSE, 0); + + table = gtk_table_new(6, 2, FALSE); + gtk_table_set_row_spacings(GTK_TABLE(table), 0); + gtk_table_set_col_spacings(GTK_TABLE(table), 0); + + gtk_container_add(GTK_CONTAINER(frame), table); + + /* input video format */ + + label = gtk_label_new("Input Video Format: "); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + gtk_table_attach(GTK_TABLE(table), label, + 0, 1, 0, 1, GTK_FILL, GTK_FILL, + TABLE_PADDING, TABLE_PADDING); + + hbox = gtk_hbox_new(FALSE, 5); + + ctk_gvo_sync->input_video_format_text_entry = gtk_entry_new(); + + ctk_config_set_tooltip(ctk_config, + ctk_gvo_sync->input_video_format_text_entry, + __input_video_format_help); + + gtk_entry_set_width_chars + (GTK_ENTRY(ctk_gvo_sync->input_video_format_text_entry), + max_input_video_format_text_entry_length()); + + gtk_widget_set_sensitive(ctk_gvo_sync->input_video_format_text_entry, + FALSE); + + update_input_video_format_text_entry(ctk_gvo_sync); + + gtk_box_pack_start(GTK_BOX(hbox), + ctk_gvo_sync->input_video_format_text_entry, + TRUE, TRUE, 0); + + /* Input video format detect button */ + + button = gtk_toggle_button_new_with_label("Detect"); + alignment = gtk_alignment_new(1, 1, 0, 0); + gtk_container_add(GTK_CONTAINER(alignment), button); + + ctk_gvo_sync->input_video_format_detect_button = button; + + ctk_config_set_tooltip(ctk_config, button, + __input_video_format_detect_help); + + g_signal_connect(G_OBJECT(button), "toggled", + G_CALLBACK(detect_input_toggled), ctk_gvo_sync); + + gtk_box_pack_start(GTK_BOX(hbox), alignment, FALSE, FALSE, 0); + + gtk_table_attach(GTK_TABLE(table), hbox, + 1, 2, 0, 1, GTK_FILL | GTK_EXPAND, GTK_FILL, + TABLE_PADDING, TABLE_PADDING); + + /* Composite Termination */ + + if (ctk_gvo_sync->caps & NV_CTRL_GVO_CAPABILITIES_COMPOSITE_TERMINATION) { + + button = + gtk_check_button_new_with_label("Enable Composite Termination"); + + ctk_config_set_tooltip(ctk_config, button, + __composite_termination_help); + + alignment = gtk_alignment_new(1, 1, 0, 0); + + gtk_container_add(GTK_CONTAINER(alignment), button); + gtk_table_attach(GTK_TABLE(table), alignment, + 0, 2, 2, 3, GTK_FILL | GTK_EXPAND, GTK_FILL, + TABLE_PADDING, TABLE_PADDING); + + ctk_gvo_sync->composite_termination_button = button; + + init_composite_termination(ctk_gvo_sync); + + g_signal_connect(G_OBJECT(button), "toggled", + G_CALLBACK(composite_termination_toggled), + ctk_gvo_sync); + + row = 3; + } else { + ctk_gvo_sync->composite_termination_button = NULL; + row = 2; + } + + /* Sync Mode */ + + menu = start_menu("Sync Mode: ", table, row); + + ctk_drop_down_menu_append_item(CTK_DROP_DOWN_MENU(menu), "Free Running", + NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING); + + ctk_drop_down_menu_append_item(CTK_DROP_DOWN_MENU(menu), "GenLock", + NV_CTRL_GVO_SYNC_MODE_GENLOCK); + + ctk_drop_down_menu_append_item(CTK_DROP_DOWN_MENU(menu), "FrameLock", + NV_CTRL_GVO_SYNC_MODE_FRAMELOCK); + + finish_menu(menu, table, row); + row++; + + ctk_gvo_sync->sync_mode_menu = menu; + + ctk_config_set_tooltip(ctk_config, CTK_DROP_DOWN_MENU(menu)->option_menu, + __sync_mode_help); + + ctk_drop_down_menu_set_current_value + (CTK_DROP_DOWN_MENU(ctk_gvo_sync->sync_mode_menu), + ctk_gvo_sync->sync_mode); + + g_signal_connect(G_OBJECT(ctk_gvo_sync->sync_mode_menu), "changed", + G_CALLBACK(sync_mode_changed), (gpointer) ctk_gvo_sync); + + /* Sync Format */ + + menu = start_menu("Sync Format: ", table, row); + + for (i = 0; syncFormatNames[i].name; i++) { + ctk_drop_down_menu_append_item(CTK_DROP_DOWN_MENU(menu), + syncFormatNames[i].name, + syncFormatNames[i].format); + } + + finish_menu(menu, table, row); + row++; + + ctk_gvo_sync->sync_format_menu = menu; + + ctk_config_set_tooltip(ctk_config, CTK_DROP_DOWN_MENU(menu)->option_menu, + __sync_format_help); + + init_sync_format_menu(ctk_gvo_sync); + + g_signal_connect(G_OBJECT(ctk_gvo_sync->sync_format_menu), + "changed", G_CALLBACK(sync_format_changed), + (gpointer) ctk_gvo_sync); + + /* Sync Status */ + + label = gtk_label_new("Sync Status:"); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, row, row+1, + GTK_FILL, GTK_FILL, TABLE_PADDING, TABLE_PADDING); + + ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_SYNC_DELAY_PIXELS, &val); + if (ret != NvCtrlSuccess) val = 0; + + ctk_gvo_sync->sync_lock_status_text = gtk_label_new(""); + + update_sync_lock_status_text(ctk_gvo_sync); + + hbox = gtk_hbox_new(FALSE, 5); + gtk_box_pack_start(GTK_BOX(hbox), ctk_gvo_sync->sync_lock_status_text, + FALSE, FALSE, 0); + + gtk_table_attach(GTK_TABLE(table), hbox, + 1, 2, row, row+1, + GTK_FILL /*| GTK_EXPAND*/, GTK_FILL, + TABLE_PADDING, TABLE_PADDING); + row++; + + + /* + * Synchronization Delay + */ + + ctk_gvo_get_video_format_resolution(ctk_gvo_sync->input_video_format, + &width, &height); + + /* NV_CTRL_GVO_SYNC_DELAY_PIXELS */ + + label = gtk_label_new("HSync Delay:"); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, row, row+1, + GTK_FILL, GTK_FILL, TABLE_PADDING, TABLE_PADDING); + + ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_SYNC_DELAY_PIXELS, &val); + if (ret != NvCtrlSuccess) val = 0; + + if (width < 1) width = 1; + + ctk_gvo_sync->hsync_delay_spin_button = + gtk_spin_button_new_with_range(0.0, width, 1); + + ctk_config_set_tooltip(ctk_config, ctk_gvo_sync->hsync_delay_spin_button, + __hsync_delay_help); + + gtk_spin_button_set_value + (GTK_SPIN_BUTTON(ctk_gvo_sync->hsync_delay_spin_button), val); + + g_signal_connect(G_OBJECT(ctk_gvo_sync->hsync_delay_spin_button), + "value-changed", + G_CALLBACK(hsync_delay_changed), ctk_gvo_sync); + + hbox = gtk_hbox_new(FALSE, 5); + gtk_box_pack_start(GTK_BOX(hbox), ctk_gvo_sync->hsync_delay_spin_button, + FALSE, FALSE, 0); + + label = gtk_label_new("(pixels)"); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + gtk_box_pack_start(GTK_BOX(hbox), label, + FALSE, FALSE, 0); + + gtk_table_attach(GTK_TABLE(table), hbox, + 1, 2, row, row+1, + GTK_FILL /*| GTK_EXPAND*/, GTK_FILL, + TABLE_PADDING, TABLE_PADDING); + row++; + + /* NV_CTRL_GVO_SYNC_DELAY_LINES */ + + label = gtk_label_new("VSync Delay:"); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, row, row+1, + GTK_FILL, GTK_FILL, TABLE_PADDING, TABLE_PADDING); + + ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_SYNC_DELAY_LINES, &val); + if (ret != NvCtrlSuccess) val = 0; + + if (height < 1) height = 1; + + ctk_gvo_sync->vsync_delay_spin_button = + gtk_spin_button_new_with_range(0.0, height, 1); + + ctk_config_set_tooltip(ctk_config, ctk_gvo_sync->vsync_delay_spin_button, + __vsync_delay_help); + + gtk_spin_button_set_value + (GTK_SPIN_BUTTON(ctk_gvo_sync->vsync_delay_spin_button), val); + + g_signal_connect(G_OBJECT(ctk_gvo_sync->vsync_delay_spin_button), + "value-changed", + G_CALLBACK(vsync_delay_changed), ctk_gvo_sync); + + hbox = gtk_hbox_new(FALSE, 5); + gtk_box_pack_start(GTK_BOX(hbox), ctk_gvo_sync->vsync_delay_spin_button, + FALSE, FALSE, 0); + + label = gtk_label_new("(lines)"); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + gtk_box_pack_start(GTK_BOX(hbox), label, + FALSE, FALSE, 0); + + gtk_table_attach(GTK_TABLE(table), hbox, + 1, 2, row, row+1, + GTK_FILL /*| GTK_EXPAND*/, GTK_FILL, + TABLE_PADDING, TABLE_PADDING); + row++; + + + /* create the watch cursor (for use when the "Detect" button is toggled" */ + + ctk_gvo_sync->wait_cursor = gdk_cursor_new(GDK_WATCH); + + /* Set UI sensitivity */ + + update_gvo_sync_sensitivity(ctk_gvo_sync); + + /* Start listening for events */ + + register_for_gvo_sync_events(ctk_gvo_sync); + + /* show the page */ + + gtk_widget_show_all(GTK_WIDGET(object)); + + return GTK_WIDGET(object); + +} /* ctk_gvo_sync_new() */ + + + +/* + * start_menu() - Start the creation of a labled dropdown menu. (Packs + * the dropdown label into the table row. + */ + +static GtkWidget *start_menu(const gchar *name, GtkWidget *table, + const gint row) +{ + GtkWidget *menu, *label, *alignment; + + label = gtk_label_new(name); + alignment = gtk_alignment_new(0, 0, 0, 0); + gtk_container_add(GTK_CONTAINER(alignment), label); + + gtk_table_attach(GTK_TABLE(table), + alignment, 0, 1, row, row+1, GTK_FILL, GTK_FILL, + TABLE_PADDING, TABLE_PADDING); + + menu = ctk_drop_down_menu_new(CTK_DROP_DOWN_MENU_FLAG_MONOSPACE); + + return menu; +} + + + +/* + * finish_menu() - Finish/Finalize a dropdown menu. (Packs the menu in + * the table row.) + */ + +static void finish_menu(GtkWidget *menu, GtkWidget *table, const gint row) +{ + ctk_drop_down_menu_finalize(CTK_DROP_DOWN_MENU(menu)); + + gtk_table_attach(GTK_TABLE(table), menu, 1, 2, row, row+1, + GTK_FILL | GTK_EXPAND, GTK_FILL, + TABLE_PADDING, TABLE_PADDING); +} + + + + +/**** Initialization Functions ***********************************************/ + +/* + * query_init_gvo_sync_state() - Query the initial GVO state so we can setup + * the UI correctly. + */ + +static gboolean query_init_gvo_sync_state(CtkGvoSync *ctk_gvo_sync) +{ + gint val; + ReturnStatus ret; + + + /* Check if this screen supports GVO */ + + ret = NvCtrlGetAttribute(ctk_gvo_sync->handle, NV_CTRL_GVO_SUPPORTED, + &val); + if ((ret != NvCtrlSuccess) || (val != NV_CTRL_GVO_SUPPORTED_TRUE)) { + /* GVO not available */ + return FALSE; + } + + /* Get this GVO device's capabilities */ + + ret = NvCtrlGetAttribute(ctk_gvo_sync->handle, NV_CTRL_GVO_CAPABILITIES, + &val); + if (ret != NvCtrlSuccess) return FALSE; + ctk_gvo_sync->caps = val; + + /* Query the current input video formats */ + + ret = NvCtrlGetAttribute(ctk_gvo_sync->handle, + NV_CTRL_GVO_INPUT_VIDEO_FORMAT, &val); + if (ret != NvCtrlSuccess) { + val = NV_CTRL_GVO_VIDEO_FORMAT_NONE; + } + ctk_gvo_sync->input_video_format = val; + + /* Query the sync mode */ + + ret = NvCtrlGetAttribute(ctk_gvo_sync->handle, NV_CTRL_GVO_SYNC_MODE, + &val); + if (ret != NvCtrlSuccess) { + val = NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING; + } + ctk_gvo_sync->sync_mode = val; + + /* query COMPOSITE_SYNC_INPUT_DETECTED */ + + ret = NvCtrlGetAttribute(ctk_gvo_sync->handle, + NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED, &val); + if (ret != NvCtrlSuccess) { + val = NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED_FALSE; + } + ctk_gvo_sync->comp_sync_input_detected = val; + + /* query COMPOSITE_SYNC_INPUT_DETECT_MODE */ + + ret = NvCtrlGetAttribute(ctk_gvo_sync->handle, + NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE, + &val); + if (ret != NvCtrlSuccess) { + val = NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_AUTO; + } + ctk_gvo_sync->comp_mode = val; + + /* query SDI_SYNC_INPUT_DETECTED */ + + ret = NvCtrlGetAttribute(ctk_gvo_sync->handle, + NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED, &val); + if (ret != NvCtrlSuccess) { + val = NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_NONE; + } + ctk_gvo_sync->sdi_sync_input_detected = val; + + /* query sync source */ + + ret = NvCtrlGetAttribute(ctk_gvo_sync->handle, + NV_CTRL_GVO_SYNC_SOURCE, + &val); + if (ret != NvCtrlSuccess) { + val = NV_CTRL_GVO_SYNC_SOURCE_SDI; + } + ctk_gvo_sync->sync_source = val; + + /* Query framelock/genlock status */ + + ret = NvCtrlGetAttribute(ctk_gvo_sync->handle, + NV_CTRL_GVO_SYNC_LOCK_STATUS, + &val); + if (ret != NvCtrlSuccess) { + val = NV_CTRL_GVO_SYNC_LOCK_STATUS_UNLOCKED; + } + ctk_gvo_sync->sync_lock_status = val; + + return TRUE; + +} /* query_init_gvo_sync_state() */ + + + +/* + * init_composite_termination() - Initialize the state of the composite + * termination button. + */ + +static void init_composite_termination(CtkGvoSync *ctk_gvo_sync) +{ + ReturnStatus ret; + gint val; + + if (!ctk_gvo_sync->composite_termination_button) return; + + ret = NvCtrlGetAttribute(ctk_gvo_sync->handle, + NV_CTRL_GVO_COMPOSITE_TERMINATION, &val); + if (ret != NvCtrlSuccess) { + val = NV_CTRL_GVO_COMPOSITE_TERMINATION_DISABLE; + } + + gtk_toggle_button_set_active + (GTK_TOGGLE_BUTTON(ctk_gvo_sync->composite_termination_button), + ((val == NV_CTRL_GVO_COMPOSITE_TERMINATION_ENABLE) ? TRUE : FALSE)); + +} /* init_composite_termination() */ + + + +/* + * init_sync_format_menu() - initialize the sync format menu + */ + +static void init_sync_format_menu(CtkGvoSync *ctk_gvo_sync) +{ + set_sync_format_menu(ctk_gvo_sync); + +} /* init_sync_format_menu() */ + + + +/* + * register_for_gvo_sync_events() - Configure ctk_gvo_sync object to listen + * for GVO synchronization related evens. + */ + +static void register_for_gvo_sync_events(CtkGvoSync *ctk_gvo_sync) +{ + g_signal_connect(G_OBJECT(ctk_gvo_sync->ctk_event), + CTK_EVENT_NAME(NV_CTRL_GVO_SYNC_MODE), + G_CALLBACK(gvo_sync_event_received), + (gpointer) ctk_gvo_sync); + + g_signal_connect(G_OBJECT(ctk_gvo_sync->ctk_event), + CTK_EVENT_NAME(NV_CTRL_GVO_SYNC_SOURCE), + G_CALLBACK(gvo_sync_event_received), + (gpointer) ctk_gvo_sync); + + g_signal_connect(G_OBJECT(ctk_gvo_sync->ctk_event), + CTK_EVENT_NAME(NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE), + G_CALLBACK(gvo_sync_event_received), + (gpointer) ctk_gvo_sync); + + g_signal_connect(G_OBJECT(ctk_gvo_sync->ctk_event), + CTK_EVENT_NAME(NV_CTRL_GVO_SYNC_DELAY_PIXELS), + G_CALLBACK(gvo_sync_event_received), + (gpointer) ctk_gvo_sync); + + g_signal_connect(G_OBJECT(ctk_gvo_sync->ctk_event), + CTK_EVENT_NAME(NV_CTRL_GVO_SYNC_DELAY_LINES), + G_CALLBACK(gvo_sync_event_received), + (gpointer) ctk_gvo_sync); + + g_signal_connect(G_OBJECT(ctk_gvo_sync->ctk_event), + CTK_EVENT_NAME(NV_CTRL_GVO_COMPOSITE_TERMINATION), + G_CALLBACK(gvo_sync_event_received), + (gpointer) ctk_gvo_sync); + +} /* register_for_gvo_sync_events() */ + + + + +/**** Common Update Functions ************************************************/ + +/* + * update_gvo_sync_sensitivity() - Updates the sensitivity of various UI + * wigets based on whether or not an input sync signal is detected. + * + */ + +static void update_gvo_sync_sensitivity(CtkGvoSync *ctk_gvo_sync) +{ + gboolean sensitive; + + /* Allow selection of the sync format if we're not free-running */ + + sensitive = (ctk_gvo_sync->sync_mode != + NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING) ? TRUE : FALSE; + + gtk_widget_set_sensitive(ctk_gvo_sync->sync_format_menu, sensitive); + + /* Update options that require a valid sync signal */ + + sensitive = (sensitive && sync_signal_detected(ctk_gvo_sync)); + + gtk_widget_set_sensitive(ctk_gvo_sync->hsync_delay_spin_button, sensitive); + gtk_widget_set_sensitive(ctk_gvo_sync->vsync_delay_spin_button, sensitive); + +} /* update_gvo_sync_sensitivity() */ + + + +/* + * update_input_video_format_text_entry() - Displays the currently detected + * input video format. + */ + +static void update_input_video_format_text_entry(CtkGvoSync *ctk_gvo_sync) +{ + gint i; + const gchar *str; + + if (ctk_gvo_sync->sync_mode == NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING) { + str = "Free Running"; + } else { + str = "No incoming signal detected"; + for (i = 0; videoFormatNames[i].name; i++) { + if (videoFormatNames[i].format == ctk_gvo_sync->input_video_format) { + str = videoFormatNames[i].name; + } + } + } + gtk_entry_set_text(GTK_ENTRY(ctk_gvo_sync->input_video_format_text_entry), str); + +} /* update_input_video_format_text_entry() */ + + + +/* + * post_composite_termination_toggled() - Call this function after + * the composite termination attribute has changed. + */ + +static void post_composite_termination_toggled(CtkGvoSync *ctk_gvo_sync, + gboolean enabled) +{ + /* update the statusbar */ + + ctk_config_statusbar_message(ctk_gvo_sync->ctk_config, + "Composite Termination %s.", + enabled ? "Enabled" : "Disabled"); + +} /* post_composite_termination_toggled() */ + + + +/* + * post_sync_mode_menu_changed() - Call this function after the sync mode + * menu has changed. + * + */ + +static void post_sync_mode_menu_changed(CtkGvoSync *ctk_gvo_sync, gint value) +{ + char *name; + + /* Update the UI */ + + update_input_video_format_text_entry(ctk_gvo_sync); + update_gvo_sync_sensitivity(ctk_gvo_sync); + + switch (value) { + case NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING: name = "Free Running"; break; + case NV_CTRL_GVO_SYNC_MODE_GENLOCK: name = "GenLock"; break; + case NV_CTRL_GVO_SYNC_MODE_FRAMELOCK: name = "FrameLock"; break; + default: return; + } + + ctk_config_statusbar_message(ctk_gvo_sync->ctk_config, + "Sync Mode set to %s.", name); + +} /* post_sync_mode_menu_changed() */ + + + +/* + * post_sync_format_menu_changed() - Call this function after teh sync + * format has changed. + */ + +static void post_sync_format_menu_changed(CtkGvoSync *ctk_gvo_sync) +{ + const char *name = "Unknown"; + gint value; + gint i; + + + /* Update the status bar */ + + value = get_current_sync_format(ctk_gvo_sync); + + for (i = 0; syncFormatNames[i].name; i++) { + if (syncFormatNames[i].format == value) { + name = syncFormatNames[i].name; + break; + } + } + + ctk_config_statusbar_message(ctk_gvo_sync->ctk_config, + "Sync Format set to \"%s\".", name); + +} /* post_sync_format_menu_changed() */ + + + +/* + * update_delay_spin_buttons_range() - Updates the range of the + * delay spin buttons. + */ + +static void update_delay_spin_buttons_range(CtkGvoSync *ctk_gvo_sync) +{ + gint w, h; + + ctk_gvo_get_video_format_resolution(ctk_gvo_sync->input_video_format, + &w, &h); + + gtk_spin_button_set_range + (GTK_SPIN_BUTTON(ctk_gvo_sync->hsync_delay_spin_button), 0, w); + gtk_spin_button_set_range + (GTK_SPIN_BUTTON(ctk_gvo_sync->vsync_delay_spin_button), 0, h); + +} /* update_delay_spin_buttons_range() */ + + + + +/**** UI Event Handlers ************************************************/ + +/* + * detect_input_toggled() - if the Detect button is enabled, then enable + * INPUT_VIDEO_FORMAT_REACQUIRE, make everything else insensitive, + * switch to the wait cursor, and queue detect_input_done() to be + * called. + */ + +static void detect_input_toggled(GtkToggleButton *togglebutton, + CtkGvoSync *ctk_gvo_sync) +{ + gboolean enabled; + + enabled = gtk_toggle_button_get_active(togglebutton); + + if (!enabled) return; + + /* grab the server */ + + gtk_grab_add(ctk_gvo_sync->input_video_format_detect_button); + + /* change the cursor */ + + gdk_window_set_cursor + ((GTK_WIDGET(ctk_gvo_sync->parent_window))->window, + ctk_gvo_sync->wait_cursor); + + /* make all other widgets insensitive */ + + gtk_widget_set_sensitive(ctk_gvo_sync->frame, FALSE); + + /* enable REACQUIRE */ + + NvCtrlSetAttribute(ctk_gvo_sync->handle, + NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE, + NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE_TRUE); + + /* update the statusbar */ + + ctk_config_statusbar_message(ctk_gvo_sync->ctk_config, + "Detecting incoming signal..."); + + /* register the "done" function */ + + g_timeout_add(DEFAULT_DETECT_INPUT_TIME_INTERVAL, + detect_input_done, (gpointer) ctk_gvo_sync); + +} /* detect_input_toggled() */ + + + +/* + * detect_input_done() - done detecting; disable REACQUIRE, make all + * widgets sensitive again, and probe the new state + */ + +static gint detect_input_done(gpointer data) +{ + CtkGvoSync *ctk_gvo_sync = CTK_GVO_SYNC(data); + + /* disable REACQUIRE */ + + NvCtrlSetAttribute(ctk_gvo_sync->handle, + NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE, + NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE_FALSE); + + /* reprobe */ + + ctk_gvo_banner_probe((gpointer)(ctk_gvo_sync->gvo_parent->banner)); + + /* un-press the detect button */ + + g_signal_handlers_block_by_func + (G_OBJECT(ctk_gvo_sync->input_video_format_detect_button), + G_CALLBACK(detect_input_toggled), + (gpointer) ctk_gvo_sync); + + gtk_toggle_button_set_active + (GTK_TOGGLE_BUTTON(ctk_gvo_sync->input_video_format_detect_button), FALSE); + + g_signal_handlers_unblock_by_func + (G_OBJECT(ctk_gvo_sync->input_video_format_detect_button), + G_CALLBACK(detect_input_toggled), + (gpointer) ctk_gvo_sync); + + /* update the status bar */ + + ctk_config_statusbar_message(ctk_gvo_sync->ctk_config, + "Done detecting incoming signal."); + + /* restore sensitivity */ + + gtk_widget_set_sensitive(ctk_gvo_sync->frame, TRUE); + + /* restore the cursor */ + + gdk_window_set_cursor((GTK_WIDGET(ctk_gvo_sync->parent_window))->window, + NULL); + + /* ungrab the server */ + + gtk_grab_remove(ctk_gvo_sync->input_video_format_detect_button); + + return FALSE; + +} /* detect_input_done() */ + + + +/* + * composite_termination_toggled() - Called when the user clicks + * on the "Enable Composite Termination" check button. + */ + +static void composite_termination_toggled(GtkWidget *button, + CtkGvoSync *ctk_gvo_sync) +{ + gboolean enabled; + + enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)); + + NvCtrlSetAttribute(ctk_gvo_sync->handle, + NV_CTRL_GVO_COMPOSITE_TERMINATION, + (enabled ? NV_CTRL_GVO_COMPOSITE_TERMINATION_ENABLE : + NV_CTRL_GVO_COMPOSITE_TERMINATION_DISABLE)); + + post_composite_termination_toggled(ctk_gvo_sync, enabled); + +} /* composite_termination_toggled() */ + + + +/* + * sync_mode_changed() - callback when the user makes a selection from the + * sync mode menu. + */ + +static void sync_mode_changed(CtkDropDownMenu *menu, gpointer user_data) +{ + CtkGvoSync *ctk_gvo_sync = CTK_GVO_SYNC(user_data); + gint value; + char *name; + + value = ctk_drop_down_menu_get_current_value(menu); + + switch (value) { + case NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING: name = "Free Running"; break; + case NV_CTRL_GVO_SYNC_MODE_GENLOCK: name = "GenLock"; break; + case NV_CTRL_GVO_SYNC_MODE_FRAMELOCK: name = "FrameLock"; break; + default: return; + } + + NvCtrlSetAttribute(ctk_gvo_sync->handle, NV_CTRL_GVO_SYNC_MODE, value); + + if (value != NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING) { + NvCtrlSetAttribute(ctk_gvo_sync->handle, NV_CTRL_GVO_SYNC_SOURCE, + ctk_gvo_sync->sync_source); + } + + ctk_gvo_sync->sync_mode = value; + + post_sync_mode_menu_changed(ctk_gvo_sync, value); + +} /* sync_mode_changed() */ + + + +/* + * sync_format_changed() - callback when the user makes a selection from the + * sync format menu (from the UI.) + */ + +static void sync_format_changed(CtkDropDownMenu *menu, gpointer user_data) +{ + CtkGvoSync *ctk_gvo_sync = CTK_GVO_SYNC(user_data); + gint value, sync_source, comp_mode; + + value = ctk_drop_down_menu_get_current_value(menu); + + switch (value) { + case SYNC_FORMAT_SDI: + sync_source = NV_CTRL_GVO_SYNC_SOURCE_SDI; + comp_mode = NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_AUTO; + break; + case SYNC_FORMAT_COMP_AUTO: + sync_source = NV_CTRL_GVO_SYNC_SOURCE_COMPOSITE; + comp_mode = NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_AUTO; + break; + case SYNC_FORMAT_COMP_BI_LEVEL: + sync_source = NV_CTRL_GVO_SYNC_SOURCE_COMPOSITE; + comp_mode = NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_BI_LEVEL; + break; + case SYNC_FORMAT_COMP_TRI_LEVEL: + sync_source = NV_CTRL_GVO_SYNC_SOURCE_COMPOSITE; + comp_mode = NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_TRI_LEVEL; + break; + default: + return; + } + + ctk_gvo_sync->sync_source = sync_source; + ctk_gvo_sync->comp_mode = comp_mode; + + NvCtrlSetAttribute(ctk_gvo_sync->handle, + NV_CTRL_GVO_SYNC_SOURCE, sync_source); + + NvCtrlSetAttribute(ctk_gvo_sync->handle, + NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE, + comp_mode); + + post_sync_format_menu_changed(ctk_gvo_sync); + +} /* sync_format_changed() */ + + + +/* + * hsync_delay_changed() - UI Callback function for when the user changes + * the hsync delay. + */ + +static void hsync_delay_changed(GtkSpinButton *spinbutton, gpointer user_data) +{ + CtkGvoSync *ctk_gvo_sync = CTK_GVO_SYNC(user_data); + gint val; + + val = gtk_spin_button_get_value(spinbutton); + + NvCtrlSetAttribute(ctk_gvo_sync->handle, NV_CTRL_GVO_SYNC_DELAY_PIXELS, + val); + +} /* hsync_delay_changed() */ + + + +/* + * vsync_delay_changed() - UI Callback function for when the user changes + * the vsync delay. + */ + +static void vsync_delay_changed(GtkSpinButton *spinbutton, gpointer user_data) +{ + CtkGvoSync *ctk_gvo_sync = CTK_GVO_SYNC(user_data); + gint val; + + val = gtk_spin_button_get_value(spinbutton); + + NvCtrlSetAttribute(ctk_gvo_sync->handle, NV_CTRL_GVO_SYNC_DELAY_LINES, + val); + +} /* vsync_delay_changed() */ + + + + +/**** NV-CONTROL/Misc Event Handlers *****************************************/ + +/* + * gvo_sync_event_received() - Callback function for handling + * NV-CONTROL events. + */ + +static void gvo_sync_event_received(GtkObject *object, + gpointer arg1, + gpointer user_data) +{ + CtkEventStruct *event_struct = (CtkEventStruct *) arg1; + CtkGvoSync *ctk_gvo_sync = CTK_GVO_SYNC(user_data); + GtkWidget *widget; + gint attribute = event_struct->attribute; + gint value = event_struct->value; + gboolean update_sync_format = FALSE; + + switch (attribute) { + case NV_CTRL_GVO_SYNC_MODE: + ctk_gvo_sync->sync_mode = value; + post_sync_mode_menu_changed(ctk_gvo_sync, value); + break; + + case NV_CTRL_GVO_SYNC_SOURCE: + ctk_gvo_sync->sync_source = value; + update_sync_format = TRUE; + break; + + case NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE: + ctk_gvo_sync->comp_mode = value; + update_sync_format = TRUE; + break; + + case NV_CTRL_GVO_SYNC_DELAY_PIXELS: + widget = ctk_gvo_sync->hsync_delay_spin_button; + + g_signal_handlers_block_by_func(G_OBJECT(widget), + G_CALLBACK(hsync_delay_changed), + (gpointer) ctk_gvo_sync); + + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), value); + + g_signal_handlers_unblock_by_func(G_OBJECT(widget), + G_CALLBACK(hsync_delay_changed), + (gpointer) ctk_gvo_sync); + break; + + case NV_CTRL_GVO_SYNC_DELAY_LINES: + widget = ctk_gvo_sync->vsync_delay_spin_button; + + g_signal_handlers_block_by_func(G_OBJECT(widget), + G_CALLBACK(vsync_delay_changed), + (gpointer) ctk_gvo_sync); + + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), value); + + g_signal_handlers_unblock_by_func(G_OBJECT(widget), + G_CALLBACK(vsync_delay_changed), + (gpointer) ctk_gvo_sync); + break; + + case NV_CTRL_GVO_COMPOSITE_TERMINATION: + widget = ctk_gvo_sync->composite_termination_button; + + if (widget) { + g_signal_handlers_block_by_func + (G_OBJECT(widget), + G_CALLBACK(composite_termination_toggled), + ctk_gvo_sync); + + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), value); + + g_signal_handlers_unblock_by_func + (G_OBJECT(widget), + G_CALLBACK(composite_termination_toggled), + ctk_gvo_sync); + + post_composite_termination_toggled(ctk_gvo_sync, value); + } + break; + } + + + /* Update the sync format menu */ + if (update_sync_format) { + widget = ctk_gvo_sync->sync_format_menu; + + g_signal_handlers_block_by_func(G_OBJECT(widget), + G_CALLBACK(sync_format_changed), + (gpointer) ctk_gvo_sync); + + set_sync_format_menu(ctk_gvo_sync); + + g_signal_handlers_unblock_by_func(G_OBJECT(widget), + G_CALLBACK(sync_format_changed), + (gpointer) ctk_gvo_sync); + + post_sync_format_menu_changed(ctk_gvo_sync); + } + +} /* gvo_sync_event_received() */ + + + +/* + * gvo_sync_probe_callback() - Callback function for when the + * sync signals are probed. + */ + +static gint gvo_sync_probe_callback(gpointer data) +{ + CtkGvoSync *ctk_gvo_sync = CTK_GVO_SYNC(data); + CtkGvo *ctk_gvo = ctk_gvo_sync->gvo_parent; + + /* update our copies of some SDI state variables */ + + ctk_gvo_sync->input_video_format = + CTK_GVO_BANNER(ctk_gvo->banner)->input_video_format; + + ctk_gvo_sync->comp_sync_input_detected = + CTK_GVO_BANNER(ctk_gvo->banner)->composite_sync_input_detected; + + ctk_gvo_sync->sdi_sync_input_detected = + CTK_GVO_BANNER(ctk_gvo->banner)->sdi_sync_input_detected; + + ctk_gvo_sync->sync_lock_status = + CTK_GVO_BANNER(ctk_gvo->banner)->sync_lock_status; + + /* update the UI */ + + update_input_video_format_text_entry(ctk_gvo_sync); + + update_sync_lock_status_text(ctk_gvo_sync); + + update_delay_spin_buttons_range(ctk_gvo_sync); + + update_gvo_sync_sensitivity(ctk_gvo_sync); + + return TRUE; + +} /* gvo_sync_probe_callback() */ + + + +/* + * ctk_gvo_sync_select() - Callback function for when the GVO + * sync config page is selected. + */ +void ctk_gvo_sync_select(GtkWidget *widget) +{ + CtkGvoSync *ctk_gvo_sync = CTK_GVO_SYNC(widget); + CtkGvo *ctk_gvo = ctk_gvo_sync->gvo_parent; + + /* Grab the GVO banner */ + + ctk_gvo_banner_set_parent(CTK_GVO_BANNER(ctk_gvo->banner), + ctk_gvo_sync->banner_box, + gvo_sync_probe_callback, ctk_gvo_sync); +} + + + +/* + * ctk_gvo_sync_unselect() - Callback function for when the GVO + * sync config page is unselected. + */ + +void ctk_gvo_sync_unselect(GtkWidget *widget) +{ + CtkGvoSync *ctk_gvo_sync = CTK_GVO_SYNC(widget); + CtkGvo *ctk_gvo = ctk_gvo_sync->gvo_parent; + + /* Release the GVO banner */ + + ctk_gvo_banner_set_parent(CTK_GVO_BANNER(ctk_gvo->banner), + NULL, NULL, NULL); +} + + + +/* + * ctk_gvo_sync_create_help() - GVO sync configuration help page + * creation. + */ + +GtkTextBuffer* ctk_gvo_sync_create_help(GtkTextTagTable *table, + CtkGvoSync *ctk_gvo_sync) +{ + GtkTextIter i; + GtkTextBuffer *b; + + b = gtk_text_buffer_new(table); + + gtk_text_buffer_get_iter_at_offset(b, &i, 0); + + ctk_help_title(b, &i, "GVO (Graphics to Video Out) Synchronization " + "options"); + ctk_help_para(b, &i, "This page gives access to configuration of the " + "SDI synchronization options."); + + ctk_help_heading(b, &i, "Input Video Format"); + ctk_help_para(b, &i, __input_video_format_help); + ctk_help_heading(b, &i, "Input Video Format Detect"); + ctk_help_para(b, &i, __input_video_format_detect_help); + ctk_help_heading(b, &i, "Composite Termination"); + ctk_help_para(b, &i, "%s. This allows the composite signal to be daisy " + "chained from a server load.", + __composite_termination_help); + ctk_help_heading(b, &i, "Sync Mode"); + ctk_help_para(b, &i, __sync_mode_help); + ctk_help_heading(b, &i, "Sync Format"); + ctk_help_para(b, &i, __sync_format_help); + ctk_help_heading(b, &i, "Sync Status"); + ctk_help_para(b, &i, __sync_status_help); + ctk_help_heading(b, &i, "HSync Delay"); + ctk_help_para(b, &i, __hsync_delay_help); + ctk_help_heading(b, &i, "VSync Delay"); + ctk_help_para(b, &i, __vsync_delay_help); + + ctk_help_finish(b); + + return b; +} diff --git a/src/gtk+-2.x/ctkgvo-sync.h b/src/gtk+-2.x/ctkgvo-sync.h new file mode 100644 index 0000000..7480bb7 --- /dev/null +++ b/src/gtk+-2.x/ctkgvo-sync.h @@ -0,0 +1,123 @@ +/* + * nvidia-settings: A tool for configuring the NVIDIA X driver on Unix + * and Linux systems. + * + * Copyright (C) 2004 NVIDIA Corporation. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of Version 2 of the GNU General Public + * License as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See Version 2 + * of the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the: + * + * Free Software Foundation, Inc. + * 59 Temple Place - Suite 330 + * Boston, MA 02111-1307, USA + * + */ + +#ifndef __CTK_GVO_SYNC_H__ +#define __CTK_GVO_SYNC_H__ + +#include "ctkevent.h" +#include "ctkconfig.h" +#include "ctkgvo.h" + + +G_BEGIN_DECLS + +#define CTK_TYPE_GVO_SYNC (ctk_gvo_sync_get_type()) + +#define CTK_GVO_SYNC(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), CTK_TYPE_GVO_SYNC, \ + CtkGvoSync)) + +#define CTK_GVO_SYNC_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), CTK_TYPE_GVO_SYNC, \ + CtkGvoSyncClass)) + +#define CTK_IS_GVO_SYNC(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CTK_TYPE_GVO_SYNC)) + +#define CTK_IS_GVO_SYNC_CLASS(class) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), CTK_TYPE_GVO_SYNC)) + +#define CTK_GVO_SYNC_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), CTK_TYPE_GVO_SYNC, \ + CtkGvoSyncClass)) + + +typedef struct _CtkGvoSync CtkGvoSync; +typedef struct _CtkGvoSyncClass CtkGvoSyncClass; + + +struct _CtkGvoSync +{ + GtkVBox parent; + + NvCtrlAttributeHandle *handle; + GtkWidget *parent_window; + CtkConfig *ctk_config; + CtkEvent *ctk_event; + + /* State */ + + gint caps; // SDI device capabilities + gint sync_mode; // NV_CTRL_GVO_SYNC_MODE + + gint input_video_format; // NV_CTRL_GVO_INPUT_VIDEO_FORMAT + gint sync_source; // NV_CTRL_ SDI and COMP sync formats... + + gint sdi_sync_input_detected; + gint comp_sync_input_detected; + gint comp_mode; + gint sync_lock_status; // Genlocked/Framelock status + + /* Widgets */ + + GtkWidget *frame; + + CtkGvo *gvo_parent; + GtkWidget *banner_box; + + GtkWidget *input_video_format_text_entry; + GtkWidget *input_video_format_detect_button; + GtkWidget *composite_termination_button; + + GtkWidget *sync_mode_menu; + GtkWidget *sync_format_menu; // SDI/Composite sync format + GtkWidget *sync_lock_status_text; + + GtkWidget *hsync_delay_spin_button; + GtkWidget *vsync_delay_spin_button; + + GdkCursor *wait_cursor; +}; + +struct _CtkGvoSyncClass +{ + GtkVBoxClass parent_class; +}; + + +GType ctk_gvo_sync_get_type (void) G_GNUC_CONST; +GtkWidget* ctk_gvo_sync_new (NvCtrlAttributeHandle *, GtkWidget *, + CtkConfig *, CtkEvent *, CtkGvo *); + +GtkTextBuffer* ctk_gvo_sync_create_help(GtkTextTagTable *, CtkGvoSync *); + +void ctk_gvo_sync_select(GtkWidget *); +void ctk_gvo_sync_unselect(GtkWidget *); + +//GtkTextBuffer* ctk_gvo_sync_create_help (GtkTextTagTable *table); + + +G_END_DECLS + +#endif /* __CTK_GVO_SYNC_H__ */ diff --git a/src/gtk+-2.x/ctkgvo.c b/src/gtk+-2.x/ctkgvo.c index 3e903ed..26dedb2 100644 --- a/src/gtk+-2.x/ctkgvo.c +++ b/src/gtk+-2.x/ctkgvo.c @@ -25,6 +25,9 @@ #include <gtk/gtk.h> #include <string.h> +#include <X11/Xlib.h> +#include <X11/extensions/Xrandr.h> + #include "NvCtrlAttributes.h" #include "ctkhelp.h" @@ -34,156 +37,117 @@ #include "ctkimage.h" #include "ctkbanner.h" -#include "msg.h" +#include "ctkgvo-banner.h" -/* local prototypes */ +#include "msg.h" -static void init_gvo_banner(CtkGvo *ctk_gvo, CtkGvoBanner *banner); -static gboolean update_gvo_banner(gpointer data); -static void update_gvo_banner_video_output(CtkGvoBanner *banner, - gint output_video_format, - gint output_data_format); -static void update_gvo_banner_video_input(CtkGvoBanner *banner, - gint sdi, gint comp); +#define TABLE_PADDING 5 -static GtkWidget *start_menu(const gchar *name, GtkWidget *table, - const gint row); -static void finish_menu(GtkWidget *menu, GtkWidget *table, const gint row); +/* Some defaults */ +#define DEFAULT_OUTPUT_VIDEO_FORMAT \ + NV_CTRL_GVO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC -static void sync_mode_changed(CtkDropDownMenu *menu, gpointer user_data); +#define DEFAULT_OUTPUT_DATA_FORMAT \ + NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB444 -static void output_video_format_changed(CtkDropDownMenu *menu, - gpointer user_data); -static void post_output_video_format_changed(CtkGvo *ctk_gvo, gint value); +/* General information help */ -static void output_data_format_changed(CtkDropDownMenu *menu, - gpointer user_data); +static const char * __general_firmware_version_help = +"The Firmware Version reports the version of the firmware running on the " +"SDI device."; -static void post_output_data_format_changed(CtkGvo *ctk_gvo, gint value); +static const char * __general_current_sdi_resolution_help = +"The Current SDI Resolution reports the current active resolution that the " +"SDI device is driving or 'Inactive' if SDI is currently disabled."; -static void update_sync_mode_menu(CtkGvo *ctk_gvo, - const gint composite_sync, - const gint sdi_sync, - const gint current); +static const char * __general_current_sdi_state_help = +"The Current SDI state reports on the current usage of the SDI device."; -static void init_sync_mode_menu(CtkGvo *ctk_gvo); -static void update_output_video_format_menu(CtkGvo *ctk_gvo); +/* Clone mode help */ -static void init_output_video_format_menu(CtkGvo *ctk_gvo); +static const char * __clone_mode_video_format_help = +"The Video Format drop-down allows you to select the desired resolution and " +"refresh rate to be used for Clone Mode."; -static void init_output_data_format_menu(CtkGvo *ctk_gvo); +static const char * __clone_mode_data_format_help = +"The Data Format drop-down allows you to select the desired data format that " +"the SDI will output."; +static const char * __clone_mode_x_offset_help = +"The X Offset determines the start location of the left side of SDI output " +"window when in Clone Mode."; -static void create_toggle_sdi_output_button(CtkGvo *ctk_gvo, gboolean enabled); +static const char * __clone_mode_y_offset_help = +"The Y Offset determines the start location of the top of the SDI output " +"window when in Clone Mode."; -static void toggle_sdi_output_button(GtkWidget *button, gpointer user_data); +static const char * __clone_mode_enable_clone_mode_help = +"The Enable Clone Mode button toggles SDI Clone mode."; -static void post_toggle_sdi_output_button(CtkGvo *gvo, gboolean enabled); -static void init_sync_format_menu(CtkGvo *ctk_gvo); -static void update_sync_format_menu(CtkGvo *ctk_gvo); +/* local prototypes */ -static void sync_format_changed(CtkDropDownMenu *menu, gpointer user_data); +static gboolean query_init_gvo_state(CtkGvo *ctk_gvo); -static void update_input_video_format_text_entry(CtkGvo *ctk_gvo); +static void query_video_format_details(CtkGvo *ctk_gvo); -static void init_input_video_format_text_entry(CtkGvo *ctk_gvo); +static void register_for_gvo_events(CtkGvo *ctk_gvo); -static void init_composite_termination(CtkGvo *ctk_gvo); -static int max_input_video_format_text_entry_length(void); +static GtkWidget *start_menu(const gchar *name, GtkWidget *table, + const gint row); +static void finish_menu(GtkWidget *menu, GtkWidget *table, const gint row); -static void post_toggle_composite_termination(CtkGvo *gvo, gboolean enabled); -static void toggle_composite_termination(GtkWidget *button, - CtkGvo *ctk_gvo); +static void fill_output_video_format_menu(CtkGvo *ctk_gvo); +static void trim_output_video_format_menu(CtkGvo *ctk_gvo); +static void output_video_format_ui_changed(CtkDropDownMenu *menu, + gpointer user_data); +static void post_output_video_format_changed(CtkGvo *ctk_gvo); -static void detect_input(GtkToggleButton *togglebutton, CtkGvo *ctk_gvo); -static gint detect_input_done(gpointer data); -static const char *get_video_format_name(const gint format); -static const char *get_data_format_name(const gint format); -static void get_video_format_resolution(const gint format, gint *w, gint *h); +static void validate_output_data_format(CtkGvo *ctk_gvo); +static void output_data_format_ui_changed(CtkDropDownMenu *menu, + gpointer user_data); +static void post_output_data_format_changed(CtkGvo *ctk_gvo); -static void set_gvo_sensitivity(CtkGvo *ctk_gvo, - gboolean sensitive, guint flags); -static void get_video_format_details(CtkGvo *ctk_gvo); +static void x_offset_ui_changed(GtkSpinButton *spinbutton, gpointer user_data); +static void y_offset_ui_changed(GtkSpinButton *spinbutton, gpointer user_data); -static void update_gvo_current_info(CtkGvo *ctk_gvo, guint lock_owner); -static void update_delay_spin_buttons(CtkGvo *ctk_gvo); +static void create_toggle_clone_mode_button(CtkGvo *ctk_gvo); +static void clone_mode_button_ui_toggled(GtkWidget *button, + gpointer user_data); +static void post_clone_mode_button_toggled(CtkGvo *gvo); -static void hsync_delay_changed(GtkSpinButton *spinbutton, gpointer user_data); -static void vsync_delay_changed(GtkSpinButton *spinbutton, gpointer user_data); -static void update_offset_spin_buttons(CtkGvo *ctk_gvo); +static void update_gvo_current_info(CtkGvo *ctk_gvo); +static void update_offset_spin_button_ranges(CtkGvo *ctk_gvo); +static void update_gvo_sensitivity(CtkGvo *ctk_gvo); -static void x_offset_changed(GtkSpinButton *spinbutton, gpointer user_data); -static void y_offset_changed(GtkSpinButton *spinbutton, gpointer user_data); - -static void register_for_gvo_events(CtkGvo *ctk_gvo); static void gvo_event_received(GtkObject *object, gpointer arg1, gpointer user_data); - -static void composite_callback(CtkBanner *banner, void *data); - - -GType ctk_gvo_get_type(void) -{ - static GType ctk_gvo_type = 0; - - if (!ctk_gvo_type) { - static const GTypeInfo ctk_gvo_info = { - sizeof (CtkGvoClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - NULL, /* constructor */ - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (CtkGvo), - 0, /* n_preallocs */ - NULL, /* instance_init */ - }; - - ctk_gvo_type = - g_type_register_static(GTK_TYPE_VBOX, "CtkGvo", - &ctk_gvo_info, 0); - } - - return ctk_gvo_type; - -} /* ctk_gvo_get_type() */ - +static void screen_changed_handler(GtkWidget *widget, + XRRScreenChangeNotifyEvent *ev, + gpointer data); /* * video format table -- should this be moved into NV-CONTROL? */ -typedef struct { - int format; - const char *name; -} FormatName; - -typedef struct { - int format; - int rate; - int width; - int height; -} FormatDetails; - -static const FormatName videoFormatNames[] = { - { NV_CTRL_GVO_VIDEO_FORMAT_480I_59_94_SMPTE259_NTSC, "720 x 480i 59.94 Hz (SMPTE259) NTSC"}, +const GvoFormatName videoFormatNames[] = { + { NV_CTRL_GVO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC, "720 x 487i 59.94 Hz (SMPTE259) NTSC"}, { NV_CTRL_GVO_VIDEO_FORMAT_576I_50_00_SMPTE259_PAL, "720 x 576i 50.00 Hz (SMPTE259) PAL"}, { NV_CTRL_GVO_VIDEO_FORMAT_720P_23_98_SMPTE296, "1280 x 720p 23.98 Hz (SMPTE296)" }, { NV_CTRL_GVO_VIDEO_FORMAT_720P_24_00_SMPTE296, "1280 x 720p 24.00 Hz (SMPTE296)" }, @@ -225,8 +189,8 @@ static const FormatName videoFormatNames[] = { }; -static FormatDetails videoFormatDetails[] = { - { NV_CTRL_GVO_VIDEO_FORMAT_480I_59_94_SMPTE259_NTSC, 0, 0, 0 }, +static GvoFormatDetails videoFormatDetails[] = { + { NV_CTRL_GVO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC, 0, 0, 0 }, { NV_CTRL_GVO_VIDEO_FORMAT_576I_50_00_SMPTE259_PAL, 0, 0, 0 }, { NV_CTRL_GVO_VIDEO_FORMAT_720P_23_98_SMPTE296, 0, 0, 0 }, { NV_CTRL_GVO_VIDEO_FORMAT_720P_24_00_SMPTE296, 0, 0, 0 }, @@ -268,7 +232,7 @@ static FormatDetails videoFormatDetails[] = { }; -static const FormatName dataFormatNames[] = { +static const GvoFormatName dataFormatNames[] = { { NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB444, "RGB -> YCrCb (4:4:4)" }, { NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB422, "RGB -> YCrCb (4:2:2)" }, { NV_CTRL_GVO_DATA_FORMAT_X8X8X8_444_PASSTHRU,"RGB (4:4:4)" }, @@ -277,1144 +241,146 @@ static const FormatName dataFormatNames[] = { -#define TABLE_PADDING 5 - - -#define SYNC_FORMAT_SDI 0 -#define SYNC_FORMAT_COMP_AUTO 1 -#define SYNC_FORMAT_COMP_BI_LEVEL 2 -#define SYNC_FORMAT_COMP_TRI_LEVEL 3 +/**** Utility Functions ******************************************************/ -static const FormatName syncFormatNames[] = { - { SYNC_FORMAT_SDI, "SDI Sync" }, - { SYNC_FORMAT_COMP_AUTO, "COMP Sync" }, - { SYNC_FORMAT_COMP_BI_LEVEL, "COMP Sync (Bi-level)" }, - { SYNC_FORMAT_COMP_TRI_LEVEL, "COMP Sync (Tri-level)" }, - { -1, NULL }, -}; - - -/* arguments to set_gvo_sensitivity() */ - -#define SET_SENSITIVITY_EXCLUDE_ENABLE_BUTTON 0x0001 -#define SET_SENSITIVITY_EXCLUDE_DETECT_BUTTON 0x0002 -#define SET_SENSITIVITY_EXCLUDE_ROI_BUTTONS 0x0004 - -#define DEFAULT_DETECT_INPUT_TIME_INTERVAL 2000 -#define UPDATE_GVO_BANNER_TIME_INTERVAL 200 -#define DEFAULT_GVO_PROBE_TIME_INTERVAL 1000 /* - * ctk_gvo_new() - constructor for the CtkGvo widget + * get_first_available_output_video_format() - returns the first available + * output video format from the dropdown menu. This is needed since when + * Frame Lock/Genlock are enabled, the default case of 487i may not be + * appropriate. */ -GtkWidget* ctk_gvo_new(NvCtrlAttributeHandle *handle, - GtkWidget *parent_window, - CtkConfig *ctk_config, - CtkEvent *ctk_event) +static gint get_first_available_output_video_format(CtkGvo *ctk_gvo) { - GObject *object; - CtkGvo *ctk_gvo; - GtkWidget *hbox, *alignment, *button, *label; - ReturnStatus ret; - gchar scratch[64], *firmware, *string; - gint val, i, width, height, n, caps; - - GtkWidget *frame, *table, *menu; - - /* make sure we have a handle */ - - g_return_val_if_fail(handle != NULL, NULL); - - /* check if this screen supports GVO */ - - ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_SUPPORTED, &val); - if ((ret != NvCtrlSuccess) || (val != NV_CTRL_GVO_SUPPORTED_TRUE)) { - /* GVO not available */ - return NULL; - } - - /* Get this GVO device's capabilities */ - - ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_CAPABILITIES, &caps); - if (ret != NvCtrlSuccess) return NULL; - - /* create the CtkGvo object */ - - object = g_object_new(CTK_TYPE_GVO, NULL); - - /* initialize fields in the CtkGvo object */ - - ctk_gvo = CTK_GVO(object); - ctk_gvo->handle = handle; - ctk_gvo->parent_window = parent_window; - ctk_gvo->ctk_config = ctk_config; - ctk_gvo->ctk_event = ctk_event; - - /* set container properties for the CtkGvo widget */ - - gtk_box_set_spacing(GTK_BOX(ctk_gvo), 10); - - /* banner */ - - hbox = gtk_hbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(object), hbox, FALSE, FALSE, 0); - - ctk_gvo->banner_box = hbox; - - init_gvo_banner(ctk_gvo, &ctk_gvo->banner); - - - /* - * General information - */ - - frame = gtk_frame_new("General Information"); - - gtk_box_pack_start(GTK_BOX(object), frame, FALSE, FALSE, 0); - - table = gtk_table_new(3, 2, FALSE); - - gtk_table_set_row_spacings(GTK_TABLE(table), 3); - gtk_table_set_col_spacings(GTK_TABLE(table), 15); - gtk_container_set_border_width(GTK_CONTAINER(table), 5); - gtk_container_add(GTK_CONTAINER(frame), table); - - /* GVO_FIRMWARE_VERSION */ - - string = NULL; - - ret = NvCtrlGetStringAttribute(handle, - NV_CTRL_STRING_GVO_FIRMWARE_VERSION, - &string); - - if ((ret == NvCtrlSuccess) && (string)) { - firmware = strdup(string); - } else { - - /* - * NV_CTRL_STRING_GVO_FIRMWARE_VERSION was added later, so - * older X servers may not know about it; fallback to - * NV_CTRL_GVO_FIRMWARE_VERSION - */ - - ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_FIRMWARE_VERSION, &val); - - if (ret == NvCtrlSuccess) { - snprintf(scratch, 64, "1.%02d", val); - firmware = strdup(scratch); - } else { - firmware = strdup("???"); - } - } - - add_table_row(table, 0, - 0, 0.5, "Firmware Version:", - 0, 0.5, firmware); - ctk_gvo->current_resolution_label = - add_table_row(table, 1, - 0, 0.5, "Current SDI Resolution:", - 0, 0.5, "Inactive"); - ctk_gvo->current_state_label = - add_table_row(table, 2, - 0, 0.5, "Current SDI State:", - 0, 0.5, "Inactive"); - - - /* - * Sync options - */ - - frame = gtk_frame_new("Sync Options"); - - gtk_box_pack_start(GTK_BOX(object), frame, FALSE, FALSE, 0); - - table = gtk_table_new(4, 2, FALSE); - gtk_table_set_row_spacings(GTK_TABLE(table), 0); - gtk_table_set_col_spacings(GTK_TABLE(table), 0); - - gtk_container_add(GTK_CONTAINER(frame), table); - - /* Sync Mode */ - - menu = start_menu("Sync Mode: ", table, 0); - - ctk_drop_down_menu_append_item(CTK_DROP_DOWN_MENU(menu), "Free Running", - NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING); - - ctk_drop_down_menu_append_item(CTK_DROP_DOWN_MENU(menu), "GenLock", - NV_CTRL_GVO_SYNC_MODE_GENLOCK); - - ctk_drop_down_menu_append_item(CTK_DROP_DOWN_MENU(menu), "FrameLock", - NV_CTRL_GVO_SYNC_MODE_FRAMELOCK); - - finish_menu(menu, table, 0); - - ctk_gvo->sync_mode_menu = menu; - - init_sync_mode_menu(ctk_gvo); - - g_signal_connect(G_OBJECT(ctk_gvo->sync_mode_menu), "changed", - G_CALLBACK(sync_mode_changed), (gpointer) ctk_gvo); - - /* Sync Format */ - - menu = start_menu("Sync Format: ", table, 1); - - for (i = 0; syncFormatNames[i].name; i++) { - ctk_drop_down_menu_append_item(CTK_DROP_DOWN_MENU(menu), - syncFormatNames[i].name, - syncFormatNames[i].format); - } - - finish_menu(menu, table, 1); - - ctk_gvo->sync_format_menu = menu; - - init_sync_format_menu(ctk_gvo); - - g_signal_connect(G_OBJECT(ctk_gvo->sync_format_menu), - "changed", G_CALLBACK(sync_format_changed), - (gpointer) ctk_gvo); - - /* input type */ - - label = gtk_label_new("Input Video Format: "); - alignment = gtk_alignment_new(0, 0, 0, 0); - gtk_container_add(GTK_CONTAINER(alignment), label); - - gtk_table_attach(GTK_TABLE(table), - alignment, 0, 1, 2, 3, GTK_FILL, GTK_FILL, - TABLE_PADDING, TABLE_PADDING); - - ctk_gvo->input_video_format_text_entry = gtk_entry_new(); - - gtk_widget_set_sensitive(ctk_gvo->input_video_format_text_entry, FALSE); - gtk_entry_set_width_chars - (GTK_ENTRY(ctk_gvo->input_video_format_text_entry), - max_input_video_format_text_entry_length()); - - init_input_video_format_text_entry(ctk_gvo); - - gtk_table_attach(GTK_TABLE(table), ctk_gvo->input_video_format_text_entry, - 1, 2, 2, 3, GTK_FILL | GTK_EXPAND, GTK_FILL, - TABLE_PADDING, TABLE_PADDING); - - /* detect button */ - - button = gtk_toggle_button_new_with_label("Detect"); - - alignment = gtk_alignment_new(1, 1, 0, 0); - - gtk_container_add(GTK_CONTAINER(alignment), button); - gtk_table_attach(GTK_TABLE(table), alignment, - 1, 2, 3, 4, GTK_FILL | GTK_EXPAND, GTK_FILL, - TABLE_PADDING, TABLE_PADDING); - - ctk_gvo->input_video_format_detect_button = button; - - g_signal_connect(G_OBJECT(button), "toggled", - G_CALLBACK(detect_input), ctk_gvo); - - /* Composite Termination */ - - if (caps & NV_CTRL_GVO_CAPABILITIES_COMPOSITE_TERMINATION) { - - button = - gtk_check_button_new_with_label("Enable Composite Termination"); - - alignment = gtk_alignment_new(1, 1, 0, 0); - - gtk_container_add(GTK_CONTAINER(alignment), button); - gtk_table_attach(GTK_TABLE(table), alignment, - 1, 2, 4, 5, GTK_FILL | GTK_EXPAND, GTK_FILL, - TABLE_PADDING, TABLE_PADDING); - - ctk_gvo->composite_termination_button = button; - - init_composite_termination(ctk_gvo); - - g_signal_connect(G_OBJECT(button), "toggled", - G_CALLBACK(toggle_composite_termination), ctk_gvo); - } else { - ctk_gvo->composite_termination_button = NULL; - } - - /* - * Output options - */ - - frame = gtk_frame_new("Output Options"); - - gtk_box_pack_start(GTK_BOX(object), frame, FALSE, FALSE, 0); - - table = gtk_table_new(3, 2, FALSE); - gtk_table_set_row_spacings(GTK_TABLE(table), 0); - gtk_table_set_col_spacings(GTK_TABLE(table), 0); - - gtk_container_add(GTK_CONTAINER(frame), table); - - /* Output Video Format */ - - menu = start_menu("Output Video Format: ", table, 0); - - ctk_gvo->screen_width = NvCtrlGetScreenWidth(handle); - ctk_gvo->screen_height = NvCtrlGetScreenHeight(handle); - - /* get the width, height, and refresh rate for each format */ - - get_video_format_details(ctk_gvo); - - n = 0; - - for (i = 0; videoFormatNames[i].name; i++) { - - /* - * runtime check that videoFormatDetails[] and - * videoFormatNames[] are in sync - */ - - if (videoFormatDetails[i].format != videoFormatNames[i].format) { - nv_error_msg("GVO format tables out of alignment!"); - return NULL; - } - - /* check that the current X screen can support width and height */ - - width = videoFormatDetails[i].width; - height = videoFormatDetails[i].height; - - if ((width > ctk_gvo->screen_width) || - (height > ctk_gvo->screen_height)) { - - nv_warning_msg("Not exposing GVO video format '%s' (this video " - "format requires a resolution of atleast %d x %d, " - "but the current X screen is %d x %d)", - videoFormatNames[i].name, - width, height, ctk_gvo->screen_width, - ctk_gvo->screen_height); - continue; - } - - ctk_drop_down_menu_append_item(CTK_DROP_DOWN_MENU(menu), - videoFormatNames[i].name, - videoFormatNames[i].format); - n++; - } - - finish_menu(menu, table, 0); - - if (!n) { - nv_warning_msg("No GVO video formats will fit the current X screen of " - "%d x %d; please create an X screen of atleast " - "720 x 487; not exposing GVO page.\n", - ctk_gvo->screen_width, ctk_gvo->screen_height); - return NULL; - } - - - ctk_gvo->output_video_format_menu = menu; - - init_output_video_format_menu(ctk_gvo); - - g_signal_connect(G_OBJECT(ctk_gvo->output_video_format_menu), - "changed", G_CALLBACK(output_video_format_changed), - (gpointer) ctk_gvo); - - - /* Output Data Format */ - - menu = start_menu("Output Data Format: ", table, 1); - - for (i = 0; dataFormatNames[i].name; i++) { - ctk_drop_down_menu_append_item(CTK_DROP_DOWN_MENU(menu), - dataFormatNames[i].name, - dataFormatNames[i].format); - } - - finish_menu(menu, table, 1); - - ctk_gvo->output_data_format_menu = menu; - - g_signal_connect(G_OBJECT(ctk_gvo->output_data_format_menu), - "changed", G_CALLBACK(output_data_format_changed), - (gpointer) ctk_gvo); - - init_output_data_format_menu(ctk_gvo); - - - /* - * Synchronization Delay - */ - - frame = gtk_frame_new("Synchronization Delay"); - - gtk_box_pack_start(GTK_BOX(object), frame, FALSE, FALSE, 0); - - table = gtk_table_new(2, 2, FALSE); - - gtk_table_set_row_spacings(GTK_TABLE(table), 3); - gtk_table_set_col_spacings(GTK_TABLE(table), 15); - gtk_container_set_border_width(GTK_CONTAINER(table), 5); - gtk_container_add(GTK_CONTAINER(frame), table); - - get_video_format_resolution(ctk_gvo->input_video_format, &width, &height); - - /* NV_CTRL_GVO_SYNC_DELAY_PIXELS */ - - label = gtk_label_new("HSync Delay (in pixels): "); - gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); - gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, - GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - - ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_SYNC_DELAY_PIXELS, &val); - if (ret != NvCtrlSuccess) val = 0; - - if (width < 1) width = 1; - - ctk_gvo->hsync_delay_spin_button = - gtk_spin_button_new_with_range(0.0, width, 1); - - gtk_spin_button_set_value - (GTK_SPIN_BUTTON(ctk_gvo->hsync_delay_spin_button), val); - - g_signal_connect(G_OBJECT(ctk_gvo->hsync_delay_spin_button), - "value-changed", - G_CALLBACK(hsync_delay_changed), ctk_gvo); - - gtk_table_attach(GTK_TABLE(table), ctk_gvo->hsync_delay_spin_button, - 1, 2, 0, 1, - GTK_FILL /*| GTK_EXPAND*/, GTK_FILL, - TABLE_PADDING, TABLE_PADDING); - - /* NV_CTRL_GVO_SYNC_DELAY_LINES */ - - label = gtk_label_new("VSync Delay (in lines): "); - gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); - gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, - GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - - ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_SYNC_DELAY_LINES, &val); - if (ret != NvCtrlSuccess) val = 0; - - if (height < 1) height = 1; - - ctk_gvo->vsync_delay_spin_button = - gtk_spin_button_new_with_range(0.0, height, 1); - - gtk_spin_button_set_value - (GTK_SPIN_BUTTON(ctk_gvo->vsync_delay_spin_button), val); - - g_signal_connect(G_OBJECT(ctk_gvo->vsync_delay_spin_button), - "value-changed", - G_CALLBACK(vsync_delay_changed), ctk_gvo); - - gtk_table_attach(GTK_TABLE(table), ctk_gvo->vsync_delay_spin_button, - 1, 2, 1, 2, - GTK_FILL /*| GTK_EXPAND*/, GTK_FILL, - TABLE_PADDING, TABLE_PADDING); - - /* - * Region of Interest - */ - - frame = gtk_frame_new("Region of Interest"); - - gtk_box_pack_start(GTK_BOX(object), frame, FALSE, FALSE, 0); - - hbox = gtk_hbox_new(FALSE, 5); - gtk_container_add(GTK_CONTAINER(frame), hbox); - gtk_container_set_border_width(GTK_CONTAINER(hbox), 5); - - get_video_format_resolution(ctk_gvo->output_video_format, &width, &height); - - /* NV_CTRL_GVO_X_SCREEN_PAN_X */ - - label = gtk_label_new("X Offset: "); - gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, TABLE_PADDING); - - ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_X_SCREEN_PAN_X, &val); - if (ret != NvCtrlSuccess) val = 0; - - width = ctk_gvo->screen_width - width; - if (width < 1) width = 1; - - ctk_gvo->x_offset_spin_button = - gtk_spin_button_new_with_range(0.0, width, 1); - - gtk_spin_button_set_value - (GTK_SPIN_BUTTON(ctk_gvo->x_offset_spin_button), val); - - g_signal_connect(G_OBJECT(ctk_gvo->x_offset_spin_button), - "value-changed", - G_CALLBACK(x_offset_changed), ctk_gvo); - - gtk_box_pack_start(GTK_BOX(hbox), ctk_gvo->x_offset_spin_button, - FALSE, FALSE, TABLE_PADDING); - - /* NV_CTRL_GVO_X_SCREEN_PAN_Y */ - - label = gtk_label_new("Y Offset: "); - gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, TABLE_PADDING); - - ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_X_SCREEN_PAN_Y, &val); - if (ret != NvCtrlSuccess) val = 0; - - height = ctk_gvo->screen_height - height; - if (height < 1) height = 1; - - ctk_gvo->y_offset_spin_button = - gtk_spin_button_new_with_range(0.0, height, 1); - - gtk_spin_button_set_value - (GTK_SPIN_BUTTON(ctk_gvo->y_offset_spin_button), val); - - g_signal_connect(G_OBJECT(ctk_gvo->y_offset_spin_button), - "value-changed", - G_CALLBACK(y_offset_changed), ctk_gvo); - - gtk_box_pack_start(GTK_BOX(hbox), ctk_gvo->y_offset_spin_button, - FALSE, FALSE, TABLE_PADDING); - - - /* - * "Enable SDI Output" button - */ - - ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_DISPLAY_X_SCREEN, &val); - if (ret != NvCtrlSuccess) val = 0; - - create_toggle_sdi_output_button(ctk_gvo, val); - - post_toggle_sdi_output_button(ctk_gvo, val); - - alignment = gtk_alignment_new(1, 1, 0, 0); - gtk_container_add(GTK_CONTAINER(alignment), - ctk_gvo->toggle_sdi_output_button); - - gtk_box_pack_start(GTK_BOX(object), alignment, TRUE, TRUE, 0); - - /* create the watch cursor (for use when "Detect" is toggled" */ - - ctk_gvo->wait_cursor = gdk_cursor_new(GDK_WATCH); - - /* - * register a timeout function (directly with glib, not through - * ctk_config) to update the LEDs - */ - - g_timeout_add(UPDATE_GVO_BANNER_TIME_INTERVAL, update_gvo_banner, - &ctk_gvo->banner); - - string = g_strdup_printf("Graphics To Video Probe (Screen %u)", - NvCtrlGetTargetId(handle)); - - ctk_config_add_timer(ctk_gvo->ctk_config, - DEFAULT_GVO_PROBE_TIME_INTERVAL, - string, - (GSourceFunc) ctk_gvo_probe, - (gpointer) ctk_gvo); - - g_free(string); - - - register_for_gvo_events(ctk_gvo); - - /* show the GVO widget */ - - gtk_widget_show_all(GTK_WIDGET(ctk_gvo)); - - return GTK_WIDGET(ctk_gvo); - -} /* ctk_gvo_new() */ - - - -/**************************************************************************/ -/* - * code for handling the GVO banner - */ - -/* value for controlling LED state */ - -#define GVO_LED_VID_OUT_NOT_IN_USE 0 -#define GVO_LED_VID_OUT_HD_MODE 1 -#define GVO_LED_VID_OUT_SD_MODE 2 - -#define GVO_LED_SDI_SYNC_NONE 0 -#define GVO_LED_SDI_SYNC_HD 1 -#define GVO_LED_SDI_SYNC_SD 2 -#define GVO_LED_SDI_SYNC_ERROR 3 - -#define GVO_LED_COMP_SYNC_NONE 0 -#define GVO_LED_COMP_SYNC_SYNC 1 - -#define LED_GREY 0 -#define LED_GREEN 1 -#define LED_YELLOW 2 -#define LED_RED 3 - -/* Position of LEDs relative to the SDI image. */ - -static int __led_pos_x[] = { 74, 101, 128, 156 }; // From sdi.png -static int __led_pos_y = 36; // From sdi.png - - - -/* - * draw_led() - Updates the LED to the given color in the banner's - * backing pixbuf. - */ - -static void draw_led(CtkBanner *ctk_banner, int led, int color) { - - /* Which LED to draw */ - int dst_x = ctk_banner->artwork_x +__led_pos_x[led]; - int dst_y = ctk_banner->artwork_y +__led_pos_y; - - /* Offset LED color into LED position */ - int offset_x = ctk_banner->artwork_x +__led_pos_x[led] -__led_pos_x[color]; - int offset_y = ctk_banner->artwork_y; - - gdk_pixbuf_composite(ctk_banner->artwork.pixbuf, // src - ctk_banner->back.pixbuf, // dest - dst_x, // dest_x - dst_y, // dest_y - 10, // dest_width - 10, // dest_height - offset_x, // offset_x - offset_y, // offset_y - 1.0, // scale_x - 1.0, // scale_y - GDK_INTERP_BILINEAR, // interp_type - 255); // overall_alpha -} - - - -/* - * composite_callback() - Draws all the LEDs to the banner. - */ -static void composite_callback(CtkBanner *ctk_banner, void *data) -{ - CtkGvo *ctk_gvo = (CtkGvo *) data; + CtkDropDownMenu *dmenu = + CTK_DROP_DOWN_MENU(ctk_gvo->output_video_format_menu); int i; - /* Grab the latest banner widget */ - ctk_gvo->banner.ctk_banner = GTK_WIDGET(ctk_banner); - - /* Draw the current state */ - for (i = 0; i < 4; i++) { - draw_led(ctk_banner, i, ctk_gvo->banner.img[i]); - } -} - - - -/* - * update_led() - Updates the state of an LED and causes and expose event. - */ - -static void update_led(CtkGvoBanner *banner, int led, int color) -{ - GtkWidget *ctk_banner = banner->ctk_banner; - GdkRectangle rec = {0, __led_pos_y, 10,10}; - - /* Update the state of the LED */ - banner->img[led] = color; - - /* Draw the LED and tell gdk to draw it to the window */ - if (ctk_banner && ctk_banner->window) { - - draw_led(CTK_BANNER(ctk_banner), led, color); - - rec.x = CTK_BANNER(ctk_banner)->artwork_x + __led_pos_x[led]; - rec.y = CTK_BANNER(ctk_banner)->artwork_y + __led_pos_y; - gdk_window_invalidate_rect(ctk_banner->window, &rec, TRUE); - } -} - - - -/* - * init_gvo_banner() - initialize the GVO banner - */ - -static void init_gvo_banner(CtkGvo *ctk_gvo, CtkGvoBanner *banner) -{ - /* Create the banner image */ - banner->widget = ctk_banner_image_new_with_callback(BANNER_ARTWORK_SDI, - composite_callback, - ctk_gvo); - g_object_ref(banner->widget); - - banner->ctk_banner = NULL; - - /* - * initialize LED state - */ - - banner->state[GVO_BANNER_VID1] = GVO_LED_VID_OUT_NOT_IN_USE; - banner->state[GVO_BANNER_VID2] = GVO_LED_VID_OUT_NOT_IN_USE; - banner->state[GVO_BANNER_SDI] = GVO_LED_SDI_SYNC_NONE; - banner->state[GVO_BANNER_COMP] = GVO_LED_COMP_SYNC_NONE; - - banner->img[GVO_BANNER_VID1] = LED_GREY; - banner->img[GVO_BANNER_VID2] = LED_GREY; - banner->img[GVO_BANNER_SDI] = LED_GREY; - banner->img[GVO_BANNER_COMP] = LED_GREY; - - gtk_widget_show_all(GTK_WIDGET(banner->widget)); - -} /* init_gvo_banner() */ - - - -/* - * update_gvo_banner() - called by a timer to update the LED images - * based on current state - */ - -static gboolean update_gvo_banner(gpointer data) -{ - guint8 old, new; - CtkGvoBanner *banner = (CtkGvoBanner *) data; - - /* - * we store the flashing state here: - * - * 0 == no LED is currently flashing - * 1 == some LED is flashing; currently "on" (lit) - * 2 == some LED is flashing; currently "off" (grey) - * - * this is used to track the current state, so that we can make - * all LEDs flash at the same time. + /* look through the output video format dropdown for the first + * available selection. */ - - gint flashing = 0; - - - /* Vid 1 out */ - - old = banner->img[GVO_BANNER_VID1]; - - if (banner->state[GVO_BANNER_VID1] == GVO_LED_VID_OUT_HD_MODE) { - new = (old == LED_GREY) ? LED_GREEN: LED_GREY; - flashing = (new == LED_GREY) ? 2 : 1; - - } else if (banner->state[GVO_BANNER_VID1] == GVO_LED_VID_OUT_SD_MODE) { - new = (old == LED_GREY) ? LED_YELLOW: LED_GREY; - flashing = (new == LED_GREY) ? 2 : 1; - - } else { - new = LED_GREY; - } - - if (old != new) { - update_led(banner, GVO_BANNER_VID1, new); - } - - /* Vid 2 out */ - - old = banner->img[GVO_BANNER_VID2]; - - if (banner->state[GVO_BANNER_VID2] == GVO_LED_VID_OUT_HD_MODE) { - if (flashing) { - new = (flashing == 1) ? LED_GREEN: LED_GREY; - } else { - new = (old == LED_GREY) ? LED_GREEN: LED_GREY; - flashing = (new == LED_GREY) ? 2 : 1; - } - } else if (banner->state[GVO_BANNER_VID2] == GVO_LED_VID_OUT_SD_MODE) { - if (flashing) { - new = (flashing == 1) ? LED_YELLOW: LED_GREY; - } else { - new = (old == LED_GREY) ? LED_YELLOW: LED_GREY; - flashing = (new == LED_GREY) ? 2 : 1; - } - } else { - new = LED_GREY; - } - - if (old != new) { - update_led(banner, GVO_BANNER_VID2, new); - } - - /* SDI sync */ - - old = banner->img[GVO_BANNER_SDI]; - - if (banner->state[GVO_BANNER_SDI] == GVO_LED_SDI_SYNC_HD) { - if (flashing) { - new = (flashing == 1) ? LED_GREEN : LED_GREY; - } else { - new = (banner->img[GVO_BANNER_SDI] == LED_GREY) ? - LED_GREEN : LED_GREY; - flashing = (new == LED_GREY) ? 2 : 1; - } - } else if (banner->state[GVO_BANNER_SDI] == GVO_LED_SDI_SYNC_SD) { - if (flashing) { - new = (flashing == 1) ? LED_YELLOW : LED_GREY; - } else { - new = (banner->img[GVO_BANNER_SDI] == LED_GREY) ? - LED_YELLOW : LED_GREY; - flashing = (new == LED_GREY) ? 2 : 1; + for (i = 0; i < dmenu->num_entries; i++) { + if (GTK_WIDGET_IS_SENSITIVE(dmenu->values[i].menu_item)) { + return dmenu->values[i].value; } - } else if (banner->state[GVO_BANNER_SDI] == GVO_LED_SDI_SYNC_ERROR) { - new = LED_YELLOW; - } else { - new = LED_GREY; - } - - if (old != new) { - update_led(banner, GVO_BANNER_SDI, new); } - /* COMP sync */ - - old = banner->img[GVO_BANNER_COMP]; - - if (banner->state[GVO_BANNER_COMP] == GVO_LED_COMP_SYNC_SYNC) { - if (flashing) { - new = (flashing == 1) ? LED_GREEN : LED_GREY; - } else { - new = (banner->img[GVO_BANNER_COMP] == LED_GREY) ? - LED_GREEN : LED_GREY; - } - } else { - new = LED_GREY; - } - - if (old != new) { - update_led(banner, GVO_BANNER_COMP, new); - } - - return TRUE; - -} /* update_gvo_banner() */ - - - -/* - * update_gvo_banner_video_output() - update banner state accordingly, - * based on the current output_video_format and output_data_format - */ - -static void update_gvo_banner_video_output(CtkGvoBanner *banner, - gint output_video_format, - gint output_data_format) -{ - if (output_video_format == NV_CTRL_GVO_VIDEO_FORMAT_NONE) { - banner->state[GVO_BANNER_VID1] = GVO_LED_VID_OUT_NOT_IN_USE; - banner->state[GVO_BANNER_VID2] = GVO_LED_VID_OUT_NOT_IN_USE; - } else if ((output_video_format == - NV_CTRL_GVO_VIDEO_FORMAT_480I_59_94_SMPTE259_NTSC) || - (output_video_format == - NV_CTRL_GVO_VIDEO_FORMAT_576I_50_00_SMPTE259_PAL)) { - banner->state[GVO_BANNER_VID1] = GVO_LED_VID_OUT_SD_MODE; - banner->state[GVO_BANNER_VID2] = GVO_LED_VID_OUT_SD_MODE; - } else { - banner->state[GVO_BANNER_VID1] = GVO_LED_VID_OUT_HD_MODE; - banner->state[GVO_BANNER_VID2] = GVO_LED_VID_OUT_HD_MODE; - } - - if (output_data_format == NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB422) { - banner->state[GVO_BANNER_VID2] = GVO_LED_VID_OUT_NOT_IN_USE; - } -} /* update_gvo_banner_video_output() */ - - - -/* - * update_gvo_banner_video_input() - update banner state accordingly, - * based on the current sdi and composite input - */ - -static void update_gvo_banner_video_input(CtkGvoBanner *banner, - gint sdi, gint comp) -{ - if (sdi == NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_HD) { - banner->state[GVO_BANNER_SDI] = GVO_LED_SDI_SYNC_HD; - } else if (sdi == NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_SD) { - banner->state[GVO_BANNER_SDI] = GVO_LED_SDI_SYNC_SD; - } else { - banner->state[GVO_BANNER_SDI] = GVO_LED_SDI_SYNC_NONE; - } - - banner->state[GVO_BANNER_COMP] = comp ? - GVO_LED_COMP_SYNC_SYNC : GVO_LED_COMP_SYNC_NONE; - -} /* update_gvo_banner_video_input() */ - - - -/**************************************************************************/ - - - -static GtkWidget *start_menu(const gchar *name, GtkWidget *table, - const gint row) -{ - GtkWidget *menu, *label, *alignment; - - label = gtk_label_new(name); - alignment = gtk_alignment_new(0, 0, 0, 0); - gtk_container_add(GTK_CONTAINER(alignment), label); - - gtk_table_attach(GTK_TABLE(table), - alignment, 0, 1, row, row+1, GTK_FILL, GTK_FILL, - TABLE_PADDING, TABLE_PADDING); - - menu = ctk_drop_down_menu_new(CTK_DROP_DOWN_MENU_FLAG_MONOSPACE); - - return menu; -} - - -static void finish_menu(GtkWidget *menu, GtkWidget *table, const gint row) -{ - ctk_drop_down_menu_finalize(CTK_DROP_DOWN_MENU(menu)); + /* There are no available video formats? Fallback to 487i. */ - gtk_table_attach(GTK_TABLE(table), menu, 1, 2, row, row+1, - GTK_FILL | GTK_EXPAND, GTK_FILL, - TABLE_PADDING, TABLE_PADDING); -} + return NV_CTRL_GVO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC; +} /* get_first_available_output_video_format() */ -/**************************************************************************/ /* - * sync_mode_changed() - callback when the SyncMode menu changes + * ctk_gvo_get_video_format_name() - return the name of the given video format */ -static void sync_mode_changed(CtkDropDownMenu *menu, gpointer user_data) +const char *ctk_gvo_get_video_format_name(const gint format) { - CtkGvo *ctk_gvo = CTK_GVO(user_data); - gint value; - char *name; - - value = ctk_drop_down_menu_get_current_value(menu); - - switch (value) { - case NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING: name = "Free Running"; break; - case NV_CTRL_GVO_SYNC_MODE_GENLOCK: name = "GenLock"; break; - case NV_CTRL_GVO_SYNC_MODE_FRAMELOCK: name = "FrameLock"; break; - default: return; - } - - NvCtrlSetAttribute(ctk_gvo->handle, NV_CTRL_GVO_SYNC_MODE, value); + gint i; - if (value != NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING) { - NvCtrlSetAttribute(ctk_gvo->handle, NV_CTRL_GVO_SYNC_SOURCE, - ctk_gvo->sync_source); + for (i = 0; videoFormatNames[i].name; i++) { + if (videoFormatNames[i].format == format) { + return videoFormatNames[i].name; + } } - ctk_gvo->sync_mode = value; - - update_output_video_format_menu(ctk_gvo); - - update_sync_format_menu(ctk_gvo); - - ctk_config_statusbar_message(ctk_gvo->ctk_config, - "Sync Mode set to %s.", name); + return "Unknown"; -} /* sync_mode_changed() */ +} /* ctk_gvo_get_video_format_name() */ /* - * output_video_format_changed() - callback when the output video - * format menu changes + * ctk_gvo_get_data_format_name() - return the name of the given data format */ -static void output_video_format_changed(CtkDropDownMenu *menu, - gpointer user_data) +const char *ctk_gvo_get_data_format_name(const gint format) { - CtkGvo *ctk_gvo = CTK_GVO(user_data); - gint value; - - value = ctk_drop_down_menu_get_current_value(menu); + gint i; - if (((value < 32) && - !(ctk_gvo->valid_output_video_format_mask[0] & (1 << value))) || - ((value >= 32) && - !(ctk_gvo->valid_output_video_format_mask[1] & (1 << (value - 32))))){ - - ctk_config_statusbar_message(ctk_gvo->ctk_config, "Invalid " - "Output Video Format: %s; ignoring.", - get_video_format_name(value)); - return; + for (i = 0; dataFormatNames[i].name; i++) { + if (dataFormatNames[i].format == format) { + return dataFormatNames[i].name; + } } - - NvCtrlSetAttribute(ctk_gvo->handle, - NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT, value); - - post_output_video_format_changed(ctk_gvo, value); - -} /* output_video_format_changed() */ - - -static void post_output_video_format_changed(CtkGvo *ctk_gvo, gint value) -{ - ctk_gvo->output_video_format = value; - - ctk_config_statusbar_message(ctk_gvo->ctk_config, - "Output Video Format set to: %s.", - get_video_format_name(value)); -} - - - -/* - * output_data_format_changed() - callback when the output data format - * menu changes - */ - -static void output_data_format_changed(CtkDropDownMenu *menu, - gpointer user_data) -{ - CtkGvo *ctk_gvo = CTK_GVO(user_data); - gint value; - - value = ctk_drop_down_menu_get_current_value(menu); - - NvCtrlSetAttribute(ctk_gvo->handle, NV_CTRL_GVO_DATA_FORMAT, value); - - post_output_data_format_changed(ctk_gvo, value); - -} /* output_data_format_changed() */ - - -static void post_output_data_format_changed(CtkGvo *ctk_gvo, gint value) -{ - ctk_gvo->output_data_format = value; - - ctk_config_statusbar_message(ctk_gvo->ctk_config, - "Output Data Format set to: %s.", - get_data_format_name(value)); -} + return "Unknown"; -/**************************************************************************/ +} /* ctk_gvo_get_data_format_name() */ /* - * update_sync_mode_menu() - given the COMPOSITE_SYNC and SDI_SYNC - * values, set the sensitivity of each entry in sync_mode_menu. + * ctk_gvo_get_video_format_resolution() - return the width and height of the + * given video format */ -static void update_sync_mode_menu(CtkGvo *ctk_gvo, - const gint composite_sync, - const gint sdi_sync, - const gint current) +void ctk_gvo_get_video_format_resolution(const gint format, gint *w, gint *h) { - gboolean sensitive; - - if ((composite_sync == NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED_FALSE) && - (sdi_sync == NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_NONE)) { - - /* no external sync detected; do not expose GenLock or FrameLock */ - sensitive = FALSE; - - } else { - - /* external sync detected; expose GenLock amd FrameLock */ - sensitive = TRUE; - } + gint i; - /* set the sensitivity for GenLock and FrameLock */ + *w = *h = 0; - ctk_drop_down_menu_set_value_sensitive - (CTK_DROP_DOWN_MENU(ctk_gvo->sync_mode_menu), - NV_CTRL_GVO_SYNC_MODE_GENLOCK, sensitive); - - ctk_drop_down_menu_set_value_sensitive - (CTK_DROP_DOWN_MENU(ctk_gvo->sync_mode_menu), - NV_CTRL_GVO_SYNC_MODE_FRAMELOCK, sensitive); - - /* - * if the current SYNC_MODE is not FREE_RUNNING, but other modes - * are not available, then we need to change the current setting - * to FREE_RUNNING - */ - - if ((current != NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING) && !sensitive) { - - NvCtrlSetAttribute(ctk_gvo->handle, NV_CTRL_GVO_SYNC_MODE, - NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING); - - ctk_drop_down_menu_set_current_value - (CTK_DROP_DOWN_MENU(ctk_gvo->sync_mode_menu), - NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING); + for (i = 0; videoFormatDetails[i].format != -1; i++) { + if (videoFormatDetails[i].format == format) { + *w = videoFormatDetails[i].width; + *h = videoFormatDetails[i].height; + return; + } } - -} /* update_sync_mode_menu() */ +} /* ctk_gvo_get_video_format_resolution() */ /* - * init_sync_mode_menu() - initialize the sync mode menu: set the - * currently active menu selection and set the sensitivity of the - * menu entries. + * ctk_gvo_get_type() - Returns the CtkGvo "class" type */ -static void init_sync_mode_menu(CtkGvo *ctk_gvo) +GType ctk_gvo_get_type(void) { - ReturnStatus ret; - gint val, comp, sdi; - - /* get the current mode */ - - ret = NvCtrlGetAttribute(ctk_gvo->handle, NV_CTRL_GVO_SYNC_MODE, &val); - if (ret != NvCtrlSuccess) { - val = NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING; - } - - ctk_gvo->sync_mode = val; - - /* set the current mode in the menu */ + static GType ctk_gvo_type = 0; - ctk_drop_down_menu_set_current_value - (CTK_DROP_DOWN_MENU(ctk_gvo->sync_mode_menu), val); - - /* query COMPOSITE_SYNC_INPUT_DETECTED */ + if (!ctk_gvo_type) { + static const GTypeInfo ctk_gvo_info = { + sizeof (CtkGvoClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + NULL, /* constructor */ + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof (CtkGvo), + 0, /* n_preallocs */ + NULL, /* instance_init */ + }; - ret = NvCtrlGetAttribute(ctk_gvo->handle, - NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED, &comp); - if (ret != NvCtrlSuccess) { - comp = NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED_FALSE; + ctk_gvo_type = + g_type_register_static(GTK_TYPE_VBOX, "CtkGvo", + &ctk_gvo_info, 0); } - /* query SDI_SYNC_INPUT_DETECTED */ - - ret = NvCtrlGetAttribute(ctk_gvo->handle, - NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED, &sdi); - if (ret != NvCtrlSuccess) { - sdi = NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_NONE; - } - - /* update the menu */ - - update_sync_mode_menu(ctk_gvo, comp, sdi, val); + return ctk_gvo_type; -} /* init_sync_mode_menu() */ +} /* ctk_gvo_get_type() */ /* - * update_output_video_format_menu() - given the current - * OUTPUT_VIDEO_FORMAT, set the sensitivity of each menu entry and - * possibly update which entry is current. + * trim_output_video_format_menu() - given the current + * OUTPUT_VIDEO_FORMAT and SYNC_MODE, set the sensitivity of each menu + * entry and possibly update which of the output video mode dropdown + * entries is currently selected. */ -static void update_output_video_format_menu(CtkGvo *ctk_gvo) +static void trim_output_video_format_menu(CtkGvo *ctk_gvo) { ReturnStatus ret; NVCTRLAttributeValidValuesRec valid; gint bitmask, bitmask2, i, refresh_rate; - gboolean sensitive, current_not_available = FALSE; + gboolean sensitive, current_available; /* retrieve the currently available values */ @@ -1466,9 +432,10 @@ static void update_output_video_format_menu(CtkGvo *ctk_gvo) if ((ctk_gvo->sync_mode == NV_CTRL_GVO_SYNC_MODE_FRAMELOCK) && (ctk_gvo->input_video_format != NV_CTRL_GVO_VIDEO_FORMAT_NONE)) { - + refresh_rate = 0; - + + /* Get the current input refresh rate */ for (i = 0; videoFormatDetails[i].format != -1; i++) { if (videoFormatDetails[i].format == ctk_gvo->input_video_format) { refresh_rate = videoFormatDetails[i].rate; @@ -1476,9 +443,30 @@ static void update_output_video_format_menu(CtkGvo *ctk_gvo) } } + /* Mask out refresh rates that don't match */ for (i = 0; videoFormatDetails[i].format != -1; i++) { - if (videoFormatDetails[i].rate != refresh_rate) { - + gboolean match = FALSE; + + if (videoFormatDetails[i].rate == refresh_rate) { + match = TRUE; + + } else if (ctk_gvo->caps & + NV_CTRL_GVO_CAPABILITIES_MULTIRATE_SYNC) { + + /* Some GVO devices support multi-rate synchronization. + * For these devices, we just need to check that the + * fractional part of the rate are either both zero or + * both non-zero. + */ + if (((videoFormatDetails[i].rate % 1000) ? TRUE : FALSE) == + ((refresh_rate % 1000) ? TRUE : FALSE)) { + match = TRUE; + } + } else { + match = FALSE; + } + + if (!match) { if (videoFormatDetails[i].format < 32) { bitmask &= ~(1 << videoFormatDetails[i].format); } else { @@ -1493,6 +481,7 @@ static void update_output_video_format_menu(CtkGvo *ctk_gvo) * bitmask, then it is available */ + current_available = FALSE; for (i = 0; videoFormatNames[i].name; i++) { if (((videoFormatNames[i].format < 32) && ((1 << videoFormatNames[i].format) & bitmask)) || @@ -1510,8 +499,8 @@ static void update_output_video_format_menu(CtkGvo *ctk_gvo) /* if the current video is not sensitive, take note */ if ((ctk_gvo->output_video_format == videoFormatNames[i].format) && - !sensitive) { - current_not_available = TRUE; + sensitive) { + current_available = TRUE; } } @@ -1520,23 +509,32 @@ static void update_output_video_format_menu(CtkGvo *ctk_gvo) * available format current */ - if (current_not_available && bitmask) { + if (!current_available && bitmask) { + for (i = 0; videoFormatNames[i].name; i++) { if (((videoFormatNames[i].format < 32) && ((1 << videoFormatNames[i].format) & bitmask)) || ((videoFormatNames[i].format >= 32) && ((1 << (videoFormatNames[i].format - 32)) & bitmask2))) { - NvCtrlSetAttribute(ctk_gvo->handle, - NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT, - videoFormatNames[i].format); - + /* Invalidate the format so it gets set when clone mode is + * enabled. + */ + ctk_gvo->output_video_format_valid = FALSE; + + g_signal_handlers_block_by_func + (G_OBJECT(ctk_gvo->output_video_format_menu), + G_CALLBACK(output_video_format_ui_changed), + (gpointer) ctk_gvo); + ctk_drop_down_menu_set_current_value (CTK_DROP_DOWN_MENU(ctk_gvo->output_video_format_menu), videoFormatNames[i].format); - - ctk_gvo->output_video_format = videoFormatNames[i].format; + g_signal_handlers_unblock_by_func + (G_OBJECT(ctk_gvo->output_video_format_menu), + G_CALLBACK(output_video_format_ui_changed), + (gpointer) ctk_gvo); break; } } @@ -1549,191 +547,433 @@ static void update_output_video_format_menu(CtkGvo *ctk_gvo) ctk_gvo->valid_output_video_format_mask[0] = bitmask; ctk_gvo->valid_output_video_format_mask[1] = bitmask2; -} /* update_output_video_format_menu() */ +} /* trim_output_video_format_menu() */ /* - * init_sync_format_menu() - initialize the sync format menu + * validate_output_video_format() - Keep tabs on the output + * video format. If some other client sets the output video format to + * something clone mode can't do, we'll just need to make sure that + * we re-set the output video format when the user selects to enable + * clone mode. + * + * NOTE: The gtk signal handler for the video format menu should not + * be enabled while calling this function. */ -static void init_sync_format_menu(CtkGvo *ctk_gvo) +static void validate_output_video_format(CtkGvo *ctk_gvo) { - ReturnStatus ret; - gint sync_source, sync_mode, comp_mode, val; - - ret = NvCtrlGetAttribute(ctk_gvo->handle, - NV_CTRL_GVO_SYNC_SOURCE, - &sync_source); - - if (ret != NvCtrlSuccess) { - sync_source = NV_CTRL_GVO_SYNC_SOURCE_SDI; - } + gint bitmask, bitmask2; + gint width, height; + gint format = ctk_gvo->output_video_format; - ret = NvCtrlGetAttribute(ctk_gvo->handle, - NV_CTRL_GVO_SYNC_MODE, - &sync_mode); - - if (ret != NvCtrlSuccess) { - sync_mode = NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING; - } - - ret = NvCtrlGetAttribute(ctk_gvo->handle, - NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE, - &comp_mode); - - if (ret != NvCtrlSuccess) { - comp_mode = NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_AUTO; - } - - if (sync_source == NV_CTRL_GVO_SYNC_SOURCE_SDI) { - val = SYNC_FORMAT_SDI; - } else if (comp_mode == - NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_AUTO) { - val = SYNC_FORMAT_COMP_AUTO; - } else if (comp_mode == - NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_BI_LEVEL) { - val = SYNC_FORMAT_COMP_BI_LEVEL; - } else if (comp_mode == - NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_TRI_LEVEL){ - val = SYNC_FORMAT_COMP_TRI_LEVEL; - } else { - val = SYNC_FORMAT_SDI; // should not get here + /* Keep track of whether we'll need to re-set the video format + * when enabling clone mode. + */ + + /* Check to make sure the format size <= current screen size */ + ctk_gvo_get_video_format_resolution(format, &width, &height); + + /* Don't expose modes bigger than the current X Screen size */ + if ((width > ctk_gvo->screen_width) || + (height > ctk_gvo->screen_height)) { + /* Format is invalid due to screen size limitations */ + ctk_gvo->output_video_format_valid = FALSE; + return; } - - ctk_drop_down_menu_set_current_value - (CTK_DROP_DOWN_MENU(ctk_gvo->sync_format_menu), val); - - if (sync_mode == NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING) { - ctk_gvo->sync_format_sensitive = FALSE; - } else { - ctk_gvo->sync_format_sensitive = TRUE; + + /* Check to make sure genlock/framelock requirements are ment */ + bitmask = ctk_gvo->valid_output_video_format_mask[0]; + bitmask2 = ctk_gvo->valid_output_video_format_mask[1]; + + if (((format < 32) && !((1 << format) & bitmask)) || + ((format >= 32) && !((1 << (format - 32)) & bitmask2))) { + /* Format is invalid due to genlock/framelock requirements */ + ctk_gvo->output_video_format_valid = FALSE; + return; } - ctk_gvo->sync_source = sync_source; + /* If we got this far, then the format is valid. */ + ctk_gvo->output_video_format_valid = TRUE; + +} /* validate_output_video_format() */ - gtk_widget_set_sensitive(ctk_gvo->sync_format_menu, - ctk_gvo->sync_format_sensitive); -} /* init_sync_format_menu() */ +/* + * validate_output_data_format() - Keep tabs on the output + * data format. If some other client sets the output data format to + * something clone mode can't do, we'll just need to make sure that + * we re-set the output data format when the user selects to enable + * clone mode. + * + * NOTE: The gtk signal handler for the data format menu should not + * be enabled while calling this function. + */ -static void update_sync_format_menu(CtkGvo *ctk_gvo) +static void validate_output_data_format(CtkGvo *ctk_gvo) { - if (ctk_gvo->sync_mode == NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING) { - ctk_gvo->sync_format_sensitive = FALSE; - } else { - ctk_gvo->sync_format_sensitive = TRUE; + int i; + + /* Keep track of whether we'll need to re-set the data format + * when enabling clone mode. + */ + for (i = 0; dataFormatNames[i].name; i++) { + if (ctk_gvo->output_data_format == dataFormatNames[i].format) { + /* Value is OK */ + ctk_gvo->output_data_format_valid = TRUE; + return; + } } - - gtk_widget_set_sensitive(ctk_gvo->sync_format_menu, - ctk_gvo->sync_format_sensitive); -} + + ctk_gvo->output_data_format_valid = FALSE; + +} /* validate_output_data_format() */ + + + +/**** Creation Functions *****************************************************/ /* - * init_output_video_format_menu() - initialize the output video - * format menu: set the currently active menu entry and update the - * sensitivity of all entries. + * ctk_gvo_new() - constructor for the CtkGvo widget */ -static void init_output_video_format_menu(CtkGvo *ctk_gvo) +GtkWidget* ctk_gvo_new(NvCtrlAttributeHandle *handle, + CtkConfig *ctk_config, + CtkEvent *ctk_event) { - gint val; + GObject *object; + CtkGvo *ctk_gvo; + GtkWidget *hbox, *vbox, *alignment, *label; ReturnStatus ret; + gchar scratch[64], *firmware, *string; + gint val, i, width, height; + + GtkWidget *frame, *table, *menu; + + /* make sure we have a handle */ + + g_return_val_if_fail(handle != NULL, NULL); - ret = NvCtrlGetAttribute(ctk_gvo->handle, - NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT, &val); - if (ret != NvCtrlSuccess) { - val = NV_CTRL_GVO_VIDEO_FORMAT_480I_59_94_SMPTE259_NTSC; - } + /* create and initialize the object */ - ctk_drop_down_menu_set_current_value - (CTK_DROP_DOWN_MENU(ctk_gvo->output_video_format_menu), val); + object = g_object_new(CTK_TYPE_GVO, NULL); - ctk_gvo->output_video_format = val; + ctk_gvo = CTK_GVO(object); + ctk_gvo->handle = handle; + ctk_gvo->ctk_config = ctk_config; + ctk_gvo->ctk_event = ctk_event; + + /* Query the current GVO state */ + + if ( !query_init_gvo_state(ctk_gvo) ) { + // Free the object + g_object_ref(object); + gtk_object_sink(GTK_OBJECT(object)); + g_object_unref(object); + return NULL; + } + + /* Query the width, height and refresh rate for each video format */ - update_output_video_format_menu(ctk_gvo); + query_video_format_details(ctk_gvo); + + /* set container properties for the widget */ -} /* init_output_video_format_menu() */ + gtk_box_set_spacing(GTK_BOX(ctk_gvo), 10); + /* banner */ + + hbox = gtk_hbox_new(FALSE, 0); + gtk_box_pack_start(GTK_BOX(object), hbox, FALSE, FALSE, 0); + ctk_gvo->banner_box = hbox; -/* - * init_output_data_format_menu() - initialize the output data format - * menu: make sure the current value is available in the list that we - * expose, and set the currently active menu entry. - */ + ctk_gvo->banner = ctk_gvo_banner_new(handle, ctk_config, ctk_event); + g_object_ref(ctk_gvo->banner); -static void init_output_data_format_menu(CtkGvo *ctk_gvo) -{ - gint current, i; - ReturnStatus ret; - gboolean found; + /* + * General information + */ - ret = NvCtrlGetAttribute(ctk_gvo->handle, NV_CTRL_GVO_DATA_FORMAT, - ¤t); + frame = gtk_frame_new("General Information"); - if (ret != NvCtrlSuccess) { - current = NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB444; + gtk_box_pack_start(GTK_BOX(object), frame, FALSE, FALSE, 0); + + table = gtk_table_new(3, 2, FALSE); + + gtk_table_set_row_spacings(GTK_TABLE(table), 3); + gtk_table_set_col_spacings(GTK_TABLE(table), 15); + gtk_container_set_border_width(GTK_CONTAINER(table), 5); + + gtk_container_add(GTK_CONTAINER(frame), table); + + /* GVO_FIRMWARE_VERSION */ + + string = NULL; + + ret = NvCtrlGetStringAttribute(handle, + NV_CTRL_STRING_GVO_FIRMWARE_VERSION, + &string); + + if ((ret == NvCtrlSuccess) && (string)) { + firmware = strdup(string); + } else { + + /* + * NV_CTRL_STRING_GVO_FIRMWARE_VERSION was added later, so + * older X servers may not know about it; fallback to + * NV_CTRL_GVO_FIRMWARE_VERSION + */ + + ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_FIRMWARE_VERSION, &val); + + if (ret == NvCtrlSuccess) { + snprintf(scratch, 64, "1.%02d", val); + firmware = strdup(scratch); + } else { + firmware = strdup("???"); + } } + add_table_row(table, 0, + 0, 0.5, "Firmware Version:", + 0, 0.5, firmware); + ctk_gvo->current_resolution_label = + add_table_row(table, 1, + 0, 0.5, "Current SDI Resolution:", + 0, 0.5, "Inactive"); + ctk_gvo->current_state_label = + add_table_row(table, 2, + 0, 0.5, "Current SDI State:", + 0, 0.5, "Inactive"); + + /* - * is this value in the list that we expose? if not, then pick the - * first value that is in the list + * Clone mode options */ - for (i = 0, found = FALSE; dataFormatNames[i].name; i++) { - if (current == dataFormatNames[i].format) { - found = TRUE; - break; - } + frame = gtk_frame_new("Clone Mode"); + ctk_gvo->clone_mode_frame = frame; + + vbox = gtk_vbox_new(FALSE, 0); + + table = gtk_table_new(3, 2, FALSE); + gtk_table_set_row_spacings(GTK_TABLE(table), 0); + gtk_table_set_col_spacings(GTK_TABLE(table), 0); + + gtk_box_pack_start(GTK_BOX(vbox), table, TRUE, FALSE, 0); + gtk_container_add(GTK_CONTAINER(frame), vbox); + gtk_box_pack_start(GTK_BOX(object), frame, FALSE, FALSE, 0); + + /* Output Video Format */ + + menu = start_menu("Video Format: ", table, 0); + ctk_gvo->output_video_format_menu = menu; + ctk_config_set_tooltip(ctk_config, CTK_DROP_DOWN_MENU(menu)->option_menu, + __clone_mode_video_format_help); + + fill_output_video_format_menu(ctk_gvo); + + finish_menu(menu, table, 0); + + /* Make sure that the video format selected is valid for clone mode */ + + validate_output_video_format(ctk_gvo); + if (ctk_gvo->output_video_format_valid) { + val = ctk_gvo->output_video_format; + } else { + val = get_first_available_output_video_format(ctk_gvo); } + + ctk_drop_down_menu_set_current_value + (CTK_DROP_DOWN_MENU(ctk_gvo->output_video_format_menu), val); + + g_signal_connect(G_OBJECT(ctk_gvo->output_video_format_menu), + "changed", G_CALLBACK(output_video_format_ui_changed), + (gpointer) ctk_gvo); - if (!found) { - current = dataFormatNames[0].format; + /* Output Data Format */ - /* make this value current */ + menu = start_menu("Data Format: ", table, 1); + ctk_gvo->output_data_format_menu = menu; + ctk_config_set_tooltip(ctk_config, CTK_DROP_DOWN_MENU(menu)->option_menu, + __clone_mode_data_format_help); - NvCtrlSetAttribute(ctk_gvo->handle, - NV_CTRL_GVO_DATA_FORMAT, current); + for (i = 0; dataFormatNames[i].name; i++) { + ctk_drop_down_menu_append_item(CTK_DROP_DOWN_MENU(menu), + dataFormatNames[i].name, + dataFormatNames[i].format); + } + + finish_menu(menu, table, 1); + + /* Make sure that the data format selected is valid for clone mode */ + + validate_output_data_format(ctk_gvo); + if (ctk_gvo->output_data_format_valid) { + val = ctk_gvo->output_data_format; + } else { + val = DEFAULT_OUTPUT_DATA_FORMAT; } - /* update the menu */ - ctk_drop_down_menu_set_current_value - (CTK_DROP_DOWN_MENU(ctk_gvo->output_data_format_menu), current); + (CTK_DROP_DOWN_MENU(ctk_gvo->output_data_format_menu), val); + + g_signal_connect(G_OBJECT(ctk_gvo->output_data_format_menu), + "changed", G_CALLBACK(output_data_format_ui_changed), + (gpointer) ctk_gvo); + + /* Region of Interest */ + + ctk_gvo_get_video_format_resolution(ctk_gvo->output_video_format, + &width, &height); + + /* NV_CTRL_GVO_X_SCREEN_PAN_X */ + + label = gtk_label_new("X Offset: "); + + alignment = gtk_alignment_new(0, 0, 0, 0); + gtk_container_add(GTK_CONTAINER(alignment), label); + + gtk_table_attach(GTK_TABLE(table), alignment, + 0, 1, 2, 3, + GTK_FILL, GTK_FILL, + TABLE_PADDING, TABLE_PADDING); + + ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_X_SCREEN_PAN_X, &val); + if (ret != NvCtrlSuccess) val = 0; + + width = ctk_gvo->screen_width - width; + if (width < 1) width = 1; + + ctk_gvo->x_offset_spin_button = + gtk_spin_button_new_with_range(0.0, width, 1); + + ctk_config_set_tooltip(ctk_config, ctk_gvo->x_offset_spin_button, + __clone_mode_x_offset_help); -} /* init_output_data_format_menu() */ + gtk_spin_button_set_value + (GTK_SPIN_BUTTON(ctk_gvo->x_offset_spin_button), val); + g_signal_connect(G_OBJECT(ctk_gvo->x_offset_spin_button), + "value-changed", + G_CALLBACK(x_offset_ui_changed), ctk_gvo); + hbox = gtk_hbox_new(FALSE, FALSE); + gtk_box_pack_start(GTK_BOX(hbox), ctk_gvo->x_offset_spin_button, + FALSE, FALSE, 0); + + gtk_table_attach(GTK_TABLE(table), hbox, + 1, 2, 2, 3, + GTK_FILL | GTK_EXPAND, GTK_FILL, + TABLE_PADDING, TABLE_PADDING); + /* NV_CTRL_GVO_X_SCREEN_PAN_Y */ -/**************************************************************************/ + label = gtk_label_new("Y Offset: "); + alignment = gtk_alignment_new(0, 0, 0, 0); + gtk_container_add(GTK_CONTAINER(alignment), label); + + gtk_table_attach(GTK_TABLE(table), alignment, + 0, 1, 3, 4, + GTK_FILL, GTK_FILL, + TABLE_PADDING, TABLE_PADDING); + + ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_X_SCREEN_PAN_Y, &val); + if (ret != NvCtrlSuccess) val = 0; + + height = ctk_gvo->screen_height - height; + if (height < 1) height = 1; + + ctk_gvo->y_offset_spin_button = + gtk_spin_button_new_with_range(0.0, height, 1); + + gtk_spin_button_set_value + (GTK_SPIN_BUTTON(ctk_gvo->y_offset_spin_button), val); + + ctk_config_set_tooltip(ctk_config, ctk_gvo->y_offset_spin_button, + __clone_mode_y_offset_help); + + g_signal_connect(G_OBJECT(ctk_gvo->y_offset_spin_button), + "value-changed", + G_CALLBACK(y_offset_ui_changed), ctk_gvo); + + hbox = gtk_hbox_new(FALSE, FALSE); + gtk_box_pack_start(GTK_BOX(hbox), ctk_gvo->y_offset_spin_button, + FALSE, FALSE, 0); + + gtk_table_attach(GTK_TABLE(table), hbox, + 1, 2, 3, 4, + GTK_FILL | GTK_EXPAND, GTK_FILL, + TABLE_PADDING, TABLE_PADDING); + + /* + * "Enable Clone Mode" button + */ + + create_toggle_clone_mode_button(ctk_gvo); + + ctk_config_set_tooltip(ctk_config, ctk_gvo->toggle_clone_mode_button, + __clone_mode_enable_clone_mode_help); + + hbox = gtk_hbox_new(FALSE, 0); + + gtk_box_pack_end(GTK_BOX(hbox), ctk_gvo->toggle_clone_mode_button, + FALSE, FALSE, 5); + + gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 5); + + + /* + * Set the initial UI state + */ + + update_gvo_current_info(ctk_gvo); + + update_gvo_sensitivity(ctk_gvo); + + + /* + * Start listening for events + */ + + register_for_gvo_events(ctk_gvo); + + /* show the GVO widget */ + + gtk_widget_show_all(GTK_WIDGET(ctk_gvo)); + + return GTK_WIDGET(ctk_gvo); + +} /* ctk_gvo_new() */ /* - * create_toggle_sdi_output_button() - + * create_toggle_clone_mode_button() - */ -static void create_toggle_sdi_output_button(CtkGvo *ctk_gvo, gboolean enabled) +static void create_toggle_clone_mode_button(CtkGvo *ctk_gvo) { GtkWidget *label; GtkWidget *hbox, *hbox2; GdkPixbuf *pixbuf; GtkWidget *image = NULL; GtkWidget *button; + gboolean enabled; button = gtk_toggle_button_new(); - /* create the Enable SDI Output icon */ + /* create the Enable Clone Mode icon */ pixbuf = gtk_widget_render_icon(button, GTK_STOCK_EXECUTE, GTK_ICON_SIZE_BUTTON, - "Enable SDI Output"); + "Enable Clone Mode"); if (pixbuf) image = gtk_image_new_from_pixbuf(pixbuf); - label = gtk_label_new("Enable SDI Output"); + label = gtk_label_new("Enable Clone Mode"); hbox = gtk_hbox_new(FALSE, 2); @@ -1752,17 +992,17 @@ static void create_toggle_sdi_output_button(CtkGvo *ctk_gvo, gboolean enabled) gtk_object_ref(GTK_OBJECT(hbox2)); - ctk_gvo->enable_sdi_output_label = hbox2; + ctk_gvo->enable_clone_mode_label = hbox2; - /* create the Disable SDI Output icon */ + /* create the Disable Clone Mode icon */ pixbuf = gtk_widget_render_icon(button, GTK_STOCK_STOP, GTK_ICON_SIZE_BUTTON, - "Disable SDI Output"); + "Disable Clone Mode"); if (pixbuf) image = gtk_image_new_from_pixbuf(pixbuf); - label = gtk_label_new("Disable SDI Output"); + label = gtk_label_new("Disable Clone Mode"); hbox = gtk_hbox_new(FALSE, 2); @@ -1781,602 +1021,587 @@ static void create_toggle_sdi_output_button(CtkGvo *ctk_gvo, gboolean enabled) gtk_object_ref(GTK_OBJECT(hbox2)); - ctk_gvo->disable_sdi_output_label = hbox2; + ctk_gvo->disable_clone_mode_label = hbox2; - /* Set the initial SDI Output state */ + /* Set the initial Clone Mode enabled state */ + + enabled = (ctk_gvo->lock_owner == NV_CTRL_GVO_LOCK_OWNER_CLONE); gtk_container_add(GTK_CONTAINER(button), - enabled ? ctk_gvo->disable_sdi_output_label : - ctk_gvo->enable_sdi_output_label); + enabled ? ctk_gvo->disable_clone_mode_label : + ctk_gvo->enable_clone_mode_label); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), enabled); - ctk_gvo->toggle_sdi_output_button = button; - - ctk_gvo->sdi_output_enabled = enabled; + ctk_gvo->toggle_clone_mode_button = button; g_signal_connect(G_OBJECT(button), "toggled", - G_CALLBACK(toggle_sdi_output_button), + G_CALLBACK(clone_mode_button_ui_toggled), GTK_OBJECT(ctk_gvo)); -} /* create_toggle_sdi_output_button() */ +} /* create_toggle_clone_mode_button() */ /* - * toggle_sdi_output_button() - + * start_menu() - Start the creation of a labled dropdown menu. (Packs + * the dropdown label into the table row. */ -static void toggle_sdi_output_button(GtkWidget *button, gpointer user_data) +static GtkWidget *start_menu(const gchar *name, GtkWidget *table, + const gint row) { - CtkGvo *ctk_gvo = CTK_GVO(user_data); - gboolean enabled; - ReturnStatus ret; - gint val, val2; - - enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)); + GtkWidget *menu, *label, *alignment; - if (enabled) val = NV_CTRL_GVO_DISPLAY_X_SCREEN_ENABLE; - else val = NV_CTRL_GVO_DISPLAY_X_SCREEN_DISABLE; + label = gtk_label_new(name); + alignment = gtk_alignment_new(0, 0, 0, 0); + gtk_container_add(GTK_CONTAINER(alignment), label); - NvCtrlSetAttribute(ctk_gvo->handle, NV_CTRL_GVO_DISPLAY_X_SCREEN, val); - - /* - * XXX NV_CTRL_GVO_DISPLAY_X_SCREEN can silently fail if GLX - * locked GVO output for use by pbuffer(s). Check that the - * setting actually stuck. - */ + gtk_table_attach(GTK_TABLE(table), + alignment, 0, 1, row, row+1, GTK_FILL, GTK_FILL, + TABLE_PADDING, TABLE_PADDING); - ret = NvCtrlGetAttribute(ctk_gvo->handle, - NV_CTRL_GVO_DISPLAY_X_SCREEN, &val2); + menu = ctk_drop_down_menu_new(CTK_DROP_DOWN_MENU_FLAG_MONOSPACE); - if ((ret != NvCtrlSuccess) || (val != val2)) { - - /* - * setting did not apply; restore the button to its previous - * state - */ - - g_signal_handlers_block_matched - (G_OBJECT(button), G_SIGNAL_MATCH_FUNC, 0, 0, NULL, - G_CALLBACK(toggle_sdi_output_button), NULL); - - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), !enabled); + return menu; - g_signal_handlers_unblock_matched - (G_OBJECT(button), G_SIGNAL_MATCH_FUNC, 0, 0, NULL, - G_CALLBACK(toggle_sdi_output_button), NULL); +} /* start_menu() */ - // XXX update the status bar; maybe pop up a dialog box? - return; - } - - post_toggle_sdi_output_button(ctk_gvo, enabled); - -} /* toggle_sdi_output_button() */ +/* + * finish_menu() - Finish/Finalize a dropdown menu. (Packs the menu in + * the table row.) + */ -static void post_toggle_sdi_output_button(CtkGvo *ctk_gvo, gboolean enabled) +static void finish_menu(GtkWidget *menu, GtkWidget *table, const gint row) { - GList *children; - GList *child; + ctk_drop_down_menu_finalize(CTK_DROP_DOWN_MENU(menu)); - children = gtk_container_get_children - (GTK_CONTAINER(ctk_gvo->toggle_sdi_output_button)); + gtk_table_attach(GTK_TABLE(table), menu, 1, 2, row, row+1, + GTK_FILL | GTK_EXPAND, GTK_FILL, + TABLE_PADDING, TABLE_PADDING); +} - for (child = children; child; child = child->next) { - gtk_container_remove - (GTK_CONTAINER(ctk_gvo->toggle_sdi_output_button), - (GtkWidget *) child->data); - } - g_list_free(children); - - if (enabled) { - gtk_container_add(GTK_CONTAINER(ctk_gvo->toggle_sdi_output_button), - ctk_gvo->disable_sdi_output_label); +/* + * fill_output_video_format_menu() - Populates the output video + * format menu. + */ - update_gvo_banner_video_output(&ctk_gvo->banner, - ctk_gvo->output_video_format, - ctk_gvo->output_data_format); +static void fill_output_video_format_menu(CtkGvo *ctk_gvo) +{ + int i; + int width, height; + CtkDropDownMenu *dmenu = + CTK_DROP_DOWN_MENU(ctk_gvo->output_video_format_menu); + + for (i = 0; videoFormatNames[i].name; i++) { - update_gvo_current_info(ctk_gvo, NV_CTRL_GVO_LOCK_OWNER_CLONE); + /* + * runtime check that videoFormatDetails[] and + * videoFormatNames[] are in sync + */ - } else { - gtk_container_add(GTK_CONTAINER(ctk_gvo->toggle_sdi_output_button), - ctk_gvo->enable_sdi_output_label); + if (videoFormatDetails[i].format != videoFormatNames[i].format) { + nv_error_msg("GVO format tables out of alignment!"); + return; + } - update_gvo_banner_video_output(&ctk_gvo->banner, - NV_CTRL_GVO_VIDEO_FORMAT_NONE, - ctk_gvo->output_data_format); + /* check that the current X screen can support the width and height */ - update_gvo_current_info(ctk_gvo, NV_CTRL_GVO_LOCK_OWNER_NONE); - } - - - ctk_gvo->sdi_output_enabled = enabled; - - ctk_config_statusbar_message(ctk_gvo->ctk_config, "SDI Output %s.", - enabled ? "enabled" : "disabled"); -} - - - -/* - * sync_format_changed() - - */ + width = videoFormatDetails[i].width; + height = videoFormatDetails[i].height; -static void sync_format_changed(CtkDropDownMenu *menu, gpointer user_data) -{ - CtkGvo *ctk_gvo = CTK_GVO(user_data); - gint i, value, sync_source, mode; - const char *name = "Unknown"; + /* Don't expose modes bigger than the current X Screen size */ + if ((width > ctk_gvo->screen_width) || + (height > ctk_gvo->screen_height)) { + continue; + } - value = ctk_drop_down_menu_get_current_value(menu); - - switch (value) { - case SYNC_FORMAT_SDI: - sync_source = NV_CTRL_GVO_SYNC_SOURCE_SDI; - mode = NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_AUTO; - break; - case SYNC_FORMAT_COMP_AUTO: - sync_source = NV_CTRL_GVO_SYNC_SOURCE_COMPOSITE; - mode = NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_AUTO; - break; - case SYNC_FORMAT_COMP_BI_LEVEL: - sync_source = NV_CTRL_GVO_SYNC_SOURCE_COMPOSITE; - mode = NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_BI_LEVEL; - break; - case SYNC_FORMAT_COMP_TRI_LEVEL: - sync_source = NV_CTRL_GVO_SYNC_SOURCE_COMPOSITE; - mode = NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_TRI_LEVEL; - break; - default: - return; + ctk_drop_down_menu_append_item(dmenu, + videoFormatNames[i].name, + videoFormatNames[i].format); } - for (i = 0; syncFormatNames[i].name; i++) { - if (syncFormatNames[i].format == value) { - name = syncFormatNames[i].name; - break; - } + ctk_gvo->has_output_video_formats = + ((dmenu->num_entries > 0) ? TRUE : FALSE); + + if (!ctk_gvo->has_output_video_formats) { + nv_warning_msg("No GVO video formats will fit the current X screen of " + "%d x %d; please create an X screen of atleast " + "720 x 487; not exposing GVO page.\n", + ctk_gvo->screen_width, ctk_gvo->screen_height); + + ctk_drop_down_menu_append_item + (dmenu, + "*** X Screen is smaller than 720x487 ***", + 0); } - ctk_gvo->sync_source = sync_source; + /* Trim output video format based on sync mode */ + trim_output_video_format_menu(ctk_gvo); - NvCtrlSetAttribute(ctk_gvo->handle, NV_CTRL_GVO_SYNC_SOURCE, sync_source); - NvCtrlSetAttribute(ctk_gvo->handle, - NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE, mode); +} /* fill_output_video_format_menu() */ - ctk_config_statusbar_message(ctk_gvo->ctk_config, "Sync Format set to " - "\"%s\".", name); - -} /* sync_format_changed() */ +/**** Initialization Functions ***********************************************/ /* - * update_input_video_format_text_entry() - + * query_init_gvo_state() - Query the initial GVO state so we can setup + * the UI correctly. */ -static void update_input_video_format_text_entry(CtkGvo *ctk_gvo) +static gboolean query_init_gvo_state(CtkGvo *ctk_gvo) { - gint i; - const gchar *str; + gint val; + ReturnStatus ret; + + + /* Check if this screen supports GVO */ - if (ctk_gvo->sync_mode == NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING) { - str = "Free Running"; - } else { - str = "No incoming signal detected"; - for (i = 0; videoFormatNames[i].name; i++) { - if (videoFormatNames[i].format == ctk_gvo->input_video_format) { - str = videoFormatNames[i].name; - } - } + ret = NvCtrlGetAttribute(ctk_gvo->handle, NV_CTRL_GVO_SUPPORTED, &val); + if ((ret != NvCtrlSuccess) || (val != NV_CTRL_GVO_SUPPORTED_TRUE)) { + /* GVO not available */ + return FALSE; } - gtk_entry_set_text(GTK_ENTRY(ctk_gvo->input_video_format_text_entry), str); + + /* Get this GVO device's capabilities */ -} /* update_input_video_format_text_entry() */ + ret = NvCtrlGetAttribute(ctk_gvo->handle, NV_CTRL_GVO_CAPABILITIES, &val); + if (ret != NvCtrlSuccess) return FALSE; + ctk_gvo->caps = val; + /* Query the current GVO lock owner (GVO enabled/disabled) */ + ret = NvCtrlGetAttribute(ctk_gvo->handle, NV_CTRL_GVO_LOCK_OWNER, &val); + if (ret != NvCtrlSuccess) return FALSE; + ctk_gvo->lock_owner = val; -/* - * init_input_video_format_text_entry() - - */ + /* Query the sync mode */ -static void init_input_video_format_text_entry(CtkGvo *ctk_gvo) -{ - ReturnStatus ret; - gint val; + ret = NvCtrlGetAttribute(ctk_gvo->handle, NV_CTRL_GVO_SYNC_MODE, &val); + if (ret != NvCtrlSuccess) { + val = NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING; + } + ctk_gvo->sync_mode = val; - ret = NvCtrlGetAttribute(ctk_gvo->handle, - NV_CTRL_GVO_INPUT_VIDEO_FORMAT, &val); + /* Query the current input/output video formats */ + + ret = NvCtrlGetAttribute(ctk_gvo->handle, NV_CTRL_GVO_INPUT_VIDEO_FORMAT, + &val); if (ret != NvCtrlSuccess) { val = NV_CTRL_GVO_VIDEO_FORMAT_NONE; } - ctk_gvo->input_video_format = val; - - update_input_video_format_text_entry(ctk_gvo); -} /* init_input_video_format_text_entry() */ - + ret = NvCtrlGetAttribute(ctk_gvo->handle, NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT, + &val); + if (ret != NvCtrlSuccess) { + val = DEFAULT_OUTPUT_VIDEO_FORMAT; + } + ctk_gvo->output_video_format = val; + /* Output data format */ -/* - * init_composite_termination() - - */ + ret = NvCtrlGetAttribute(ctk_gvo->handle, NV_CTRL_GVO_DATA_FORMAT, &val); + if (ret != NvCtrlSuccess) { + val = DEFAULT_OUTPUT_DATA_FORMAT; + } + ctk_gvo->output_data_format = val; -static void init_composite_termination(CtkGvo *ctk_gvo) -{ - ReturnStatus ret; - gint val; + /* Get the current screen dimensions */ - if (!ctk_gvo->composite_termination_button) return; + ctk_gvo->screen_width = NvCtrlGetScreenWidth(ctk_gvo->handle); + ctk_gvo->screen_height = NvCtrlGetScreenHeight(ctk_gvo->handle); - ret = NvCtrlGetAttribute(ctk_gvo->handle, - NV_CTRL_GVO_COMPOSITE_TERMINATION, &val); - if (ret != NvCtrlSuccess) { - val = NV_CTRL_GVO_COMPOSITE_TERMINATION_DISABLE; - } - - gtk_toggle_button_set_active - (GTK_TOGGLE_BUTTON(ctk_gvo->composite_termination_button), - (val == NV_CTRL_GVO_COMPOSITE_TERMINATION_ENABLE)); + return TRUE; -} /* init_composite_termination() */ +} /* query_init_gvo_state() */ /* - * max_input_video_format_text_entry_length() + * query_video_format_details() - initialize the videoFormatDetails[] + * table by querying each of refresh rate, width, and height from + * NV-CONTROL. */ -static int max_input_video_format_text_entry_length(void) +static void query_video_format_details(CtkGvo *ctk_gvo) { - gint i, tmp, max = 0; + ReturnStatus ret; + gint i, val; - for (i = 0; videoFormatNames[i].name; i++) { - tmp = strlen(videoFormatNames[i].name); - if (max < tmp) max = tmp; + for (i = 0; videoFormatDetails[i].format != -1; i++) { + + ret = NvCtrlGetDisplayAttribute(ctk_gvo->handle, + videoFormatDetails[i].format, + NV_CTRL_GVO_VIDEO_FORMAT_REFRESH_RATE, + &val); + + if (ret != NvCtrlSuccess) val = 0; + + videoFormatDetails[i].rate = val; + + ret = NvCtrlGetDisplayAttribute(ctk_gvo->handle, + videoFormatDetails[i].format, + NV_CTRL_GVO_VIDEO_FORMAT_WIDTH, + &val); + + if (ret != NvCtrlSuccess) val = 0; + + videoFormatDetails[i].width = val; + + ret = NvCtrlGetDisplayAttribute(ctk_gvo->handle, + videoFormatDetails[i].format, + NV_CTRL_GVO_VIDEO_FORMAT_HEIGHT, + &val); + + if (ret != NvCtrlSuccess) val = 0; + + videoFormatDetails[i].height = val; } - return max; - -} /* max_input_video_format_text_entry_length() */ +} /* query_video_format_details() */ /* - * post_toggle_composite_termination() - Call this function after - * the composite termination attribute has changed. + * register_for_gvo_events() - Configure ctk_gvo object to listen for + * GVO related evens. */ -static void post_toggle_composite_termination(CtkGvo *ctk_gvo, - gboolean enabled) +static void register_for_gvo_events(CtkGvo *ctk_gvo) { - /* update the statusbar */ - - ctk_config_statusbar_message(ctk_gvo->ctk_config, - "Composite Termination %s.", - enabled ? "Enabled" : "Disabled"); - -} /* post_toggle_composite_termination() */ + g_signal_connect(G_OBJECT(ctk_gvo->ctk_event), + CTK_EVENT_NAME(NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT), + G_CALLBACK(gvo_event_received), + (gpointer) ctk_gvo); + g_signal_connect(G_OBJECT(ctk_gvo->ctk_event), + CTK_EVENT_NAME(NV_CTRL_GVO_DATA_FORMAT), + G_CALLBACK(gvo_event_received), + (gpointer) ctk_gvo); + g_signal_connect(G_OBJECT(ctk_gvo->ctk_event), + CTK_EVENT_NAME(NV_CTRL_GVO_X_SCREEN_PAN_X), + G_CALLBACK(gvo_event_received), + (gpointer) ctk_gvo); + + g_signal_connect(G_OBJECT(ctk_gvo->ctk_event), + CTK_EVENT_NAME(NV_CTRL_GVO_X_SCREEN_PAN_Y), + G_CALLBACK(gvo_event_received), + (gpointer) ctk_gvo); -/* - * toggle_composite_termination() - Called when the user clicks - * on the "Enable Composite Termination" check button. - */ + g_signal_connect(G_OBJECT(ctk_gvo->ctk_event), + CTK_EVENT_NAME(NV_CTRL_GVO_LOCK_OWNER), + G_CALLBACK(gvo_event_received), + (gpointer) ctk_gvo); -static void toggle_composite_termination(GtkWidget *button, - CtkGvo *ctk_gvo) -{ - gboolean enabled; - - enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)); + /* Ask for screen change notify events so we can + * know when to reconstruct the output video format drop down + */ - NvCtrlSetAttribute(ctk_gvo->handle, - NV_CTRL_GVO_COMPOSITE_TERMINATION, - enabled ? NV_CTRL_GVO_COMPOSITE_TERMINATION_ENABLE : - NV_CTRL_GVO_COMPOSITE_TERMINATION_DISABLE); + g_signal_connect(G_OBJECT(ctk_gvo->ctk_event), + "CTK_EVENT_RRScreenChangeNotify", + G_CALLBACK(screen_changed_handler), + (gpointer) ctk_gvo); - post_toggle_composite_termination(ctk_gvo, enabled); +} /* register_for_gvo_events() */ -} /* toggle_composite_termination() */ +/**** User Interface Update Functions ****************************************/ /* - * detect_input() - if the Detect button is enabled, then enable - * INPUT_VIDEO_FORMAT_REACQUIRE, make everything else insensitive, - * switch to the wait cursor, and queue detect_input_done() to be - * called. + * output_video_format_ui_changed() - callback when the user makes a + * selection from the output video format menu (from the UI.) */ -static void detect_input(GtkToggleButton *togglebutton, CtkGvo *ctk_gvo) +static void output_video_format_ui_changed(CtkDropDownMenu *menu, + gpointer user_data) { - gboolean enabled; + CtkGvo *ctk_gvo = CTK_GVO(user_data); - enabled = gtk_toggle_button_get_active(togglebutton); + ctk_gvo->output_video_format = ctk_drop_down_menu_get_current_value(menu); + ctk_gvo->output_video_format_valid = TRUE; - if (!enabled) return; - - /* grab the server */ + NvCtrlSetAttribute(ctk_gvo->handle, + NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT, + ctk_gvo->output_video_format); + + post_output_video_format_changed(ctk_gvo); - gtk_grab_add(ctk_gvo->input_video_format_detect_button); +} /* output_video_format_ui_changed() */ - /* change the cursor */ - gdk_window_set_cursor - ((GTK_WIDGET(ctk_gvo->parent_window))->window, - ctk_gvo->wait_cursor); - - /* make all other widgets insensitive */ - set_gvo_sensitivity(ctk_gvo, FALSE, - SET_SENSITIVITY_EXCLUDE_DETECT_BUTTON); - - /* enable REACQUIRE */ +/* + * output_data_format_ui_changed() - callback when the output data format + * menu changes + */ - NvCtrlSetAttribute(ctk_gvo->handle, - NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE, - NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE_TRUE); +static void output_data_format_ui_changed(CtkDropDownMenu *menu, + gpointer user_data) +{ + CtkGvo *ctk_gvo = CTK_GVO(user_data); - /* update the statusbar */ - - ctk_config_statusbar_message(ctk_gvo->ctk_config, - "Detecting incoming signal..."); + ctk_gvo->output_data_format = ctk_drop_down_menu_get_current_value(menu); + ctk_gvo->output_data_format_valid = TRUE; - /* register the "done" function */ + NvCtrlSetAttribute(ctk_gvo->handle, NV_CTRL_GVO_DATA_FORMAT, + ctk_gvo->output_data_format); - g_timeout_add(DEFAULT_DETECT_INPUT_TIME_INTERVAL, - detect_input_done, (gpointer) ctk_gvo); + post_output_data_format_changed(ctk_gvo); -} /* detect_input() */ +} /* output_data_format_ui_changed() */ /* - * detect_input_done() - done detecting; disable REACQUIRE, make all - * widgets sensitive again, and probe the new state + * x_offset_ui_changed() - Updates the X Server with the current setting of + * the spin button. */ -static gint detect_input_done(gpointer data) +static void x_offset_ui_changed(GtkSpinButton *spinbutton, gpointer user_data) { - CtkGvo *ctk_gvo = CTK_GVO(data); - - /* disable REACQUIRE */ - - NvCtrlSetAttribute(ctk_gvo->handle, - NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE, - NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE_FALSE); - - /* reprobe */ - - ctk_gvo_probe((gpointer) ctk_gvo); + CtkGvo *ctk_gvo = CTK_GVO(user_data); + gint val; - /* un-press the detect button */ + val = gtk_spin_button_get_value(spinbutton); - g_signal_handlers_block_by_func - (G_OBJECT(ctk_gvo->input_video_format_detect_button), - G_CALLBACK(detect_input), - (gpointer) ctk_gvo); + NvCtrlSetAttribute(ctk_gvo->handle, NV_CTRL_GVO_X_SCREEN_PAN_X, val); - gtk_toggle_button_set_active - (GTK_TOGGLE_BUTTON(ctk_gvo->input_video_format_detect_button), FALSE); +} /* x_offset_ui_changed() */ - g_signal_handlers_unblock_by_func - (G_OBJECT(ctk_gvo->input_video_format_detect_button), - G_CALLBACK(detect_input), - (gpointer) ctk_gvo); - - /* update the status bar */ - - ctk_config_statusbar_message(ctk_gvo->ctk_config, - "Done detecting incoming signal."); - - /* restore sensitivity */ - - set_gvo_sensitivity(ctk_gvo, TRUE, - SET_SENSITIVITY_EXCLUDE_DETECT_BUTTON); - /* restore the cursor */ - gdk_window_set_cursor((GTK_WIDGET(ctk_gvo->parent_window))->window, - NULL); +/* + * y_offset_ui_changed() - Updates the X Server with the current setting of + * the spin button. + */ - /* ungrab the server */ +static void y_offset_ui_changed(GtkSpinButton *spinbutton, gpointer user_data) +{ + CtkGvo *ctk_gvo = CTK_GVO(user_data); + gint val; - gtk_grab_remove(ctk_gvo->input_video_format_detect_button); + val = gtk_spin_button_get_value(spinbutton); - return FALSE; - -} /* detect_input_done() */ - - - + NvCtrlSetAttribute(ctk_gvo->handle, NV_CTRL_GVO_X_SCREEN_PAN_Y, val); + +} /* y_offset_ui_changed() */ -/**************************************************************************/ /* - * get_video_format_name() - return the name of the given video format + * clone_mode_button_ui_toggled() - Updates the X server to enable/disable + * clone mode when the UI button is toggled. */ -static const char *get_video_format_name(const gint format) +static void clone_mode_button_ui_toggled(GtkWidget *button, gpointer user_data) { - gint i; + CtkGvo *ctk_gvo = CTK_GVO(user_data); + gboolean enabled; + ReturnStatus ret; + gint val; + + enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)); - for (i = 0; videoFormatNames[i].name; i++) { - if (videoFormatNames[i].format == format) { - return videoFormatNames[i].name; + + /* + * When enabling clone mode, we must make sure that the output + * video format and output data format are something clone mode + * can support. + */ + + if (enabled) { + if (!ctk_gvo->output_video_format_valid) { + val = ctk_drop_down_menu_get_current_value + (CTK_DROP_DOWN_MENU(ctk_gvo->output_video_format_menu)); + ctk_gvo->output_video_format = val; + ctk_gvo->output_video_format_valid = TRUE; + NvCtrlSetAttribute(ctk_gvo->handle, + NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT, + ctk_gvo->output_video_format); + } + if (!ctk_gvo->output_data_format_valid) { + val = ctk_drop_down_menu_get_current_value + (CTK_DROP_DOWN_MENU(ctk_gvo->output_data_format_menu)); + ctk_gvo->output_data_format = val; + ctk_gvo->output_data_format_valid = TRUE; + NvCtrlSetAttribute(ctk_gvo->handle, + NV_CTRL_GVO_DATA_FORMAT, + val); } } - return "Unknown"; + if (enabled) val = NV_CTRL_GVO_DISPLAY_X_SCREEN_ENABLE; + else val = NV_CTRL_GVO_DISPLAY_X_SCREEN_DISABLE; + NvCtrlSetAttribute(ctk_gvo->handle, NV_CTRL_GVO_DISPLAY_X_SCREEN, val); -} /* get_video_format_name() */ + /* + * XXX NV_CTRL_GVO_DISPLAY_X_SCREEN can silently fail if GLX + * locked GVO output for use by pbuffer(s). Check that the + * setting actually stuck. + */ + + ret = NvCtrlGetAttribute(ctk_gvo->handle, + NV_CTRL_GVO_LOCK_OWNER, + &ctk_gvo->lock_owner); + if ((ret != NvCtrlSuccess) || + (enabled && + (ctk_gvo->lock_owner != NV_CTRL_GVO_LOCK_OWNER_CLONE))) { + /* + * setting did not apply; restore the button to its previous + * state + */ + + g_signal_handlers_block_matched + (G_OBJECT(button), G_SIGNAL_MATCH_FUNC, 0, 0, NULL, + G_CALLBACK(clone_mode_button_ui_toggled), NULL); -/* - * get_data_format_name() - return the name of the given data format - */ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), !enabled); -static const char *get_data_format_name(const gint format) -{ - gint i; - - for (i = 0; dataFormatNames[i].name; i++) { - if (dataFormatNames[i].format == format) { - return dataFormatNames[i].name; - } + g_signal_handlers_unblock_matched + (G_OBJECT(button), G_SIGNAL_MATCH_FUNC, 0, 0, NULL, + G_CALLBACK(clone_mode_button_ui_toggled), NULL); + + // XXX update the status bar; maybe pop up a dialog box? + return; } + + post_clone_mode_button_toggled(ctk_gvo); - return "Unknown"; +} /* clone_mode_button_ui_toggled() */ -} /* get_data_format_name() */ +/**** Common Update Functions ************************************************/ /* - * get_video_format_resolution() - return the width and height of the - * given video format + * post_output_video_format_changed() - Makes sure the CPL does the right + * things after the output video format has been changed. (by UI interaction + * or through an NV-CONTROL event. + * */ -static void get_video_format_resolution(const gint format, gint *w, gint *h) +static void post_output_video_format_changed(CtkGvo *ctk_gvo) { - gint i; + /* Update UI state */ + + update_gvo_current_info(ctk_gvo); + + update_offset_spin_button_ranges(ctk_gvo); - *w = *h = 0; + ctk_config_statusbar_message(ctk_gvo->ctk_config, + "Output Video Format set to: %s.", + ctk_gvo_get_video_format_name + (ctk_gvo->output_video_format)); + +} /* post_output_video_format_changed() */ - for (i = 0; videoFormatDetails[i].format != -1; i++) { - if (videoFormatDetails[i].format == format) { - *w = videoFormatDetails[i].width; - *h = videoFormatDetails[i].height; - return; - } - } -} /* get_video_format_resolution() */ /* - * set_gvo_sensitivity() - set the sensitivity of all the GVO widgets + * post_output_data_format_changed() - Makes sure the CPL does the right + * things after the output data format has been changed (by UI interaction + * or through an NV-CONTROL event. */ -static void set_gvo_sensitivity(CtkGvo *ctk_gvo, - gboolean sensitive, guint flags) +static void post_output_data_format_changed(CtkGvo *ctk_gvo) { - gtk_widget_set_sensitive(ctk_gvo->sync_mode_menu, sensitive); - gtk_widget_set_sensitive(ctk_gvo->output_video_format_menu, sensitive); - gtk_widget_set_sensitive(ctk_gvo->output_data_format_menu, sensitive); - gtk_widget_set_sensitive(ctk_gvo->hsync_delay_spin_button, sensitive); - gtk_widget_set_sensitive(ctk_gvo->vsync_delay_spin_button, sensitive); - - if (!(flags & SET_SENSITIVITY_EXCLUDE_ROI_BUTTONS)) { - gtk_widget_set_sensitive(ctk_gvo->x_offset_spin_button, sensitive); - gtk_widget_set_sensitive(ctk_gvo->y_offset_spin_button, sensitive); - } - - if (!(flags & SET_SENSITIVITY_EXCLUDE_ENABLE_BUTTON)) { - gtk_widget_set_sensitive(ctk_gvo->toggle_sdi_output_button, sensitive); - } - - if (!(flags & SET_SENSITIVITY_EXCLUDE_DETECT_BUTTON)) { - gtk_widget_set_sensitive(ctk_gvo->input_video_format_detect_button, - sensitive); - } - - if (!sensitive || (sensitive && ctk_gvo->sync_format_sensitive)) { - gtk_widget_set_sensitive(ctk_gvo->sync_format_menu, sensitive); - } + ctk_config_statusbar_message + (ctk_gvo->ctk_config, + "Output Data Format set to: %s.", + ctk_gvo_get_data_format_name(ctk_gvo->output_data_format)); -} /* set_gvo_sensitivity() */ +} /* post_output_data_format_changed() */ /* - * get_video_format_details() - initialize the videoFormatDetails[] - * table by querying each of refresh rate, width, and height from - * NV-CONTROL. + * post_clone_mode_button_toggled() - Makes sure the CPL does the right + * things after clone mode is enabled/disabled (by UI interaction or + * through an NV-CONTROL event. */ -static void get_video_format_details(CtkGvo *ctk_gvo) +static void post_clone_mode_button_toggled(CtkGvo *ctk_gvo) { - ReturnStatus ret; - gint i, val; + GList *children; + GList *child; + gboolean enabled; - for (i = 0; videoFormatDetails[i].format != -1; i++) { - - ret = NvCtrlGetDisplayAttribute(ctk_gvo->handle, - videoFormatDetails[i].format, - NV_CTRL_GVO_VIDEO_FORMAT_REFRESH_RATE, - &val); - - if (ret != NvCtrlSuccess) val = 0; - - videoFormatDetails[i].rate = val; - - ret = NvCtrlGetDisplayAttribute(ctk_gvo->handle, - videoFormatDetails[i].format, - NV_CTRL_GVO_VIDEO_FORMAT_WIDTH, - &val); - - if (ret != NvCtrlSuccess) val = 0; - - videoFormatDetails[i].width = val; - - ret = NvCtrlGetDisplayAttribute(ctk_gvo->handle, - videoFormatDetails[i].format, - NV_CTRL_GVO_VIDEO_FORMAT_HEIGHT, - &val); - - if (ret != NvCtrlSuccess) val = 0; - - videoFormatDetails[i].height = val; + children = gtk_container_get_children + (GTK_CONTAINER(ctk_gvo->toggle_clone_mode_button)); + + for (child = children; child; child = child->next) { + gtk_container_remove + (GTK_CONTAINER(ctk_gvo->toggle_clone_mode_button), + (GtkWidget *) child->data); + } + + g_list_free(children); + + enabled = + (ctk_gvo->lock_owner == NV_CTRL_GVO_LOCK_OWNER_CLONE) ? TRUE : FALSE; + + if (enabled) { + gtk_container_add(GTK_CONTAINER(ctk_gvo->toggle_clone_mode_button), + ctk_gvo->disable_clone_mode_label); + } else { + gtk_container_add(GTK_CONTAINER(ctk_gvo->toggle_clone_mode_button), + ctk_gvo->enable_clone_mode_label); } -} /* get_video_format_details() */ + + /* Update UI state */ + update_gvo_current_info(ctk_gvo); + + update_gvo_sensitivity(ctk_gvo); + + ctk_config_statusbar_message(ctk_gvo->ctk_config, "Clone Mode %s.", + enabled ? "enabled" : "disabled"); + +} /* post_clone_mode_button_toggled() */ -/**************************************************************************/ /* - * update_gvo_current_info() - Updates the state information to reflect + * update_gvo_current_info() - Updates the page's information to reflect * the GVO device's current state. + * + * This function must be called when the following have changed: + * + * ctk_gvo->lock_owner + * ctk_gvo->output_video_format + */ -static void update_gvo_current_info(CtkGvo *ctk_gvo, guint lock_owner) +static void update_gvo_current_info(CtkGvo *ctk_gvo) { int width; int height; gchar res_string[64], state_string[64]; - gboolean sensitive = FALSE; - guint flags = 0; - - if (!ctk_gvo->current_resolution_label) return; - if (!ctk_gvo->current_state_label) return; /* Get the current video format sizes */ - get_video_format_resolution(ctk_gvo->output_video_format, &width, &height); + ctk_gvo_get_video_format_resolution(ctk_gvo->output_video_format, + &width, &height); - switch (lock_owner) { + switch (ctk_gvo->lock_owner) { case NV_CTRL_GVO_LOCK_OWNER_NONE: snprintf(res_string, 64, "Inactive"); snprintf(state_string, 64, "Inactive"); - sensitive = TRUE; break; case NV_CTRL_GVO_LOCK_OWNER_CLONE: snprintf(res_string, 64, "%d x %d", width, height); snprintf(state_string, 64, "In use by X (Clone mode)"); - flags = SET_SENSITIVITY_EXCLUDE_ENABLE_BUTTON | - SET_SENSITIVITY_EXCLUDE_ROI_BUTTONS; break; case NV_CTRL_GVO_LOCK_OWNER_X_SCREEN: @@ -2392,97 +1617,32 @@ static void update_gvo_current_info(CtkGvo *ctk_gvo, guint lock_owner) default: return; } - - gtk_label_set_text(GTK_LABEL(ctk_gvo->current_resolution_label), - res_string); - gtk_label_set_text(GTK_LABEL(ctk_gvo->current_state_label), - state_string); - - set_gvo_sensitivity(ctk_gvo, sensitive, flags); - -} /* update_gvo_current_info() */ - - - -/* - * query_gvo_current_info() - Queries the state of the GVO device - * from the X server and updates the information on the page. - */ - -static void query_gvo_current_info(CtkGvo *ctk_gvo) -{ - ReturnStatus ret; - gint lock_owner; - - ret = NvCtrlGetAttribute(ctk_gvo->handle, - NV_CTRL_GVO_LOCK_OWNER, &lock_owner); - - if (ret == NvCtrlSuccess) { - update_gvo_current_info(ctk_gvo, lock_owner); + if (ctk_gvo->current_resolution_label) { + gtk_label_set_text(GTK_LABEL(ctk_gvo->current_resolution_label), + res_string); } -} /* query_gvo_current_info() */ - - - -/* - * update_delay_spin_buttons() - - */ - -static void update_delay_spin_buttons(CtkGvo *ctk_gvo) -{ - gint w, h; - - get_video_format_resolution(ctk_gvo->input_video_format, &w, &h); - - gtk_spin_button_set_range - (GTK_SPIN_BUTTON(ctk_gvo->hsync_delay_spin_button), 0, w); - gtk_spin_button_set_range - (GTK_SPIN_BUTTON(ctk_gvo->vsync_delay_spin_button), 0, h); - -} /* update_delay_spin_buttons() */ - - + if (ctk_gvo->current_state_label) { + gtk_label_set_text(GTK_LABEL(ctk_gvo->current_state_label), + state_string); + } -/* - * hsync_delay_changed() - */ +} /* update_gvo_current_info() */ -static void hsync_delay_changed(GtkSpinButton *spinbutton, gpointer user_data) -{ - CtkGvo *ctk_gvo = CTK_GVO(user_data); - gint val; - - val = gtk_spin_button_get_value(spinbutton); - - NvCtrlSetAttribute(ctk_gvo->handle, NV_CTRL_GVO_SYNC_DELAY_PIXELS, val); - -} /* hsync_delay_changed() */ /* - * vsync_delay_changed() + * update_offset_spin_button_ranges() - Updates the range of the + * offset spin buttons based on the current screen's width/height. */ -static void vsync_delay_changed(GtkSpinButton *spinbutton, gpointer user_data) -{ - CtkGvo *ctk_gvo = CTK_GVO(user_data); - gint val; - - val = gtk_spin_button_get_value(spinbutton); - - NvCtrlSetAttribute(ctk_gvo->handle, NV_CTRL_GVO_SYNC_DELAY_LINES, val); - -} /* vsync_delay_changed() */ - - - -static void update_offset_spin_buttons(CtkGvo *ctk_gvo) +static void update_offset_spin_button_ranges(CtkGvo *ctk_gvo) { gint w, h, x, y; - get_video_format_resolution(ctk_gvo->output_video_format, &w, &h); + ctk_gvo_get_video_format_resolution(ctk_gvo->output_video_format, + &w, &h); x = ctk_gvo->screen_width - w; y = ctk_gvo->screen_height - h; @@ -2492,178 +1652,51 @@ static void update_offset_spin_buttons(CtkGvo *ctk_gvo) gtk_spin_button_set_range (GTK_SPIN_BUTTON(ctk_gvo->y_offset_spin_button), 0, y); -} /* update_delay_spin_buttons() */ - - - -/* - * x_offset_changed() - */ - -static void x_offset_changed(GtkSpinButton *spinbutton, gpointer user_data) -{ - CtkGvo *ctk_gvo = CTK_GVO(user_data); - gint val; - - val = gtk_spin_button_get_value(spinbutton); - - NvCtrlSetAttribute(ctk_gvo->handle, NV_CTRL_GVO_X_SCREEN_PAN_X, val); - -} /* x_offset_changed() */ - - - -/* - * y_offset_changed() - */ - -static void y_offset_changed(GtkSpinButton *spinbutton, gpointer user_data) -{ - CtkGvo *ctk_gvo = CTK_GVO(user_data); - gint val; - - val = gtk_spin_button_get_value(spinbutton); - - NvCtrlSetAttribute(ctk_gvo->handle, NV_CTRL_GVO_X_SCREEN_PAN_Y, val); - -} /* y_offset_changed() */ +} /* update_offset_spin_button_ranges() */ -/**************************************************************************/ /* - * ctk_gvo_probe() - query the incoming signal + * update_gvo_sensitivity() - Set the sensitivity of the GVO panel's widgets */ -gint ctk_gvo_probe(gpointer data) +static void update_gvo_sensitivity(CtkGvo *ctk_gvo) { - ReturnStatus ret; - gint input, sdi, comp; - CtkGvo *ctk_gvo = CTK_GVO(data); + gboolean sensitive; - /* query NV_CTRL_GVO_INPUT_VIDEO_FORMAT */ - - ret = NvCtrlGetAttribute(ctk_gvo->handle, - NV_CTRL_GVO_INPUT_VIDEO_FORMAT, &input); - - if (ret != NvCtrlSuccess) { - input = NV_CTRL_GVO_VIDEO_FORMAT_NONE; - } - - ctk_gvo->input_video_format = input; + sensitive = ((ctk_gvo->lock_owner == NV_CTRL_GVO_LOCK_OWNER_NONE) || + (ctk_gvo->lock_owner == NV_CTRL_GVO_LOCK_OWNER_CLONE)); - /* query COMPOSITE_SYNC_INPUT_DETECTED */ + gtk_widget_set_sensitive(ctk_gvo->clone_mode_frame, sensitive); - ret = NvCtrlGetAttribute(ctk_gvo->handle, - NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED, &comp); - - if (ret != NvCtrlSuccess) { - comp = NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED_FALSE; - } - - /* query SDI_SYNC_INPUT_DETECTED */ + if (sensitive) { - ret = NvCtrlGetAttribute(ctk_gvo->handle, - NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED, &sdi); - - if (ret != NvCtrlSuccess) { - sdi = NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_NONE; - } - - /* update the input video format text entry */ - - update_input_video_format_text_entry(ctk_gvo); - - if (!ctk_gvo->sdi_output_enabled) { + /* Video & data formats */ - /* update the available SyncModes */ + sensitive = (ctk_gvo->lock_owner == NV_CTRL_GVO_LOCK_OWNER_NONE); + gtk_widget_set_sensitive(ctk_gvo->output_data_format_menu, sensitive); - update_sync_mode_menu(ctk_gvo, comp, sdi, ctk_gvo->sync_mode); - - /* update the available output video formats */ - - update_output_video_format_menu(ctk_gvo); - } - - /* update whatever data will be needed to change the LED colors */ - - update_gvo_banner_video_input(&ctk_gvo->banner, sdi, comp); - - /* update the range for the sync delay spin buttons */ - - update_delay_spin_buttons(ctk_gvo); - update_offset_spin_buttons(ctk_gvo); - - return TRUE; - -} /* ctk_gvo_probe() */ - - -/**************************************************************************/ - -static void register_for_gvo_events(CtkGvo *ctk_gvo) -{ - g_signal_connect(G_OBJECT(ctk_gvo->ctk_event), - CTK_EVENT_NAME(NV_CTRL_GVO_SYNC_MODE), - G_CALLBACK(gvo_event_received), - (gpointer) ctk_gvo); + sensitive = (sensitive && ctk_gvo->has_output_video_formats); + gtk_widget_set_sensitive(ctk_gvo->output_video_format_menu, sensitive); - g_signal_connect(G_OBJECT(ctk_gvo->ctk_event), - CTK_EVENT_NAME(NV_CTRL_GVO_SYNC_SOURCE), - G_CALLBACK(gvo_event_received), - (gpointer) ctk_gvo); - - g_signal_connect(G_OBJECT(ctk_gvo->ctk_event), - CTK_EVENT_NAME(NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT), - G_CALLBACK(gvo_event_received), - (gpointer) ctk_gvo); - - g_signal_connect(G_OBJECT(ctk_gvo->ctk_event), - CTK_EVENT_NAME(NV_CTRL_GVO_DATA_FORMAT), - G_CALLBACK(gvo_event_received), - (gpointer) ctk_gvo); + /* Enable/Disable clone mode button */ - g_signal_connect(G_OBJECT(ctk_gvo->ctk_event), - CTK_EVENT_NAME(NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE), - G_CALLBACK(gvo_event_received), - (gpointer) ctk_gvo); + sensitive = + ((ctk_gvo->lock_owner == NV_CTRL_GVO_LOCK_OWNER_NONE) && + ctk_gvo->has_output_video_formats) || + (ctk_gvo->lock_owner == NV_CTRL_GVO_LOCK_OWNER_CLONE); + gtk_widget_set_sensitive(ctk_gvo->toggle_clone_mode_button, sensitive); + } - g_signal_connect(G_OBJECT(ctk_gvo->ctk_event), - CTK_EVENT_NAME(NV_CTRL_GVO_SYNC_DELAY_PIXELS), - G_CALLBACK(gvo_event_received), - (gpointer) ctk_gvo); +} /* update_gvo_sensitivity() */ - g_signal_connect(G_OBJECT(ctk_gvo->ctk_event), - CTK_EVENT_NAME(NV_CTRL_GVO_SYNC_DELAY_LINES), - G_CALLBACK(gvo_event_received), - (gpointer) ctk_gvo); - - g_signal_connect(G_OBJECT(ctk_gvo->ctk_event), - CTK_EVENT_NAME(NV_CTRL_GVO_X_SCREEN_PAN_X), - G_CALLBACK(gvo_event_received), - (gpointer) ctk_gvo); - - g_signal_connect(G_OBJECT(ctk_gvo->ctk_event), - CTK_EVENT_NAME(NV_CTRL_GVO_X_SCREEN_PAN_Y), - G_CALLBACK(gvo_event_received), - (gpointer) ctk_gvo); - - g_signal_connect(G_OBJECT(ctk_gvo->ctk_event), - CTK_EVENT_NAME(NV_CTRL_GVO_DISPLAY_X_SCREEN), - G_CALLBACK(gvo_event_received), - (gpointer) ctk_gvo); - g_signal_connect(G_OBJECT(ctk_gvo->ctk_event), - CTK_EVENT_NAME(NV_CTRL_GVO_COMPOSITE_TERMINATION), - G_CALLBACK(gvo_event_received), - (gpointer) ctk_gvo); - g_signal_connect(G_OBJECT(ctk_gvo->ctk_event), - CTK_EVENT_NAME(NV_CTRL_GVO_LOCK_OWNER), - G_CALLBACK(gvo_event_received), - (gpointer) ctk_gvo); -} +/**** Event Handlers *********************************************************/ +/* + * gvo_event_received(() - Handles GVO NV-CONTROL events. + */ static void gvo_event_received(GtkObject *object, gpointer arg1, @@ -2671,35 +1704,37 @@ static void gvo_event_received(GtkObject *object, { CtkEventStruct *event_struct = (CtkEventStruct *) arg1; CtkGvo *ctk_gvo = CTK_GVO(user_data); - ReturnStatus ret; - GtkWidget *widget; + GtkWidget *widget; gint attribute = event_struct->attribute; gint value = event_struct->value; + gboolean active; + switch (attribute) { - case NV_CTRL_GVO_SYNC_MODE: - case NV_CTRL_GVO_SYNC_SOURCE: - case NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE: - // XXX implement me - break; - + case NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT: widget = ctk_gvo->output_video_format_menu; g_signal_handlers_block_by_func (G_OBJECT(widget), - G_CALLBACK(output_video_format_changed), + G_CALLBACK(output_video_format_ui_changed), (gpointer) ctk_gvo); + ctk_gvo->output_video_format = value; + validate_output_video_format(ctk_gvo); + + /* Update the dropdown with a reasonable value */ + if (!ctk_gvo->output_video_format_valid) { + value = get_first_available_output_video_format(ctk_gvo); + } ctk_drop_down_menu_set_current_value (CTK_DROP_DOWN_MENU(widget), value); - - post_output_video_format_changed(ctk_gvo, value); - query_gvo_current_info(ctk_gvo); - + + post_output_video_format_changed(ctk_gvo); + g_signal_handlers_unblock_by_func (G_OBJECT(widget), - G_CALLBACK(output_video_format_changed), + G_CALLBACK(output_video_format_ui_changed), (gpointer) ctk_gvo); break; @@ -2708,59 +1743,38 @@ static void gvo_event_received(GtkObject *object, g_signal_handlers_block_by_func (G_OBJECT(widget), - G_CALLBACK(output_data_format_changed), + G_CALLBACK(output_data_format_ui_changed), (gpointer) ctk_gvo); - + + ctk_gvo->output_data_format = value; + validate_output_data_format(ctk_gvo); + + /* Update the dropdown with a reasonable value */ + if (!ctk_gvo->output_data_format_valid) { + value = DEFAULT_OUTPUT_DATA_FORMAT; + } ctk_drop_down_menu_set_current_value (CTK_DROP_DOWN_MENU(widget), value); - - post_output_data_format_changed(ctk_gvo, value); + + post_output_data_format_changed(ctk_gvo); g_signal_handlers_unblock_by_func (G_OBJECT(widget), - G_CALLBACK(output_data_format_changed), + G_CALLBACK(output_data_format_ui_changed), (gpointer) ctk_gvo); break; - - case NV_CTRL_GVO_SYNC_DELAY_PIXELS: - widget = ctk_gvo->hsync_delay_spin_button; - - g_signal_handlers_block_by_func(G_OBJECT(widget), - G_CALLBACK(hsync_delay_changed), - (gpointer) ctk_gvo); - - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), value); - - g_signal_handlers_unblock_by_func(G_OBJECT(widget), - G_CALLBACK(hsync_delay_changed), - (gpointer) ctk_gvo); - break; - - case NV_CTRL_GVO_SYNC_DELAY_LINES: - widget = ctk_gvo->vsync_delay_spin_button; - - g_signal_handlers_block_by_func(G_OBJECT(widget), - G_CALLBACK(vsync_delay_changed), - (gpointer) ctk_gvo); - - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), value); - - g_signal_handlers_unblock_by_func(G_OBJECT(widget), - G_CALLBACK(vsync_delay_changed), - (gpointer) ctk_gvo); - break; - + case NV_CTRL_GVO_X_SCREEN_PAN_X: widget = ctk_gvo->x_offset_spin_button; g_signal_handlers_block_by_func(G_OBJECT(widget), - G_CALLBACK(x_offset_changed), + G_CALLBACK(x_offset_ui_changed), (gpointer) ctk_gvo); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), value); g_signal_handlers_unblock_by_func(G_OBJECT(widget), - G_CALLBACK(x_offset_changed), + G_CALLBACK(x_offset_ui_changed), (gpointer) ctk_gvo); break; @@ -2768,109 +1782,200 @@ static void gvo_event_received(GtkObject *object, widget = ctk_gvo->y_offset_spin_button; g_signal_handlers_block_by_func(G_OBJECT(widget), - G_CALLBACK(y_offset_changed), + G_CALLBACK(y_offset_ui_changed), (gpointer) ctk_gvo); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), value); g_signal_handlers_unblock_by_func(G_OBJECT(widget), - G_CALLBACK(y_offset_changed), + G_CALLBACK(y_offset_ui_changed), (gpointer) ctk_gvo); break; case NV_CTRL_GVO_LOCK_OWNER: - update_gvo_current_info(ctk_gvo, value); - break; + widget = ctk_gvo->toggle_clone_mode_button; - case NV_CTRL_GVO_DISPLAY_X_SCREEN: - - /* - * XXX explicitly re-query this value, since a change may not - * actually have been successfully applied (if GLX or some other - * mode already had GVO locked) - */ + g_signal_handlers_block_by_func + (G_OBJECT(widget), + G_CALLBACK(clone_mode_button_ui_toggled), + ctk_gvo); - ret = NvCtrlGetAttribute(ctk_gvo->handle, - NV_CTRL_GVO_DISPLAY_X_SCREEN, &value); + ctk_gvo->lock_owner = value; + active = (value != NV_CTRL_GVO_LOCK_OWNER_NONE); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), active); - if (ret == NvCtrlSuccess) { + post_clone_mode_button_toggled(ctk_gvo); - widget = ctk_gvo->toggle_sdi_output_button; - - g_signal_handlers_block_by_func - (G_OBJECT(widget), - G_CALLBACK(toggle_sdi_output_button), - ctk_gvo); - - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), value); - - post_toggle_sdi_output_button(ctk_gvo, value); - - g_signal_handlers_unblock_by_func - (G_OBJECT(widget), - G_CALLBACK(toggle_sdi_output_button), - ctk_gvo); - } + g_signal_handlers_unblock_by_func + (G_OBJECT(widget), + G_CALLBACK(clone_mode_button_ui_toggled), + ctk_gvo); break; + } - case NV_CTRL_GVO_COMPOSITE_TERMINATION: - widget = ctk_gvo->composite_termination_button; - - if (widget) { - g_signal_handlers_block_by_func - (G_OBJECT(widget), - G_CALLBACK(toggle_composite_termination), - ctk_gvo); - - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), value); - - post_toggle_composite_termination(ctk_gvo, value); - - g_signal_handlers_unblock_by_func - (G_OBJECT(widget), - G_CALLBACK(toggle_composite_termination), - ctk_gvo); - } - break; +} /* gvo_event_received(() */ + + + +/* + * screen_changed_handler() - Handle XRandR screen size update events. + */ + +static void screen_changed_handler(GtkWidget *widget, + XRRScreenChangeNotifyEvent *ev, + gpointer data) +{ + CtkGvo *ctk_gvo = CTK_GVO(data); + CtkDropDownMenu *dmenu; + gint val; + + /* Cache the new screen dimensions */ + + ctk_gvo->screen_width = ev->width; + ctk_gvo->screen_height = ev->height; + + /* Update the output video format drop down menu and reset the list */ + + dmenu = CTK_DROP_DOWN_MENU(ctk_gvo->output_video_format_menu); + + /* Get the currently selected value */ + + val = ctk_drop_down_menu_get_current_value + (CTK_DROP_DOWN_MENU(ctk_gvo->output_video_format_menu)); + + /* Reset the drop down menu */ + + ctk_drop_down_menu_reset(dmenu); + + /* Fill the menu with the new valid video modes */ + + fill_output_video_format_menu(ctk_gvo); + + /* Finalize and load the menu */ + g_signal_handlers_block_by_func + (G_OBJECT(ctk_gvo->output_video_format_menu), + G_CALLBACK(output_video_format_ui_changed), + (gpointer) ctk_gvo); + + ctk_drop_down_menu_finalize(dmenu); + + /* Set best valid output video format value possible. + * Revalidate here since the screen change could cause + * the current output video mode to now be valid. + */ + + validate_output_video_format(ctk_gvo); + if (ctk_gvo->output_video_format_valid) { + val = ctk_gvo->output_video_format; } -} + ctk_drop_down_menu_set_current_value + (CTK_DROP_DOWN_MENU(ctk_gvo->output_video_format_menu), val); + + g_signal_handlers_unblock_by_func + (G_OBJECT(ctk_gvo->output_video_format_menu), + G_CALLBACK(output_video_format_ui_changed), + (gpointer) ctk_gvo); + + /* Update UI */ + + update_gvo_current_info(ctk_gvo); + + update_offset_spin_button_ranges(ctk_gvo); + + update_gvo_sensitivity(ctk_gvo); + +} /* screen_changed_handler() */ + + + +/**** Callback Handlers ******************************************************/ + + +/* + * ctk_gvo_probe_callback() - This function gets called when the + * GVO probe occurs so that we can update the state of attributes that + * do not emit events. + * + * These attributes are: + * + * - NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED + * - NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED + * - NV_CTRL_GVO_INPUT_VIDEO_FORMAT + * + */ + +gint ctk_gvo_probe_callback(gpointer data) +{ + CtkGvo *ctk_gvo = CTK_GVO(data); + gint old_input_format = ctk_gvo->input_video_format; + gint old_sync_mode = ctk_gvo->sync_mode; + + /* Update our copies of some SDI state variables */ + + ctk_gvo->input_video_format = + CTK_GVO_BANNER(ctk_gvo->banner)->input_video_format; + + ctk_gvo->sync_mode = + CTK_GVO_BANNER(ctk_gvo->banner)->sync_mode; + + if ((ctk_gvo->lock_owner == NV_CTRL_GVO_LOCK_OWNER_NONE) && + ((old_input_format != ctk_gvo->input_video_format) || + (old_sync_mode != ctk_gvo->sync_mode))) { + + /* update the available output video formats */ + + trim_output_video_format_menu(ctk_gvo); + } + + return TRUE; + +} /* ctk_gvo_probe_callback() */ -/**************************************************************************/ +/* + * ctk_gvo_select() - Called when the ctk_gvo page is selected + */ void ctk_gvo_select(GtkWidget *widget) { CtkGvo *ctk_gvo = CTK_GVO(widget); - /* Greb the GVO parent banner */ + /* Grab the GVO banner */ - gtk_container_add(GTK_CONTAINER(ctk_gvo->banner_box), - ctk_gvo->banner.widget); + ctk_gvo_banner_set_parent(CTK_GVO_BANNER(ctk_gvo->banner), + ctk_gvo->banner_box, + ctk_gvo_probe_callback, ctk_gvo); - ctk_config_start_timer(ctk_gvo->ctk_config, (GSourceFunc) ctk_gvo_probe, - (gpointer) ctk_gvo); -} +} /* ctk_gvo_select() */ +/* + * ctk_gvo_unselect() - Called when a page other than the ctk_gvo + * page is selected and the ctk_gvo page was the last page to be + * selected. + */ + void ctk_gvo_unselect(GtkWidget *widget) { CtkGvo *ctk_gvo = CTK_GVO(widget); - /* Return the GVO parent banner */ + /* Release the GVO banner */ - gtk_container_remove(GTK_CONTAINER(ctk_gvo->banner_box), - ctk_gvo->banner.widget); + ctk_gvo_banner_set_parent(CTK_GVO_BANNER(ctk_gvo->banner), + NULL, NULL, NULL); + +} /* ctk_gvo_unselect() */ - ctk_config_stop_timer(ctk_gvo->ctk_config, (GSourceFunc) ctk_gvo_probe, - (gpointer) ctk_gvo); -} +/* + * ctk_gvo_create_help() - Creates the GVO help page. + */ -GtkTextBuffer* ctk_gvo_create_help (GtkTextTagTable *table) +GtkTextBuffer* ctk_gvo_create_help(GtkTextTagTable *table) { GtkTextIter i; GtkTextBuffer *b; @@ -2879,11 +1984,45 @@ GtkTextBuffer* ctk_gvo_create_help (GtkTextTagTable *table) gtk_text_buffer_get_iter_at_offset(b, &i, 0); - ctk_help_title(b, &i, "GVO (Graphics to Video Out)"); + ctk_help_title(b, &i, "GVO (Graphics to Video Out) Help"); + ctk_help_para(b, &i, "This page gives access to general information about " + "the SDI device as well as configuration of Clone Mode."); + + ctk_help_heading(b, &i, "General Information"); + ctk_help_para(b, &i, "This section shows information about the SDI device " + "that is associated with the X screen."); + ctk_help_heading(b, &i, "Firmware Version"); + ctk_help_para(b, &i, __general_firmware_version_help); + ctk_help_heading(b, &i, "Current SDI Resolution"); + ctk_help_para(b, &i, __general_current_sdi_resolution_help); + ctk_help_heading(b, &i, "Current SDI State"); + ctk_help_para(b, &i, __general_current_sdi_state_help); + + ctk_help_heading(b, &i, "Clone Mode"); + ctk_help_para(b, &i, "This section allows configuration and operation " + "of the SDI device in Clone Mode."); + ctk_help_heading(b, &i, "Video Format"); + ctk_help_para(b, &i, "%s The current size of the associated X screen " + "will limit the available clone mode video formats such " + "that only video modes that are smaller than or equal to " + "the current X screen size will be available. Also, the " + "current Sync Mode may limit available modes when not in " + "Free-Running (see Synchronization Options page for more " + "information).", __clone_mode_video_format_help); + ctk_help_heading(b, &i, "Data Format"); + ctk_help_para(b, &i, __clone_mode_data_format_help); + ctk_help_heading(b, &i, "X Offset"); + ctk_help_para(b, &i, __clone_mode_x_offset_help); + ctk_help_heading(b, &i, "Y Offset"); + ctk_help_para(b, &i, __clone_mode_y_offset_help); + ctk_help_heading(b, &i, "Enable Clone Mode"); + ctk_help_para(b, &i, "%s Clone mode may only be enabled when the SDI " + "device is currently free (It is not being used by other " + "modes such as OpenGL, TwinView, or Separate X Screens).", + __clone_mode_enable_clone_mode_help); ctk_help_finish(b); return b; -} - +} /* ctk_gvo_create_help() */ diff --git a/src/gtk+-2.x/ctkgvo.h b/src/gtk+-2.x/ctkgvo.h index 30d1367..d2201d7 100644 --- a/src/gtk+-2.x/ctkgvo.h +++ b/src/gtk+-2.x/ctkgvo.h @@ -28,6 +28,7 @@ #include "NvCtrlAttributes.h" #include "ctkconfig.h" #include "ctkevent.h" +#include "ctkgvo-banner.h" G_BEGIN_DECLS @@ -54,22 +55,6 @@ G_BEGIN_DECLS typedef struct _CtkGvo CtkGvo; typedef struct _CtkGvoClass CtkGvoClass; -typedef struct _CtkGvoBanner CtkGvoBanner; - -#define GVO_BANNER_VID1 0 -#define GVO_BANNER_VID2 1 -#define GVO_BANNER_SDI 2 -#define GVO_BANNER_COMP 3 - -struct _CtkGvoBanner -{ - GtkWidget *widget; - GtkWidget *ctk_banner; - - guint8 img[4]; - guint state[4]; -}; - struct _CtkGvo { @@ -79,49 +64,60 @@ struct _CtkGvo GtkWidget *parent_window; CtkConfig *ctk_config; CtkEvent *ctk_event; + + /* State */ - GtkWidget *banner_box; - - GtkWidget *sync_mode_menu; - GtkWidget *output_video_format_menu; - GtkWidget *output_data_format_menu; - - GtkWidget *composite_termination_button; - - GtkWidget *enable_sdi_output_label; - GtkWidget *disable_sdi_output_label; - GtkWidget *toggle_sdi_output_button; + gint caps; // Capabilities - GtkWidget *sync_format_menu; - GtkWidget *input_video_format_text_entry; - GtkWidget *input_video_format_detect_button; + gint lock_owner; - GtkWidget *current_resolution_label; - GtkWidget *current_state_label; - gint sync_mode; - gint sync_source; gint input_video_format; + gint output_video_format; + gint valid_output_video_format_mask[2]; + gboolean has_output_video_formats; // XXX Show show non-valid as gray? + gboolean output_video_format_valid; /* If the output video format was + changed by another client to + something clone mode doesn't + support, we should ignore it, + but we should make sure that we + set the output_video_format when + we enable clone mode. */ + + gint output_data_format; + gboolean output_data_format_valid; /* If the output data format was + changed by another client to + something clone mode doesn't + support, we should ignore it, + but we should make sure that we + set the output_data_format when + we enable clone mode. */ - gint valid_output_video_format_mask[2]; - gint input_video_format_detect_timer; + gint screen_width; + gint screen_height; + + /* Widgets */ + + GtkWidget *banner_box; + GtkWidget *banner; - GdkCursor *wait_cursor; - CtkGvoBanner banner; - GtkWidget *hsync_delay_spin_button; - GtkWidget *vsync_delay_spin_button; + GtkWidget *current_resolution_label; + GtkWidget *current_state_label; + + GtkWidget *clone_mode_frame; + + GtkWidget *output_video_format_menu; + GtkWidget *output_data_format_menu; GtkWidget *x_offset_spin_button; GtkWidget *y_offset_spin_button; - gboolean sync_format_sensitive; - gboolean sdi_output_enabled; - - gint screen_width; - gint screen_height; + GtkWidget *toggle_clone_mode_button; + GtkWidget *enable_clone_mode_label; + GtkWidget *disable_clone_mode_label; }; @@ -131,9 +127,23 @@ struct _CtkGvoClass }; +typedef struct { + int format; + const char *name; +} GvoFormatName; + +typedef struct { + int format; + int rate; + int width; + int height; +} GvoFormatDetails; + + + GType ctk_gvo_get_type (void) G_GNUC_CONST; GtkWidget* ctk_gvo_new (NvCtrlAttributeHandle *, - GtkWidget *, CtkConfig *, CtkEvent *); + CtkConfig *, CtkEvent *); void ctk_gvo_select (GtkWidget *); void ctk_gvo_unselect (GtkWidget *); GtkTextBuffer* ctk_gvo_create_help (GtkTextTagTable *); @@ -141,6 +151,12 @@ void ctk_gvo_pack_banner_slot (CtkGvoBanner *, gint slot, gint new); gint ctk_gvo_probe (gpointer data); + +const char *ctk_gvo_get_video_format_name(const gint format); +const char *ctk_gvo_get_data_format_name(const gint format); +void ctk_gvo_get_video_format_resolution(const gint format, gint *w, gint *h); + + G_END_DECLS #endif /* __CTK_GVO_H__*/ diff --git a/src/gtk+-2.x/ctkimagesliders.c b/src/gtk+-2.x/ctkimagesliders.c index 80152a0..820f603 100644 --- a/src/gtk+-2.x/ctkimagesliders.c +++ b/src/gtk+-2.x/ctkimagesliders.c @@ -333,6 +333,13 @@ static void scale_value_received(GtkObject *object, gpointer arg1, break; case NV_CTRL_IMAGE_SHARPENING: scale = ctk_image_sliders->image_sharpening; + if (event_struct->availability == FALSE) { + gtk_widget_set_sensitive(scale, FALSE); + gtk_widget_hide(scale); + } else if (event_struct->availability == TRUE) { + gtk_widget_set_sensitive(scale, TRUE); + gtk_widget_show(scale); + } break; default: return; diff --git a/src/gtk+-2.x/ctkopengl.c b/src/gtk+-2.x/ctkopengl.c index 2d9471e..4efccb7 100644 --- a/src/gtk+-2.x/ctkopengl.c +++ b/src/gtk+-2.x/ctkopengl.c @@ -44,8 +44,6 @@ static void post_show_sli_hud_button_toggled(CtkOpenGL *, gboolean); static void post_xinerama_stereo_button_toggled(CtkOpenGL *, gboolean); -static void post_force_generic_cpu_toggled(CtkOpenGL *, gboolean); - static void post_aa_line_gamma_toggled(CtkOpenGL *, gboolean); static void allow_flipping_button_toggled(GtkWidget *, gpointer); @@ -54,8 +52,6 @@ static void force_stereo_button_toggled (GtkWidget *, gpointer); static void xinerama_stereo_button_toggled (GtkWidget *, gpointer); -static void force_generic_cpu_toggled (GtkWidget *, gpointer); - static void aa_line_gamma_toggled (GtkWidget *, gpointer); static void show_sli_hud_button_toggled (GtkWidget *, gpointer); @@ -82,16 +78,6 @@ static const char *__sync_to_vblank_help = "applied to OpenGL applications that are started after " "this option is set."; -static const char *__force_generic_cpu_help = -"Enable this option to disable use of CPU " -"specific features such as MMX, SSE, or 3DNOW!. " -"Use of this option may result in performance " -"loss, but may be useful in conjunction with " -"software such as the Valgrind memory " -"debugger. This option is applied to " -"OpenGL applications that are started after " -"this option is set."; - static const char *__image_settings_slider_help = "The Image Settings slider controls the image quality setting."; @@ -172,7 +158,6 @@ GtkWidget* ctk_opengl_new(NvCtrlAttributeHandle *handle, NVCTRLAttributeValidValuesRec image_settings_valid; gint image_settings_value; gint aa_line_gamma; - gint force_generic_cpu; gint show_sli_hud; ReturnStatus ret_sync_to_vblank; @@ -181,7 +166,6 @@ GtkWidget* ctk_opengl_new(NvCtrlAttributeHandle *handle, ReturnStatus ret_xinerama_stereo; ReturnStatus ret_image_settings; ReturnStatus ret_aa_line_gama; - ReturnStatus ret_force_generic_cpu; ReturnStatus ret_show_sli_hud; /* Query OpenGL settings */ @@ -213,11 +197,6 @@ GtkWidget* ctk_opengl_new(NvCtrlAttributeHandle *handle, ret_aa_line_gama = NvCtrlGetAttribute(handle, NV_CTRL_OPENGL_AA_LINE_GAMMA, &aa_line_gamma); - - ret_force_generic_cpu = NvCtrlGetAttribute(handle, - NV_CTRL_FORCE_GENERIC_CPU, - &force_generic_cpu); - ret_show_sli_hud = NvCtrlGetAttribute(handle, NV_CTRL_SHOW_SLI_HUD, &show_sli_hud); @@ -228,7 +207,6 @@ GtkWidget* ctk_opengl_new(NvCtrlAttributeHandle *handle, (ret_xinerama_stereo != NvCtrlSuccess) && (ret_image_settings != NvCtrlSuccess) && (ret_aa_line_gama != NvCtrlSuccess) && - (ret_force_generic_cpu != NvCtrlSuccess) && (ret_show_sli_hud != NvCtrlSuccess)) { return NULL; } @@ -483,38 +461,6 @@ GtkWidget* ctk_opengl_new(NvCtrlAttributeHandle *handle, ctk_opengl->aa_line_gamma_button = check_button; } - /* - * Force Generic CPU - */ - - if (ret_force_generic_cpu == NvCtrlSuccess) { - label = gtk_label_new("Disable use of enhanced CPU instruction sets"); - - check_button = gtk_check_button_new(); - gtk_container_add(GTK_CONTAINER(check_button), label); - - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), - force_generic_cpu == - NV_CTRL_FORCE_GENERIC_CPU_ENABLE); - - gtk_box_pack_start(GTK_BOX(vbox), check_button, FALSE, FALSE, 0); - - g_signal_connect(G_OBJECT(check_button), "toggled", - G_CALLBACK(force_generic_cpu_toggled), - (gpointer) ctk_opengl); - - g_signal_connect(G_OBJECT(ctk_event), - CTK_EVENT_NAME(NV_CTRL_FORCE_GENERIC_CPU), - G_CALLBACK(value_changed), (gpointer) ctk_opengl); - - ctk_config_set_tooltip(ctk_config, check_button, - __force_generic_cpu_help); - - ctk_opengl->active_attributes |= __FORCE_GENERIC_CPU; - - ctk_opengl->force_generic_cpu_button = check_button; - } - if (ret_show_sli_hud == NvCtrlSuccess) { label = gtk_label_new("Enable SLI Heads-Up-Display"); @@ -591,20 +537,6 @@ static void post_xinerama_stereo_button_toggled(CtkOpenGL *ctk_opengl, enabled ? "allowed" : "not allowed"); } -static void post_force_generic_cpu_toggled(CtkOpenGL *ctk_opengl, - gboolean enabled) -{ - /* - * XXX the logic is awkward, but correct: when - * NV_CTRL_FORCE_GENERIC_CPU is enabled, use of enhanced CPU - * instructions is disabled, and vice versa. - */ - - ctk_config_statusbar_message(ctk_opengl->ctk_config, - "OpenGL use of enhanced CPU instructions %s.", - enabled ? "disabled" : "enabled"); -} - static void post_aa_line_gamma_toggled(CtkOpenGL *ctk_opengl, gboolean enabled) { @@ -690,31 +622,6 @@ static void xinerama_stereo_button_toggled(GtkWidget *widget, post_xinerama_stereo_button_toggled(ctk_opengl, enabled); } -static void force_generic_cpu_toggled( - GtkWidget *widget, - gpointer user_data -) -{ - CtkOpenGL *ctk_opengl; - gboolean enabled; - ReturnStatus ret; - - ctk_opengl = CTK_OPENGL(user_data); - - enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); - - ret = NvCtrlSetAttribute(ctk_opengl->handle, - NV_CTRL_FORCE_GENERIC_CPU, enabled); - - if (ret != NvCtrlSuccess) return; - post_force_generic_cpu_toggled(ctk_opengl, enabled); - /* - * XXX the logic is awkward, but correct: when - * NV_CTRL_FORCE_GENERIC_CPU is enabled, use of enhanced CPU - * instructions is disabled, and vice versa. - */ -} - static void aa_line_gamma_toggled( GtkWidget *widget, gpointer user_data @@ -778,11 +685,6 @@ static void value_changed(GtkObject *object, gpointer arg1, gpointer user_data) func = G_CALLBACK(aa_line_gamma_toggled); post_aa_line_gamma_toggled(ctk_opengl, event_struct->value); break; - case NV_CTRL_FORCE_GENERIC_CPU: - button = GTK_TOGGLE_BUTTON(ctk_opengl->force_generic_cpu_button); - func = G_CALLBACK(force_generic_cpu_toggled); - post_force_generic_cpu_toggled(ctk_opengl, event_struct->value); - break; case NV_CTRL_SHOW_SLI_HUD: button = GTK_TOGGLE_BUTTON(ctk_opengl->show_sli_hud_button); func = G_CALLBACK(show_sli_hud_button_toggled); @@ -978,12 +880,6 @@ GtkTextBuffer *ctk_opengl_create_help(GtkTextTagTable *table, "this option is set."); } - if (ctk_opengl->active_attributes & __FORCE_GENERIC_CPU) { - ctk_help_heading(b, &i, "Disable use of enhanced CPU " - "instruction sets"); - ctk_help_para(b, &i, __force_generic_cpu_help); - } - if (ctk_opengl->active_attributes & __SHOW_SLI_HUD) { ctk_help_heading(b, &i, "SLI Heads-Up-Display"); ctk_help_para(b, &i, "This option draws information about the current " diff --git a/src/gtk+-2.x/ctkopengl.h b/src/gtk+-2.x/ctkopengl.h index 9b99476..ff37a0c 100644 --- a/src/gtk+-2.x/ctkopengl.h +++ b/src/gtk+-2.x/ctkopengl.h @@ -64,7 +64,6 @@ struct _CtkOpenGL GtkWidget *xinerama_stereo_button; GtkWidget *image_settings_scale; GtkWidget *aa_line_gamma_button; - GtkWidget *force_generic_cpu_button; GtkWidget *show_sli_hud_button; unsigned int active_attributes; diff --git a/src/gtk+-2.x/ctkrandr.c b/src/gtk+-2.x/ctkrandr.c index 9e394c2..66bccc0 100644 --- a/src/gtk+-2.x/ctkrandr.c +++ b/src/gtk+-2.x/ctkrandr.c @@ -537,15 +537,19 @@ GtkWidget* ctk_randr_new(NvCtrlAttributeHandle *handle, } { /* Rotation orientation image */ + GtkWidget *frame = gtk_frame_new(NULL); GtkWidget *img_box = gtk_hbox_new(TRUE, 0); - - gtk_widget_set_size_request(img_box, 120, 120); - + GtkWidget *hbox = gtk_hbox_new(TRUE, 0); + GtkWidget *vbox = gtk_vbox_new(TRUE, 0); + gtk_box_pack_start(GTK_BOX(img_box), GTK_WIDGET(ctk_randr->orientation_image), FALSE, FALSE, 0); - - gtk_box_pack_start(GTK_BOX(hControlBox), img_box, FALSE, FALSE, 0); + gtk_container_add(GTK_CONTAINER(frame), img_box); + gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0); + gtk_widget_set_size_request(hbox, 130, 130); + gtk_box_pack_start(GTK_BOX(hControlBox), hbox, FALSE, FALSE, 0); } { /* Rotate right button */ diff --git a/src/gtk+-2.x/ctkui.c b/src/gtk+-2.x/ctkui.c index 25ecdb8..a471985 100644 --- a/src/gtk+-2.x/ctkui.c +++ b/src/gtk+-2.x/ctkui.c @@ -44,7 +44,7 @@ char *ctk_get_display(void) void ctk_main(NvCtrlAttributeHandle **screen_handles, int num_screen_handles, NvCtrlAttributeHandle **gpu_handles, int num_gpu_handles, - NvCtrlAttributeHandle **vcsc_handles, int num_vcsc_handles, + NvCtrlAttributeHandle **vcs_handles, int num_vcs_handles, ParsedAttribute *p, ConfigProperties *conf) { int i, has_nv_control = FALSE; @@ -53,7 +53,7 @@ void ctk_main(NvCtrlAttributeHandle **screen_handles, int num_screen_handles, gtk_window_set_default_icon_list(list); ctk_window_new(screen_handles, num_screen_handles, gpu_handles, num_gpu_handles, - vcsc_handles, num_vcsc_handles, + vcs_handles, num_vcs_handles, p, conf); for (i = 0; i < num_screen_handles; i++) { diff --git a/src/gtk+-2.x/ctkvcsc.c b/src/gtk+-2.x/ctkvcs.c index 8a35fff..5b4c157 100644 --- a/src/gtk+-2.x/ctkvcsc.c +++ b/src/gtk+-2.x/ctkvcs.c @@ -31,47 +31,47 @@ #include "ctkimage.h" -#include "ctkvcsc.h" +#include "ctkvcs.h" #include "ctkevent.h" #include "ctkhelp.h" #include "ctkutils.h" -GType ctk_vcsc_get_type(void) +GType ctk_vcs_get_type(void) { - static GType ctk_vcsc_type = 0; + static GType ctk_vcs_type = 0; - if (!ctk_vcsc_type) { - static const GTypeInfo ctk_vcsc_info = { - sizeof (CtkVcscClass), + if (!ctk_vcs_type) { + static const GTypeInfo ctk_vcs_info = { + sizeof (CtkVcsClass), NULL, /* base_init */ NULL, /* base_finalize */ NULL, /* class_init */ NULL, /* class_finalize */ NULL, /* class_data */ - sizeof(CtkVcsc), + sizeof(CtkVcs), 0, /* n_preallocs */ NULL, /* instance_init */ }; - ctk_vcsc_type = g_type_register_static - (GTK_TYPE_VBOX, "CtkVcsc", &ctk_vcsc_info, 0); + ctk_vcs_type = g_type_register_static + (GTK_TYPE_VBOX, "CtkVcs", &ctk_vcs_info, 0); } - return ctk_vcsc_type; + return ctk_vcs_type; } /* - * CTK VCSC (Visual Computing System Controller) widget creation + * CTK VCS (Visual Computing System) widget creation * */ -GtkWidget* ctk_vcsc_new(NvCtrlAttributeHandle *handle, +GtkWidget* ctk_vcs_new(NvCtrlAttributeHandle *handle, CtkConfig *ctk_config) { GObject *object; - CtkVcsc *ctk_object; + CtkVcs *ctk_object; GtkWidget *label; GtkWidget *vbox; GtkWidget *hbox; @@ -143,8 +143,8 @@ GtkWidget* ctk_vcsc_new(NvCtrlAttributeHandle *handle, /* now, create the object */ - object = g_object_new(CTK_TYPE_VCSC, NULL); - ctk_object = CTK_VCSC(object); + object = g_object_new(CTK_TYPE_VCS, NULL); + ctk_object = CTK_VCS(object); /* cache the attribute handle */ @@ -156,7 +156,7 @@ GtkWidget* ctk_vcsc_new(NvCtrlAttributeHandle *handle, /* banner */ - banner = ctk_banner_image_new(BANNER_ARTWORK_VCSC); + banner = ctk_banner_image_new(BANNER_ARTWORK_VCS); gtk_box_pack_start(GTK_BOX(ctk_object), banner, FALSE, FALSE, 0); /* @@ -170,7 +170,7 @@ GtkWidget* ctk_vcsc_new(NvCtrlAttributeHandle *handle, hbox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); - label = gtk_label_new("VCSC Information"); + label = gtk_label_new("VCS Information"); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); hseparator = gtk_hseparator_new(); @@ -212,10 +212,10 @@ GtkWidget* ctk_vcsc_new(NvCtrlAttributeHandle *handle, /* - * VCSC help screen + * VCS help screen */ -GtkTextBuffer *ctk_vcsc_create_help(GtkTextTagTable *table, - CtkVcsc *ctk_object) +GtkTextBuffer *ctk_vcs_create_help(GtkTextTagTable *table, + CtkVcs *ctk_object) { GtkTextIter i; GtkTextBuffer *b; @@ -224,28 +224,27 @@ GtkTextBuffer *ctk_vcsc_create_help(GtkTextTagTable *table, gtk_text_buffer_get_iter_at_offset(b, &i, 0); - ctk_help_title(b, &i, "VCSC (Visual Computing System Controller) Help"); + ctk_help_title(b, &i, "VCS (Visual Computing System) Help"); ctk_help_heading(b, &i, "Product Name"); - ctk_help_para(b, &i, "This is the product name of the VCSC system."); + ctk_help_para(b, &i, "This is the product name of the VCS."); ctk_help_heading(b, &i, "Serial Number"); - ctk_help_para(b, &i, "This is the unique serial number of the VCSC " - "system."); + ctk_help_para(b, &i, "This is the unique serial number of the VCS."); ctk_help_heading(b, &i, "Build Date"); - ctk_help_para(b, &i, "This is the date the VCSC system was build, " + ctk_help_para(b, &i, "This is the date the VCS was build, " "shown in a 'week.year' format"); ctk_help_heading(b, &i, "Product ID"); - ctk_help_para(b, &i, "This identifies the VCSC configuration."); + ctk_help_para(b, &i, "This identifies the VCS configuration."); ctk_help_heading(b, &i, "Firmware Version"); ctk_help_para(b, &i, "This is the firmware version currently running on " - "the VCSC system."); + "the VCS."); ctk_help_heading(b, &i, "Hardware Version"); - ctk_help_para(b, &i, "This is the hardware version of the VCSC system."); + ctk_help_para(b, &i, "This is the hardware version of the VCS."); ctk_help_finish(b); diff --git a/src/gtk+-2.x/ctkvcsc.h b/src/gtk+-2.x/ctkvcs.h index b05a985..120ee10 100644 --- a/src/gtk+-2.x/ctkvcsc.h +++ b/src/gtk+-2.x/ctkvcs.h @@ -22,56 +22,56 @@ * */ -#ifndef __CTK_VCSC_H__ -#define __CTK_VCSC_H__ +#ifndef __CTK_VCS_H__ +#define __CTK_VCS_H__ #include "ctkevent.h" #include "ctkconfig.h" G_BEGIN_DECLS -#define CTK_TYPE_VCSC (ctk_vcsc_get_type()) +#define CTK_TYPE_VCS (ctk_vcs_get_type()) -#define CTK_VCSC(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), CTK_TYPE_VCSC, \ - CtkVcsc)) +#define CTK_VCS(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), CTK_TYPE_VCS, \ + CtkVcs)) -#define CTK_VCSC_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), CTK_TYPE_VCSC, \ - CtkVcscClass)) +#define CTK_VCS_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), CTK_TYPE_VCS, \ + CtkVcsClass)) -#define CTK_IS_VCSC(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CTK_TYPE_VCSC)) +#define CTK_IS_VCS(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CTK_TYPE_VCS)) -#define CTK_IS_VCSC_CLASS(class) \ - (G_TYPE_CHECK_CLASS_TYPE ((klass), CTK_TYPE_VCSC)) +#define CTK_IS_VCS_CLASS(class) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), CTK_TYPE_VCS)) -#define CTK_VCSC_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), CTK_TYPE_VCSC, \ - CtkVcscClass)) +#define CTK_VCS_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), CTK_TYPE_VCS, \ + CtkVcsClass)) -typedef struct _CtkVcsc +typedef struct _CtkVcs { GtkVBox parent; CtkConfig *ctk_config; NvCtrlAttributeHandle *handle; -} CtkVcsc; +} CtkVcs; -typedef struct _CtkVcscClass +typedef struct _CtkVcsClass { GtkVBoxClass parent_class; -} CtkVcscClass; +} CtkVcsClass; -GType ctk_vcsc_get_type (void) G_GNUC_CONST; -GtkWidget* ctk_vcsc_new (NvCtrlAttributeHandle *, CtkConfig *); +GType ctk_vcs_get_type (void) G_GNUC_CONST; +GtkWidget* ctk_vcs_new (NvCtrlAttributeHandle *, CtkConfig *); -GtkTextBuffer *ctk_vcsc_create_help(GtkTextTagTable *, - CtkVcsc *); +GtkTextBuffer *ctk_vcs_create_help(GtkTextTagTable *, + CtkVcs *); G_END_DECLS -#endif /* __CTK_VCSC_H__ */ +#endif /* __CTK_VCS_H__ */ diff --git a/src/gtk+-2.x/ctkwindow.c b/src/gtk+-2.x/ctkwindow.c index 2de713e..84f8f48 100644 --- a/src/gtk+-2.x/ctkwindow.c +++ b/src/gtk+-2.x/ctkwindow.c @@ -38,6 +38,7 @@ #include "ctkframelock.h" #include "ctkgvo.h" +#include "ctkgvo-sync.h" #include "ctkgvo-csc.h" #include "ctkconfig.h" @@ -53,7 +54,7 @@ #include "ctkthermal.h" #include "ctkpowermizer.h" #include "ctkclocks.h" -#include "ctkvcsc.h" +#include "ctkvcs.h" #include "ctkpowersavings.h" #include "ctkdisplaydevice-crt.h" @@ -233,9 +234,9 @@ static void help_button_toggled(GtkToggleButton *button, gpointer user_data) if (enabled) { if (ctk_window->ctk_help == NULL) { ctk_window->ctk_help = ctk_help_new(GTK_WIDGET(button), - ctk_window->help_tag_table); + ctk_window->help_tag_table); ctk_help_set_page(CTK_HELP(ctk_window->ctk_help), - ctk_window->help_text_buffer); + ctk_window->help_text_buffer); } gtk_widget_show_all(ctk_window->ctk_help); } else { @@ -257,7 +258,6 @@ static void tree_selection_changed(GtkTreeSelection *selection, GtkTreeIter iter; CtkWindow *ctk_window = CTK_WINDOW(user_data); GtkTreeModel *model = GTK_TREE_MODEL(ctk_window->tree_store); - gchar *str; GtkWidget *widget; GtkTextBuffer *help; @@ -267,7 +267,6 @@ static void tree_selection_changed(GtkTreeSelection *selection, if (!gtk_tree_selection_get_selected(selection, &model, &iter)) return; - gtk_tree_model_get(model, &iter, CTK_WINDOW_LABEL_COLUMN, &str, -1); gtk_tree_model_get(model, &iter, CTK_WINDOW_WIDGET_COLUMN, &widget, -1); gtk_tree_model_get(model, &iter, CTK_WINDOW_HELP_COLUMN, &help, -1); gtk_tree_model_get(model, &iter, CTK_WINDOW_SELECT_WIDGET_FUNC_COLUMN, @@ -373,8 +372,8 @@ GtkWidget *ctk_window_new(NvCtrlAttributeHandle **screen_handles, gint num_screen_handles, NvCtrlAttributeHandle **gpu_handles, gint num_gpu_handles, - NvCtrlAttributeHandle **vcsc_handles, - gint num_vcsc_handles, + NvCtrlAttributeHandle **vcs_handles, + gint num_vcs_handles, ParsedAttribute *p, ConfigProperties *conf) { GObject *object; @@ -705,10 +704,10 @@ GtkWidget *ctk_window_new(NvCtrlAttributeHandle **screen_handles, "Antialiasing Settings", NULL, NULL, NULL); } + /* gvo (Graphics To Video Out) */ - child = ctk_gvo_new(screen_handle, GTK_WIDGET(ctk_window), - ctk_config, ctk_event); + child = ctk_gvo_new(screen_handle, ctk_config, ctk_event); if (child) { GtkWidget *gvo_parent = child; GtkTreeIter child_iter; @@ -717,12 +716,26 @@ GtkWidget *ctk_window_new(NvCtrlAttributeHandle **screen_handles, "Graphics to Video Out", NULL, ctk_gvo_select, ctk_gvo_unselect); - /* add GVO sub-pages */ + /* GVO Sync options */ + + child = ctk_gvo_sync_new(screen_handle, GTK_WIDGET(ctk_window), + ctk_config, ctk_event, + CTK_GVO(gvo_parent)); + if (child) { + help = ctk_gvo_sync_create_help(tag_table, + CTK_GVO_SYNC(child)); + add_page(child, help, ctk_window, &child_iter, NULL, + "Synchronization Options", NULL, + ctk_gvo_sync_select, ctk_gvo_sync_unselect); + } + + /* GVO color space conversion */ child = ctk_gvo_csc_new(screen_handle, ctk_config, ctk_event, CTK_GVO(gvo_parent)); if (child) { - add_page(child, NULL, ctk_window, &child_iter, NULL, + help = ctk_gvo_csc_create_help(tag_table, CTK_GVO_CSC(child)); + add_page(child, help, ctk_window, &child_iter, NULL, "Color Space Conversion", NULL, ctk_gvo_csc_select, ctk_gvo_csc_unselect); } @@ -832,50 +845,50 @@ GtkWidget *ctk_window_new(NvCtrlAttributeHandle **screen_handles, tag_table, data); } - /* add the per-vcsc (e.g. Quadro Plex) entries into the tree model */ + /* add the per-vcs (e.g. Quadro Plex) entries into the tree model */ - for (i = 0; i < num_vcsc_handles; i++) { + for (i = 0; i < num_vcs_handles; i++) { GtkTreeIter iter; - gchar *vcsc_product_name; - gchar *vcsc_name; + gchar *vcs_product_name; + gchar *vcs_name; GtkWidget *child; ReturnStatus ret; - NvCtrlAttributeHandle *vcsc_handle = vcsc_handles[i]; + NvCtrlAttributeHandle *vcs_handle = vcs_handles[i]; - if (!vcsc_handle) continue; + if (!vcs_handle) continue; - /* create the vcsc entry name */ + /* create the vcs entry name */ - ret = NvCtrlGetStringDisplayAttribute(vcsc_handle, 0, + ret = NvCtrlGetStringDisplayAttribute(vcs_handle, 0, NV_CTRL_STRING_VCSC_PRODUCT_NAME, - &vcsc_product_name); - if (ret == NvCtrlSuccess && vcsc_product_name) { - vcsc_name = g_strdup_printf("VCSC %d - (%s)", - NvCtrlGetTargetId(vcsc_handle), - vcsc_product_name); + &vcs_product_name); + if (ret == NvCtrlSuccess && vcs_product_name) { + vcs_name = g_strdup_printf("VCS %d - (%s)", + NvCtrlGetTargetId(vcs_handle), + vcs_product_name); } else { - vcsc_name = g_strdup_printf("VCSC %d - (Unknown)", - NvCtrlGetTargetId(vcsc_handle)); + vcs_name = g_strdup_printf("VCS %d - (Unknown)", + NvCtrlGetTargetId(vcs_handle)); } - if (!vcsc_name) continue; + if (!vcs_name) continue; /* create the object for receiving NV-CONTROL events */ - ctk_event = CTK_EVENT(ctk_event_new(vcsc_handle)); + ctk_event = CTK_EVENT(ctk_event_new(vcs_handle)); - /* create the vcsc entry */ + /* create the vcs entry */ gtk_tree_store_append(ctk_window->tree_store, &iter, NULL); gtk_tree_store_set(ctk_window->tree_store, &iter, - CTK_WINDOW_LABEL_COLUMN, vcsc_name, -1); - child = ctk_vcsc_new(vcsc_handle, ctk_config); + CTK_WINDOW_LABEL_COLUMN, vcs_name, -1); + child = ctk_vcs_new(vcs_handle, ctk_config); gtk_object_ref(GTK_OBJECT(child)); gtk_tree_store_set(ctk_window->tree_store, &iter, CTK_WINDOW_WIDGET_COLUMN, child, -1); gtk_tree_store_set(ctk_window->tree_store, &iter, CTK_WINDOW_HELP_COLUMN, - ctk_gpu_create_help(tag_table), -1); + ctk_vcs_create_help(tag_table, CTK_VCS(child)), -1); gtk_tree_store_set(ctk_window->tree_store, &iter, CTK_WINDOW_CONFIG_FILE_ATTRIBUTES_FUNC_COLUMN, NULL, -1); @@ -1042,6 +1055,12 @@ static GtkWidget *create_quit_dialog(CtkWindow *ctk_window) gtk_container_add(GTK_CONTAINER(alignment), label); gtk_box_pack_start(GTK_BOX(hbox), alignment, FALSE, FALSE, 0); + /* Prevent the dialog from being deleted when closed */ + + g_signal_connect(G_OBJECT(dialog), "delete-event", + G_CALLBACK(gtk_widget_hide_on_delete), + (gpointer) dialog); + return dialog; } /* create_quit_dialog() */ diff --git a/src/gtk+-2.x/ctkxvideo.c b/src/gtk+-2.x/ctkxvideo.c index 2bd57c1..5f5ff6a 100644 --- a/src/gtk+-2.x/ctkxvideo.c +++ b/src/gtk+-2.x/ctkxvideo.c @@ -64,6 +64,13 @@ static const char *__xv_texture_brightness_help = "The Video Texture Brightness slider controls " "the brightness level for the Texture Xv Adaptor."; +static const char *__xv_texture_hue_help = +"The Video Texture Hue slider controls " +"the hue level for the Texture Xv Adaptor."; + +static const char *__xv_texture_saturation_help = +"The Video Texture Saturation slider controls " +"the saturation level for the Texture Xv Adaptor."; static const char *__xv_blitter_sync_to_vblank_help = "The Video Blitter Sync To VBlank checkbox " @@ -155,8 +162,10 @@ static void xv_sync_to_display_radio_button_enabled_add(CtkXVideo *ctk_xvideo, #define __XV_TEXTURE_SYNC_TO_VBLANK (1 << 5) #define __XV_TEXTURE_CONTRAST (1 << 6) #define __XV_TEXTURE_BRIGHTNESS (1 << 7) -#define __XV_BLITTER_SYNC_TO_VBLANK (1 << 8) -#define __XV_SYNC_TO_DISPLAY (1 << 9) +#define __XV_TEXTURE_SATURATION (1 << 8) +#define __XV_TEXTURE_HUE (1 << 9) +#define __XV_BLITTER_SYNC_TO_VBLANK (1 << 10) +#define __XV_SYNC_TO_DISPLAY (1 << 11) @@ -596,6 +605,18 @@ GtkWidget* ctk_xvideo_new(NvCtrlAttributeHandle *handle, __xv_texture_contrast_help, NV_CTRL_ATTR_XV_TEXTURE_CONTRAST, __XV_TEXTURE_CONTRAST); + + ctk_xvideo->texture_hue = + create_slider(ctk_xvideo, vbox, button, "Hue", + __xv_texture_hue_help, + NV_CTRL_ATTR_XV_TEXTURE_HUE, + __XV_TEXTURE_HUE); + + ctk_xvideo->texture_saturation = + create_slider(ctk_xvideo, vbox, button, "Saturation", + __xv_texture_saturation_help, + NV_CTRL_ATTR_XV_TEXTURE_SATURATION, + __XV_TEXTURE_SATURATION); } @@ -607,20 +628,22 @@ GtkWidget* ctk_xvideo_new(NvCtrlAttributeHandle *handle, gtk_box_pack_start(GTK_BOX(object), frame, FALSE, FALSE, 0); vbox = gtk_vbox_new(FALSE, 5); - ctk_xvideo->xv_sync_to_display_button_box = vbox; gtk_container_set_border_width(GTK_CONTAINER(vbox), FRAME_PADDING); gtk_container_add(GTK_CONTAINER(frame), vbox); ctk_xvideo->blitter_sync_to_blank = create_check_button(ctk_xvideo, - ctk_xvideo->xv_sync_to_display_button_box, - button, - "Sync to VBlank on display device", + vbox, + button, + "Sync to VBlank", __xv_blitter_sync_to_vblank_help, NV_CTRL_ATTR_XV_BLITTER_SYNC_TO_VBLANK, __XV_BLITTER_SYNC_TO_VBLANK); - - /* Sync to display selection */ + + } + + /* Sync to display selection */ + if (xv_texture_present || xv_blitter_present) { ret = NvCtrlGetAttribute(handle, NV_CTRL_XV_SYNC_TO_DISPLAY, &sync_mask); @@ -635,19 +658,25 @@ GtkWidget* ctk_xvideo_new(NvCtrlAttributeHandle *handle, int i, n, current = -1, mask; char *name, *type; gchar *name_str; + frame = gtk_frame_new("Sync to this display device"); + gtk_box_pack_start(GTK_BOX(object), frame, FALSE, FALSE, 0); + vbox = gtk_vbox_new(FALSE, 5); + gtk_container_set_border_width(GTK_CONTAINER(vbox), FRAME_PADDING); + gtk_container_add(GTK_CONTAINER(frame), vbox); + ctk_xvideo->xv_sync_to_display_button_box = vbox; for (n=0, i = 0; i < 24; i++) { - + mask = 1 << i; if (!(enabled & mask)) continue; /* get the name of the display device */ - + ret = NvCtrlGetStringDisplayAttribute(handle, mask, - NV_CTRL_STRING_DISPLAY_DEVICE_NAME, - &name); - + NV_CTRL_STRING_DISPLAY_DEVICE_NAME, + &name); + if ((ret != NvCtrlSuccess) || (!name)) { name = g_strdup("Unknown"); } @@ -659,27 +688,28 @@ GtkWidget* ctk_xvideo_new(NvCtrlAttributeHandle *handle, name_str = g_strdup_printf("%s (%s)", name, type); XFree(name); free(type); - + if (n==0) { prev_radio = NULL; } else { - prev_radio = radio[n-1]; - } + prev_radio = radio[n-1]; + } radio[n] = xv_sync_to_display_radio_button_add(ctk_xvideo, - prev_radio, name_str, - mask, n); + prev_radio, + name_str, + mask, n); g_free(name_str); ctk_config_set_tooltip(ctk_config, radio[n], __xv_sync_to_display_help); - + if (mask == sync_mask) { current = n; } - + n++; ctk_xvideo->active_attributes |= __XV_SYNC_TO_DISPLAY; } - + g_signal_connect(G_OBJECT(ctk_event), CTK_EVENT_NAME(NV_CTRL_XV_SYNC_TO_DISPLAY), G_CALLBACK(xv_sync_to_display_update_received), @@ -689,10 +719,10 @@ GtkWidget* ctk_xvideo_new(NvCtrlAttributeHandle *handle, G_CALLBACK(nv_ctrl_enabled_displays), (gpointer) ctk_xvideo); sensitize_radio_buttons(ctk_xvideo); - + if (current != -1) xv_sync_to_display_update_radio_buttons(ctk_xvideo, current); - + } } } @@ -840,6 +870,8 @@ static void slider_changed(GtkAdjustment *adjustment, gpointer user_data) case NV_CTRL_ATTR_XV_OVERLAY_HUE: str = "Overlay Hue"; break; case NV_CTRL_ATTR_XV_TEXTURE_CONTRAST: str = "Texture Contrast"; break; case NV_CTRL_ATTR_XV_TEXTURE_BRIGHTNESS: str = "Texture Brightness"; break; + case NV_CTRL_ATTR_XV_TEXTURE_HUE: str = "Texture Hue"; break; + case NV_CTRL_ATTR_XV_TEXTURE_SATURATION: str = "Texture Saturation"; break; default: return; @@ -923,14 +955,13 @@ static void check_button_toggled(GtkWidget *widget, gpointer user_data) switch (attribute) { case NV_CTRL_ATTR_XV_TEXTURE_SYNC_TO_VBLANK: str = "Texture Sync To VBlank"; break; - case NV_CTRL_ATTR_XV_BLITTER_SYNC_TO_VBLANK: { - str = "Blitter Sync To VBlank"; - sensitize_radio_buttons(ctk_xvideo); - break; - } + case NV_CTRL_ATTR_XV_BLITTER_SYNC_TO_VBLANK: + str = "Blitter Sync To VBlank"; break; + default: return; } + sensitize_radio_buttons(ctk_xvideo); post_check_button_toggled(ctk_xvideo, str, enabled); } /* check_button_toggled() */ @@ -952,11 +983,18 @@ static void sensitize_radio_buttons(CtkXVideo *ctk_xvideo) int i; gboolean enabled; - if (!ctk_xvideo->blitter_sync_to_blank) return; - - enabled = gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON(ctk_xvideo->blitter_sync_to_blank)); + if (!ctk_xvideo->blitter_sync_to_blank && + !ctk_xvideo->texture_sync_to_blank) return; + enabled = FALSE; + if (ctk_xvideo->blitter_sync_to_blank) { + enabled |= gtk_toggle_button_get_active + (GTK_TOGGLE_BUTTON(ctk_xvideo->blitter_sync_to_blank)); + } + if (ctk_xvideo->texture_sync_to_blank) { + enabled |= gtk_toggle_button_get_active + (GTK_TOGGLE_BUTTON(ctk_xvideo->texture_sync_to_blank)); + } for (i = 0; i < 24; i++) { GtkWidget *b = ctk_xvideo->xv_sync_to_display_buttons[i]; if (!b) continue; @@ -1041,7 +1079,14 @@ static void reset_defaults(GtkButton *button, gpointer user_data) reset_slider(ctk_xvideo, ctk_xvideo->texture_brightness, NV_CTRL_ATTR_XV_TEXTURE_BRIGHTNESS); - + + reset_slider(ctk_xvideo, ctk_xvideo->texture_hue, + NV_CTRL_ATTR_XV_TEXTURE_HUE); + + reset_slider(ctk_xvideo, ctk_xvideo->texture_saturation, + NV_CTRL_ATTR_XV_TEXTURE_SATURATION); + + reset_check_button(ctk_xvideo, ctk_xvideo->blitter_sync_to_blank, NV_CTRL_ATTR_XV_BLITTER_SYNC_TO_VBLANK); @@ -1102,7 +1147,17 @@ GtkTextBuffer *ctk_xvideo_create_help(GtkTextTagTable *table, ctk_help_heading(b, &i, "Video Texture Brightness"); ctk_help_para(b, &i, __xv_texture_brightness_help); } - + + if (ctk_xvideo->active_attributes & __XV_TEXTURE_HUE) { + ctk_help_heading(b, &i, "Video Texture Hue"); + ctk_help_para(b, &i, __xv_texture_hue_help); + } + + if (ctk_xvideo->active_attributes & __XV_TEXTURE_SATURATION) { + ctk_help_heading(b, &i, "Video Texture Saturation"); + ctk_help_para(b, &i, __xv_texture_saturation_help); + } + if (ctk_xvideo->active_attributes & __XV_BLITTER_SYNC_TO_VBLANK) { ctk_help_heading(b, &i, "Video Blitter Sync To VBlank"); ctk_help_para(b, &i, __xv_blitter_sync_to_vblank_help); diff --git a/src/gtk+-2.x/ctkxvideo.h b/src/gtk+-2.x/ctkxvideo.h index 04f87f0..0e2015c 100644 --- a/src/gtk+-2.x/ctkxvideo.h +++ b/src/gtk+-2.x/ctkxvideo.h @@ -65,6 +65,8 @@ struct _CtkXVideo GtkWidget *overlay_hue; GtkWidget *texture_contrast; GtkWidget *texture_brightness; + GtkWidget *texture_hue; + GtkWidget *texture_saturation; GtkWidget *texture_sync_to_blank; GtkWidget *blitter_sync_to_blank; GtkWidget *xv_sync_to_display_buttons[24]; diff --git a/src/image_data/HOWTO-ADD-IMAGES b/src/image_data/HOWTO-ADD-IMAGES index d54df70..903cf84 100644 --- a/src/image_data/HOWTO-ADD-IMAGES +++ b/src/image_data/HOWTO-ADD-IMAGES @@ -9,4 +9,4 @@ If I have a png, how do I build it into nvidia-settings? - add to the BannerArtworkType enum in image.h - include foo_pixdata.h in ctkbanner.c - add an entry to the ArtworkTable[] in ctkbanner.c:select_artwork() - + - add an entry to the .../image_data/Makefile.inc diff --git a/src/image_data/Makefile.inc b/src/image_data/Makefile.inc index 63cd23d..0a9707e 100644 --- a/src/image_data/Makefile.inc +++ b/src/image_data/Makefile.inc @@ -74,8 +74,9 @@ EXTRA_DIST += \ rotation_pixdata.h \ sdi_pixdata.h \ solaris_pixdata.h \ - vcsc_pixdata.h \ - xvideo_pixdata.h + vcs_pixdata.h \ + xvideo_pixdata.h \ + sdi_shared_sync_bnc_pixdata.h dist_list:: @ echo $(SRC) $(EXTRA_DIST) diff --git a/src/image_data/image.h b/src/image_data/image.h index d6cbda7..59e90aa 100644 --- a/src/image_data/image.h +++ b/src/image_data/image.h @@ -62,10 +62,11 @@ typedef enum { BANNER_ARTWORK_SOLARIS, BANNER_ARTWORK_THERMAL, BANNER_ARTWORK_TV, - BANNER_ARTWORK_VCSC, + BANNER_ARTWORK_VCS, BANNER_ARTWORK_X, BANNER_ARTWORK_XVIDEO, BANNER_ARTWORK_INVALID, + BANNER_ARTWORK_SDI_SHARED_SYNC_BNC, } BannerArtworkType; diff --git a/src/image_data/rotation_orientation_horiz.h b/src/image_data/rotation_orientation_horiz.h index 01c6dfd..eda5baf 100644 --- a/src/image_data/rotation_orientation_horiz.h +++ b/src/image_data/rotation_orientation_horiz.h @@ -1,1156 +1,722 @@ -/* GIMP RGB C-Source image dump 1-byte-run-length-encoded (...) */
-
-#include "image.h"
-
-static const nv_image_t rotation_orientation_horiz_image = {
- 120, 90, 3, 0,
- "\377\0\0\0\363\0\0\0\35\7\15\20V\220\272t\277\366v\300\365x\301\365y\301"
- "\365{\302\365~\303\364\200\303\364\200\304\364\202\305\364\205\305\363\206"
- "\306\363\210\307\363\212\307\363\214\310\362\215\310\362\217\311\362\220"
- "\311\362\222\312\362\224\312\361\225\313\361\226\313\361\227\314\361\231"
- "\314\361\232\315\361\233\315\361\234\315\360\235\316\360\202\236\316\360"
- "\1\237\316\360\202\240\317\360\210\241\317\360\202\240\317\360\1\237\316"
- "\360\202\236\316\3607\235\316\360\234\315\360\233\315\361\232\315\361\231"
- "\314\361\227\314\361\226\313\361\225\313\361\224\312\361\222\312\362\220"
- "\311\362\217\311\362\215\310\362\214\310\362\212\307\363\210\307\363\206"
- "\306\363\205\305\363\202\305\364\200\304\364\200\303\364~\303\364{\302\365"
- "y\301\365x\301\365v\300\365t\277\366q\276\366o\276\366m\275\366k\274\367"
- "i\273\367g\273\367d\272\367b\271\370_\270\370]\270\370[\267\371Y\266\371"
- "W\265\371U\265\371R\264\372P\263\372M\262\372K\261\373H\260\373F\260\373"
- "D\257\373A\256\374?\255\374=\254\374:\253\3758\253\3756\252\3753\251\376"
- "\2141\250\376\2%\200\300\3\13\21\204\0\0\0\26V\220\272s\277\366u\300\365"
- "w\300\365y\301\365{\302\365~\303\364\177\303\364\200\304\364\202\305\364"
- "\205\305\363\206\306\363\210\307\363\212\307\363\214\310\362\215\310\362"
- "\217\311\362\221\311\362\222\312\362\224\313\361\226\313\361\227\314\361"
- "\202\231\314\361\6\233\315\361\234\315\360\235\316\360\236\316\360\237\316"
- "\360\240\317\360\202\241\317\360\2\242\317\360\243\320\360\210\243\320\357"
- "\2\243\320\360\242\317\360\202\241\317\360\6\240\317\360\237\316\360\236"
- "\316\360\235\316\360\234\315\360\233\315\361\202\231\314\3610\227\314\361"
- "\226\313\361\224\313\361\222\312\362\221\311\362\217\311\362\215\310\362"
- "\214\310\362\212\307\363\210\307\363\206\306\363\205\305\363\202\305\364"
- "\200\304\364\177\303\364~\303\364{\302\365y\301\365w\300\365u\300\365s\277"
- "\366q\276\366o\275\366l\275\366j\274\367h\273\367f\272\367c\271\370a\271"
- "\370_\270\370]\267\370Z\267\371X\266\371U\265\371S\264\372Q\263\372N\262"
- "\372L\262\372J\261\373H\260\373E\257\373C\256\374A\256\374>\255\374;\254"
- "\3759\253\3756\252\3754\251\375\2151\250\376\1%\200\300\204\0\0\0!r\277\366"
- "t\277\365v\300\365y\301\365{\302\365}\302\364\177\303\364\200\304\364\202"
- "\305\364\204\305\363\206\306\363\210\307\363\212\307\363\214\310\362\216"
- "\310\362\217\311\362\221\312\362\223\312\362\224\313\361\226\313\361\230"
- "\314\361\231\314\361\233\315\361\234\315\360\235\316\360\236\316\360\240"
- "\317\360\241\317\360\242\317\360\243\320\360\243\320\357\244\320\357\245"
- "\320\357\212\246\321\357<\245\320\357\244\320\357\243\320\357\243\320\360"
- "\242\317\360\241\317\360\240\317\360\236\316\360\235\316\360\234\315\360"
- "\233\315\361\231\314\361\230\314\361\226\313\361\224\313\361\223\312\362"
- "\221\312\362\217\311\362\216\310\362\214\310\362\212\307\363\210\307\363"
- "\206\306\363\204\305\363\202\305\364\200\304\364\177\303\364}\302\364{\302"
- "\365y\301\365v\300\365t\277\365r\277\366p\276\366n\275\366l\274\367i\274"
- "\367g\273\367d\272\367b\271\370`\270\370^\270\370[\267\371Y\266\371W\265"
- "\371U\265\371R\264\372P\263\372M\262\372K\261\373H\260\373F\260\373C\257"
- "\374A\256\374?\255\374<\254\374:\253\3757\252\3755\252\3753\251\376\2151"
- "\250\376\204\0\0\0\37t\277\366v\300\365x\301\365z\301\365|\302\364~\303\364"
- "\200\304\364\202\304\364\204\305\363\206\306\363\210\307\363\212\307\363"
- "\214\310\362\216\310\362\217\311\362\221\312\362\223\312\362\225\313\361"
- "\226\313\361\230\314\361\232\315\361\234\315\360\235\316\360\236\316\360"
- "\240\317\360\241\317\360\242\317\360\243\320\357\244\320\357\245\320\357"
- "\246\321\357\202\247\321\357\1\250\321\357\202\250\322\357\204\251\322\357"
- "\202\250\322\357\1\250\321\357\202\247\321\357:\246\321\357\245\320\357\244"
- "\320\357\243\320\357\242\317\360\241\317\360\240\317\360\236\316\360\235"
- "\316\360\234\315\360\232\315\361\230\314\361\226\313\361\225\313\361\223"
- "\312\362\221\312\362\217\311\362\216\310\362\214\310\362\212\307\363\210"
- "\307\363\206\306\363\204\305\363\202\304\364\200\304\364~\303\364|\302\364"
- "z\301\365x\301\365v\300\365t\277\366q\276\366o\276\366m\275\366j\274\367"
- "h\273\367f\272\367d\272\370b\271\370_\270\370]\267\370Z\267\371X\266\371"
- "U\265\371S\264\372Q\263\372N\262\372L\262\372J\261\373G\260\373E\257\373"
- "B\256\374@\255\374>\255\374;\254\3759\253\3756\252\3754\251\376\2151\250"
- "\376\204\0\0\0\33u\300\365w\300\365y\301\365{\302\365~\303\364\200\303\364"
- "\201\304\364\203\305\363\205\306\363\207\306\363\212\307\363\214\310\362"
- "\215\310\362\217\311\362\221\312\362\223\312\362\225\313\361\226\313\361"
- "\231\314\361\232\315\361\234\315\360\236\316\360\237\316\360\241\317\360"
- "\242\317\360\243\320\357\244\320\357\202\246\321\357\4\250\321\357\250\322"
- "\357\251\322\357\252\322\357\202\253\322\357\206\253\323\356\202\253\322"
- "\357\4\252\322\357\251\322\357\250\322\357\250\321\357\202\246\321\3577\244"
- "\320\357\243\320\357\242\317\360\241\317\360\237\316\360\236\316\360\234"
- "\315\360\232\315\361\231\314\361\226\313\361\225\313\361\223\312\362\221"
- "\312\362\217\311\362\215\310\362\214\310\362\212\307\363\207\306\363\205"
- "\306\363\203\305\363\201\304\364\200\303\364~\303\364{\302\365y\301\365w"
- "\300\365u\300\365s\277\366q\276\366n\275\366l\274\367i\274\367g\273\367e"
- "\272\367b\271\370`\270\370^\270\370[\267\371Y\266\371W\265\371T\264\372R"
- "\264\372P\263\372M\262\372K\261\373H\260\373F\257\373C\257\374A\256\374>"
- "\255\374;\254\3759\253\3757\252\3754\251\3752\251\376\2141\250\376\204\0"
- "\0\0\40v\300\365y\301\365{\302\365}\302\364\177\303\364\200\304\364\202\305"
- "\364\205\305\363\207\306\363\211\307\363\213\307\362\215\310\362\217\311"
- "\362\221\312\362\223\312\362\225\313\361\227\314\361\231\314\361\233\315"
- "\361\234\315\360\236\316\360\240\317\360\241\317\360\243\320\360\244\320"
- "\357\246\321\357\247\321\357\250\321\357\251\322\357\252\322\357\253\322"
- "\357\254\323\356\203\255\323\356\206\256\324\356\203\255\323\356<\254\323"
- "\356\253\322\357\252\322\357\251\322\357\250\321\357\247\321\357\246\321"
- "\357\244\320\357\243\320\360\241\317\360\240\317\360\236\316\360\234\315"
- "\360\233\315\361\231\314\361\227\314\361\225\313\361\223\312\362\221\312"
- "\362\217\311\362\215\310\362\213\307\362\211\307\363\207\306\363\205\305"
- "\363\202\305\364\200\304\364\177\303\364}\302\364{\302\365y\301\365v\300"
- "\365t\277\365q\276\366o\276\366m\275\366k\274\367h\273\367f\272\367d\272"
- "\370b\271\370_\270\370]\267\370Z\267\371X\266\371U\265\371R\264\372P\263"
- "\372N\262\372K\261\373I\261\373F\260\373D\257\373B\256\374?\255\374=\254"
- "\374:\253\3758\253\3755\252\3753\251\376\2141\250\376\204\0\0\0\35x\301\365"
- "z\301\365|\302\364~\303\364\200\304\364\202\304\364\204\305\363\206\306\363"
- "\211\307\363\212\307\363\214\310\362\217\311\362\221\311\362\223\312\362"
- "\225\313\361\227\314\361\231\314\361\233\315\361\234\315\360\236\316\360"
- "\240\317\360\242\317\360\243\320\357\245\320\357\246\321\357\250\321\357"
- "\251\322\357\253\322\357\253\323\356\202\255\323\356\2\256\324\356\257\324"
- "\356\203\260\324\356\204\261\325\356\203\260\324\356\2\257\324\356\256\324"
- "\356\202\255\323\3569\253\323\356\253\322\357\251\322\357\250\321\357\246"
- "\321\357\245\320\357\243\320\357\242\317\360\240\317\360\236\316\360\234"
- "\315\360\233\315\361\231\314\361\227\314\361\225\313\361\223\312\362\221"
- "\311\362\217\311\362\214\310\362\212\307\363\210\307\363\206\306\363\204"
- "\305\363\202\304\364\200\304\364~\303\364|\302\364z\301\365x\301\365u\300"
- "\365s\277\366q\276\366o\275\366l\274\367i\274\367g\273\367d\272\367b\271"
- "\370`\270\370]\270\370[\267\371Y\266\371V\265\371T\264\372Q\263\372O\263"
- "\372M\262\372J\261\373H\260\373E\257\373C\256\374@\255\374>\255\374;\254"
- "\3759\253\3756\252\3754\251\376\2141\250\376\204\0\0\0\33y\301\365{\302\365"
- "~\303\364\200\303\364\201\304\364\203\305\363\205\306\363\210\307\363\212"
- "\307\363\214\310\362\217\311\362\221\311\362\222\312\362\224\313\361\226"
- "\313\361\231\314\361\233\315\361\234\315\360\236\316\360\241\317\360\242"
- "\317\360\243\320\357\246\321\357\247\321\357\250\322\357\252\322\357\253"
- "\323\356\202\255\323\356\4\257\324\356\260\324\356\261\325\356\262\325\356"
- "\202\263\325\356\206\263\325\355\202\263\325\356\4\262\325\356\261\325\356"
- "\260\324\356\257\324\356\202\255\323\3568\253\323\356\252\322\357\250\322"
- "\357\247\321\357\246\321\357\243\320\357\242\317\360\241\317\360\236\316"
- "\360\234\315\360\233\315\361\231\314\361\226\313\361\224\313\361\222\312"
- "\362\221\311\362\217\311\362\214\310\362\212\307\363\207\306\363\205\306"
- "\363\203\305\363\201\304\364\200\303\364~\303\364{\302\365y\301\365v\300"
- "\365t\277\365r\277\366o\276\366m\275\366k\274\367h\273\367f\272\367d\272"
- "\370a\271\370_\270\370\\\267\371Z\266\371X\266\371U\265\371R\264\372P\263"
- "\372M\262\372K\261\373H\260\373F\257\373C\257\374A\256\374>\255\374<\254"
- "\3749\253\3757\252\3754\251\3752\251\376\2131\250\376\204\0\0\0!z\301\365"
- "|\302\364\177\303\364\200\304\364\202\305\364\205\305\363\207\306\363\211"
- "\307\363\214\310\362\216\310\362\220\311\362\222\312\362\224\313\361\226"
- "\313\361\230\314\361\232\315\361\234\315\360\236\316\360\241\317\360\242"
- "\317\360\244\320\357\246\321\357\250\321\357\251\322\357\253\322\357\254"
- "\323\356\255\323\356\257\324\356\260\324\356\261\325\356\263\325\356\263"
- "\325\355\264\326\355\202\265\326\355\206\266\326\355\202\265\326\355>\264"
- "\326\355\263\325\355\263\325\356\261\325\356\260\324\356\257\324\356\255"
- "\323\356\254\323\356\253\322\357\251\322\357\250\321\357\246\321\357\244"
- "\320\357\242\317\360\241\317\360\236\316\360\234\315\360\232\315\361\230"
- "\314\361\226\313\361\224\313\361\222\312\362\220\311\362\216\310\362\214"
- "\310\362\211\307\363\207\306\363\205\305\363\202\305\364\200\304\364\177"
- "\303\364|\302\364z\301\365x\301\365u\300\365s\277\366q\276\366n\275\366l"
- "\274\367i\274\367g\273\367d\272\367b\271\370_\270\370]\270\370Z\267\371X"
- "\266\371U\265\371S\264\372P\263\372N\262\372L\262\372I\261\373G\260\373D"
- "\257\373B\256\374?\255\374=\254\374:\253\3758\253\3755\252\3753\251\376\213"
- "1\250\376\204\0\0\0!{\302\365~\303\364\200\303\364\201\304\364\204\305\363"
- "\206\306\363\210\307\363\212\307\363\214\310\362\217\311\362\221\312\362"
- "\224\312\361\226\313\361\230\314\361\232\315\361\234\315\360\236\316\360"
- "\240\317\360\242\317\360\244\320\357\246\321\357\250\321\357\251\322\357"
- "\253\323\356\255\323\356\256\324\356\260\324\356\261\325\356\263\325\356"
- "\264\326\355\265\326\355\266\326\355\267\327\355\203\270\327\355\204\271"
- "\327\355\203\270\327\355>\267\327\355\266\326\355\265\326\355\264\326\355"
- "\263\325\356\261\325\356\260\324\356\256\324\356\255\323\356\253\323\356"
- "\251\322\357\250\321\357\246\321\357\244\320\357\242\317\360\240\317\360"
- "\236\316\360\234\315\360\232\315\361\230\314\361\226\313\361\224\312\361"
- "\221\312\362\217\311\362\214\310\362\212\307\363\210\307\363\206\306\363"
- "\204\305\363\201\304\364\200\303\364~\303\364{\302\365y\301\365v\300\365"
- "t\277\365q\276\366o\276\366l\275\366j\274\367h\273\367e\272\367c\271\370"
- "`\270\370^\270\370\\\267\371Y\266\371W\265\371T\264\372R\264\372O\263\372"
- "M\262\372J\261\373H\260\373E\257\373C\256\374@\255\374>\255\374;\254\375"
- "9\253\3756\252\3754\251\376\2131\250\376\204\0\0\0\36|\302\364~\303\364\200"
- "\304\364\202\305\364\205\305\363\207\306\363\212\307\363\214\310\362\216"
- "\310\362\220\311\362\223\312\362\225\313\361\227\314\361\231\314\361\234"
- "\315\360\236\316\360\240\317\360\242\317\360\243\320\357\246\321\357\250"
- "\321\357\252\322\357\253\323\356\255\323\356\257\324\356\260\324\356\262"
- "\325\356\263\325\355\265\326\355\266\326\355\202\270\327\355\3\271\327\355"
- "\272\327\355\272\330\355\206\273\330\354\3\272\330\355\272\327\355\271\327"
- "\355\202\270\327\355;\266\326\355\265\326\355\263\325\355\262\325\356\260"
- "\324\356\257\324\356\255\323\356\253\323\356\252\322\357\250\321\357\246"
- "\321\357\243\320\357\242\317\360\240\317\360\236\316\360\234\315\360\231"
- "\314\361\227\314\361\225\313\361\223\312\362\220\311\362\216\310\362\214"
- "\310\362\212\307\363\207\306\363\205\305\363\202\305\364\200\304\364~\303"
- "\364|\302\364z\301\365w\300\365u\300\365s\277\366p\276\366n\275\366k\274"
- "\367i\273\367g\273\367d\272\370b\271\370_\270\370]\267\370Z\266\371X\266"
- "\371U\265\371R\264\372P\263\372M\262\372K\261\373H\260\373F\257\373C\257"
- "\374A\256\374>\255\374;\254\3759\253\3756\252\3754\251\376\2131\250\376\204"
- "\0\0\0\"~\303\364\200\303\364\201\304\364\204\305\363\206\306\363\210\307"
- "\363\213\307\362\215\310\362\217\311\362\221\312\362\224\312\361\226\313"
- "\361\231\314\361\233\315\361\235\316\360\237\316\360\241\317\360\243\320"
- "\357\246\321\357\250\321\357\251\322\357\253\323\356\255\323\356\257\324"
- "\356\261\325\356\263\325\356\264\326\355\265\326\355\267\327\355\270\327"
- "\355\272\327\355\272\330\355\274\330\354\275\330\354\202\275\331\354\204"
- "\276\331\354\202\275\331\354@\275\330\354\274\330\354\272\330\355\272\327"
- "\355\270\327\355\267\327\355\265\326\355\264\326\355\263\325\356\261\325"
- "\356\257\324\356\255\323\356\253\323\356\251\322\357\250\321\357\246\321"
- "\357\243\320\357\241\317\360\237\316\360\235\316\360\233\315\361\231\314"
- "\361\226\313\361\224\312\361\221\312\362\217\311\362\215\310\362\213\307"
- "\362\210\307\363\206\306\363\204\305\363\201\304\364\200\303\364~\303\364"
- "{\302\365y\301\365v\300\365t\277\366q\276\366o\275\366l\275\366i\274\367"
- "g\273\367d\272\367b\271\370_\270\370]\270\370Z\267\371X\266\371U\265\371"
- "S\264\372P\263\372N\262\372K\261\373I\261\373F\260\373D\257\373A\256\374"
- "?\255\374<\254\3749\253\3757\252\3754\251\3752\251\376\2121\250\376\204\0"
- "\0\0!~\303\364\200\304\364\202\305\364\205\305\363\207\306\363\212\307\363"
- "\214\310\362\216\310\362\221\311\362\223\312\362\225\313\361\227\314\361"
- "\232\315\361\234\315\360\236\316\360\241\317\360\243\320\360\245\320\357"
- "\247\321\357\251\322\357\253\323\356\255\323\356\257\324\356\261\325\356"
- "\263\325\356\265\326\355\266\326\355\270\327\355\271\327\355\272\330\355"
- "\274\330\354\275\331\354\276\331\354\202\277\331\354\1\300\332\354\204\301"
- "\332\354\1\300\332\354\202\277\331\354?\276\331\354\275\331\354\274\330\354"
- "\272\330\355\271\327\355\270\327\355\266\326\355\265\326\355\263\325\356"
- "\261\325\356\257\324\356\255\323\356\253\323\356\251\322\357\247\321\357"
- "\245\320\357\243\320\360\241\317\360\236\316\360\234\315\360\232\315\361"
- "\227\314\361\225\313\361\223\312\362\221\311\362\216\310\362\214\310\362"
- "\212\307\363\207\306\363\205\305\363\202\305\364\200\304\364~\303\364|\302"
- "\364y\301\365w\300\365t\277\365r\277\366o\276\366m\275\366j\274\367h\273"
- "\367e\272\367c\271\370`\270\370^\270\370[\267\371Y\266\371V\265\371T\264"
- "\372Q\263\372O\263\372L\262\372J\261\373G\260\373D\257\373B\256\374?\255"
- "\374=\254\374:\253\3758\253\3755\252\3753\251\376\2121\250\376\204\0\0\0"
- "!\177\303\364\201\304\364\203\305\363\205\306\363\210\307\363\212\307\363"
- "\215\310\362\217\311\362\221\312\362\224\313\361\226\313\361\231\314\361"
- "\233\315\361\236\316\360\240\317\360\242\317\360\244\320\357\246\321\357"
- "\250\322\357\253\322\357\255\323\356\257\324\356\261\325\356\263\325\356"
- "\265\326\355\267\327\355\270\327\355\272\327\355\274\330\354\275\331\354"
- "\276\331\354\277\331\354\301\332\354\202\302\332\354\206\303\333\353\202"
- "\302\332\354?\301\332\354\277\331\354\276\331\354\275\331\354\273\330\354"
- "\272\327\355\270\327\355\267\327\355\265\326\355\263\325\356\261\325\356"
- "\257\324\356\255\323\356\253\322\357\250\322\357\246\321\357\244\320\357"
- "\242\317\360\240\317\360\236\316\360\233\315\361\231\314\361\226\313\361"
- "\224\313\361\221\312\362\217\311\362\215\310\362\212\307\363\210\307\363"
- "\205\306\363\203\305\363\201\304\364\177\303\364}\302\364z\301\365x\301\365"
- "u\300\365s\277\366p\276\366n\275\366k\274\367i\273\367f\272\367d\272\370"
- "a\271\370_\270\370\\\267\371Z\266\371W\265\371U\265\371R\264\372P\263\372"
- "M\262\372J\261\373H\260\373E\257\373C\256\374@\255\374>\255\374;\254\375"
- "8\253\3756\252\3753\251\376\2121\250\376\204\0\0\0!\200\303\364\202\304\364"
- "\204\305\363\207\306\363\211\307\363\214\310\362\216\310\362\220\311\362"
- "\223\312\362\225\313\361\227\314\361\232\315\361\234\315\360\236\316\360"
- "\241\317\360\243\320\357\246\321\357\250\321\357\252\322\357\254\323\356"
- "\256\324\356\260\324\356\263\325\356\265\326\355\267\327\355\270\327\355"
- "\272\330\355\274\330\354\275\331\354\277\331\354\301\332\354\302\332\354"
- "\303\333\353\202\304\333\353\1\305\333\353\204\306\334\353\1\305\333\353"
- "\202\304\333\353?\303\333\353\302\332\354\301\332\354\277\331\354\275\331"
- "\354\274\330\354\272\330\355\270\327\355\267\327\355\265\326\355\263\325"
- "\356\260\324\356\256\324\356\254\323\356\252\322\357\250\321\357\246\321"
- "\357\243\320\357\241\317\360\236\316\360\234\315\360\232\315\361\227\314"
- "\361\225\313\361\223\312\362\220\311\362\216\310\362\214\310\362\211\307"
- "\363\207\306\363\204\305\363\202\304\364\200\303\364~\303\364{\302\365y\301"
- "\365v\300\365t\277\366q\276\366o\275\366l\274\367i\274\367g\273\367d\272"
- "\367b\271\370_\270\370]\267\370Z\267\371X\266\371U\265\371R\264\372P\263"
- "\372M\262\372K\261\373H\260\373F\257\373C\257\374A\256\374>\255\374;\254"
- "\3759\253\3756\252\3754\251\376\2121\250\376\204\0\0\0!\200\304\364\202\305"
- "\364\205\306\363\207\306\363\212\307\363\214\310\362\217\311\362\221\312"
- "\362\224\312\361\226\313\361\231\314\361\233\315\361\236\316\360\240\317"
- "\360\242\317\360\245\320\357\247\321\357\251\322\357\253\323\356\255\323"
- "\356\260\324\356\262\325\356\264\326\355\266\326\355\270\327\355\272\330"
- "\355\274\330\354\276\331\354\277\331\354\302\332\354\303\333\353\304\333"
- "\353\305\333\353\202\307\334\353\202\310\334\353\202\311\335\353\202\310"
- "\334\353\202\307\334\353?\305\333\353\304\333\353\303\333\353\302\332\354"
- "\277\331\354\276\331\354\274\330\354\272\330\355\270\327\355\266\326\355"
- "\264\326\355\262\325\356\260\324\356\255\323\356\253\323\356\251\322\357"
- "\247\321\357\245\320\357\242\317\360\240\317\360\236\316\360\233\315\361"
- "\231\314\361\226\313\361\224\312\361\221\312\362\217\311\362\214\310\362"
- "\212\307\363\207\306\363\205\306\363\202\305\364\200\304\364~\303\364|\302"
- "\364y\301\365w\300\365t\277\365q\276\366o\276\366l\275\366j\274\367g\273"
- "\367e\272\367b\271\370`\270\370]\270\370Z\267\371X\266\371U\265\371S\264"
- "\372P\263\372N\262\372K\261\373H\260\373F\260\373C\257\374A\256\374>\255"
- "\374;\254\3759\253\3756\252\3754\251\375\2121\250\376\204\0\0\0\"\201\304"
- "\364\203\305\363\206\306\363\210\307\363\213\307\362\215\310\362\220\311"
- "\362\222\312\362\224\313\361\227\314\361\231\314\361\234\315\360\236\316"
- "\360\241\317\360\243\320\357\246\321\357\250\321\357\253\322\357\255\323"
- "\356\257\324\356\261\325\356\263\325\355\265\326\355\270\327\355\272\327"
- "\355\274\330\354\276\331\354\300\332\354\302\332\354\304\333\353\305\333"
- "\353\307\334\353\310\334\353\311\335\353\202\312\335\353\204\313\335\353"
- "\202\312\335\353A\311\335\353\310\334\353\307\334\353\305\333\353\303\333"
- "\353\302\332\354\300\332\354\276\331\354\274\330\354\272\327\355\270\327"
- "\355\265\326\355\263\325\355\261\325\356\257\324\356\255\323\356\253\322"
- "\357\250\321\357\246\321\357\243\320\357\241\317\360\236\316\360\234\315"
- "\360\231\314\361\227\314\361\224\313\361\222\312\362\220\311\362\215\310"
- "\362\213\307\362\210\307\363\206\306\363\203\305\363\201\304\364\177\303"
- "\364}\302\364z\301\365w\300\365u\300\365r\277\366p\276\366m\275\366k\274"
- "\367h\273\367f\272\367c\271\370`\270\370^\270\370[\267\371Y\266\371V\265"
- "\371S\264\372Q\263\372N\262\372L\262\372I\261\373F\260\373D\257\373A\256"
- "\374?\255\374<\254\3749\253\3757\252\3754\251\3752\251\376\2111\250\376\204"
- "\0\0\0$\202\304\364\204\305\363\207\306\363\211\307\363\214\310\362\216\310"
- "\362\221\311\362\223\312\362\226\313\361\230\314\361\233\315\361\235\316"
- "\360\237\316\360\242\317\360\244\320\357\247\321\357\251\322\357\253\323"
- "\356\256\324\356\260\324\356\263\325\356\265\326\355\267\327\355\272\327"
- "\355\274\330\354\276\331\354\277\331\354\302\332\354\304\333\353\305\333"
- "\353\307\334\353\311\335\353\312\335\353\313\335\353\314\336\352\315\336"
- "\352\204\316\336\352C\315\336\352\314\336\352\313\335\353\312\335\353\311"
- "\335\353\307\334\353\305\333\353\304\333\353\302\332\354\277\331\354\276"
- "\331\354\274\330\354\272\327\355\267\327\355\265\326\355\263\325\356\260"
- "\324\356\256\324\356\253\323\356\251\322\357\247\321\357\244\320\357\242"
- "\317\360\237\316\360\235\316\360\233\315\361\230\314\361\226\313\361\223"
- "\312\362\221\311\362\216\310\362\214\310\362\211\307\363\207\306\363\204"
- "\305\363\202\304\364\200\303\364}\302\364{\302\365x\301\365v\300\365s\277"
- "\366q\276\366n\275\366k\274\367i\273\367f\272\367d\272\370a\271\370^\270"
- "\370\\\267\371Y\266\371W\265\371T\264\372Q\263\372O\263\372L\262\372J\261"
- "\373G\260\373D\257\373B\256\374?\255\374=\254\374:\253\3757\252\3755\252"
- "\3752\251\376\2111\250\376\204\0\0\0#\202\304\364\205\305\363\207\306\363"
- "\212\307\363\214\310\362\217\311\362\221\312\362\224\312\361\226\313\361"
- "\231\314\361\234\315\360\236\316\360\241\317\360\243\320\360\246\321\357"
- "\250\321\357\252\322\357\255\323\356\257\324\356\262\325\356\264\326\355"
- "\266\326\355\270\327\355\272\330\355\275\331\354\277\331\354\302\332\354"
- "\304\333\353\305\333\353\307\334\353\311\335\353\313\335\353\314\336\352"
- "\316\336\352\317\337\352\202\320\337\352\202\321\337\352\202\320\337\352"
- "B\317\337\352\316\336\352\314\336\352\313\335\353\311\335\353\307\334\353"
- "\305\333\353\304\333\353\302\332\354\277\331\354\275\331\354\272\330\355"
- "\270\327\355\266\326\355\264\326\355\262\325\356\257\324\356\255\323\356"
- "\252\322\357\250\321\357\246\321\357\243\320\360\241\317\360\236\316\360"
- "\234\315\360\231\314\361\226\313\361\224\312\361\221\312\362\217\311\362"
- "\214\310\362\212\307\363\207\306\363\205\305\363\202\304\364\200\304\364"
- "~\303\364{\302\365y\301\365v\300\365t\277\366q\276\366o\275\366l\274\367"
- "i\274\367g\273\367d\272\370b\271\370_\270\370]\267\370Z\266\371W\265\371"
- "U\265\371R\264\372O\263\372M\262\372J\261\373H\260\373E\257\373B\256\374"
- "@\255\374=\254\374:\253\3758\253\3755\252\3753\251\376\2111\250\376\204\0"
- "\0\0$\202\305\364\205\306\363\207\306\363\212\307\363\214\310\362\217\311"
- "\362\222\312\362\224\313\361\227\314\361\231\314\361\234\315\360\236\316"
- "\360\241\317\360\243\320\357\246\321\357\250\322\357\253\323\356\255\323"
- "\356\260\324\356\263\325\356\265\326\355\270\327\355\272\327\355\274\330"
- "\354\276\331\354\301\332\354\303\333\353\305\333\353\307\334\353\311\335"
- "\353\313\335\353\315\336\352\317\337\352\320\337\352\321\340\352\322\340"
- "\352\204\323\340\352C\322\340\352\321\340\352\320\337\352\317\337\352\315"
- "\336\352\313\335\353\311\335\353\307\334\353\305\333\353\303\333\353\301"
- "\332\354\276\331\354\274\330\354\272\327\355\270\327\355\265\326\355\263"
- "\325\356\260\324\356\255\323\356\253\323\356\250\322\357\246\321\357\243"
- "\320\357\241\317\360\236\316\360\234\315\360\231\314\361\227\314\361\224"
- "\313\361\222\312\362\217\311\362\214\310\362\212\307\363\207\306\363\205"
- "\306\363\202\305\364\200\304\364~\303\364{\302\365y\301\365v\300\365t\277"
- "\365q\276\366o\275\366l\275\366i\274\367g\273\367d\272\367b\271\370_\270"
- "\370]\267\370Z\266\371X\266\371U\265\371R\264\372P\263\372M\262\372K\261"
- "\373H\260\373E\257\373C\256\374@\255\374>\255\374;\254\3758\253\3756\252"
- "\3753\251\376\2111\250\376\204\0\0\0$\203\305\363\205\306\363\210\307\363"
- "\213\307\362\215\310\362\220\311\362\222\312\362\225\313\361\230\314\361"
- "\232\315\361\235\316\360\237\316\360\242\317\360\244\320\357\247\321\357"
- "\251\322\357\254\323\356\256\324\356\261\325\356\263\325\355\266\326\355"
- "\270\327\355\273\330\354\275\331\354\277\331\354\302\332\354\304\333\353"
- "\307\334\353\311\335\353\313\335\353\315\336\352\317\337\352\321\337\352"
- "\322\340\352\324\340\351\324\341\351\204\326\341\351C\324\341\351\324\340"
- "\351\322\340\352\321\337\352\317\337\352\315\336\352\313\335\353\311\335"
- "\353\307\334\353\304\333\353\302\332\354\277\331\354\275\331\354\273\330"
- "\354\270\327\355\266\326\355\263\325\355\261\325\356\256\324\356\254\323"
- "\356\251\322\357\247\321\357\244\320\357\242\317\360\237\316\360\235\316"
- "\360\232\315\361\230\314\361\225\313\361\222\312\362\220\311\362\215\310"
- "\362\213\307\362\210\307\363\205\306\363\203\305\363\200\304\364\177\303"
- "\364|\302\364y\301\365w\300\365t\277\365r\277\366o\276\366l\275\366j\274"
- "\367g\273\367d\272\367b\271\370_\270\370]\270\370Z\267\371X\266\371U\265"
- "\371R\264\372P\263\372M\262\372K\261\373H\260\373F\257\373C\256\374A\256"
- "\374>\255\374;\254\3759\253\3756\252\3753\251\376\2111\250\376\204\0\0\0"
- "%\203\305\363\206\306\363\211\307\363\213\307\362\216\310\362\220\311\362"
- "\223\312\362\226\313\361\230\314\361\233\315\361\235\316\360\240\317\360"
- "\243\320\360\245\320\357\250\321\357\252\322\357\255\323\356\257\324\356"
- "\262\325\356\264\326\355\267\327\355\271\327\355\274\330\354\276\331\354"
- "\301\332\354\303\333\353\305\333\353\310\334\353\312\335\353\314\336\352"
- "\317\337\352\321\337\352\323\340\352\324\341\351\326\341\351\327\342\351"
- "\330\342\351\202\331\342\351D\330\342\351\327\342\351\326\341\351\324\341"
- "\351\323\340\352\321\337\352\317\337\352\314\336\352\312\335\353\310\334"
- "\353\305\333\353\303\333\353\301\332\354\276\331\354\274\330\354\271\327"
- "\355\267\327\355\264\326\355\262\325\356\257\324\356\255\323\356\252\322"
- "\357\250\321\357\245\320\357\243\320\360\240\317\360\235\316\360\233\315"
- "\361\230\314\361\226\313\361\223\312\362\220\311\362\216\310\362\213\307"
- "\362\211\307\363\206\306\363\203\305\363\201\304\364\177\303\364}\302\364"
- "z\301\365w\300\365u\300\365r\277\366o\276\366m\275\366j\274\367h\273\367"
- "e\272\367b\271\370`\270\370]\270\370Z\267\371X\266\371U\265\371R\264\372"
- "P\263\372M\262\372K\261\373H\260\373F\257\373C\257\374A\256\374>\255\374"
- ";\254\3759\253\3756\252\3754\251\376\2111\250\376\204\0\0\0$\204\305\363"
- "\207\306\363\211\307\363\214\310\362\216\310\362\221\311\362\224\312\361"
- "\226\313\361\231\314\361\233\315\361\236\316\360\241\317\360\243\320\360"
- "\246\321\357\250\322\357\253\322\357\255\323\356\260\324\356\263\325\356"
- "\265\326\355\270\327\355\272\327\355\275\330\354\277\331\354\302\332\354"
- "\304\333\353\307\334\353\311\335\353\314\336\352\316\336\352\320\337\352"
- "\322\340\352\324\341\351\326\341\351\330\342\351\331\342\351\204\333\343"
- "\351C\331\342\351\330\342\351\326\341\351\324\341\351\322\340\352\320\337"
- "\352\316\336\352\314\336\352\311\335\353\307\334\353\304\333\353\302\332"
- "\354\277\331\354\275\330\354\272\327\355\270\327\355\265\326\355\263\325"
- "\356\260\324\356\255\323\356\253\322\357\250\322\357\246\321\357\243\320"
- "\360\241\317\360\236\316\360\233\315\361\231\314\361\226\313\361\224\312"
- "\361\221\311\362\216\310\362\214\310\362\211\307\363\207\306\363\204\305"
- "\363\201\304\364\200\303\364}\302\364z\301\365x\301\365u\300\365r\277\366"
- "p\276\366m\275\366k\274\367h\273\367e\272\367c\271\370`\270\370]\270\370"
- "[\267\371X\266\371U\265\371S\264\372P\263\372M\262\372K\261\373H\260\373"
- "F\260\373C\257\374A\256\374>\255\374;\254\3759\253\3756\252\3754\251\376"
- "\2111\250\376\204\0\0\0%\204\305\363\207\306\363\212\307\363\214\310\362"
- "\217\311\362\221\311\362\224\312\361\226\313\361\231\314\361\234\315\360"
- "\236\316\360\241\317\360\243\320\357\246\321\357\250\322\357\253\323\356"
- "\255\323\356\260\324\356\263\325\355\265\326\355\270\327\355\272\330\355"
- "\275\331\354\277\331\354\302\332\354\305\333\353\307\334\353\312\335\353"
- "\314\336\352\317\337\352\321\340\352\324\340\351\326\341\351\330\342\351"
- "\332\343\351\333\343\350\335\344\350\202\336\344\350D\335\344\350\333\343"
- "\350\332\343\351\330\342\351\326\341\351\324\340\351\321\340\352\317\337"
- "\352\314\336\352\312\335\353\307\334\353\305\333\353\302\332\354\277\331"
- "\354\275\331\354\272\330\355\270\327\355\265\326\355\263\325\355\260\324"
- "\356\255\323\356\253\323\356\250\322\357\246\321\357\243\320\357\241\317"
- "\360\236\316\360\234\315\360\231\314\361\226\313\361\224\312\361\221\311"
- "\362\217\311\362\214\310\362\212\307\363\207\306\363\204\305\363\202\304"
- "\364\200\303\364}\302\364{\302\365x\301\365u\300\365s\277\366p\276\366m\275"
- "\366k\274\367h\273\367f\272\367c\271\370`\270\370^\270\370[\267\371X\266"
- "\371V\265\371S\264\372P\263\372N\262\372K\261\373H\260\373F\260\373C\257"
- "\374A\256\374>\255\374;\254\3759\253\3756\252\3754\251\376\2111\250\376\204"
- "\0\0\0%\205\305\363\207\306\363\212\307\363\214\310\362\217\311\362\221\312"
- "\362\224\312\361\226\313\361\231\314\361\234\315\360\236\316\360\241\317"
- "\360\243\320\357\246\321\357\251\322\357\253\323\356\256\324\356\260\324"
- "\356\263\325\355\266\326\355\270\327\355\273\330\354\276\331\354\300\332"
- "\354\303\333\353\305\333\353\310\334\353\313\335\353\315\336\352\320\337"
- "\352\322\340\352\325\341\351\327\342\351\331\342\351\333\343\350\336\344"
- "\350\337\344\350\202\341\345\350D\337\344\350\336\344\350\333\343\350\331"
- "\342\351\327\342\351\325\341\351\322\340\352\320\337\352\315\336\352\313"
- "\335\353\310\334\353\305\333\353\303\333\353\300\332\354\276\331\354\273"
- "\330\354\270\327\355\266\326\355\263\325\355\260\324\356\256\324\356\253"
- "\323\356\251\322\357\246\321\357\243\320\357\241\317\360\236\316\360\234"
- "\315\360\231\314\361\226\313\361\224\312\361\221\312\362\217\311\362\214"
- "\310\362\212\307\363\207\306\363\205\305\363\202\304\364\200\303\364~\303"
- "\364{\302\365x\301\365v\300\365s\277\366p\276\366n\275\366k\274\367h\273"
- "\367f\272\367c\271\370`\270\370^\270\370[\267\371Y\266\371V\265\371S\264"
- "\372Q\263\372N\262\372K\261\373I\261\373F\260\373C\257\374A\256\374>\255"
- "\374;\254\3759\253\3756\252\3754\251\376\2111\250\376\204\0\0\0%\205\305"
- "\363\207\306\363\212\307\363\214\310\362\217\311\362\221\312\362\224\313"
- "\361\226\313\361\231\314\361\234\315\360\236\316\360\241\317\360\244\320"
- "\357\246\321\357\251\322\357\254\323\356\256\324\356\261\325\356\263\325"
- "\355\266\326\355\271\327\355\273\330\354\276\331\354\301\332\354\303\333"
- "\353\306\334\353\311\335\353\313\335\353\316\336\352\320\337\352\323\340"
- "\352\326\341\351\330\342\351\333\343\351\335\344\350\337\344\350\341\345"
- "\350\202\343\346\350D\341\345\350\337\344\350\335\344\350\333\343\351\330"
- "\342\351\326\341\351\323\340\352\320\337\352\316\336\352\313\335\353\311"
- "\335\353\306\334\353\303\333\353\301\332\354\276\331\354\273\330\354\271"
- "\327\355\266\326\355\263\325\355\261\325\356\256\324\356\254\323\356\251"
- "\322\357\246\321\357\244\320\357\241\317\360\236\316\360\234\315\360\231"
- "\314\361\226\313\361\224\313\361\221\312\362\217\311\362\214\310\362\212"
- "\307\363\207\306\363\205\305\363\202\304\364\200\303\364~\303\364{\302\365"
- "y\301\365v\300\365s\277\366q\276\366n\275\366k\274\367i\273\367f\272\367"
- "c\271\370a\271\370^\270\370[\267\371Y\266\371V\265\371S\264\372Q\263\372"
- "N\262\372K\261\373I\261\373F\260\373C\257\374A\256\374>\255\374;\254\375"
- "9\253\3756\252\3754\251\376\2111\250\376\204\0\0\0%\205\305\363\207\306\363"
- "\212\307\363\214\310\362\217\311\362\221\312\362\224\313\361\226\313\361"
- "\231\314\361\234\315\360\236\316\360\241\317\360\244\320\357\246\321\357"
- "\251\322\357\254\323\356\256\324\356\261\325\356\264\326\355\266\326\355"
- "\271\327\355\274\330\354\276\331\354\301\332\354\304\333\353\306\334\353"
- "\311\335\353\314\336\352\316\336\352\321\337\352\324\340\351\326\341\351"
- "\331\342\351\333\343\351\336\344\350\341\345\350\343\346\350\202\345\346"
- "\347D\343\346\350\341\345\350\336\344\350\333\343\351\331\342\351\326\341"
- "\351\324\340\351\321\337\352\316\336\352\314\336\352\311\335\353\306\334"
- "\353\304\333\353\301\332\354\276\331\354\274\330\354\271\327\355\266\326"
- "\355\264\326\355\261\325\356\256\324\356\254\323\356\251\322\357\246\321"
- "\357\244\320\357\241\317\360\236\316\360\234\315\360\231\314\361\226\313"
- "\361\224\313\361\221\312\362\217\311\362\214\310\362\212\307\363\207\306"
- "\363\205\305\363\202\304\364\200\304\364~\303\364{\302\365y\301\365v\300"
- "\365s\277\366q\276\366n\275\366k\274\367i\273\367f\272\367c\271\370a\271"
- "\370^\270\370[\267\371Y\266\371V\265\371S\264\372Q\263\372N\262\372K\261"
- "\373I\261\373F\260\373C\257\374A\256\374>\255\374;\254\3759\253\3756\252"
- "\3754\251\375\2111\250\376\204\0\0\0%\205\305\363\207\306\363\212\307\363"
- "\214\310\362\217\311\362\221\312\362\224\313\361\226\313\361\231\314\361"
- "\234\315\360\236\316\360\241\317\360\244\320\357\246\321\357\251\322\357"
- "\254\323\356\256\324\356\261\325\356\264\326\355\266\326\355\271\327\355"
- "\274\330\354\276\331\354\301\332\354\304\333\353\306\334\353\311\335\353"
- "\314\336\352\316\336\352\321\337\352\324\340\351\326\341\351\331\342\351"
- "\333\343\351\336\344\350\341\345\350\343\346\350\202\345\346\347D\343\346"
- "\350\341\345\350\336\344\350\333\343\351\331\342\351\326\341\351\324\340"
- "\351\321\337\352\316\336\352\314\336\352\311\335\353\306\334\353\304\333"
- "\353\301\332\354\276\331\354\274\330\354\271\327\355\266\326\355\264\326"
- "\355\261\325\356\256\324\356\254\323\356\251\322\357\246\321\357\244\320"
- "\357\241\317\360\236\316\360\234\315\360\231\314\361\226\313\361\224\313"
- "\361\221\312\362\217\311\362\214\310\362\212\307\363\207\306\363\205\305"
- "\363\202\304\364\200\304\364~\303\364{\302\365y\301\365v\300\365s\277\366"
- "q\276\366n\275\366k\274\367i\273\367f\272\367c\271\370a\271\370^\270\370"
- "[\267\371Y\266\371V\265\371S\264\372Q\263\372N\262\372K\261\373I\261\373"
- "F\260\373C\257\374A\256\374>\255\374;\254\3759\253\3756\252\3754\251\375"
- "\2111\250\376\204\0\0\0%\205\305\363\207\306\363\212\307\363\214\310\362"
- "\217\311\362\221\312\362\224\313\361\226\313\361\231\314\361\234\315\360"
- "\236\316\360\241\317\360\244\320\357\246\321\357\251\322\357\254\323\356"
- "\256\324\356\261\325\356\263\325\355\266\326\355\271\327\355\273\330\354"
- "\276\331\354\301\332\354\303\333\353\306\334\353\311\335\353\313\335\353"
- "\316\336\352\320\337\352\323\340\352\326\341\351\330\342\351\333\343\351"
- "\335\344\350\337\344\350\341\345\350\202\343\346\350D\341\345\350\337\344"
- "\350\335\344\350\333\343\351\330\342\351\326\341\351\323\340\352\320\337"
- "\352\316\336\352\313\335\353\311\335\353\306\334\353\303\333\353\301\332"
- "\354\276\331\354\273\330\354\271\327\355\266\326\355\263\325\355\261\325"
- "\356\256\324\356\254\323\356\251\322\357\246\321\357\244\320\357\241\317"
- "\360\236\316\360\234\315\360\231\314\361\226\313\361\224\313\361\221\312"
- "\362\217\311\362\214\310\362\212\307\363\207\306\363\205\305\363\202\304"
- "\364\200\303\364~\303\364{\302\365y\301\365v\300\365s\277\366q\276\366n\275"
- "\366k\274\367i\273\367f\272\367c\271\370a\271\370^\270\370[\267\371Y\266"
- "\371V\265\371S\264\372Q\263\372N\262\372K\261\373I\261\373F\260\373C\257"
- "\374A\256\374>\255\374;\254\3759\253\3756\252\3754\251\376\2111\250\376\204"
- "\0\0\0%\205\305\363\207\306\363\212\307\363\214\310\362\217\311\362\221\312"
- "\362\224\312\361\226\313\361\231\314\361\234\315\360\236\316\360\241\317"
- "\360\243\320\357\246\321\357\251\322\357\253\323\356\256\324\356\260\324"
- "\356\263\325\355\266\326\355\270\327\355\273\330\354\276\331\354\300\332"
- "\354\303\333\353\305\333\353\310\334\353\313\335\353\315\336\352\320\337"
- "\352\322\340\352\325\341\351\327\342\351\331\342\351\333\343\350\336\344"
- "\350\337\344\350\202\341\345\350D\337\344\350\336\344\350\333\343\350\331"
- "\342\351\327\342\351\325\341\351\322\340\352\320\337\352\315\336\352\313"
- "\335\353\310\334\353\305\333\353\303\333\353\300\332\354\276\331\354\273"
- "\330\354\270\327\355\266\326\355\263\325\355\260\324\356\256\324\356\253"
- "\323\356\251\322\357\246\321\357\243\320\357\241\317\360\236\316\360\234"
- "\315\360\231\314\361\226\313\361\224\312\361\221\312\362\217\311\362\214"
- "\310\362\212\307\363\207\306\363\205\305\363\202\304\364\200\303\364~\303"
- "\364{\302\365x\301\365v\300\365s\277\366p\276\366n\275\366k\274\367h\273"
- "\367f\272\367c\271\370`\270\370^\270\370[\267\371Y\266\371V\265\371S\264"
- "\372Q\263\372N\262\372K\261\373I\261\373F\260\373C\257\374A\256\374>\255"
- "\374;\254\3759\253\3756\252\3754\251\376\2111\250\376\204\0\0\0%\204\305"
- "\363\207\306\363\212\307\363\214\310\362\217\311\362\221\311\362\224\312"
- "\361\226\313\361\231\314\361\234\315\360\236\316\360\241\317\360\243\320"
- "\357\246\321\357\250\322\357\253\323\356\255\323\356\260\324\356\263\325"
- "\355\265\326\355\270\327\355\272\330\355\275\331\354\277\331\354\302\332"
- "\354\305\333\353\307\334\353\312\335\353\314\336\352\317\337\352\321\340"
- "\352\324\340\351\326\341\351\330\342\351\332\343\351\333\343\350\335\344"
- "\350\202\336\344\350D\335\344\350\333\343\350\332\343\351\330\342\351\326"
- "\341\351\324\340\351\321\340\352\317\337\352\314\336\352\312\335\353\307"
- "\334\353\305\333\353\302\332\354\277\331\354\275\331\354\272\330\355\270"
- "\327\355\265\326\355\263\325\355\260\324\356\255\323\356\253\323\356\250"
- "\322\357\246\321\357\243\320\357\241\317\360\236\316\360\234\315\360\231"
- "\314\361\226\313\361\224\312\361\221\311\362\217\311\362\214\310\362\212"
- "\307\363\207\306\363\204\305\363\202\304\364\200\303\364}\302\364{\302\365"
- "x\301\365u\300\365s\277\366p\276\366m\275\366k\274\367h\273\367f\272\367"
- "c\271\370`\270\370^\270\370[\267\371X\266\371V\265\371S\264\372P\263\372"
- "N\262\372K\261\373H\260\373F\260\373C\257\374A\256\374>\255\374;\254\375"
- "9\253\3756\252\3754\251\376\2111\250\376\204\0\0\0$\204\305\363\207\306\363"
- "\211\307\363\214\310\362\216\310\362\221\311\362\224\312\361\226\313\361"
- "\231\314\361\233\315\361\236\316\360\241\317\360\243\320\360\246\321\357"
- "\250\322\357\253\322\357\255\323\356\260\324\356\263\325\356\265\326\355"
- "\270\327\355\272\327\355\275\330\354\277\331\354\302\332\354\304\333\353"
- "\307\334\353\311\335\353\314\336\352\316\336\352\320\337\352\322\340\352"
- "\324\341\351\326\341\351\330\342\351\331\342\351\204\333\343\351C\331\342"
- "\351\330\342\351\326\341\351\324\341\351\322\340\352\320\337\352\316\336"
- "\352\314\336\352\311\335\353\307\334\353\304\333\353\302\332\354\277\331"
- "\354\275\330\354\272\327\355\270\327\355\265\326\355\263\325\356\260\324"
- "\356\255\323\356\253\322\357\250\322\357\246\321\357\243\320\360\241\317"
- "\360\236\316\360\233\315\361\231\314\361\226\313\361\224\312\361\221\311"
- "\362\216\310\362\214\310\362\211\307\363\207\306\363\204\305\363\201\304"
- "\364\200\303\364}\302\364z\301\365x\301\365u\300\365r\277\366p\276\366m\275"
- "\366k\274\367h\273\367e\272\367c\271\370`\270\370]\270\370[\267\371X\266"
- "\371U\265\371S\264\372P\263\372M\262\372K\261\373H\260\373F\260\373C\257"
- "\374A\256\374>\255\374;\254\3759\253\3756\252\3754\251\376\2111\250\376\204"
- "\0\0\0%\203\305\363\206\306\363\211\307\363\213\307\362\216\310\362\220\311"
- "\362\223\312\362\226\313\361\230\314\361\233\315\361\235\316\360\240\317"
- "\360\243\320\360\245\320\357\250\321\357\252\322\357\255\323\356\257\324"
- "\356\262\325\356\264\326\355\267\327\355\271\327\355\274\330\354\276\331"
- "\354\301\332\354\303\333\353\305\333\353\310\334\353\312\335\353\314\336"
- "\352\317\337\352\321\337\352\323\340\352\324\341\351\326\341\351\327\342"
- "\351\330\342\351\202\331\342\351D\330\342\351\327\342\351\326\341\351\324"
- "\341\351\323\340\352\321\337\352\317\337\352\314\336\352\312\335\353\310"
- "\334\353\305\333\353\303\333\353\301\332\354\276\331\354\274\330\354\271"
- "\327\355\267\327\355\264\326\355\262\325\356\257\324\356\255\323\356\252"
- "\322\357\250\321\357\245\320\357\243\320\360\240\317\360\235\316\360\233"
- "\315\361\230\314\361\226\313\361\223\312\362\220\311\362\216\310\362\213"
- "\307\362\211\307\363\206\306\363\203\305\363\201\304\364\177\303\364}\302"
- "\364z\301\365w\300\365u\300\365r\277\366o\276\366m\275\366j\274\367h\273"
- "\367e\272\367b\271\370`\270\370]\270\370Z\267\371X\266\371U\265\371R\264"
- "\372P\263\372M\262\372K\261\373H\260\373F\257\373C\257\374A\256\374>\255"
- "\374;\254\3759\253\3756\252\3754\251\376\2111\250\376\204\0\0\0$\203\305"
- "\363\205\306\363\210\307\363\213\307\362\215\310\362\220\311\362\222\312"
- "\362\225\313\361\230\314\361\232\315\361\235\316\360\237\316\360\242\317"
- "\360\244\320\357\247\321\357\251\322\357\254\323\356\256\324\356\261\325"
- "\356\263\325\355\266\326\355\270\327\355\273\330\354\275\331\354\277\331"
- "\354\302\332\354\304\333\353\307\334\353\311\335\353\313\335\353\315\336"
- "\352\317\337\352\321\337\352\322\340\352\324\340\351\324\341\351\204\326"
- "\341\351C\324\341\351\324\340\351\322\340\352\321\337\352\317\337\352\315"
- "\336\352\313\335\353\311\335\353\307\334\353\304\333\353\302\332\354\277"
- "\331\354\275\331\354\273\330\354\270\327\355\266\326\355\263\325\355\261"
- "\325\356\256\324\356\254\323\356\251\322\357\247\321\357\244\320\357\242"
- "\317\360\237\316\360\235\316\360\232\315\361\230\314\361\225\313\361\222"
- "\312\362\220\311\362\215\310\362\213\307\362\210\307\363\205\306\363\203"
- "\305\363\200\304\364\177\303\364|\302\364y\301\365w\300\365t\277\365r\277"
- "\366o\276\366l\275\366j\274\367g\273\367d\272\367b\271\370_\270\370]\270"
- "\370Z\267\371X\266\371U\265\371R\264\372P\263\372M\262\372K\261\373H\260"
- "\373F\257\373C\256\374A\256\374>\255\374;\254\3759\253\3756\252\3753\251"
- "\376\2111\250\376\204\0\0\0$\202\305\364\205\306\363\207\306\363\212\307"
- "\363\214\310\362\217\311\362\222\312\362\224\313\361\227\314\361\231\314"
- "\361\234\315\360\236\316\360\241\317\360\243\320\357\246\321\357\250\322"
- "\357\253\323\356\255\323\356\260\324\356\263\325\356\265\326\355\270\327"
- "\355\272\327\355\274\330\354\276\331\354\301\332\354\303\333\353\305\333"
- "\353\307\334\353\311\335\353\313\335\353\315\336\352\317\337\352\320\337"
- "\352\321\340\352\322\340\352\204\323\340\352C\322\340\352\321\340\352\320"
- "\337\352\317\337\352\315\336\352\313\335\353\311\335\353\307\334\353\305"
- "\333\353\303\333\353\301\332\354\276\331\354\274\330\354\272\327\355\270"
- "\327\355\265\326\355\263\325\356\260\324\356\255\323\356\253\323\356\250"
- "\322\357\246\321\357\243\320\357\241\317\360\236\316\360\234\315\360\231"
- "\314\361\227\314\361\224\313\361\222\312\362\217\311\362\214\310\362\212"
- "\307\363\207\306\363\205\306\363\202\305\364\200\304\364~\303\364{\302\365"
- "y\301\365v\300\365t\277\365q\276\366o\275\366l\275\366i\274\367g\273\367"
- "d\272\367b\271\370_\270\370]\267\370Z\266\371X\266\371U\265\371R\264\372"
- "P\263\372M\262\372K\261\373H\260\373E\257\373C\256\374@\255\374>\255\374"
- ";\254\3758\253\3756\252\3753\251\376\2111\250\376\204\0\0\0\"\202\304\364"
- "\205\305\363\207\306\363\212\307\363\214\310\362\217\311\362\221\312\362"
- "\224\312\361\226\313\361\231\314\361\234\315\360\236\316\360\241\317\360"
- "\243\320\360\246\321\357\250\321\357\252\322\357\255\323\356\257\324\356"
- "\262\325\356\264\326\355\266\326\355\270\327\355\272\330\355\275\331\354"
- "\277\331\354\302\332\354\304\333\353\305\333\353\307\334\353\311\335\353"
- "\313\335\353\314\336\352\316\336\352\202\317\337\352\1\320\337\352\202\321"
- "\337\352\1\320\337\352\202\317\337\352A\316\336\352\314\336\352\313\335\353"
- "\311\335\353\307\334\353\305\333\353\304\333\353\302\332\354\277\331\354"
- "\275\331\354\272\330\355\270\327\355\266\326\355\264\326\355\262\325\356"
- "\257\324\356\255\323\356\252\322\357\250\321\357\246\321\357\243\320\360"
- "\241\317\360\236\316\360\234\315\360\231\314\361\226\313\361\224\312\361"
- "\221\312\362\217\311\362\214\310\362\212\307\363\207\306\363\205\305\363"
- "\202\304\364\200\304\364~\303\364{\302\365y\301\365v\300\365t\277\366q\276"
- "\366o\275\366l\274\367i\274\367g\273\367d\272\370b\271\370_\270\370]\267"
- "\370Z\266\371W\265\371U\265\371R\264\372O\263\372M\262\372J\261\373H\260"
- "\373E\257\373B\256\374@\255\374=\254\374:\253\3758\253\3755\252\3753\251"
- "\376\2111\250\376\204\0\0\0$\202\304\364\204\305\363\207\306\363\211\307"
- "\363\214\310\362\216\310\362\221\311\362\223\312\362\226\313\361\230\314"
- "\361\233\315\361\235\316\360\237\316\360\242\317\360\244\320\357\247\321"
- "\357\251\322\357\253\323\356\256\324\356\260\324\356\263\325\356\265\326"
- "\355\267\327\355\272\327\355\274\330\354\276\331\354\277\331\354\302\332"
- "\354\304\333\353\305\333\353\307\334\353\311\335\353\312\335\353\313\335"
- "\353\314\336\352\315\336\352\204\316\336\352C\315\336\352\314\336\352\313"
- "\335\353\312\335\353\311\335\353\307\334\353\305\333\353\304\333\353\302"
- "\332\354\277\331\354\276\331\354\274\330\354\272\327\355\267\327\355\265"
- "\326\355\263\325\356\260\324\356\256\324\356\253\323\356\251\322\357\247"
- "\321\357\244\320\357\242\317\360\237\316\360\235\316\360\233\315\361\230"
- "\314\361\226\313\361\223\312\362\221\311\362\216\310\362\214\310\362\211"
- "\307\363\207\306\363\204\305\363\202\304\364\200\303\364}\302\364{\302\365"
- "x\301\365v\300\365s\277\366q\276\366n\275\366k\274\367i\273\367f\272\367"
- "d\272\370a\271\370^\270\370\\\267\371Y\266\371W\265\371T\264\372Q\263\372"
- "O\263\372L\262\372J\261\373G\260\373D\257\373B\256\374?\255\374=\254\374"
- ":\253\3757\252\3755\252\3752\251\376\2111\250\376\204\0\0\0\"\201\304\364"
- "\203\305\363\206\306\363\210\307\363\213\307\362\215\310\362\220\311\362"
- "\222\312\362\224\313\361\227\314\361\231\314\361\234\315\360\236\316\360"
- "\241\317\360\243\320\357\246\321\357\250\321\357\253\322\357\255\323\356"
- "\257\324\356\261\325\356\263\325\355\265\326\355\270\327\355\272\327\355"
- "\274\330\354\276\331\354\300\332\354\302\332\354\303\333\353\305\333\353"
- "\307\334\353\310\334\353\311\335\353\202\312\335\353\204\313\335\353\202"
- "\312\335\353A\311\335\353\310\334\353\307\334\353\305\333\353\303\333\353"
- "\302\332\354\300\332\354\276\331\354\274\330\354\272\327\355\270\327\355"
- "\265\326\355\263\325\355\261\325\356\257\324\356\255\323\356\253\322\357"
- "\250\321\357\246\321\357\243\320\357\241\317\360\236\316\360\234\315\360"
- "\231\314\361\227\314\361\224\313\361\222\312\362\220\311\362\215\310\362"
- "\213\307\362\210\307\363\206\306\363\203\305\363\201\304\364\177\303\364"
- "}\302\364z\301\365w\300\365u\300\365r\277\366p\276\366m\275\366k\274\367"
- "h\273\367f\272\367c\271\370`\270\370^\270\370[\267\371Y\266\371V\265\371"
- "S\264\372Q\263\372N\262\372L\262\372I\261\373F\260\373D\257\373A\256\374"
- "?\255\374<\254\3749\253\3757\252\3754\251\3752\251\376\2111\250\376\204\0"
- "\0\0!\200\304\364\202\305\364\205\306\363\207\306\363\212\307\363\214\310"
- "\362\217\311\362\221\312\362\224\312\361\226\313\361\231\314\361\233\315"
- "\361\236\316\360\240\317\360\242\317\360\245\320\357\247\321\357\251\322"
- "\357\253\323\356\255\323\356\260\324\356\262\325\356\264\326\355\266\326"
- "\355\270\327\355\272\330\355\274\330\354\276\331\354\277\331\354\302\332"
- "\354\303\333\353\304\333\353\305\333\353\202\307\334\353\202\310\334\353"
- "\202\311\335\353\202\310\334\353\202\307\334\353?\305\333\353\304\333\353"
- "\303\333\353\302\332\354\277\331\354\276\331\354\274\330\354\272\330\355"
- "\270\327\355\266\326\355\264\326\355\262\325\356\260\324\356\255\323\356"
- "\253\323\356\251\322\357\247\321\357\245\320\357\242\317\360\240\317\360"
- "\236\316\360\233\315\361\231\314\361\226\313\361\224\312\361\221\312\362"
- "\217\311\362\214\310\362\212\307\363\207\306\363\205\306\363\202\305\364"
- "\200\304\364~\303\364|\302\364y\301\365w\300\365t\277\365q\276\366o\276\366"
- "l\275\366j\274\367g\273\367e\272\367b\271\370`\270\370]\270\370Z\267\371"
- "X\266\371U\265\371S\264\372P\263\372N\262\372K\261\373H\260\373F\260\373"
- "C\257\374A\256\374>\255\374;\254\3759\253\3756\252\3754\251\375\2121\250"
- "\376\204\0\0\0!\200\303\364\202\304\364\204\305\363\207\306\363\211\307\363"
- "\214\310\362\216\310\362\220\311\362\223\312\362\225\313\361\227\314\361"
- "\232\315\361\234\315\360\236\316\360\241\317\360\243\320\357\246\321\357"
- "\250\321\357\252\322\357\254\323\356\256\324\356\260\324\356\263\325\356"
- "\265\326\355\267\327\355\270\327\355\272\330\355\274\330\354\275\331\354"
- "\277\331\354\301\332\354\302\332\354\303\333\353\202\304\333\353\1\305\333"
- "\353\204\306\334\353\1\305\333\353\202\304\333\353?\303\333\353\302\332\354"
- "\301\332\354\277\331\354\275\331\354\274\330\354\272\330\355\270\327\355"
- "\267\327\355\265\326\355\263\325\356\260\324\356\256\324\356\254\323\356"
- "\252\322\357\250\321\357\246\321\357\243\320\357\241\317\360\236\316\360"
- "\234\315\360\232\315\361\227\314\361\225\313\361\223\312\362\220\311\362"
- "\216\310\362\214\310\362\211\307\363\207\306\363\204\305\363\202\304\364"
- "\200\303\364~\303\364{\302\365y\301\365v\300\365t\277\366q\276\366o\275\366"
- "l\274\367i\274\367g\273\367d\272\367b\271\370_\270\370]\267\370Z\267\371"
- "X\266\371U\265\371R\264\372P\263\372M\262\372K\261\373H\260\373F\257\373"
- "C\257\374A\256\374>\255\374;\254\3759\253\3756\252\3754\251\376\2121\250"
- "\376\204\0\0\0!\177\303\364\201\304\364\203\305\363\205\306\363\210\307\363"
- "\212\307\363\215\310\362\217\311\362\221\312\362\224\313\361\226\313\361"
- "\231\314\361\233\315\361\236\316\360\240\317\360\242\317\360\244\320\357"
- "\246\321\357\250\322\357\253\322\357\255\323\356\257\324\356\261\325\356"
- "\263\325\356\265\326\355\267\327\355\270\327\355\272\327\355\273\330\354"
- "\275\331\354\276\331\354\277\331\354\301\332\354\202\302\332\354\206\303"
- "\333\353\202\302\332\354?\301\332\354\277\331\354\276\331\354\275\331\354"
- "\273\330\354\272\327\355\270\327\355\267\327\355\265\326\355\263\325\356"
- "\261\325\356\257\324\356\255\323\356\253\322\357\250\322\357\246\321\357"
- "\244\320\357\242\317\360\240\317\360\236\316\360\233\315\361\231\314\361"
- "\226\313\361\224\313\361\221\312\362\217\311\362\215\310\362\212\307\363"
- "\210\307\363\205\306\363\203\305\363\201\304\364\177\303\364}\302\364z\301"
- "\365x\301\365u\300\365s\277\366p\276\366n\275\366k\274\367i\273\367f\272"
- "\367d\272\370a\271\370_\270\370\\\267\371Z\266\371W\265\371U\265\371R\264"
- "\372P\263\372M\262\372J\261\373H\260\373E\257\373C\256\374@\255\374>\255"
- "\374;\254\3758\253\3756\252\3753\251\376\2121\250\376\204\0\0\0!~\303\364"
- "\200\304\364\202\305\364\205\305\363\207\306\363\212\307\363\214\310\362"
- "\216\310\362\221\311\362\223\312\362\225\313\361\227\314\361\232\315\361"
- "\234\315\360\236\316\360\241\317\360\243\320\360\245\320\357\247\321\357"
- "\251\322\357\253\323\356\255\323\356\257\324\356\261\325\356\263\325\356"
- "\265\326\355\266\326\355\270\327\355\271\327\355\272\330\355\274\330\354"
- "\275\331\354\276\331\354\202\277\331\354\1\300\332\354\204\301\332\354\1"
- "\300\332\354\202\277\331\354?\276\331\354\275\331\354\274\330\354\272\330"
- "\355\271\327\355\270\327\355\266\326\355\265\326\355\263\325\356\261\325"
- "\356\257\324\356\255\323\356\253\323\356\251\322\357\247\321\357\245\320"
- "\357\243\320\360\241\317\360\236\316\360\234\315\360\232\315\361\227\314"
- "\361\225\313\361\223\312\362\221\311\362\216\310\362\214\310\362\212\307"
- "\363\207\306\363\205\305\363\202\305\364\200\304\364~\303\364|\302\364y\301"
- "\365w\300\365t\277\365r\277\366o\276\366m\275\366j\274\367h\273\367e\272"
- "\367c\271\370`\270\370^\270\370[\267\371Y\266\371V\265\371T\264\372Q\263"
- "\372O\263\372L\262\372J\261\373G\260\373D\257\373B\256\374?\255\374=\254"
- "\374:\253\3758\253\3755\252\3753\251\376\2121\250\376\204\0\0\0\"~\303\364"
- "\200\303\364\201\304\364\204\305\363\206\306\363\210\307\363\213\307\362"
- "\215\310\362\217\311\362\221\312\362\224\312\361\226\313\361\231\314\361"
- "\233\315\361\235\316\360\237\316\360\241\317\360\243\320\357\246\321\357"
- "\250\321\357\251\322\357\253\323\356\255\323\356\257\324\356\261\325\356"
- "\263\325\356\264\326\355\265\326\355\267\327\355\270\327\355\272\327\355"
- "\272\330\355\274\330\354\275\330\354\202\275\331\354\204\276\331\354\202"
- "\275\331\354@\275\330\354\274\330\354\272\330\355\272\327\355\270\327\355"
- "\267\327\355\265\326\355\264\326\355\263\325\356\261\325\356\257\324\356"
- "\255\323\356\253\323\356\251\322\357\250\321\357\246\321\357\243\320\357"
- "\241\317\360\237\316\360\235\316\360\233\315\361\231\314\361\226\313\361"
- "\224\312\361\221\312\362\217\311\362\215\310\362\213\307\362\210\307\363"
- "\206\306\363\204\305\363\201\304\364\200\303\364~\303\364{\302\365y\301\365"
- "v\300\365t\277\366q\276\366o\275\366l\275\366i\274\367g\273\367d\272\367"
- "b\271\370_\270\370]\270\370Z\267\371X\266\371U\265\371S\264\372P\263\372"
- "N\262\372K\261\373I\261\373F\260\373D\257\373A\256\374?\255\374<\254\374"
- "9\253\3757\252\3754\251\3752\251\376\2121\250\376\204\0\0\0\36|\302\364~"
- "\303\364\200\304\364\202\305\364\205\305\363\207\306\363\212\307\363\214"
- "\310\362\216\310\362\220\311\362\223\312\362\225\313\361\227\314\361\231"
- "\314\361\234\315\360\236\316\360\240\317\360\242\317\360\243\320\357\246"
- "\321\357\250\321\357\252\322\357\253\323\356\255\323\356\257\324\356\260"
- "\324\356\262\325\356\263\325\355\265\326\355\266\326\355\202\270\327\355"
- "\3\271\327\355\272\327\355\272\330\355\206\273\330\354\3\272\330\355\272"
- "\327\355\271\327\355\202\270\327\355;\266\326\355\265\326\355\263\325\355"
- "\262\325\356\260\324\356\257\324\356\255\323\356\253\323\356\252\322\357"
- "\250\321\357\246\321\357\243\320\357\242\317\360\240\317\360\236\316\360"
- "\234\315\360\231\314\361\227\314\361\225\313\361\223\312\362\220\311\362"
- "\216\310\362\214\310\362\212\307\363\207\306\363\205\305\363\202\305\364"
- "\200\304\364~\303\364|\302\364z\301\365w\300\365u\300\365s\277\366p\276\366"
- "n\275\366k\274\367i\273\367g\273\367d\272\370b\271\370_\270\370]\267\370"
- "Z\266\371X\266\371U\265\371R\264\372P\263\372M\262\372K\261\373H\260\373"
- "F\257\373C\257\374A\256\374>\255\374;\254\3759\253\3756\252\3754\251\376"
- "\2131\250\376\204\0\0\0!{\302\365~\303\364\200\303\364\201\304\364\204\305"
- "\363\206\306\363\210\307\363\212\307\363\214\310\362\217\311\362\221\312"
- "\362\224\312\361\226\313\361\230\314\361\232\315\361\234\315\360\236\316"
- "\360\240\317\360\242\317\360\244\320\357\246\321\357\250\321\357\251\322"
- "\357\253\323\356\255\323\356\256\324\356\260\324\356\261\325\356\263\325"
- "\356\264\326\355\265\326\355\266\326\355\267\327\355\203\270\327\355\204"
- "\271\327\355\203\270\327\355>\267\327\355\266\326\355\265\326\355\264\326"
- "\355\263\325\356\261\325\356\260\324\356\256\324\356\255\323\356\253\323"
- "\356\251\322\357\250\321\357\246\321\357\244\320\357\242\317\360\240\317"
- "\360\236\316\360\234\315\360\232\315\361\230\314\361\226\313\361\224\312"
- "\361\221\312\362\217\311\362\214\310\362\212\307\363\210\307\363\206\306"
- "\363\204\305\363\201\304\364\200\303\364~\303\364{\302\365y\301\365v\300"
- "\365t\277\365q\276\366o\276\366l\275\366j\274\367h\273\367e\272\367c\271"
- "\370`\270\370^\270\370\\\267\371Y\266\371W\265\371T\264\372R\264\372O\263"
- "\372M\262\372J\261\373H\260\373E\257\373C\256\374@\255\374>\255\374;\254"
- "\3759\253\3756\252\3754\251\376\2131\250\376\204\0\0\0!z\301\365|\302\364"
- "\177\303\364\200\304\364\202\305\364\205\305\363\207\306\363\211\307\363"
- "\214\310\362\216\310\362\220\311\362\222\312\362\224\313\361\226\313\361"
- "\230\314\361\232\315\361\234\315\360\236\316\360\241\317\360\242\317\360"
- "\244\320\357\246\321\357\250\321\357\251\322\357\253\322\357\254\323\356"
- "\255\323\356\257\324\356\260\324\356\261\325\356\263\325\356\263\325\355"
- "\264\326\355\202\265\326\355\206\266\326\355\202\265\326\355>\264\326\355"
- "\263\325\355\263\325\356\261\325\356\260\324\356\257\324\356\255\323\356"
- "\254\323\356\253\322\357\251\322\357\250\321\357\246\321\357\244\320\357"
- "\242\317\360\241\317\360\236\316\360\234\315\360\232\315\361\230\314\361"
- "\226\313\361\224\313\361\222\312\362\220\311\362\216\310\362\214\310\362"
- "\211\307\363\207\306\363\205\305\363\202\305\364\200\304\364\177\303\364"
- "|\302\364z\301\365x\301\365u\300\365s\277\366q\276\366n\275\366l\274\367"
- "i\274\367g\273\367d\272\367b\271\370_\270\370]\270\370Z\267\371X\266\371"
- "U\265\371S\264\372P\263\372N\262\372L\262\372I\261\373G\260\373D\257\373"
- "B\256\374?\255\374=\254\374:\253\3758\253\3755\252\3753\251\376\2131\250"
- "\376\204\0\0\0\33y\301\365{\302\365~\303\364\200\303\364\201\304\364\203"
- "\305\363\205\306\363\210\307\363\212\307\363\214\310\362\217\311\362\221"
- "\311\362\222\312\362\224\313\361\226\313\361\231\314\361\233\315\361\234"
- "\315\360\236\316\360\241\317\360\242\317\360\243\320\357\246\321\357\247"
- "\321\357\250\322\357\252\322\357\253\323\356\202\255\323\356\4\257\324\356"
- "\260\324\356\261\325\356\262\325\356\202\263\325\356\206\263\325\355\202"
- "\263\325\356\4\262\325\356\261\325\356\260\324\356\257\324\356\202\255\323"
- "\3568\253\323\356\252\322\357\250\322\357\247\321\357\246\321\357\243\320"
- "\357\242\317\360\241\317\360\236\316\360\234\315\360\233\315\361\231\314"
- "\361\226\313\361\224\313\361\222\312\362\221\311\362\217\311\362\214\310"
- "\362\212\307\363\207\306\363\205\306\363\203\305\363\201\304\364\200\303"
- "\364~\303\364{\302\365y\301\365v\300\365t\277\365r\277\366o\276\366m\275"
- "\366k\274\367h\273\367f\272\367d\272\370a\271\370_\270\370\\\267\371Z\266"
- "\371X\266\371U\265\371R\264\372P\263\372M\262\372K\261\373H\260\373F\257"
- "\373C\257\374A\256\374>\255\374<\254\3749\253\3757\252\3754\251\3752\251"
- "\376\2131\250\376\204\0\0\0\35x\301\365z\301\365|\302\364~\303\364\200\304"
- "\364\202\304\364\204\305\363\206\306\363\210\307\363\212\307\363\214\310"
- "\362\217\311\362\221\311\362\223\312\362\225\313\361\227\314\361\231\314"
- "\361\233\315\361\234\315\360\236\316\360\240\317\360\242\317\360\243\320"
- "\357\245\320\357\246\321\357\250\321\357\251\322\357\253\322\357\253\323"
- "\356\202\255\323\356\2\256\324\356\257\324\356\203\260\324\356\204\261\325"
- "\356\203\260\324\356\2\257\324\356\256\324\356\202\255\323\3569\253\323\356"
- "\253\322\357\251\322\357\250\321\357\246\321\357\245\320\357\243\320\357"
- "\242\317\360\240\317\360\236\316\360\234\315\360\233\315\361\231\314\361"
- "\227\314\361\225\313\361\223\312\362\221\311\362\217\311\362\214\310\362"
- "\212\307\363\210\307\363\206\306\363\204\305\363\202\304\364\200\304\364"
- "~\303\364|\302\364z\301\365x\301\365u\300\365s\277\366q\276\366o\275\366"
- "l\274\367i\274\367g\273\367d\272\367b\271\370`\270\370]\270\370[\267\371"
- "Y\266\371V\265\371T\264\372Q\263\372O\263\372M\262\372J\261\373H\260\373"
- "E\257\373C\256\374@\255\374>\255\374;\254\3759\253\3756\252\3754\251\376"
- "\2141\250\376\204\0\0\0\40v\300\365y\301\365{\302\365}\302\364\177\303\364"
- "\200\304\364\202\305\364\205\305\363\207\306\363\211\307\363\213\307\362"
- "\215\310\362\217\311\362\221\312\362\223\312\362\225\313\361\227\314\361"
- "\231\314\361\233\315\361\234\315\360\236\316\360\240\317\360\241\317\360"
- "\243\320\360\244\320\357\246\321\357\247\321\357\250\321\357\251\322\357"
- "\252\322\357\253\322\357\254\323\356\203\255\323\356\206\256\324\356\203"
- "\255\323\356<\254\323\356\253\322\357\252\322\357\251\322\357\250\321\357"
- "\247\321\357\246\321\357\244\320\357\243\320\360\241\317\360\240\317\360"
- "\236\316\360\234\315\360\233\315\361\231\314\361\227\314\361\225\313\361"
- "\223\312\362\221\312\362\217\311\362\215\310\362\213\307\362\211\307\363"
- "\207\306\363\205\305\363\202\305\364\200\304\364\177\303\364}\302\364{\302"
- "\365y\301\365v\300\365t\277\365q\276\366o\276\366m\275\366k\274\367h\273"
- "\367f\272\367d\272\370b\271\370_\270\370]\267\370Z\267\371X\266\371U\265"
- "\371R\264\372P\263\372N\262\372K\261\373I\261\373F\260\373D\257\373B\256"
- "\374?\255\374=\254\374:\253\3758\253\3755\252\3753\251\376\2141\250\376\204"
- "\0\0\0\33u\300\365w\300\365y\301\365{\302\365~\303\364\200\303\364\201\304"
- "\364\203\305\363\205\306\363\207\306\363\212\307\363\214\310\362\215\310"
- "\362\217\311\362\221\312\362\223\312\362\225\313\361\226\313\361\231\314"
- "\361\232\315\361\234\315\360\236\316\360\237\316\360\241\317\360\242\317"
- "\360\243\320\357\244\320\357\202\246\321\357\4\250\321\357\250\322\357\251"
- "\322\357\252\322\357\202\253\322\357\206\253\323\356\202\253\322\357\4\252"
- "\322\357\251\322\357\250\322\357\250\321\357\202\246\321\3577\244\320\357"
- "\243\320\357\242\317\360\241\317\360\237\316\360\236\316\360\234\315\360"
- "\232\315\361\231\314\361\226\313\361\225\313\361\223\312\362\221\312\362"
- "\217\311\362\215\310\362\214\310\362\212\307\363\207\306\363\205\306\363"
- "\203\305\363\201\304\364\200\303\364~\303\364{\302\365y\301\365w\300\365"
- "u\300\365s\277\366q\276\366n\275\366l\274\367i\274\367g\273\367e\272\367"
- "b\271\370`\270\370^\270\370[\267\371Y\266\371W\265\371T\264\372R\264\372"
- "P\263\372M\262\372K\261\373H\260\373F\257\373C\257\374A\256\374>\255\374"
- ";\254\3759\253\3757\252\3754\251\3752\251\376\2141\250\376\204\0\0\0\37t"
- "\277\366v\300\365x\301\365z\301\365|\302\364~\303\364\200\304\364\202\304"
- "\364\204\305\363\206\306\363\210\307\363\212\307\363\214\310\362\216\310"
- "\362\217\311\362\221\312\362\223\312\362\225\313\361\226\313\361\230\314"
- "\361\232\315\361\234\315\360\235\316\360\236\316\360\240\317\360\241\317"
- "\360\242\317\360\243\320\357\244\320\357\245\320\357\246\321\357\202\247"
- "\321\357\1\250\321\357\202\250\322\357\204\251\322\357\202\250\322\357\1"
- "\250\321\357\202\247\321\357:\246\321\357\245\320\357\244\320\357\243\320"
- "\357\242\317\360\241\317\360\240\317\360\236\316\360\235\316\360\234\315"
- "\360\232\315\361\230\314\361\226\313\361\225\313\361\223\312\362\221\312"
- "\362\217\311\362\216\310\362\214\310\362\212\307\363\210\307\363\206\306"
- "\363\204\305\363\202\304\364\200\304\364~\303\364|\302\364z\301\365x\301"
- "\365v\300\365t\277\366q\276\366o\276\366m\275\366j\274\367h\273\367f\272"
- "\367d\272\370b\271\370_\270\370]\267\370Z\267\371X\266\371U\265\371S\264"
- "\372Q\263\372N\262\372L\262\372J\261\373G\260\373E\257\373B\256\374@\255"
- "\374>\255\374;\254\3759\253\3756\252\3754\251\376\2151\250\376\204\0\0\0"
- "!r\277\366t\277\365v\300\365y\301\365{\302\365}\302\364\177\303\364\200\304"
- "\364\202\305\364\204\305\363\206\306\363\210\307\363\212\307\363\214\310"
- "\362\216\310\362\217\311\362\221\312\362\223\312\362\224\313\361\226\313"
- "\361\230\314\361\231\314\361\233\315\361\234\315\360\235\316\360\236\316"
- "\360\240\317\360\241\317\360\242\317\360\243\320\360\243\320\357\244\320"
- "\357\245\320\357\212\246\321\357<\245\320\357\244\320\357\243\320\357\243"
- "\320\360\242\317\360\241\317\360\240\317\360\236\316\360\235\316\360\234"
- "\315\360\233\315\361\231\314\361\230\314\361\226\313\361\224\313\361\223"
- "\312\362\221\312\362\217\311\362\216\310\362\214\310\362\212\307\363\210"
- "\307\363\206\306\363\204\305\363\202\305\364\200\304\364\177\303\364}\302"
- "\364{\302\365y\301\365v\300\365t\277\365r\277\366p\276\366n\275\366l\274"
- "\367i\274\367g\273\367d\272\367b\271\370`\270\370^\270\370[\267\371Y\266"
- "\371W\265\371U\265\371R\264\372P\263\372M\262\372K\261\373H\260\373F\260"
- "\373C\257\374A\256\374?\255\374<\254\374:\253\3757\252\3755\252\3753\251"
- "\376\2151\250\376\204\0\0\0\26q\276\366s\277\366u\300\365w\300\365y\301\365"
- "{\302\365~\303\364\177\303\364\200\304\364\202\305\364\205\305\363\206\306"
- "\363\210\307\363\212\307\363\214\310\362\215\310\362\217\311\362\221\311"
- "\362\222\312\362\224\313\361\226\313\361\227\314\361\202\231\314\361\6\233"
- "\315\361\234\315\360\235\316\360\236\316\360\237\316\360\240\317\360\202"
- "\241\317\360\2\242\317\360\243\320\360\210\243\320\357\2\243\320\360\242"
- "\317\360\202\241\317\360\6\240\317\360\237\316\360\236\316\360\235\316\360"
- "\234\315\360\233\315\361\202\231\314\3610\227\314\361\226\313\361\224\313"
- "\361\222\312\362\221\311\362\217\311\362\215\310\362\214\310\362\212\307"
- "\363\210\307\363\206\306\363\205\305\363\202\305\364\200\304\364\177\303"
- "\364~\303\364{\302\365y\301\365w\300\365u\300\365s\277\366q\276\366o\275"
- "\366l\275\366j\274\367h\273\367f\272\367c\271\370a\271\370_\270\370]\267"
- "\370Z\267\371X\266\371U\265\371S\264\372Q\263\372N\262\372L\262\372J\261"
- "\373H\260\373E\257\373C\256\374A\256\374>\255\374;\254\3759\253\3756\252"
- "\3754\251\375\2161\250\376\204\0\0\0\35o\276\366q\276\366t\277\366v\300\365"
- "x\301\365y\301\365{\302\365~\303\364\200\303\364\200\304\364\202\305\364"
- "\205\305\363\206\306\363\210\307\363\212\307\363\214\310\362\215\310\362"
- "\217\311\362\220\311\362\222\312\362\224\312\361\225\313\361\226\313\361"
- "\227\314\361\231\314\361\232\315\361\233\315\361\234\315\360\235\316\360"
- "\202\236\316\360\1\237\316\360\202\240\317\360\210\241\317\360\202\240\317"
- "\360\1\237\316\360\202\236\316\3607\235\316\360\234\315\360\233\315\361\232"
- "\315\361\231\314\361\227\314\361\226\313\361\225\313\361\224\312\361\222"
- "\312\362\220\311\362\217\311\362\215\310\362\214\310\362\212\307\363\210"
- "\307\363\206\306\363\205\305\363\202\305\364\200\304\364\200\303\364~\303"
- "\364{\302\365y\301\365x\301\365v\300\365t\277\366q\276\366o\276\366m\275"
- "\366k\274\367i\273\367g\273\367d\272\367b\271\370_\270\370]\270\370[\267"
- "\371Y\266\371W\265\371U\265\371R\264\372P\263\372M\262\372K\261\373H\260"
- "\373F\260\373D\257\373A\256\374?\255\374=\254\374:\253\3758\253\3756\252"
- "\3753\251\376\2161\250\376\204\0\0\0\32n\275\366p\276\366r\277\366t\277\366"
- "v\300\365x\301\365z\301\365|\302\364~\303\364\200\303\364\201\304\364\202"
- "\305\364\205\305\363\206\306\363\207\306\363\212\307\363\213\307\362\214"
- "\310\362\216\310\362\220\311\362\221\312\362\222\312\362\224\312\361\225"
- "\313\361\226\313\361\227\314\361\202\231\314\361\2\232\315\361\233\315\361"
- "\202\234\315\360\1\235\316\360\212\236\316\360\1\235\316\360\202\234\315"
- "\360\2\233\315\361\232\315\361\202\231\314\3614\227\314\361\226\313\361\225"
- "\313\361\224\312\361\222\312\362\221\312\362\220\311\362\216\310\362\214"
- "\310\362\213\307\362\212\307\363\207\306\363\206\306\363\205\305\363\202"
- "\305\364\201\304\364\200\303\364~\303\364|\302\364z\301\365x\301\365v\300"
- "\365t\277\366r\277\366p\276\366n\275\366l\274\367i\274\367g\273\367e\272"
- "\367c\271\370a\271\370_\270\370\\\267\371Z\266\371X\266\371U\265\371S\264"
- "\372Q\263\372N\262\372L\262\372J\261\373H\260\373E\257\373C\256\374A\256"
- "\374>\255\374;\254\3759\253\3757\252\3754\251\3752\251\376\2161\250\376\204"
- "\0\0\0\35l\275\366n\275\366p\276\366r\277\366t\277\365v\300\365x\301\365"
- "z\301\365|\302\364~\303\364\200\303\364\200\304\364\202\305\364\204\305\363"
- "\206\306\363\207\306\363\211\307\363\212\307\363\214\310\362\215\310\362"
- "\217\311\362\220\311\362\221\312\362\223\312\362\224\312\361\225\313\361"
- "\226\313\361\227\314\361\230\314\361\202\231\314\361\1\232\315\361\202\233"
- "\315\361\210\234\315\360\202\233\315\361\1\232\315\361\202\231\314\3616\230"
- "\314\361\227\314\361\226\313\361\225\313\361\224\312\361\223\312\362\221"
- "\312\362\220\311\362\217\311\362\215\310\362\214\310\362\212\307\363\211"
- "\307\363\207\306\363\206\306\363\204\305\363\202\305\364\200\304\364\200"
- "\303\364~\303\364|\302\364z\301\365x\301\365v\300\365t\277\365r\277\366p"
- "\276\366n\275\366l\275\366j\274\367h\273\367f\272\367d\272\370b\271\370_"
- "\270\370]\270\370Z\267\371X\266\371V\265\371T\264\372R\264\372P\263\372M"
- "\262\372K\261\373H\260\373F\260\373D\257\373A\256\374?\255\374=\254\374;"
- "\254\3758\253\3756\252\3754\251\376\2171\250\376\204\0\0\0\35j\274\367l\275"
- "\366o\275\366q\276\366s\277\366t\277\365v\300\365y\301\365z\301\365|\302"
- "\364~\303\364\200\303\364\200\304\364\202\304\364\204\305\363\205\306\363"
- "\207\306\363\210\307\363\212\307\363\213\307\362\214\310\362\216\310\362"
- "\217\311\362\220\311\362\221\312\362\223\312\362\224\312\361\224\313\361"
- "\225\313\361\202\226\313\361\2\227\314\361\230\314\361\212\231\314\361\2"
- "\230\314\361\227\314\361\202\226\313\3616\225\313\361\224\313\361\224\312"
- "\361\222\312\362\221\312\362\220\311\362\217\311\362\216\310\362\214\310"
- "\362\213\307\362\212\307\363\210\307\363\207\306\363\205\306\363\204\305"
- "\363\202\304\364\200\304\364\200\303\364~\303\364|\302\364z\301\365y\301"
- "\365v\300\365t\277\365s\277\366q\276\366o\275\366l\275\366j\274\367h\273"
- "\367g\273\367d\272\367b\271\370`\270\370^\270\370\\\267\371Z\266\371W\265"
- "\371U\265\371R\264\372P\263\372N\262\372L\262\372J\261\373G\260\373E\257"
- "\373C\256\374A\256\374>\255\374;\254\3759\253\3757\252\3754\251\3752\251"
- "\376\2171\250\376\204\0\0\0\37i\273\367k\274\367m\275\366o\275\366q\276\366"
- "s\277\366t\277\365v\300\365y\301\365z\301\365|\302\364~\303\364\177\303\364"
- "\200\304\364\202\304\364\203\305\363\205\305\363\206\306\363\207\306\363"
- "\211\307\363\212\307\363\214\310\362\215\310\362\216\310\362\217\311\362"
- "\220\311\362\221\311\362\222\312\362\223\312\362\224\312\361\224\313\361"
- "\202\225\313\361\212\226\313\361\202\225\313\3617\224\313\361\224\312\361"
- "\223\312\362\222\312\362\221\311\362\220\311\362\217\311\362\216\310\362"
- "\215\310\362\214\310\362\212\307\363\211\307\363\207\306\363\206\306\363"
- "\205\305\363\203\305\363\202\304\364\200\304\364\177\303\364~\303\364|\302"
- "\364z\301\365y\301\365v\300\365t\277\365s\277\366q\276\366o\275\366m\275"
- "\366k\274\367i\273\367g\273\367d\272\367b\271\370`\270\370^\270\370]\267"
- "\370Z\267\371X\266\371U\265\371S\264\372Q\263\372O\263\372M\262\372K\261"
- "\373H\260\373F\260\373C\257\374A\256\374?\255\374=\254\374;\254\3758\253"
- "\3756\252\3754\251\376\2201\250\376\204\0\0\0\25g\273\367i\273\367k\274\367"
- "m\275\366o\276\366q\276\366s\277\366t\277\365v\300\365x\301\365z\301\365"
- "{\302\365}\302\364\177\303\364\200\304\364\201\304\364\202\305\364\204\305"
- "\363\205\306\363\207\306\363\210\307\363\202\212\307\363\202\214\310\362"
- "\1\216\310\362\202\217\311\362\4\220\311\362\221\311\362\221\312\362\222"
- "\312\362\202\223\312\362\210\224\312\361\202\223\312\362\4\222\312\362\221"
- "\312\362\221\311\362\220\311\362\202\217\311\362\1\216\310\362\202\214\310"
- "\362\202\212\307\363-\210\307\363\207\306\363\205\306\363\204\305\363\202"
- "\305\364\201\304\364\200\304\364\177\303\364}\302\364{\302\365z\301\365x"
- "\301\365v\300\365t\277\365s\277\366q\276\366o\276\366m\275\366k\274\367i"
- "\273\367g\273\367e\272\367c\271\370a\271\370_\270\370]\267\370Z\267\371X"
- "\266\371V\265\371T\264\372R\264\372P\263\372M\262\372K\261\373I\261\373G"
- "\260\373E\257\373C\256\374@\255\374>\255\374;\254\3759\253\3757\252\3754"
- "\251\3752\251\376\2201\250\376\204\0\0\0\35e\272\367g\273\367i\274\367k\274"
- "\367m\275\366o\276\366q\276\366s\277\366t\277\365v\300\365x\301\365y\301"
- "\365{\302\365}\302\364~\303\364\200\303\364\200\304\364\202\304\364\203\305"
- "\363\205\305\363\206\306\363\207\306\363\210\307\363\211\307\363\212\307"
- "\363\213\307\362\214\310\362\215\310\362\216\310\362\203\217\311\362\1\220"
- "\311\362\203\221\311\362\204\221\312\362\203\221\311\362\1\220\311\362\203"
- "\217\311\3624\216\310\362\215\310\362\214\310\362\213\307\362\212\307\363"
- "\211\307\363\210\307\363\207\306\363\206\306\363\205\305\363\203\305\363"
- "\202\304\364\200\304\364\200\303\364~\303\364}\302\364{\302\365y\301\365"
- "x\301\365v\300\365t\277\365s\277\366q\276\366o\276\366m\275\366k\274\367"
- "i\274\367g\273\367e\272\367d\272\370b\271\370_\270\370]\270\370[\267\371"
- "Y\266\371W\265\371U\265\371R\264\372P\263\372N\262\372L\262\372J\261\373"
- "H\260\373F\257\373C\257\374A\256\374?\255\374<\254\374:\253\3758\253\375"
- "6\252\3754\251\376\2211\250\376\204\0\0\0\32d\272\370f\272\367g\273\367i"
- "\274\367k\274\367m\275\366o\276\366q\276\366r\277\366t\277\365v\300\365w"
- "\300\365y\301\365{\302\365|\302\364~\303\364\177\303\364\200\304\364\201"
- "\304\364\202\305\364\203\305\363\205\305\363\206\306\363\207\306\363\210"
- "\307\363\211\307\363\202\212\307\363\1\213\307\362\202\214\310\362\202\215"
- "\310\362\202\216\310\362\206\217\311\362\202\216\310\362\202\215\310\362"
- "\202\214\310\362\1\213\307\362\202\212\307\3631\211\307\363\210\307\363\207"
- "\306\363\206\306\363\205\305\363\203\305\363\202\305\364\201\304\364\200"
- "\304\364\177\303\364~\303\364|\302\364{\302\365y\301\365w\300\365v\300\365"
- "t\277\365r\277\366q\276\366o\276\366m\275\366k\274\367i\274\367g\273\367"
- "f\272\367d\272\370b\271\370_\270\370^\270\370\\\267\371Z\266\371X\266\371"
- "U\265\371S\264\372Q\263\372O\263\372M\262\372K\261\373H\260\373F\260\373"
- "D\257\373B\256\374@\255\374>\255\374;\254\3759\253\3756\252\3754\251\375"
- "2\251\376\2211\250\376\204\0\0\0\35b\271\370d\272\370f\272\367g\273\367i"
- "\274\367k\274\367m\275\366o\275\366q\276\366r\277\366t\277\366v\300\365w"
- "\300\365y\301\365z\301\365{\302\365}\302\364~\303\364\200\303\364\200\304"
- "\364\201\304\364\202\305\364\203\305\363\205\305\363\205\306\363\206\306"
- "\363\207\306\363\210\307\363\211\307\363\203\212\307\363\202\213\307\362"
- "\210\214\310\362\202\213\307\362\203\212\307\3633\211\307\363\210\307\363"
- "\207\306\363\206\306\363\205\306\363\205\305\363\203\305\363\202\305\364"
- "\201\304\364\200\304\364\200\303\364~\303\364}\302\364{\302\365z\301\365"
- "y\301\365w\300\365v\300\365t\277\366r\277\366q\276\366o\275\366m\275\366"
- "k\274\367i\274\367g\273\367f\272\367d\272\370b\271\370`\270\370^\270\370"
- "\\\267\371Z\266\371X\266\371V\265\371T\264\372R\264\372P\263\372M\262\372"
- "K\261\373I\261\373G\260\373E\257\373C\256\374A\256\374>\255\374<\254\374"
- ":\253\3758\253\3755\252\3753\251\376\2221\250\376\204\0\0\0\22`\270\370b"
- "\271\370d\272\370f\272\367g\273\367i\274\367k\274\367m\275\366o\275\366p"
- "\276\366q\276\366t\277\366u\300\365v\300\365x\301\365y\301\365{\302\365|"
- "\302\364\202~\303\364\11\200\303\364\200\304\364\201\304\364\202\304\364"
- "\203\305\363\204\305\363\205\305\363\205\306\363\206\306\363\202\207\306"
- "\363\202\210\307\363\203\211\307\363\204\212\307\363\203\211\307\363\202"
- "\210\307\363\202\207\306\363\11\206\306\363\205\306\363\205\305\363\204\305"
- "\363\203\305\363\202\304\364\201\304\364\200\304\364\200\303\364\202~\303"
- "\364'|\302\364{\302\365y\301\365x\301\365v\300\365u\300\365t\277\366q\276"
- "\366p\276\366o\275\366m\275\366k\274\367i\274\367g\273\367f\272\367d\272"
- "\370b\271\370`\270\370^\270\370]\267\370Z\267\371X\266\371V\265\371T\264"
- "\372R\264\372P\263\372N\262\372L\262\372J\261\373H\260\373F\257\373C\257"
- "\374A\256\374?\255\374=\254\374;\254\3759\253\3756\252\3754\251\375\2231"
- "\250\376\204\0\0\0\24^\270\370`\270\370b\271\370d\272\370f\272\367g\273\367"
- "i\273\367k\274\367l\275\366n\275\366p\276\366q\276\366s\277\366t\277\365"
- "v\300\365w\300\365y\301\365z\301\365{\302\365|\302\364\202~\303\364\1\200"
- "\303\364\202\200\304\364\4\201\304\364\202\305\364\203\305\363\204\305\363"
- "\202\205\305\363\1\205\306\363\203\206\306\363\206\207\306\363\203\206\306"
- "\363\1\205\306\363\202\205\305\363\4\204\305\363\203\305\363\202\305\364"
- "\201\304\364\202\200\304\364\1\200\303\364\202~\303\364)|\302\364{\302\365"
- "z\301\365y\301\365w\300\365v\300\365t\277\365s\277\366q\276\366p\276\366"
- "n\275\366l\275\366k\274\367i\273\367g\273\367f\272\367d\272\370b\271\370"
- "`\270\370^\270\370]\267\370Z\267\371X\266\371W\265\371U\265\371R\264\372"
- "P\263\372N\262\372M\262\372K\261\373H\260\373F\260\373D\257\373B\256\374"
- "@\255\374>\255\374;\254\3759\253\3757\252\3755\252\3753\251\376\2231\250"
- "\376\204\0\0\0\32]\267\370^\270\370`\270\370b\271\370d\272\370e\272\367g"
- "\273\367i\273\367j\274\367l\274\367n\275\366o\276\366q\276\366r\277\366t"
- "\277\366u\300\365v\300\365w\300\365y\301\365z\301\365{\302\365|\302\364}"
- "\302\364~\303\364\177\303\364\200\303\364\202\200\304\364\2\201\304\364\202"
- "\304\364\202\202\305\364\202\203\305\363\210\204\305\363\202\203\305\363"
- "\202\202\305\364\2\202\304\364\201\304\364\202\200\304\364.\200\303\364\177"
- "\303\364~\303\364}\302\364|\302\364{\302\365z\301\365y\301\365w\300\365v"
- "\300\365u\300\365t\277\366r\277\366q\276\366o\276\366n\275\366l\274\367j"
- "\274\367i\273\367g\273\367e\272\367d\272\370b\271\370`\270\370^\270\370]"
- "\267\370Z\267\371Y\266\371W\265\371U\265\371R\264\372Q\263\372O\263\372M"
- "\262\372K\261\373H\260\373G\260\373E\257\373C\256\374A\256\374>\255\374<"
- "\254\374:\253\3758\253\3756\252\3754\251\376\2241\250\376\204\0\0\0\24Z\267"
- "\371]\267\370^\270\370`\270\370b\271\370c\271\370e\272\367g\273\367h\273"
- "\367i\274\367l\274\367m\275\366o\275\366p\276\366q\276\366s\277\366t\277"
- "\366u\300\365v\300\365w\300\365\202y\301\365\202{\302\365\1|\302\364\202"
- "~\303\364\1\177\303\364\202\200\303\364\203\200\304\364\203\201\304\364\204"
- "\202\304\364\203\201\304\364\203\200\304\364\202\200\303\364\1\177\303\364"
- "\202~\303\364\1|\302\364\202{\302\365\202y\301\365(w\300\365v\300\365u\300"
- "\365t\277\366s\277\366q\276\366p\276\366o\275\366m\275\366l\274\367i\274"
- "\367h\273\367g\273\367e\272\367c\271\370b\271\370`\270\370^\270\370]\267"
- "\370Z\267\371Y\266\371W\265\371U\265\371S\264\372Q\263\372O\263\372M\262"
- "\372K\261\373I\261\373G\260\373E\257\373C\256\374A\256\374?\255\374=\254"
- "\374;\254\3759\253\3756\252\3754\251\3752\251\376\2241\250\376\204\0\0\0"
- "\31X\266\371Z\267\371\\\267\371^\270\370_\270\370b\271\370c\271\370d\272"
- "\367f\272\367g\273\367i\274\367k\274\367l\275\366n\275\366o\276\366p\276"
- "\366q\276\366s\277\366t\277\366u\300\365v\300\365w\300\365x\301\365y\301"
- "\365z\301\365\202{\302\365\2|\302\364}\302\364\203~\303\364\203\177\303\364"
- "\206\200\303\364\203\177\303\364\203~\303\364\2}\302\364|\302\364\202{\302"
- "\365,z\301\365y\301\365x\301\365w\300\365v\300\365u\300\365t\277\366s\277"
- "\366q\276\366p\276\366o\276\366n\275\366l\275\366k\274\367i\274\367g\273"
- "\367f\272\367d\272\367c\271\370b\271\370_\270\370^\270\370\\\267\371Z\267"
- "\371X\266\371W\265\371U\265\371S\264\372Q\263\372P\263\372M\262\372K\261"
- "\373I\261\373H\260\373F\257\373C\257\374A\256\374?\255\374=\254\374;\254"
- "\3759\253\3757\252\3755\252\3753\251\376\2251\250\376\204\0\0\0\21W\265\371"
- "X\266\371Z\267\371\\\267\371]\270\370_\270\370a\271\370b\271\370d\272\370"
- "e\272\367g\273\367i\273\367j\274\367k\274\367l\275\366n\275\366o\276\366"
- "\202q\276\366\3s\277\366t\277\366u\300\365\202v\300\365\1w\300\365\202y\301"
- "\365\202z\301\365\202{\302\365\203|\302\364\210}\302\364\203|\302\364\202"
- "{\302\365\202z\301\365\202y\301\365\1w\300\365\202v\300\365\3u\300\365t\277"
- "\366s\277\366\202q\276\366#o\276\366n\275\366l\275\366k\274\367j\274\367"
- "i\273\367g\273\367e\272\367d\272\370b\271\370a\271\370_\270\370]\270\370"
- "\\\267\371Z\267\371X\266\371W\265\371U\265\371S\264\372Q\263\372P\263\372"
- "M\262\372K\261\373J\261\373H\260\373F\257\373C\257\374B\256\374@\255\374"
- ">\255\374;\254\3759\253\3757\252\3755\252\3753\251\376\2261\250\376\204\0"
- "\0\0\13U\265\371W\265\371X\266\371Z\266\371\\\267\371]\270\370_\270\370`"
- "\270\370b\271\370c\271\370e\272\367\202g\273\367\14i\273\367j\274\367l\274"
- "\367m\275\366n\275\366o\276\366p\276\366q\276\366r\277\366t\277\366t\277"
- "\365u\300\365\202v\300\365\2w\300\365x\301\365\204y\301\365\203z\301\365"
- "\204{\302\365\203z\301\365\204y\301\365\2x\301\365w\300\365\202v\300\365"
- "\14u\300\365t\277\365t\277\366r\277\366q\276\366p\276\366o\276\366n\275\366"
- "m\275\366l\274\367j\274\367i\273\367\202g\273\367\34e\272\367c\271\370b\271"
- "\370`\270\370_\270\370]\270\370\\\267\371Z\266\371X\266\371W\265\371U\265"
- "\371S\264\372Q\263\372P\263\372M\262\372K\261\373J\261\373H\260\373F\257"
- "\373D\257\373B\256\374@\255\374>\255\374<\254\374:\253\3758\253\3756\252"
- "\3754\251\376\2271\250\376\204\0\0\0\26R\264\372U\265\371V\265\371X\266\371"
- "Z\266\371[\267\371]\267\370^\270\370_\270\370a\271\370b\271\370d\272\370"
- "e\272\367g\273\367h\273\367i\274\367j\274\367l\274\367m\275\366n\275\366"
- "o\275\366p\276\366\202q\276\366\5r\277\366s\277\366t\277\366t\277\365u\300"
- "\365\203v\300\365\202w\300\365\210x\301\365\202w\300\365\203v\300\365\5u"
- "\300\365t\277\365t\277\366s\277\366r\277\366\202q\276\366'p\276\366o\275"
- "\366n\275\366m\275\366l\274\367j\274\367i\274\367h\273\367g\273\367e\272"
- "\367d\272\370b\271\370a\271\370_\270\370^\270\370]\267\370[\267\371Z\266"
- "\371X\266\371V\265\371U\265\371R\264\372Q\263\372O\263\372M\262\372K\261"
- "\373J\261\373H\260\373F\260\373D\257\373B\256\374A\256\374>\255\374<\254"
- "\374:\253\3759\253\3756\252\3754\251\3752\251\376\2271\250\376\204\0\0\0"
- "\31Q\263\372R\264\372T\264\372V\265\371X\266\371Y\266\371Z\267\371\\\267"
- "\371]\270\370_\270\370`\270\370b\271\370c\271\370d\272\367f\272\367g\273"
- "\367h\273\367i\274\367j\274\367l\274\367l\275\366m\275\366o\275\366o\276"
- "\366p\276\366\202q\276\366\1r\277\366\202s\277\366\1t\277\366\202t\277\365"
- "\212u\300\365\202t\277\365\1t\277\366\202s\277\366\1r\277\366\202q\276\366"
- ")p\276\366o\276\366o\275\366m\275\366l\275\366l\274\367j\274\367i\274\367"
- "h\273\367g\273\367f\272\367d\272\367c\271\370b\271\370`\270\370_\270\370"
- "]\270\370\\\267\371Z\267\371Y\266\371X\266\371V\265\371T\264\372R\264\372"
- "Q\263\372O\263\372M\262\372K\261\373J\261\373H\260\373F\260\373D\257\373"
- "B\256\374A\256\374>\255\374<\254\374;\254\3759\253\3756\252\3754\251\375"
- "3\251\376\2301\250\376\204\0\0\0\35O\263\372P\263\372R\264\372T\264\372U"
- "\265\371W\265\371X\266\371Z\266\371[\267\371]\267\370^\270\370_\270\370a"
- "\271\370b\271\370c\271\370d\272\367f\272\367g\273\367h\273\367i\273\367j"
- "\274\367k\274\367l\274\367l\275\366m\275\366n\275\366o\275\366o\276\366p"
- "\276\366\204q\276\366\203r\277\366\204s\277\366\203r\277\366\204q\276\366"
- ",p\276\366o\276\366o\275\366n\275\366m\275\366l\275\366l\274\367k\274\367"
- "j\274\367i\273\367h\273\367g\273\367f\272\367d\272\367c\271\370b\271\370"
- "a\271\370_\270\370^\270\370]\267\370[\267\371Z\266\371X\266\371W\265\371"
- "U\265\371T\264\372R\264\372P\263\372O\263\372M\262\372K\261\373J\261\373"
- "H\260\373F\260\373D\257\373B\256\374A\256\374>\255\374=\254\374;\254\375"
- "9\253\3757\252\3755\252\3753\251\376\2311\250\376\204\0\0\0\23M\262\372N"
- "\262\372P\263\372R\264\372S\264\372U\265\371V\265\371X\266\371Y\266\371Z"
- "\267\371\\\267\371]\270\370_\270\370`\270\370a\271\370b\271\370c\271\370"
- "d\272\367e\272\367\202g\273\367\6h\273\367i\274\367j\274\367k\274\367l\274"
- "\367l\275\366\202m\275\366\1n\275\366\202o\275\366\202o\276\366\210p\276"
- "\366\202o\276\366\202o\275\366\1n\275\366\202m\275\366\6l\275\366l\274\367"
- "k\274\367j\274\367i\274\367h\273\367\202g\273\367!e\272\367d\272\367c\271"
- "\370b\271\370a\271\370`\270\370_\270\370]\270\370\\\267\371Z\267\371Y\266"
- "\371X\266\371V\265\371U\265\371S\264\372R\264\372P\263\372N\262\372M\262"
- "\372K\261\373I\261\373H\260\373F\257\373D\257\373B\256\374A\256\374>\255"
- "\374=\254\374;\254\3759\253\3757\252\3755\252\3753\251\376\2321\250\376\204"
- "\0\0\0\26K\261\373L\262\372N\262\372P\263\372Q\263\372R\264\372T\264\372"
- "U\265\371W\265\371X\266\371Z\266\371[\267\371]\267\370]\270\370_\270\370"
- "`\270\370a\271\370b\271\370c\271\370d\272\370e\272\367f\272\367\202g\273"
- "\367\5h\273\367i\273\367i\274\367j\274\367k\274\367\202l\274\367\202l\275"
- "\366\212m\275\366\202l\275\366\202l\274\367\5k\274\367j\274\367i\274\367"
- "i\273\367h\273\367\202g\273\367#f\272\367e\272\367d\272\370c\271\370b\271"
- "\370a\271\370`\270\370_\270\370]\270\370]\267\370[\267\371Z\266\371X\266"
- "\371W\265\371U\265\371T\264\372R\264\372Q\263\372P\263\372N\262\372L\262"
- "\372K\261\373I\261\373G\260\373F\257\373D\257\373B\256\374A\256\374>\255"
- "\374=\254\374;\254\3759\253\3757\252\3755\252\3754\251\376\2331\250\376\204"
- "\0\0\0\20H\260\373J\261\373L\262\372M\262\372O\263\372P\263\372R\264\372"
- "S\264\372U\265\371V\265\371X\266\371Y\266\371Z\266\371[\267\371]\267\370"
- "]\270\370\202_\270\370\1a\271\370\202b\271\370\4d\272\370d\272\367e\272\367"
- "f\272\367\202g\273\367\202h\273\367\1i\273\367\202i\274\367\204j\274\367"
- "\204k\274\367\204j\274\367\202i\274\367\1i\273\367\202h\273\367\202g\273"
- "\367\4f\272\367e\272\367d\272\367d\272\370\202b\271\370\1a\271\370\202_\270"
- "\370\34]\270\370]\267\370[\267\371Z\266\371Y\266\371X\266\371V\265\371U\265"
- "\371S\264\372R\264\372P\263\372O\263\372M\262\372L\262\372J\261\373H\260"
- "\373G\260\373F\257\373C\257\374B\256\374@\255\374>\255\374=\254\374;\254"
- "\3759\253\3757\252\3755\252\3754\251\376\2341\250\376\204\0\0\0\26F\260\373"
- "H\260\373J\261\373K\261\373M\262\372N\262\372P\263\372Q\263\372R\264\372"
- "T\264\372U\265\371V\265\371X\266\371Y\266\371Z\266\371[\267\371\\\267\371"
- "]\270\370^\270\370_\270\370`\270\370a\271\370\202b\271\370\4c\271\370d\272"
- "\370d\272\367e\272\367\202f\272\367\204g\273\367\210h\273\367\204g\273\367"
- "\202f\272\367\4e\272\367d\272\367d\272\370c\271\370\202b\271\370!a\271\370"
- "`\270\370_\270\370^\270\370]\270\370\\\267\371[\267\371Z\266\371Y\266\371"
- "X\266\371V\265\371U\265\371T\264\372R\264\372Q\263\372P\263\372N\262\372"
- "M\262\372K\261\373J\261\373H\260\373F\260\373E\257\373C\257\374A\256\374"
- "@\255\374>\255\374<\254\374;\254\3759\253\3757\252\3755\252\3754\251\376"
- "\2351\250\376\204\0\0\0\11D\257\373F\260\373H\260\373I\261\373K\261\373L"
- "\262\372M\262\372O\263\372P\263\372\202R\264\372\12T\264\372U\265\371V\265"
- "\371X\266\371Y\266\371Z\266\371[\267\371\\\267\371]\267\370]\270\370\202"
- "_\270\370\2`\270\370a\271\370\203b\271\370\1c\271\370\202d\272\370\202d\272"
- "\367\212e\272\367\202d\272\367\202d\272\370\1c\271\370\203b\271\370\2a\271"
- "\370`\270\370\202_\270\370\12]\270\370]\267\370\\\267\371[\267\371Z\266\371"
- "Y\266\371X\266\371V\265\371U\265\371T\264\372\202R\264\372\23P\263\372O\263"
- "\372M\262\372L\262\372K\261\373I\261\373H\260\373F\260\373D\257\373C\256"
- "\374A\256\374@\255\374>\255\374<\254\374;\254\3759\253\3757\252\3755\252"
- "\3754\251\376\2361\250\376\204\0\0\0\20B\256\374D\257\373F\257\373G\260\373"
- "H\260\373J\261\373K\261\373M\262\372N\262\372O\263\372P\263\372R\264\372"
- "S\264\372T\264\372U\265\371V\265\371\202X\266\371\7Y\266\371Z\267\371[\267"
- "\371\\\267\371]\267\370]\270\370^\270\370\202_\270\370\202`\270\370\1a\271"
- "\370\206b\271\370\204c\271\370\206b\271\370\1a\271\370\202`\270\370\202_"
- "\270\370\7^\270\370]\270\370]\267\370\\\267\371[\267\371Z\267\371Y\266\371"
- "\202X\266\371\31V\265\371U\265\371T\264\372S\264\372R\264\372P\263\372O\263"
- "\372N\262\372M\262\372K\261\373J\261\373H\260\373G\260\373F\257\373D\257"
- "\373B\256\374A\256\374?\255\374>\255\374;\254\375:\253\3759\253\3756\252"
- "\3755\252\3754\251\376\2371\250\376\204\0\0\0\7A\256\374B\256\374C\257\374"
- "E\257\373F\260\373H\260\373I\261\373\202K\261\373\2M\262\372N\262\372\202"
- "P\263\372\202R\264\372\4T\264\372U\265\371V\265\371W\265\371\202X\266\371"
- "\4Z\266\371Z\267\371[\267\371\\\267\371\202]\267\370\1]\270\370\202^\270"
- "\370\204_\270\370\210`\270\370\204_\270\370\202^\270\370\1]\270\370\202]"
- "\267\370\4\\\267\371[\267\371Z\267\371Z\266\371\202X\266\371\4W\265\371V"
- "\265\371U\265\371T\264\372\202R\264\372\202P\263\372\2N\262\372M\262\372"
- "\202K\261\373\17I\261\373H\260\373F\260\373E\257\373C\257\374B\256\374A\256"
- "\374>\255\374=\254\374;\254\375:\253\3758\253\3756\252\3755\252\3753\251"
- "\376\2401\250\376\204\0\0\0\15>\255\374@\255\374A\256\374C\256\374D\257\373"
- "F\257\373G\260\373H\260\373I\261\373K\261\373L\262\372M\262\372N\262\372"
- "\202P\263\372\202R\264\372\1S\264\372\202U\265\371\2V\265\371W\265\371\202"
- "X\266\371\3Y\266\371Z\266\371Z\267\371\202[\267\371\202\\\267\371\202]\267"
- "\370\212]\270\370\202]\267\370\202\\\267\371\202[\267\371\3Z\267\371Z\266"
- "\371Y\266\371\202X\266\371\2W\265\371V\265\371\202U\265\371\1S\264\372\202"
- "R\264\372\202P\263\372\24N\262\372M\262\372L\262\372K\261\373I\261\373H\260"
- "\373G\260\373F\257\373D\257\373C\256\374A\256\374@\255\374>\255\374<\254"
- "\374;\254\3759\253\3758\253\3756\252\3754\251\3753\251\376\2411\250\376\204"
- "\0\0\0\220R\360R\2K\343\241:\225\371\3428\211\376\204\0\0\0\221H\352H\1B"
- "\327\216\3421z\376\204\0\0\0\222>\343>\1-~\352\341+i\376\204\0\0\0\2224\334"
- "4\342$X\376\204\0\0\0\1\40\241\40\220*\325*\1'\256S\341\34F\376\1\25""5\300"
- "\204\0\0\0\2\2\16\2\27\234\27\216\37\316\37\2\34\240>\26""9\354\340\25""5"
- "\376\2\20(\300\1\4\21\377\0\0\0\363\0\0\0",
-};
-
+/* GIMP RGB C-Source image dump 1-byte-run-length-encoded (rotation_orientation_horz.c) */ + +#include "image.h" + +static const nv_image_t rotation_orientation_horiz_image = { + 120, 90, 3, 0, + "\7\345\345\345\334\313\312\336\327\326\345\345\345\342\342\342\345\345\345" + "\340\340\340\202\345\345\345\1\343\343\343\203\345\345\345\3\342\342\342" + "\345\345\345\343\343\343\203\345\345\345\17\320\322\322\254\312\311\271\305" + "\325\334\334\333\276\306\312\331\332\331\327\327\327\311\311\311\340\340" + "\340\310\310\317\251\260\266\320\321\330\325\326\327\316\322\324\341\341" + "\341\301\345\345\345\3\341\341\341\344\344\344\330\330\330\202\345\345\345" + "\1\342\342\342\202\345\345\345\202\337\337\337-\345\345\345\334\334\334\343" + "\343\343\336\336\336\345\345\345\340\340\340\341\341\341\345\345\345\310" + "\310\310\307\307\307\345\345\345\336\332\332\265<6\262US\315\315\315\225" + "\225\225\242\242\242\214\214\214\273\273\273\225\225\225\251\251\251\231" + "\231\231\263\263\263\345\345\345\261\261\261\247\247\247\242\242\242\254" + "\254\254\237\237\237\311\311\311\266\277\305u\232\225\204\214\235\320\301" + "\251\264\247\202\300\276\262\277\276\274\312\312\315\321\321\321\270\270" + "\277\210\235\252\277\301\312\227\265\322\252\242\235\330\330\330\301\345" + "\345\345\10\342\342\342\344\344\344\267\267\267\237\237\237\301\301\301\226" + "\226\226\257\257\257\254\254\254\202\270\270\270\21\342\342\342\274\274\274" + "\275\275\275\223\223\223\264\264\264\213\213\213\204\204\204\343\343\343" + "\234\234\234\265\265\265\345\345\345\340\340\340\330\325\325\322\312\312" + "\335\335\335\316\316\316\305\305\305\202\325\325\325\31\320\320\320\324\324" + "\324\326\326\326\324\324\324\340\340\340\335\335\335\324\324\324\325\325" + "\325\326\326\326\324\324\324\331\331\331\337\337\337\277\303\307\301\301" + "\305\333\332\331\317\305\263\323\317\310\333\332\327\306\304\305\311\312" + "\313\327\327\330\266\303\320\326\326\326\301\306\316\252\254\273\302\340" + "\340\340\3\334\334\334\340\340\340\334\334\334\202\325\325\325\6\331\331" + "\331\323\323\323\277\277\277\320\320\320\317\317\317\327\327\327\202\334" + "\334\334\15\325\325\325\334\334\334\331\331\331\333\333\333\340\340\340\307" + "\307\307\315\315\315\340\340\340$<r%=r%=s&>t'?t\205'?u\23(@u'@u(@u(Av)Aw" + ")Bw*Bx+Cy+Dy,Dz,Ez-E{-F|.F}.G}/G~/H\1770H\1770I\200\2021I\200\33""2J\201" + "2J\2023K\2034L\2044M\2055N\2066O\2077P\2108Q\2119S\2139T\214:U\215;U\216" + ";V\216<V\217<W\220=X\220=X\221>Y\222>Y\223?Z\223@Z\224@[\224A[\225A\\\226" + "B\\\226B]\227\202C^\230\2D_\231D_\232\202E`\233\12Fa\234Fb\234Gb\235Gc\236" + "Hc\237Hd\237Ie\240Ie\241Jf\241Kf\242\202Lg\243\7Mh\244Mh\245Ni\245Nj\246" + "Oj\247Ok\247Pk\250\202Ql\251\10Rm\252Rn\253Sn\253So\254To\255Tp\255Up\256" + "Uq\257\233Vq\257\5\36""7o\37""7p\37""8p\40""9q\40""9r\202!:s\6\";t\"<u#<" + "u#=v$=w$>w\204%>w\203%?w\5&@x&@y'Az(Az(B{\202)C|\2*D}*D~\202+E\177&,E\200" + ",F\200-F\200.G\201.G\202/H\202/I\2030I\2040J\2051J\2051K\2062L\2073M\210" + "3N\2114O\2125P\2136Q\2157R\2168S\2178T\2209U\221:V\223;W\223;X\224<X\225" + "<Y\226=Y\226>Z\227>[\230?[\230?\\\231@\\\232@]\233A^\233A^\234B_\235C_\235" + "C`\236\202Da\237\26Eb\240Eb\241Fc\242Gc\242Hd\243He\244Ie\244If\245Jg\246" + "Kg\247Kh\247Lh\250Li\251Mi\251Mj\252Nk\253Nk\254Ol\254Ol\255Pm\256Qm\256" + "Qn\257\233Ro\260\23\36""6o\36""7o\37""8p\37""8q\40""9q\40""9r!:s!;s\";t#" + "<u#<v$=v$>w%>x%?x&?y&@z'@{'A{\205(B|\1)B|\202)C|))C}*D}*E~+E\177,E\177,E" + "\200-F\200-F\201.G\201.H\202/H\203/I\2030I\2040J\2051K\2052K\2062L\2073L" + "\2103M\2104N\2114N\2125O\2125O\2136P\2146Q\2157Q\2158R\2168S\2179T\221:U" + "\222;V\223<W\224=X\225=Z\227>[\230?\\\231@]\232A]\233A^\233B^\234B_\235\202" + "C`\236\17Da\237Da\240Eb\240Eb\241Fc\242Gd\243Hd\243Ie\244Ie\245Jf\245Jg\246" + "Kg\247Kh\247Lh\250Li\251\202Mj\252\5Nk\253Ok\254Ol\254Pl\255Pm\256\202Qn" + "\257\232Ro\260\10\35""6n\36""7o\36""7p\37""8p\37""8q\40""9r!:r!:s\202\";" + "t\5#<u#=v$=w$>w%>x\202&?y\10'@z'A{(A{(B|)B})C~*D~*D\177\202+E\200\1+F\200" + "\206,F\200;-F\200-G\201.G\202.H\202/H\203/I\2040J\2041J\2051K\2062K\2062" + "L\2073M\2103M\2114N\2114N\2125O\2136P\2136P\2147Q\2157Q\2168R\2168S\2179" + "S\2209T\220:T\221:U\222;U\222<V\223<W\224=W\225>Y\226?Z\227?[\231@\\\232" + "A]\233B_\235C`\236Da\237Eb\240Eb\241Fc\241Gc\242Hd\243He\243Ie\244If\245" + "Jf\246Jg\246Kg\247Lh\250Li\250Mi\251Mj\252Nj\252Nk\253Ol\254Ol\255Pm\255" + "Pm\256\202Qn\257\231Ro\260\7\34""6n\35""6n\36""7o\37""7p\37""8p\40""9q\40" + """9r\202!:s\30\";t\"<u#<u#=v$=w$>x%>x&?y&@z'@z'A{(B|(B})C})C~*D\177+D\177" + "+E\200,F\200,G\200-H\201-H\202.I\203.J\203\205/J\204\2030I\204\3""0J\205" + "1K\2051K\206\2022L\207\5""3M\2103M\2114N\2115O\2125O\213\2026P\214\5""7Q" + "\2157Q\2168R\2178S\2179S\220\202:T\221\34;U\222;V\223<V\223<W\224=W\225=" + "X\226>Y\226>Y\227?Z\230@Z\230@[\231A\\\232B]\233C^\235C_\236Ea\237Fb\241" + "Gc\242Hd\243Ie\244Jf\245Jf\246Kg\247Kh\247Lh\250Li\251Mi\251Mj\252\202Nk" + "\253\5Ol\254Pl\255Pm\256Qn\256Qn\257\231Ro\260\32\34""5m\34""6n\36""6o\36" + """7o\37""8p\37""8q\40""9q\40""9r!:s!;t\":p*@r#<v$=v$>w%>x%?y&?y&@z'@{'A{" + "(B|)B})C}*C~*D\177\202+E\200\5,F\200,G\201-H\201-I\202.I\203\202/J\204\11" + """0K\2050K\2061L\2061M\2072M\2102N\2103N\2102N\2103N\210\2043M\210\26""4" + "N\2114N\2125O\2125O\2136P\2146Q\2157Q\2158R\2168R\2179S\2209T\220:T\221:" + "U\222;U\222;V\223<V\224<W\224=X\225>X\226>Y\226?Y\227?Z\230\202@[\231\5A" + "\\\232A\\\233B]\233B^\234C^\235\202D_\236\17E`\237Fa\240Fb\242Gd\243Ie\244" + "Jf\246Kg\247Li\250Mj\252Nj\252Nk\253Ok\254Ol\254Pm\255Pm\256\202Qn\257\230" + "Ro\260\33\33""5m\34""5m\35""6n\36""7o\36""7p\37""8p\37""8q\40""9rGX\200\203" + "\222\247\227\260\304\213\232\254$<s#=v$=w$>w%>x%?y&?z'@z'A{(A{(B|)B})C~*" + "D~*D\177\202+E\200\22,F\200-H\201-H\202.I\202.I\203/J\204/K\2050K\2050L\206" + "1L\2071M\2072M\2103N\2113O\2114O\2124P\2135P\2135Q\214\2076Q\215+7Q\2157" + "Q\2168R\2168R\2179S\2209T\220:T\221:U\222;V\223<V\223<W\224=W\225=X\225>" + "X\226>Y\227?Z\227?Z\230@[\231@[\232A\\\232B\\\233B]\234C^\234C^\235D_\236" + "D`\237E`\237Ea\240Ea\241Eb\241Fb\242Gc\243Gd\243Hd\244If\246Jg\247Kh\250" + "Mi\252Nj\253Ol\254Pm\256Qn\257Rn\260\227Ro\260$\33""4l\33""5m\34""6n\35""6" + "n\36""7o\37""8p\37""8q\40""9qmy\222\215\301\345\236\310\350\302\314\324\177" + "\207\234#<u#=v$=w%>x%?x&?y&@z'@z'A{(B|(B})C})C~*D\177+D\177+E\200,F\200," + "G\200-H\201-H\202.I\203.J\203/J\204\2020K\205\10""1L\2061M\2072M\2072N\210" + "3N\2113O\2124O\2124P\213\2025Q\214\5""6R\2157R\2167S\2178T\2178T\220\204" + "9U\221\205:U\221\34;U\222;V\223<V\223<W\224=W\225=X\226>Y\226>Y\227?Z\230" + "@Z\230@[\231A\\\232A\\\233B]\233B]\234C^\235C_\235D_\236D`\237E`\237Ea\240" + "Ea\241Fb\242Fc\242Gc\243Gd\244Hd\244He\245\202If\246\7Jg\247Kg\250Kh\251" + "Li\252Mj\253Nk\254Ol\255\202Pm\256\1Qn\257\222Ro\260\34\33""4l\33""5m\34" + """5m\35""6n\36""6o\36""7o\37""8p\37""8q{\203\227\247\304\331\271\302\311" + "\310\313\311\207\215\231#<u#<v$=v$>w%>x%?x&?y&@z'@{'A{(B|)B})C}*D~*D\177" + "\202+E\200\26,F\200,G\201-H\201-I\202.I\203/J\203/J\2040K\2050L\2061L\206" + "1M\2072M\2102N\2103N\2113O\2124P\2135P\2135Q\2146Q\2156R\2157S\2167S\217" + "\2028T\220\7""9U\2219V\222:V\222;W\223;W\224<X\224<X\225\207=Y\226\4>X\226" + ">Y\227?Y\227?Z\230\202@[\231\5A\\\232A\\\233B]\233B^\234C^\235\202D_\236" + "\1E`\237\202Ea\240\14Eb\241Fb\242Fc\242Gc\243Gd\244He\245Ie\245If\246Jf\247" + "Jg\247Kh\250Kh\251\202Li\252\206Mj\253\1Nk\254\202Ol\255\1Pm\256\202Qn\257" + "\212Ro\260\35\32""4k\33""4l\33""5m\34""5m\35""6n\36""7o\36""7p\37""8pox\214" + "\234\234\235Ybwft\222Vh\201\";u#<u#=v$=w$>w%>x%?y&@y'@z'A{(A|(B|)C})C~*D" + "~*D\177\202+E\200\20,F\200-H\201-H\202.I\202.I\203/J\204/K\2040K\2050L\206" + "1L\2071M\2072N\2103N\2113O\2114O\2124P\213\2025Q\214\27""6R\2156R\2167S\216" + "7S\2178T\2209U\2209U\221:V\222:V\223;W\223;X\224<X\225<Y\225=Y\226=Z\227" + ">Z\227?[\230?\\\231@\\\232@]\232A]\233@]\232A]\232\202A\\\232\30A\\\233A" + "\\\232A]\233B]\234C^\234C^\235D_\236D`\237E`\237Ea\240Ea\241Eb\241Fb\242" + "Gc\243Gd\243Hd\244He\245Ie\246If\246Jg\247Jg\250Kh\250Lh\251Li\252\216Mj" + "\253\1Nk\254\202Ol\255\1Pm\256\202Qn\257\202Ro\260\13\32""3k\32""4l\33""5" + "l\33""5m\34""6n\35""6n\36""7o\37""7p\37""8q\40""8p\40""9r\202!:s#\";t\"<" + "u#<u#=v$=w%>x%?x&?y&@z'@z'A{(B|(B})C})C~*D\177+D\177+E\200,F\200,G\200-H" + "\201-H\202.I\203.J\203/J\204/K\2050K\2051L\2061M\2072M\2102N\2103N\2113O" + "\2124P\2124P\213\2025Q\214\5""6R\2157R\2167S\2178T\2178T\220\2029U\221\5" + ":V\222:W\223;W\224;X\224<X\225\202=Y\226\13>Z\227>[\230?[\230?\\\231@\\\232" + "@]\233A^\233A^\234B_\235C_\235C`\236\203Da\237\202D`\237\204E`\237\17Ea\240" + "Eb\241Fb\242Fc\242Gc\243Gd\244Hd\244He\245If\246If\247Jg\247Kg\250Kh\251" + "Li\251Li\252\224Mj\253\30Nk\254\31""3j\32""4k\32""4l\33""5m\34""5m\35""6" + "n\36""7o>Py5JwAT\177>Q}>Q~BT~<P}\";t#<u#<v$=v$>w%>x%?y&?y&@z\202'A{\5(B|" + ")B})C}*C~*D\177\202+E\200\5,F\200,G\201-H\201.I\202.I\203\202/J\204\22""0" + "K\2050L\2061L\2061M\2072M\2102N\2103N\2113O\2124P\2135P\2135Q\2146Q\2156" + "R\2157S\2167S\2178T\2178T\2209U\221\202:V\222\17;W\223;W\224<X\224<Y\225" + "=Y\226=Z\227>Z\227>[\230?[\231?\\\231@]\232A]\233A^\234B^\234B_\235\202C" + "`\236\7Da\237Da\240Eb\240Ec\241Fc\242Gd\243Hd\243\203Hd\244\202Hd\243\12" + "Gd\244Gd\243Gd\244He\245Ie\245If\246Jf\247Jg\250Kh\250Kh\251\202Li\252\224" + "Mj\253\37\31""3j\32""3k\32""4k\33""4l\33""5m\34""6m\35""6n8Kx8Ku=LnFUwIX" + "zBRv5Go\";t\";u#<u#=v$=w$>w%>x&?y&@y'@z'A{(A|(B|)C})C~*D~*D\177\202+E\200" + "\20,F\200-H\201-H\202.I\202.I\203/J\204/K\2040K\2050L\2061L\2071M\2072N\210" + "3N\2113O\2114O\2124P\213\2025Q\214\5""6R\2156R\2167S\2167S\2178T\220\202" + "9U\221\30:V\222:V\223;W\223;X\224<X\225<Y\225=Y\226=Z\227>Z\230?[\230?\\" + "\231@\\\232@]\232A]\233A^\234B_\234B_\235C`\236D`\237Da\237Eb\240Eb\241F" + "c\241Gc\242\202Hd\243\5Ie\244If\245Jf\246Jg\246Kh\247\203Lh\250\204Kh\250" + "\4Kg\250Kh\250Kh\251Li\252\224Mj\253\15\31""2i\31""3j\32""3k\32""4l\33""5" + "l\33""5m\34""6n\35""6n\36""7o\37""8p\37""8q\40""9q\40""9r\202!:s*\";t\"<" + "u#<u$=v$=w%>x%?x&?y&@z'@z'A{(B|(B})C}*C~*D\177+D\177+E\200,F\200,G\201-H" + "\201-H\202.I\203.J\203/J\204/K\2050K\2051L\2061M\2072M\2102N\2103N\2113O" + "\2124O\2124P\2135Q\2146Q\2146R\2157R\2167S\2178T\2178T\220\2029U\221&:V\222" + ":W\223;W\224;X\224<X\225=Y\226=Z\226>Z\227>[\230?[\230?\\\231@\\\232@]\233" + "A^\233A^\234B_\235C_\235C`\236Da\237Da\240Eb\240Eb\241Fc\242Gd\242Hd\243" + "He\244Ie\244Jf\245Jf\246Kg\247Kh\247Lh\250Li\251Mj\251Mj\252Nk\253Nk\254" + "Ol\254\202Ol\255\202Ol\254\2Ol\255Nk\254\221Mj\253\14\30""2i\31""2j\31""3" + "j\32""4k\32""4l\33""5m\34""5m\34""6n\36""6o\36""7o\37""8p\37""8q\202\40""9" + "r\1!:s\202\";t\17#<u#<v$=v$>w%>x%?y&?y&@z'A{(A{(B|)B})C}*D~*D\177\202+E\200" + "\26,F\200,G\201-H\201-I\202.I\203/J\203/J\2040K\2050L\2061L\2061M\2072M\210" + "2N\2103N\2114O\2124P\2135P\2135Q\2146Q\2156R\2157S\2167S\217\2028T\220\22" + """9U\2219V\222:V\222;W\223;W\224<X\224<Y\225=Y\226=Z\227>Z\227>[\230?[\231" + "@\\\231@]\232A]\233A^\234B^\234B_\235\202C`\236\5Da\237Da\240Eb\241Fc\241" + "Fc\242\202Hd\243\17Ie\244Ie\245Jf\245Jg\246Kg\247Kh\250Li\250Li\251Mj\252" + "Nj\252Nk\253Ok\254Ol\255Pm\255Pm\256\202Qn\257\203Ro\260\2Qn\257Pm\256\202" + "Ol\255\1Nk\254\212Mj\2533\30""1i\31""2i\31""3j\32""3k\32""4k\33""4l\33""5" + "m\34""6m\35""6n\36""7o\36""7p\37""8p\40""9q\40""9r!:r!:s\";t\";u#<u#=v$=" + "w%>w%>x&?y&@y'@z'A{(A|(B|)B})C~*D~*D\177+E\200,E\200,F\200-H\201-H\202.I" + "\202.I\203/J\204/K\2050K\2050L\2061L\2072M\2072N\2103N\2113O\2124O\2124P" + "\213\2025Q\214\5""6R\2156R\2167S\2167S\2178T\220\2029U\221*:V\222:V\223;" + "W\223;X\224<X\225<Y\225=Y\226=Z\227>[\230?[\230?\\\231@\\\232@]\232A]\233" + "A^\234B_\234B_\235C`\236D`\237Da\237Eb\240Eb\241Fc\241Gc\242Hd\243He\244" + "Ie\244If\245Jf\246Kg\246Kh\247Lh\250Li\250Mi\251Mj\252Nj\253Nk\253Ol\254" + "Ol\255Pm\256Qm\256Qn\257\212Ro\260\2Qn\257Pm\256\202Ol\255\1Nk\254\203Mj" + "\253\17\30""1h\30""2i\31""2j\31""3j\32""3k\32""4l\33""5l\33""5m\34""6n\35" + """6n\36""7o\37""7p\37""8q\40""9q\40""9r\202!:s\31\";t\"<u#<v$=v$=w%>x%?x" + "&?y&@z'@z'A{(B|(B})C}*C~*D\177+E\177+E\200,F\200,G\200-H\201-H\202.I\203" + ".J\203/J\204\2020K\205\17""1L\2061M\2072M\2102N\2103N\2113O\2124P\2124P\213" + "5Q\2146Q\2146R\2157R\2167S\2178T\2178T\220\2029U\221*:V\222:W\223;W\224<" + "X\224<X\225=Y\226=Z\226>Z\227>[\230?[\231?\\\231@]\232@]\233A^\233A^\234" + "B_\235C_\235C`\236Da\237Da\240Eb\240Eb\241Fc\242Gd\242Hd\243Ie\244Ie\245" + "Jf\245Jg\246Kg\247Kh\247Lh\250Li\251Mi\251Mj\252Nk\253Ok\254Ol\254Pl\255" + "Pm\256Qn\256Qn\257\220Ro\260\13Qn\257\27""1h\30""1h\30""2i\31""2j\31""3j" + "\32""4k\33""4l\33""5m\34""5m\35""6n\202\36""7o\2\37""8p\37""8q\202\40""9" + "r\1!:s\202\";t\10#<u#<v$=v$>w%>x%?y&?y&@z\202'A{\5(B|)B})C}*C~*D\177\202" + "+E\200\5,F\200,G\201-H\201.I\202.I\203\202/J\204\13""0K\2050L\2061L\2061" + "M\2072M\2102N\2103O\2114O\2124P\2135P\2135Q\214\2026R\215\2""7S\2167S\217" + "\2028T\220\22""9U\2219V\222:V\222;W\223;W\224<X\224<Y\225=Y\226=Z\227>Z\227" + ">[\230?\\\231@\\\231@]\232A]\233A^\234B^\234B_\235\202C`\236\5Da\237Da\240" + "Eb\241Fc\241Fc\242\202Hd\243\17Ie\244If\245Jf\245Jg\246Kg\247Kh\250Li\250" + "Mi\251Mj\252Nj\252Nk\253Ok\254Ol\255Pm\255Pm\256\202Qn\257\220Ro\2605\27" + """0g\27""1h\30""1i\31""2i\31""3j\32""3k\32""4k\33""4l\33""5m\34""6n\35""6" + "n\36""7o\36""7p\37""8p\40""9q\40""9r!:r!:s\";t\";u#<u#=v$=w$>w%>x&?y&@z'" + "@z'A{(A|(B|)C})C~*D~*D\177+E\200,E\200,G\200-H\201-H\202.I\202.I\203/J\204" + "/K\2050K\2050L\2061L\2072M\2072N\2103N\2113O\2114O\2124P\213\2025Q\214\5" + """6R\2156R\2167S\2168S\2178T\220\2029U\221\17:V\222:V\223;W\223;X\224<X\225" + "<Y\225=Y\226>Z\227>[\230?[\230?\\\231@\\\232@]\232A]\233A^\234\202B_\235" + "\22C`\236D`\237Da\237Eb\240Eb\241Fc\242Gc\242Hd\243He\244Ie\244If\245Jf\246" + "Kg\246Kg\247Lh\250Li\251Mi\251Mj\252\202Nk\253\5Ol\254Ol\255Pm\255Pm\256" + "Qn\257\220Ro\260\202\27""0g\15\27""0f\30""0g\30""1g\31""1g\31""1h\32""2h" + "\32""2i\33""2h\33""4j\33""3j\34""5l\35""5l\35""6m\202\36""7nX\37""8o\37""8" + "p\40""9q\40:q!:r!;s\";s#<t#=u$=v$>w%?x&@y'@z'A{(B|)C}*D~+D\177+E\200,F\200" + ",G\201-H\201-H\202.I\203.J\203/J\2040K\2050K\2061L\2061M\2072M\2102N\210" + "3N\2113O\2124P\2124P\2135Q\2146Q\2156R\2157R\2167S\2178T\2178T\2209U\221" + "9U\222:V\222:W\223;W\224;X\224<X\225=Y\226=Z\226>Z\227>[\230?[\231?\\\231" + "@]\232@]\233A^\233B^\234B_\235C_\235C`\236Da\237Da\240Eb\240Eb\241Fc\242" + "Gd\242Hd\243Ie\244Ie\245Jf\245Jf\246Kg\247Kh\247Lh\250Li\251Mj\251Mj\252" + "Nk\253Ok\254Ol\254Pl\255Pm\256Qn\256Qn\257\217Ro\260\23\25-b\26-b\26.c\27" + ".c\27/d\30/e\30""0e\31""1f|xt\315\257z\225\204l\267\231j4Ce\33""4j\34""5" + "k\34""5l\35""6m\35""7m\36""7n\202\37""8o\26\40""9p\40""9q!:q!;r\";s\"<t#" + "<t#=u$>v%>v%?w&?x&@y'Ay'Az(B{)C|*D~+E\177,G\200-H\201.I\203\202/J\204\13" + """0K\2050L\2061L\2061M\2072M\2102N\2113O\2114O\2124P\2135P\2135Q\214\202" + "6R\215\2""7S\2167S\217\2028T\220\1""9U\221\202:V\222\17;W\223;W\224<X\225" + "<Y\225=Y\226=Z\227>Z\227>[\230?\\\231@\\\232@]\232A]\233A^\234B_\234B_\235" + "\202C`\236\5Da\237Da\240Eb\241Fc\241Fc\242\202Hd\243\17Ie\244If\245Jf\246" + "Jg\246Kg\247Kh\250Li\250Mi\251Mj\252Nj\252Nk\253Ol\254Ol\255Pm\255Pm\256" + "\202Qn\257\213Ro\260\33Qn\257Pm\256Ol\255\25,a\25-a\26-b\26.c\27.d\30/d\30" + """0e\31""1g\200zu\333\271\206\321\264\210\336\300\222\223\207{\33""4k\34" + """5l\34""6l\35""6m\36""7n\36""8o\37""8o\40""9p\40""9q!:q!;r\202\";s\11\"" + "<t#<t#=u$=u$>v%>w%?w&@x&@y\202'Az\22(B{)B|)C|*D}*D~+E~+E\200-G\200.H\202" + "/J\2040L\2061L\2072M\2072N\2103N\2113O\2114O\2124P\213\2025Q\214\5""6R\215" + "6R\2167S\2168S\2178T\220\2029U\221\17:V\222:V\223;W\223;X\224<X\225<Y\225" + "=Y\226>Z\227>[\230?[\230?\\\231@\\\232@]\232A^\233A^\234\202B_\235\1C`\236" + "\202Da\237\3Eb\240Eb\241Fc\241\203Gc\242\203Fb\241\15Fb\242Fc\243Gd\243H" + "e\245Jg\247Li\251Nj\253Nk\253Ol\254Ol\255Pm\256Qm\256Qn\257\205Ro\260\202" + "Qn\257\3Pm\256Ol\255Nk\254\204Mj\253\23\24,`\25,a\26-b\26.c\27""0f\30""1" + "h\31""2j\31""3jjjs\361\312\223\177vlle_HIU\36""6n\36""7o\37""8p\37""8q\40" + """9q\40""9r\202!:s\11\";t\"<u#<v$=v$>w%>x%?x&?y&@y\202&@z\202'Az\2'A{(A{" + "\203(B{\4)C|)C}*D}*D~\202+E\177\22,E\200-F\200-F\201.H\2020J\2041L\2072N" + "\2103N\2113O\2124P\2124P\2135Q\2146Q\2156R\2157S\2167S\2178T\2178T\220\202" + "9U\221\20:V\222:W\223;W\224<X\224<X\225=Y\226=Z\226>Z\227>[\230?[\231?\\" + "\231@]\232@]\233A^\233B^\234B_\235\202C`\236\202Da\237\23D`\237C_\236C^\235" + "C_\235D_\236E`\237E`\240Ea\240Eb\241Fb\242Fc\242Gc\243Gd\244He\245If\246" + "Kh\250Nj\253Ol\254Pl\255\204Pm\256\2Ol\255Nk\254\212Mj\253\16\24+`\25,a\26" + ".d\27""0g\27""1h\30""1h\30""2i\31""2jafv\237\204a\217_?\235jEqK?\35""6n\202" + "\36""7o\5\37""8p\37""8q\40""9r!:r!:s\202\";t\17#<u#<v$=w$>w%>x%?y&?y&@z'" + "A{(A{(B|)B})C~*D~*D\177\203+E\200\4+F\200+E\177+F\177+E\177\202,E\200\17" + "-F\200-G\201.G\201.H\2020I\2042M\2073O\2114O\2124P\2135P\2135Q\2146R\215" + "6R\2167S\2167S\217\2028T\220\1""9U\221\202:V\222\15;W\223;X\224<X\225<Y\225" + "=Y\226=Z\227>Z\227>[\230?\\\231@\\\232@]\232A]\233A^\234\202B^\234\7A]\233" + "A\\\233A\\\232A\\\233B]\234C^\234C^\235\202D_\236\1E`\237\202Ea\240\14Eb" + "\241Fb\242Fc\243Gc\243Hd\244He\245Ie\245If\246Jg\247Jg\250Kh\250Kh\251\202" + "Li\252\214Mj\253\7\24+_\24,b\26/f\26""0f\27""0g\27""1h\30""1i\202\31""2i" + "\13\32""3k(6aEE]\40""5e\34""6n\35""6n\36""7o\36""7p\37""8p\40""9q\40""9r" + "\202!:s\27\";t\";u#<u#=v$=w%>w%>x&?y&@z'@z'A{(A|(B|)C})C~*D\177+D\177+E\200" + ",F\200,G\200-H\201-H\202.I\202\202.H\202\12-G\201-F\200.G\201.G\202/H\202" + "/I\2031K\2063O\2114O\2124P\213\2025Q\214\5""6R\2156R\2167S\2168T\2178T\220" + "\2029U\221\16:V\222:V\223;W\223;X\224<X\225<Y\226=Y\226>Z\227>[\230?[\230" + "?\\\231@\\\232?\\\231?[\230\203?Z\230\1@[\231\202A\\\232\2B]\233B]\234\202" + "C^\235\13D_\236D`\237E`\237Ea\240Ea\241Fb\241Fc\242Gc\243Gd\244Hd\244He\245" + "\202If\246\5Jg\247Jg\250Kh\251Lh\251Li\252\212Mj\253\6Nk\254Ol\255\23+_\24" + ",`\26/e\26/f\202\27""0g!*Aq3Hu;Nx2Fq2Gu=Py7Ly7Lz.Du\36""6o\36""7o\37""8p" + "\37""8q\40""9q\40""9r!:s!;t\";t#<u#<v$=v$=w%>x%?x&?y&@z'@{'A{(B|(B})C}*C" + "~*D\177\202+E\200*,F\200,G\201-H\201-I\202.I\203.J\203/J\204/K\204.I\203" + ".G\201.H\202/H\203/I\2031L\2063O\2124P\2124P\2135Q\2146Q\2156R\2157R\216" + "7S\2178T\2178T\2209U\2219V\221:V\222;W\223;W\224<X\224<X\225=Y\226=Z\226" + ">Z\227=Y\226=X\225<W\225=X\225=X\226>Y\226?Y\227?Z\230\202@[\231\17A\\\232" + "A\\\233B]\233B]\234C^\235C_\235D_\236E`\237E`\240Ea\240Eb\241Fb\242Fc\242" + "Gc\243Gd\244\202He\245\7If\246Jf\247Jg\247Kg\250Kh\251Li\251Li\252\205Mj" + "\253\4Nk\254Ol\255Pm\256Qn\257\202Ro\260\20\23*_\24+_\25-b\26/f\26""0f\27" + """0g0DoBQq;Kn7Jt)=k7Iq=Lm@Pt6Ho\35""6n\202\36""7o\5\37""8p\37""8q\40""9r" + "\40:r!:s\202\";t\17#<u#=v$=v$>w%>x%?y&?y'@z'A{(A{(B|)B})C~*D~*D\177\202+" + "E\200\5,F\200,H\201-H\202.I\202.I\203\202/J\204\2""0K\2050J\205\202.H\202" + "\13/H\2030I\2042M\2074O\2124P\2135P\2135Q\2146R\2156R\2167S\2167S\217\202" + "8T\220\1""9U\221\202:V\222\1;W\223\202;W\224\14;V\223;U\222:U\222;U\223;" + "V\223<W\224=W\224=X\225>X\226>Y\227?Z\227?Z\230\202@[\231\5A\\\232B\\\233" + "B]\234C^\234C^\235\202D_\236\17Ea\240Fb\241Fc\242Fb\241Fb\242Fc\243Gd\243" + "Hd\244He\245Ie\246If\246Jg\247Jg\250Kh\250Kh\251\202Li\252\4Mj\253Nk\254" + "Pm\256Qn\257\206Ro\260\26\23*^\23*_\24+_\24,b\26/e\26""0g\27""0g\30""1h\30" + """2i\31""2i\31""3j\32""3k\32""4k\33""4l\33""5m\34""6n\35""6n\36""7o\36""7" + "p\37""8p\40""9q\40""9r\202!:s#\";t\";u#<u#=v$=w$>x%>x&?y&@z'@z'A{(A|(B|)" + "C})C~*D~+D\177+E\200,F\200,G\200-H\201-H\202.I\202.J\203/J\204/K\2050K\205" + "/J\205.G\202/H\202/I\2030I\2043N\2114O\2124P\213\2025Q\214\5""6R\2156R\216" + "7S\2168T\2178T\220\2039U\221\1""9T\220\2028S\217\13""9S\2209T\220:T\221;" + "U\222;V\223<V\223<W\224=W\225=X\225>Y\226>Y\227\202?Z\230\16@[\231A[\232" + "A\\\232B]\233B]\234C_\235Ea\240Gc\242He\244Ie\244If\245Jf\246If\245Ie\245" + "\204He\245\7If\246Jf\247Kg\250Li\251Mj\252Nk\254Pm\256\212Ro\260)\22)]\23" + "*^\23+_\24+`\25,`\25-b\26/e\27""0g\30""1h\30""2i\31""2j\31""3j\32""3k\32" + """4l\33""5l\34""5m\34""6n\35""6o\36""7o\37""8p\37""8q\40""9q\40""9r!:s!;" + "s\";t#<u#<v$=v$=w%>x%?x&?y&@z'@{'A{(B|(B})C}*C~*D\177\202+E\200\11,F\200" + ",G\201-H\201-I\202.I\203/J\203/J\2040K\2050K\206\202.H\202\4/H\203/I\203" + "1K\2063O\212\2024P\213\3""5Q\2146Q\2156R\215\2027S\216\24""7R\2166Q\2156" + "P\2146Q\2157Q\2157R\2168R\2179S\2179S\220:T\221:U\221;U\222;V\223<V\224<" + "W\224=X\225=X\226>Y\226?Y\227?Z\230\202@[\231\30A\\\232B^\235Da\237Eb\241" + "Fc\242Gd\243Hd\243Ie\244Ie\245Jf\245Jg\246Kg\247Kh\247Lh\250Li\251Mj\251" + "Mj\252Nk\253Ok\254Ol\254Pm\255Pm\256Qn\256Qn\257\211Ro\260\1\22)]\202\23" + "*^\17\24+_\24+`\25,a\25-a\26-b\27/e\30""0g\30""2h\31""2j\32""3k\32""4k\33" + """4l\33""5m\34""5m\35""6n\202\36""7o\5\37""8p\37""8q\40""9r!:r!:s\202\";" + "t\17#<u#=v$=w$>w%>x%?y&?y'@z'A{(A|(B|)B})C~*D~*D\177\202+E\200\5,F\200,H" + "\201-H\202.I\202.I\203\202/J\204\11""0K\205/I\203.G\201.H\202/H\203/I\204" + "2N\2104O\2124P\213\2025P\213\37""4O\2134N\2124N\2114N\2125O\2136P\2136P\214" + "7Q\2157Q\2168R\2168S\2179S\2209T\220:T\221:U\222;U\223;V\223<W\224=W\225" + "=X\225>X\226>Y\227?Z\227@[\231B^\234C`\236Da\237Eb\240Eb\241Fc\241Gc\242" + "\202Hd\243\17Ie\244If\245Jf\246Jg\246Kg\247Kh\250Li\250Mi\251Mj\252Nj\253" + "Nk\253Ol\254Ol\255Pm\255Pm\256\202Qn\257\210Ro\260\202\22)]\26\23*^\23*_" + "\24+_\24,`\25,a\25-a\26-b\27.c\27/d\30/e\30""1g\31""2i\32""3j\33""4l\33""5" + "m\34""6n\35""6n\36""7o\37""7p\37""8p\40""9q\40""9r\202!:s\26\";t\"<u#<u#" + "=v$=w%>w%>x&?y&@z'@z'A{(A|(B|)C})C~*D\177+D\177+E\200,F\200,G\200-H\201-" + "H\202\202.I\203\12/J\204/K\205/I\203.G\201.G\202/H\202/I\2031K\2062N\210" + "2M\210\2032L\207\5""3M\2104M\2114N\2115O\2125O\213\2026P\214\5""7Q\2157Q" + "\2168R\2168S\2179S\220\202:T\221\13;U\222;V\223<V\223<W\224=W\225=X\226?" + "Z\230@]\233B_\235C_\235C`\236\202Da\237\26Eb\240Eb\241Fc\242Gc\242Hd\243" + "He\244Ie\244If\245Jf\246Kg\247Kh\247Lh\250Li\251Mi\251Mj\252Nk\253Nk\254" + "Ol\254Ol\255Pm\256Qn\256Qn\257\206Ro\260\202Qn\257\202\22)])\22)^\23*^\23" + "+_\24+`\25,`\25,a\26-a&9dBTy+?j\30/e\30""0e\31""1f\31""1g\32""2h\33""3j\34" + """5l\35""6n\36""7o\37""8p\37""8q\40""9q\40""9r!:s!;t\";t#<u#<v$=v$=w%>x%" + "?x&?y&@z'@{'A{(B|(B})C}*C~*D\177\202+E\200*,F\200,G\201-H\201-I\202.I\203" + "/J\203/J\204.I\203-F\201.G\201.H\202/H\203/I\2030I\2040J\2051K\2062K\206" + "2L\2073L\2103M\2104N\2114N\2125O\2125O\2136P\2146Q\2157Q\2157R\2168R\217" + "9S\2179S\220:T\221:U\221;U\222;V\223<W\224>Y\227@\\\231A]\233A^\233B^\234" + "B_\235\202C`\236\17Da\237Da\240Eb\240Eb\241Fc\242Gd\243Hd\243Ie\244Ie\245" + "Jf\245Jg\246Kg\247Kh\247Lh\250Li\251\202Mj\252\2Nk\253Ok\254\202Ol\254\4" + "Ol\255Ol\254Nk\254Ol\255\202Nk\254\204Mj\253,\23+a\22*^\22)]\23*^\23*_\24" + "+_\24+`\25,a7Hk\225\230\234\315\317\321\237\244\252':e\30/e\31""0f\31""1" + "f\32""1g\32""2h\33""2h\33""3i\33""4j\34""5k\35""6m\36""7o\37""8q\40""9r!" + ":s\";t\";u#<u#=v$=w$>w%>x%?y&?y'@z'A{(A{(B|)B})C~*D~*D\177\202+E\200\4,F" + "\200-H\201-H\202.I\202\202.I\203+-G\201-F\200-G\201.G\202.H\202/H\2030I\204" + "0J\2041J\2051K\2062K\2062L\2073M\2103M\2114N\2114N\2125O\2136P\2136P\214" + "7Q\2157Q\2168R\2168S\2179S\2209T\220:T\221;V\223=X\225>[\230?\\\231@\\\232" + "@]\232A]\233A^\234B_\234B_\235C`\236C`\237Da\237Eb\240Eb\241Fc\241Gc\242" + "\202Hd\243\6Ie\244If\245Jf\246Jg\246Kg\247Kh\250\202Lh\250\2Kh\250Kg\247" + "\202Jg\247\5Jg\250Kh\250Kh\251Li\252Mi\252\206Mj\253\202\23,b\21\23+`\22" + "*^\23*^\23*_\24+_\24,`';e\241\257\275\226\241\253\214\230\243\35""1^\30/" + "d\30""0e\31""0f\31""1g\32""2g\32""2h\202\33""3i\26\33""4j\33""4k\34""5l\35" + """6l\35""6m\36""7n\37""8p\40:r!;s#<u#=v$=w%>x%?x&?y&@z'@z'A{(A|(B|)C})C~" + "\202*D\177\2+E\200,F\200\202,G\200\1+F\200\202+E\177\13,E\200,F\200-F\200" + ".G\201.H\202/H\203/I\2030I\2040J\2051J\2051K\206\2022L\207\5""3M\2104M\211" + "4N\2125O\2125O\213\2026P\214\31""7Q\2157R\2168R\2169S\220:V\222<X\225=Y\226" + ">Z\227>[\230?[\230?\\\231@\\\232@]\233A^\233A^\234B_\235C_\235C`\236Da\237" + "Da\240Eb\240Eb\241Fc\242Gc\242Hd\243\202Ie\244\17If\245He\244Hd\244Gd\243" + "Gc\243Gd\244Hd\244He\245If\246If\247Jg\247Kg\250Kh\251Li\251Li\252\206Mj" + "\253\204\23,b(\23+a\23+_\24+_\24+`\26+]\312\312\313\245\245\246\233\234\236" + "\26-a\27/d\30/e\30""0e\31""0f\32""1g\32""2g\33""2h\33""3i\33""3j\33""4j\34" + """5k\34""5l\35""6l\35""6m\36""7n\36""8o\37""8o\40""9p\40:q!;s\"<t$=v%>w&" + "?y&@z'@{'A{(B|)B})C}*D~\202*D\177\1*D~\202)C}\3*D}*E~+E\177\202,E\200#-F" + "\200-G\201.G\201.H\202/H\203/I\2030I\2040J\2051K\2062K\2062L\2073L\2103M" + "\2104N\2114N\2125O\2125O\2136P\2147Q\2158S\217:V\222;W\224<X\224<Y\225=Y" + "\226=Z\227>Z\227>[\230?[\231?\\\231@]\232A]\233A^\233B^\234B_\235\202C`\236" + "\7Da\237Da\240Eb\240Ec\241Fc\242Fb\241Fa\240\203Ea\240\5Eb\241Fb\242Fc\243" + "Gc\243Gd\244\202He\245\5If\246Jf\247Jg\247Kh\250Kh\251\202Li\252\3Mj\253" + "Nk\254Ol\255\202Pm\256\205\23,b%\24-c\24,b\24,a\24+`hr\207\201\204\213Q\\" + "t\26.c\27.c\27/d\30""0e\31""0f\31""1f\32""1g\32""2h\33""2h\33""3i\33""4j" + "\33""4k\34""5k\35""5l\35""6m\36""7m\36""7n\37""8o\37""8p\40""9p\40:q!:r!" + ";r\";s\"<t#=u%>w%?x'@z'A{\202(B|3(Az'Az(B{(B|)C|*D}*D~+E~+E\177,E\200,F\200" + "-F\200-G\201.G\202.H\202/H\2030I\2040J\2041J\2051K\2062K\2072L\2073M\210" + "3M\2114N\2114N\2126Q\2148S\2179U\221:V\222:V\223;W\223;X\224<X\225<Y\225" + "=Y\226=Z\227>Z\230?[\230?\\\231@\\\232@]\232A]\233A^\234B_\234B_\235C`\236" + "C`\237D`\237C_\236C_\235\202C^\235\23D_\236D`\236E`\237Ea\240Ea\241Eb\241" + "Fb\242Gc\243Gd\243Hd\244He\245Ie\246If\246Kh\250Li\252Nk\253Ol\255Pm\256" + "Qo\257\204Ro\260\206\23,b\5\24-c\24-d\25.d\25-c\25-b\202\26-b\10\27.c\27" + "/d\30/d\30""0e\31""0f\31""1g\32""2g\32""2h\202\33""3i\5\33""4j\34""4k\34" + """5l\35""6l\35""6m\202\36""7n\22\37""8o\37""9p\40""9p!:q!:r\";s\"<s#<t#=" + "u$=u$>v%>w%?x&@x&@y'Az(Az(B{\202)C|\2*D}*D~\202+E\177\13,E\200,F\200-F\200" + ".G\201.H\202/H\203/I\2030I\2040J\2051J\2051K\206\2022L\207\5""3N\2115P\214" + "7S\2168T\2178T\220\2029U\221\5:V\222:W\223;W\223;X\224<X\225\202=Y\226\12" + ">Z\227>[\230?[\230?\\\231@\\\232@]\233A^\233A^\234A^\233A]\233\203A\\\232" + "\26B]\233B]\234C^\235C_\235D_\236D`\237E`\237Ea\240Eb\241Fb\242Fc\242Hd\244" + "If\246Kg\247Li\251Nj\253Nk\254Ol\254Pl\255Pm\256Qn\256Qn\257\203Ro\260\1" + "Qn\257\206\23,b\7\23,c\24-c0Es@OoARwM\\{+?k\203\27/d\30\30/e\30""0e\31""1" + "f\32""1g\32""2h\33""2h\33""3i\33""3j\33""4j\34""5k\34""5l\35""6l\35""6m\36" + """7n\36""8o\37""8o\40""9p\40""9q!:q!;r\";s\"<s#<t#=u\202$>v\5%?w&?x&@x'@" + "y'Az\202(B{\5)C|)C}*D}*E~+E\177\202,E\200\17-F\200-G\201.G\201.H\202/H\203" + "/I\2030J\2040J\2051K\2062L\2074P\2136Q\2156R\2157S\2167S\217\2028T\220\22" + """9U\2219V\222:V\222;W\223;W\224<X\224<X\225=Y\226=Z\227>Z\227>[\230?[\231" + "@\\\231?\\\231?Z\230>Y\227?Y\227?Z\230\202@[\231\5A\\\232A\\\233B]\233B^" + "\234C^\235\202D_\236\17E`\237Ea\240Gc\242He\244Jg\246Kh\250Lh\250Li\251M" + "j\252Nj\252Nk\253Ok\254Ol\254Pm\255Pm\256\202Qn\257\202Ro\260\1Nk\254\207" + "\23,b\11\24-c\31""2g\37""4b/Bl)<g\35""4f\27""0g\27""1h\30""1h\202\30""1g" + "f\31""1g\31""1f\32""1g\32""2h\33""2h\33""3i\33""4j\33""4k\34""5k\35""5l\35" + """6m\36""7m\36""7n\37""8o\37""8p\40""9p\40:q!:r!;r\";s#<t#=t$=u$>v%>w%?w" + "&?x&@y'Ay'Az(B{(B|)C|*D}*D~+E~+E\177,E\200,F\200-F\200-G\201.G\202.H\202" + "/I\2030I\2040J\2042M\2104P\2135P\2135Q\2146R\2156R\2167S\2167S\2178T\220" + "9U\2209U\221:V\222:V\223;W\223;X\224<X\225<Y\225=Y\226=Z\227>Z\227>Y\227" + "=X\225=W\225=X\225>X\226>Y\227?Z\227?Z\230@[\231@[\232A\\\232A]\233B]\234" + "C^\234C^\235E`\237Gc\242Ie\244If\245Jf\246Jg\246Kg\247Lh\250Li\250Mi\251" + "Mj\252Nj\253Nk\253Ol\254Ol\255Pm\255Pm\256Qn\257Ro\260Ol\255Mj\253\210\23" + ",b\15\24-c\24-d\25.d\25/e\26/f\26""0g\27""0g\30""1h\30""2i\31""2i\31""3j" + "\32""3k\32""3j\202\33""3j\202\33""3i\1\33""4j\202\34""5k\2\35""6l\35""6m" + "\202\36""7n\26\37""8o\37""9p\40""9p!:q!:r\";s\"<s#<t#=u$=u$>v%?w%?x&@x'@" + "y'Az(Az(B{)C|)C}*D}*D~\202+E\177\13,E\200,F\200-F\200.G\201.H\202/H\203/" + "I\2030I\2042M\2074P\2124P\213\2025Q\214\5""6R\2157R\2167S\2178T\2178T\220" + "\2029U\221\7:V\222:W\223;W\224<X\224<X\225<Y\225<W\224\202;V\223\11<V\223" + "<W\224=W\225=X\226>Y\226>Y\227?Z\230@Z\230@[\231\202A\\\232\26B]\233C_\236" + "Fb\241Gd\242Hd\243He\244Ie\244Jf\245Jg\246Kg\247Kh\247Lh\250Li\251Mi\251" + "Mj\252Nk\253Nk\254Ol\254Pl\255Pm\256Qn\256Ol\255\202Mj\253\210\23,b\23\23" + "-c\24-c\25.d\25.e\26/e\26/f\27""0g\27""1h\30""1h\30""2i\31""2j\31""3j\32" + """4k\33""4l\33""5m\34""5m\34""6m\35""6m\34""5m\202\34""5l\15\35""6l\35""6" + "m\36""7n\36""8o\37""8o\40""9p\40""9q!:q!;r\";s\"<s#<t#=u\202$>v\5%?w&?x&" + "@x'@y'Az\202(B{\26)C|)C}*D}*E~+E\177,E\177,E\200-F\200-G\201.G\201.H\202" + "/H\203/I\2030J\2041K\2064O\2125P\2135Q\2146Q\2156R\2157S\2167S\217\2028T" + "\220\3""9U\2219V\222:V\222\202;W\223\15:U\2229T\220:T\221:U\222;U\222;V\223" + "<V\224<W\224=X\225>X\226>Y\227?Y\227?Z\230\202@[\231\5B]\234Da\237Eb\240" + "Ec\241Fc\242\202Hd\243\17Ie\244If\245Jf\245Jg\246Kg\247Kh\250Lh\250Li\251" + "Mj\252Nj\252Nk\253Ok\254Ol\254Pm\255Ol\255\202Li\252\1Mj\253\211\23,b\21" + "\24-c\24-d\25.d\25/e\26/f\26""0f\27""0g\27""1h\30""1i\31""2i\31""3j\32""3" + "k\32""4k\33""4l\33""5m\34""5m\34""5l\202\34""4k(\34""5k\35""5l\35""6m\36" + """7m\36""7n\37""8o\37""8p\40""9p\40:q!:r!;r\";s#<t#=t$=u$>v%>w%?w&?x&@y'" + "Ay'Az(B{)B|)C|*D}*D~+E~+E\177,E\200,F\200-F\200-G\201.G\202.H\202/I\2030" + "I\2040J\2041K\2063O\212\2025Q\214\6""6R\2156R\2167S\2167S\2178T\2209U\220" + "\2029U\221$8S\2178R\2168S\2179S\2209T\220:T\221:U\222;V\223<V\223<W\224=" + "W\225=X\225>X\226>Y\227?Z\227@[\231B^\235C`\237Da\237Eb\240Eb\241Fc\241G" + "c\242Hd\243He\244Ie\244If\245Jf\246Jg\246Kg\247Lh\250Li\250Mi\251Mj\252N" + "j\253Nk\253\202Ol\254\4Li\251Kh\251Li\252Mj\253\212\23,b\15\24-c\24.d\25" + ".e\25/e\26/f\26""0g\27""0g\30""1h\30""2i\31""2i\31""3j\32""3j\32""2i\202" + "\32""2h\202\33""3i\1\33""4j\202\34""5k\2\35""6l\35""6m\202\36""7n\22\37""8" + "o\37""9p\40""9p!:q!:r\";s\"<s#<t#=u$=u$>v%>w%?x&@x&@y'Az(Az(B{\202)C|\2*" + "D}*D~\202+E\177\1,E\200\202-F\200\10.G\201.H\202/H\202/I\2030I\2040J\205" + "1K\2063N\211\2025Q\21416R\2157R\2167S\2178T\2177S\2167Q\2156P\2147Q\2157" + "R\2168R\2168S\2179S\220:T\221:U\221;U\222;V\223<V\223<W\224=W\225=X\226>" + "Y\226@\\\232B_\235C_\235C`\236Da\237Da\240Eb\240Eb\241Fc\242Gd\242Hd\243" + "He\244Ie\244Jf\245Jg\246Kg\247Kh\247Lh\250Li\251Mi\251Mj\252Nk\253Ok\254" + "Kh\251Kg\250Kh\251Li\251Li\252\212\23,b\12\23,c\24-c\24.d\25.e\26/e\26/f" + "\27""0g\27""1g\30""0g\30""0f\202\30""0e\5\31""1f\31""1g\32""2h\33""2h\33" + """3i\202\33""4j\5\34""5k\34""5l\35""6l\35""7m\36""7n\202\37""8o\17\40""9" + "p\40""9q!:q!;r\";s\"<t#<t#=u$>v%>v%?w&?x&@x'@y'Az\202(B{\5)C|)C}*D}*E~+E" + "\177\202,E\200\16-F\200-G\201.G\201.H\202/H\203/I\2030J\2041J\2051K\2063" + "M\2105Q\2146Q\2156R\2156Q\214\2035O\213\1""6P\214\2027Q\215\17""8R\2168R" + "\2179S\2209T\220:T\221:U\222;U\222;V\223<W\224=W\224>Y\226@\\\232A^\234B" + "^\234B_\235\202C`\236\5Da\237Da\240Eb\240Ec\241Fc\242\202Hd\243\5Ie\244I" + "f\245Jf\245Jg\246Kg\247\202Lh\250\11Li\251Mj\252Nj\252Li\251Jf\247Jg\250" + "Kh\250Kh\251Li\252\213\23,b\17\24-c\24-d\25.d\25.e\25.d\26.c\26-b\26.c\27" + ".d\30/d\30""0e\31""0f\31""1f\32""1g\32""2h\202\33""3i1\33""4j\33""4k\34""5" + "k\35""6l\35""6m\36""7m\36""7n\37""8o\37""8p\40""9p\40:q!:r!;r\";s\"<t#=t" + "$=u$>v%>w%?w&@x&@y'Ay'Az(B{)B|)C|*D}*D~+E~+E\177,E\200,F\200-F\200-G\201" + ".G\202.H\202/I\2030I\2040J\2041J\2051K\2063M\2104O\2123M\2103M\2114N\211" + "4N\2125O\213\2026P\214\17""7Q\2157Q\2168R\2168S\2179S\2209T\220:T\221:U\222" + ";V\223<V\223=Y\226@\\\232@]\232A^\233A^\234\202B_\235\22C`\236C`\237Da\237" + "Eb\240Eb\241Fc\241Gc\242Hd\243He\244Ie\244If\245Jf\246Jg\246Kg\247Lh\250" + "Li\251Mi\251Li\251\202If\246\4Jg\247Jg\250Kh\250Lh\251\214\23,b\1\23,a\202" + "\24+`\14\24,`\25,a\26-b\26.b\27.c\27/d\30/e\30""0e\31""0f\31""1g\32""2g\32" + """2h\202\33""3i\5\33""4j\34""5k\34""5l\35""6l\35""6m\202\36""7n\26\37""8" + "o\37""9p\40""9q!:q!:r\";s\"<s#<t#=u$=u$>v%>w%?x&@x&@y'Az(Bz(B{)C|)C}*D}*" + "D~\202+E\177\1,E\200\202-F\200\17.G\201.H\202/H\203/I\2030I\2040J\2051K\205" + "1K\2062L\2072L\2103M\2104N\2114N\2125O\2125O\213\2026P\214\31""7Q\2157R\216" + "8R\2178S\2179S\220:T\221:U\221;V\222=Y\226?[\231?\\\231@\\\232@]\233A^\233" + "A^\234B_\235C_\235C`\236Da\237Da\240Eb\240Eb\241Fc\242Gd\242Hd\243\202Ie" + "\244\4Jf\245Jf\246Kg\247Kh\247\202Lh\250\202He\245\5If\246Jf\247Jg\247Kg" + "\250Kh\251\210\23,b\34\23+a\22*_\22)^\22)]\22)^\23*^\24+_\24+`\25,a\25-a" + "\26-b\26.c\27.c\27/d\30/e\30""0e\31""1f\32""1g\32""2h\33""2h\33""3i\33""3" + "j\33""4j\34""5k\34""5l\35""6l\36""6m\36""7n\202\37""8o\17\40""9p\40""9q!" + ":q!;r\";s\"<t#<t#=u$>v%>v%?w&?x&@x'Ay'Az\202(B{\5)C|)D}*D~*E~+E\177\202," + "E\200\17-F\200-G\201.G\201.H\202/H\203/I\2040J\2041J\2051K\2062K\2062L\207" + "3L\2103M\2104N\2114N\212\2025O\213\1""6P\214\2027Q\215\17""8R\2168R\2179" + "S\2209T\220;U\222=Y\226>Z\227>[\230?\\\231@\\\231@]\232A]\233A^\234B^\234" + "B_\235\202C`\236\5Da\237Da\240Eb\241Fc\241Gc\242\202Hd\243\16Ie\244If\245" + "Jf\245Jg\246Kg\247Kh\247He\245Hd\244He\245Ie\245If\246Jf\247Jg\250Kh\250" + "\205\23,b\2\23+a\22*_\206\22)]\17\23*^\23*_\24+_\24,`\25,a\25-a\26-b\27." + "c\27.d\30/d\30""0e\31""0f\31""1f\32""1g\32""2h\202\33""3i\21\33""4j\33""4" + "k\34""5k\35""5l\35""6m\36""7m\36""7n\37""8o\37""8p\40""9p\40:q!:r!;r\";s" + "\"<t#=u$=v\202%>w\27%?w&@x&@y'Ay'Az(B{)B|)C|*D}*D~+E~+E\177,E\200,F\200-" + "F\200-G\201.G\202.H\202/I\2030I\2040J\2041J\2051K\206\2022L\207\5""3M\210" + "3M\2114N\2115N\2125O\213\2026P\214\17""7Q\2157Q\2168R\2168S\217:U\221<Y\225" + "=Y\226>Z\227>[\230?[\230?\\\231@\\\232@]\232A]\233A^\234\202B_\235\1C`\236" + "\202Da\237\23Eb\240Eb\241Fc\241Gc\242Hd\243He\244Ie\244If\245Jf\246Jg\246" + "He\244Gc\243Gd\244Hd\244He\245Ie\246If\246Jg\247Jg\250\202\23,b\2\23+`\22" + "*_\212\22)]\5\23*^\23+_\24+`\25,`\25,a\202\26-b\17\27.c\27/d\30/d\30""0e" + "\31""0f\31""1g\32""2g\32""2h\33""3i\33""3j\33""4j\34""5k\34""5l\35""6l\35" + """6m\202\36""7n\26\37""8o\37""9p\40""9q!:q!:r\";s\"<t$>w&@y'@z'A{&@z&?x&" + "@x'@y'Az(Az(B{)C|)C}*D}*D~\202+E\177\1,E\200\202-F\2002.G\201.H\202/H\203" + "/I\2030I\2040J\2051K\2051K\2062L\2073L\2103M\2104N\2114N\2125O\2125O\213" + "6P\2146P\2157Q\2157R\2169T\221<X\224<X\225=Y\226=Z\227>Z\227>[\230?[\231" + "?\\\231@]\232@]\233A^\233B^\234B_\235C`\235C`\236Da\237Da\240Eb\240Eb\241" + "Fc\242Gd\242Hd\243Ie\244Ie\245Jf\245Ie\245Fb\242Fc\242Gc\243Gd\244\202He" + "\245\4If\246Jf\247Jg\247\22*^\215\22)]\21\22*^\23*^\23+_\24+`\25,a\25-a\26" + "-b\26.c\27.c\27/d\30/e\30""0e\31""1f\32""1g\32""2h\33""2h\33""3i\202\33""4" + "j\5\34""5k\34""5l\35""6m\35""7m\36""7n\202\37""8o\17\40""9p\40""9q!:r#<u" + "%>x%?y&?y&@z'A{(A{(B|'A{&@y'Ay'Az\202(B{\5)C|)C}*D~+E~+E\177\202,E\200\17" + "-F\200-G\201.G\201.H\202/H\2030I\2040J\2041J\2051K\2062K\2062L\2073L\210" + "3M\2104N\2114N\212\2025O\213\22""6P\2147Q\2159T\220;W\223;W\224<X\225<Y\225" + "=Y\226=Z\227>Z\227>[\230?\\\231@\\\231@]\232A]\233A^\234B^\234B_\235\202" + "C`\236\5Da\237Da\240Eb\241Fc\241Gc\242\202Hd\243\202Ie\244\202Eb\241\10F" + "b\242Fc\243Gd\243Gd\244He\245Ie\245If\246Jf\247\217\22)]\17\23*^\23*_\24" + "+_\24+`\25,a\25-b\26-b\26.c\27/d\30/d\30""0e\31""0f\31""1f\32""1g\32""2h" + "\202\33""3i\5\33""4j\33""4k\34""5k\35""6l\35""6m\202\36""7n\22\37""8o\37" + """9p!:s#<v$=w%>w%>x&?y&@z'@z'A{(A|(B|)B|'Az'Ay(Az(B{\202)C|\17*D}*D~+E~+" + "E\177,E\200,F\200-F\200-G\201.G\202/H\202/I\2030I\2040J\2041J\2051K\206\202" + "2L\207\26""3M\2103M\2114N\2115N\2125O\2136P\2148S\217:V\222:V\223;W\223;" + "X\224<X\225<Y\226=Y\226>Z\227>[\230?[\230?\\\231@\\\232@]\232A^\233A^\234" + "\202B_\235\22C`\236D`\237Da\237Eb\240Eb\241Fc\241Gc\242Hd\243Hd\244Fa\240" + "Ea\240Ea\241Fb\241Fc\242Gc\243Gd\244Hd\244He\245\202If\246\217\22)]\6\22" + ")^\23*^\23+_\24+`\24,`\25,a\202\26-b'\27.c\27/d\30/e\30""0e\31""0f\31""1" + "g\32""2g\32""2h\33""3i\33""3j\33""4j\34""5k\34""5l\35""6l\35""6m\36""7n\40" + """9q\";t#<u#<v$=v$=w%>x%?x&?y&@z'@{'A{(B|(B})C}(B{'Az(Bz(B{)C|)C}*D}*D~\202" + "+E\177\22,E\200-F\200-F\201.G\201.H\202/H\203/I\2030I\2040J\2051K\2051K\206" + "2L\2073L\2103M\2104N\2114N\2125O\2127R\215\2029U\221\31:V\222:W\223;W\224" + "<X\224<X\225=Y\226=Z\226>Z\227>[\230?[\231?\\\231@]\232@]\233A^\233B^\234" + "B_\235C_\236C`\236Da\237Da\240Eb\240Eb\241Fc\242Gd\242Fa\240\202E`\237\6" + "Ea\240Eb\241Fb\242Fc\242Gc\243Gd\244\202He\245\1If\246\220\22)]\4\22*^\23" + "*^\24+_\24+`\202\25,a\13\26-b\26.c\27.c\27/d\30/e\30""0f\31""1f\32""1g\32" + """2h\33""2h\33""3i\202\33""4j\5\34""5k\34""5l\36""7o\40""9r!:s\202\";t\12" + "#<u#=v$=v$>w%>x%?y&?y&@z'A{(A|\202(B|\3'A{'Ay'Az\202(B{\5)C|)C}*D}+E~+E\177" + "\202,E\200\13-F\200-G\201.G\201.H\202/H\203/I\2040J\2041J\2051K\2062K\206" + "2L\207\2023M\210\5""4N\2116P\2148T\2209T\2209U\221\202:V\222\26;W\223;W\224" + "<X\225<Y\225=Y\226=Z\227>Z\227>[\230?\\\231@\\\231@]\232A]\233A^\234B^\234" + "B_\235C`\236C`\237Da\237Db\240Eb\241Fc\241Ea\240\202D_\236\12E`\237Ea\240" + "Ea\241Eb\241Fb\242Fc\243Gd\243Hd\244He\245Ie\245\221\22)]\17\23*^\23*_\24" + "+_\24+`\25,a\25-b\26-b\26.c\27.d\30/d\30""0e\31""0f\31""1f\32""1g\32""2h" + "\202\33""3i\5\33""4j\35""5m\37""8p\40""9q\40""9r\202!:s\17\";t\";u#<u#=v" + "$=w$>w%>x&?y&@z'@z&@z&?x%?w&@x&@y\202'Az\1(B{\202)C|\17*D}*D~+E~+E\177,E" + "\200,F\200-F\200-G\201.G\202/H\202/I\2030I\2040J\2041J\2051K\206\2022L\207" + "\5""3M\2104O\2127S\2168T\2178T\220\2029U\221\17:V\222:V\223;W\223;X\224<" + "X\225<Y\226=Y\226>Z\227>[\230?[\230?\\\231@\\\232@]\232A^\233A^\234\202B" + "_\235\5C`\236D`\237Da\237Eb\240Ea\240\202C^\235\13D_\236D`\237E`\237Ea\240" + "Ea\241Eb\242Fc\242Gc\243Gd\244Hd\244He\245\221\22)]\6\22)^\23*^\23*_\24+" + "`\24,`\25,a\202\26-bM\27.c\27/d\30/e\30""0e\31""1f\31""1g\32""2g\32""2h\34" + """4k\35""6n\36""7o\37""8p\37""8q\40""9q\40""9r!:s!;s\";t#<u#<v$=v$=w%>x%" + "?x%>x$>v$=u$>v%?w&?x&@x'@y'Az(Bz(B{)C|)C}*D}*D~+E\177,E\177,E\200-F\200-" + "G\201.G\201.H\202/H\203/I\2030I\2040J\2051K\2052K\2062L\2073M\2106R\2157" + "S\2167S\2178T\2178T\2209U\2219U\222:V\222:W\223;W\224<X\224<X\225=Y\226=" + "Z\226>Z\227>[\230?[\231?\\\231@]\232A]\233A^\233B^\234B_\235\202C`\236\202" + "Da\237\16B^\234B]\234C^\235C_\235D_\236E`\237E`\240Ea\240Eb\241Fb\242Fc\242" + "Gc\243Gd\244He\245\222\22)]\4\23*^\23*_\24+_\24+`\202\25,a\22\26-b\26.c\27" + ".c\27/d\30/e\30""0f\31""1f\32""2i\33""4l\34""5m\35""6n\36""7o\36""7p\37""8" + "p\37""8q\40""9r\40:r!:s\202\";t\17#<u#<v$=w#=v#<t\"<t#<t$=u$>v%>v%?w&?x&" + "@y'Ay'Az\202(B{\5)C|*D}*D~+E~+E\177\202,E\200\17-F\200-G\201.G\201.H\202" + "/H\203/I\2040J\2041J\2051K\2062K\2062L\2075P\2136R\2167S\2167S\217\2028T" + "\220\31""9U\221:V\222:V\223;W\223;X\224<X\225<Y\225=Y\226=Z\227>Z\227>[\230" + "?\\\231@\\\232@]\232A]\233A^\234B_\234B_\235C`\236C`\237B^\234A\\\233B]\234" + "C^\234C^\235\202D_\236\10E`\237Ea\240Ea\241Eb\241Fb\242Fc\243Gd\243Hd\244" + "\223\22)]\26\23*^\23*_\24+_\24,`\25,a\25-b\26-b\26.c\27/d\30/d\30""1g\32" + """3j\32""4l\33""4l\33""5m\34""6n\35""6n\36""7o\36""7p\37""8q\40""9q\40""9" + "r\202!:s\22\";t\"<u#<u!;s!:r\";r\";s#<t#=u$=u$>v%>w%?w&@x&@y'Az(Az(B{\202" + ")C|\2*D}*D~\202+E\177\13,E\200,F\200-F\200.G\201.G\202/H\202/I\2030I\204" + "0J\2051J\2051K\206\2022L\207\5""5Q\2147R\2167S\2178T\2178T\220\2029U\221" + "\17:V\222:V\223;W\223;X\224<X\225<Y\226=Y\226>Z\227>[\230?[\230?\\\231@\\" + "\232@]\233A^\233A^\234\202B_\235\1B^\234\202A\\\232\2B]\233B]\234\202C^\235" + "\11D_\236D`\237E`\237Ea\240Ea\241Fb\241Fc\242Gc\243Gd\244\223\22)]\27\22" + ")^\23*^\23+_\24+`\25,`\25,a\26-b\26.c\27/e\30""1h\31""2j\31""3j\32""3k\32" + """4l\33""5l\34""5m\35""6n\36""6o\36""7o\37""8p\37""8q\40""9q\40""9r\202!" + ":s\26\40""9q\40""9p\40""9q!:q!;r\";s\"<s#<t#=u$=v$>v%?w&?x&@x'@y'Az(Bz(B" + "{)C|)C}*D}*E~\202+E\177$,E\200-F\200-F\201.G\201.H\202/H\203/I\2030I\204" + "0J\2051K\2051K\2062L\2073M\2106Q\2157S\2167S\2178T\2178T\2209U\2219U\222" + ":V\222:W\223;W\224<X\224<X\225=Y\226=Z\227>Z\227>[\230?[\231?\\\231@]\232" + "@]\233A^\234B^\234A^\234\202@[\231\16A\\\232A\\\233B]\233B]\234C^\235C_\236" + "D_\236E`\237E`\240Ea\240Eb\241Fb\242Fc\242Gc\243\224\22)]\30\23*^\23*_\24" + "+_\24+`\25,a\25.c\27""0f\27""1h\30""1h\30""2i\31""2j\32""3k\32""4k\33""4" + "l\33""5m\34""5m\35""6n\36""7o\36""7p\37""8p\37""8q\40""9r\37""9p\36""7o\202" + "\37""8o\17\40""9p\40:q!:q!;r\";s\"<t#<t$=u$>v%>w%?w&?x&@y'Ay'Az\202(B{\5" + ")C|*D}*D~+E~+E\177\202,E\200\22-F\200-G\201.G\201.H\202/H\2030I\2040J\204" + "1J\2051K\2062K\2062L\2073M\2116R\2157S\2167S\2178T\2208U\2209U\221\202:V" + "\222\15;W\223;W\224<X\225<Y\225=Y\226=Z\227>Z\227>[\230?\\\231@\\\232@]\232" + "A]\233A^\233\202?Z\230\202@[\231\5A\\\232A]\233B]\234C^\234C^\235\202D_\236" + "\6E`\237Ea\240Ea\241Eb\241Fb\242Gc\243\225\22)]\24\23*^\23*_\24,a\25.d\26" + "/f\26""0g\27""0g\27""1h\30""2i\31""2i\31""3j\32""3k\32""4l\33""4l\33""5m" + "\34""6n\35""6n\36""7o\37""7p\36""7o\202\35""6m\202\36""7n\22\37""8o\37""9" + "p\40""9p\40:q!:r!;s\"<s#<t#=u$=u$>v%>w%?w&@x&@y'Az(Az(B{\202)C|\2*D}*D~\202" + "+E\177\13,E\200,F\200-F\200.G\201.H\202/H\202/I\2030I\2040J\2051J\2051K\206" + "\2022L\207\5""4N\2116R\2157S\2178T\2178T\220\2029U\221\17:V\222:W\223;W\223" + ";X\224<X\225<Y\226=Y\226>Z\227>[\230?[\230?\\\231@\\\232@]\232?Z\227>Y\227" + "\202?Z\230\1@[\231\202A\\\232\13B]\233B]\234C^\235C_\235D_\236D`\237E`\237" + "Ea\240Ea\241Fb\241Fc\242\225\22)]\20\23*_\24,b\24.d\25.e\26/e\26/f\27""0" + "g\27""1g\30""1h\30""2i\31""2j\31""3j\32""3k\32""4l\33""5l\34""5m\202\35""6" + "n\27\34""5l\34""5k\34""5l\35""6l\35""6m\36""7n\36""8n\37""8o\40""9p\40""9" + "q!:q!:r\";s\"<s#<t#=u$=v$>v%?w%?x&@x'@y'Az\202(B{\17)C|)C}*D}*E~+E\177,E" + "\177,E\200-F\200-G\201.G\201.H\202/H\203/I\2030J\2040J\205\2021K\206\31""2" + "L\2073L\2104N\2116R\2157S\2178T\2178T\2209U\2219V\222:V\222;W\223;W\224<" + "X\224<Y\225=Y\226=Z\227>Z\227>[\230?[\231?\\\231>Z\227>X\226>Y\226?Y\227" + "?Z\230\202@[\231\14A\\\232A\\\233B]\233B]\234C^\235C_\236D_\236E`\237E`\240" + "Ea\240Eb\241Fb\242\223\22)]\33\22*^\23+a\23,b\23-c\24-d\25.d\25.e\26/f\26" + """0f\27""0g\27""1h\30""1h\30""2i\31""3j\32""3k\32""4k\33""4l\33""5m\33""4" + "k\33""3i\33""4j\33""4k\34""5k\34""5l\35""6m\36""7m\36""7n\202\37""8o*\40" + """9p\40:q!:r!;r\";s\"<t#<t$=u$>v%>w%?w&?x&@y'Ay'Az(B{(B|)C|*D}*D~+E~+E\177" + ",E\200,F\200-F\200-G\201.G\202.H\202/I\2030I\2040J\2041J\2051K\2062K\207" + "2L\2073M\2104N\2116R\2157S\2178T\2209U\2209U\221\202:V\222\34;W\223;W\224" + "<X\225<Y\225=Y\226=Z\227>Z\227?[\230>Z\227=W\225=X\225>X\226>Y\227?Z\227" + "?Z\230@[\231@[\232A\\\232B\\\233B]\234C^\234C^\235D_\236D`\236E`\237Ea\240" + "Ea\241Eb\241\221\22)]\2\22*^\23+a\204\23,b\15\24-c\24-d\25.d\25/e\26/f\26" + """0g\27""0g\30""1h\30""2i\31""2i\31""3j\32""3k\32""3j\202\32""2h\202\33""3" + "i\5\33""4j\34""4k\34""5k\35""6l\35""6m\202\36""7n\17\37""8o\37""9p\40""9" + "p\40:q!:r!;s\";s#<t#=u$=u$>v%>w%?w&@x&@y\202'Az\1(B{\202)C|\2*D}*D~\202+" + "E\177\13,E\200,F\200-F\200.G\201.H\202/H\202/I\2030I\2040J\2051J\2051K\206" + "\2022L\207\5""3M\2104N\2116R\2158T\2178T\220\2029U\221\5:V\222:W\223;W\223" + ";X\224<X\225\202=Y\226\202>Z\227\11<V\224<W\224=W\225=X\226>Y\226>Y\227?" + "Z\230@Z\230@[\231\202A\\\232\2B]\233B]\234\202C^\235\5D_\236D`\237E`\237" + "Ea\240Ea\241\217\22)]\2\22*^\23+a\206\23,b\13\23,c\24-c\24.d\25.e\26/e\26" + "/f\27""0g\27""1h\30""1h\30""2i\31""2i\202\31""1f\34\31""1g\32""2g\33""2h" + "\33""3i\33""3j\33""4j\34""5k\34""5l\35""6l\35""6m\36""7n\36""8o\37""8o\40" + """9p\40""9q!:q!;r\";s\"<s#<t#=u$=v$>v%?w&?x&@x'@y'Az\202(B{\5)C|)C}*D}*E" + "~+E\177\202,E\200\32-F\200-F\201.G\201.H\202/H\203/I\2030I\2040J\2051K\206" + "2K\2062L\2073L\2103M\2104N\2116Q\2148T\2178T\2209U\2219V\222:V\222;W\223" + ";W\224<X\225<Y\225=Y\226=Z\226\202;V\223\7<V\224<W\224=X\225=X\226>Y\226" + "?Y\227?Z\230\202@[\231\5A\\\232A\\\233B]\233B]\234C^\235\202D_\236\3E`\237" + "E`\240Ea\240\215\22)]\2\22*^\23+a\211\23,b\6\24-c\24-d\25.d\25.e\26/f\26" + """0f\202\27""0gX\27/e\27/d\30""0e\31""0f\31""1f\32""1g\32""2h\33""2h\33""3" + "i\33""4j\33""4k\34""5k\34""5l\35""6m\36""7m\36""7n\37""8o\37""8p\40""9p\40" + ":q!:r!;r\";s\"<t#<t$=u$>v%>w%?w&?x&@y'Ay'Az(B{(B|)C|*D}*D~+E~+E\177,E\200" + ",F\200-F\200-G\201.G\202.H\202/I\2030I\2040J\2041J\2051K\2062K\2072L\207" + "3M\2103M\2114N\2115O\2137S\2179U\2209U\221:V\222:V\223;W\223;X\224<X\225" + "<Y\225;V\223;U\222;U\223<V\223<W\224=W\225=X\225>X\226>Y\227?Z\227?Z\230" + "@[\231@[\232A\\\232B]\233B]\234C^\234C^\235D_\236D`\236E`\237Ea\240\213\22" + ")]\2\22*^\23+`\214\23,b\17\24-c\24-d\25.e\25/e\26/f\26.d\26.b\27.c\27/d\30" + "/d\30""0e\31""0f\31""1g\32""2g\32""2h\202\33""3i\5\33""4j\34""4k\34""5l\35" + """6l\35""6m\202\36""7n\22\37""8o\37""9p\40""9p!:q!:r\";s\"<s#<t#=u$=u$>v" + "%>w%?x&@x&@y'Az(Az(B{\202)C|\2*D}*D~\202+E\177\31,E\200,F\200-F\200-G\201" + ".H\202/H\203/I\2030I\2040J\2051J\2051K\2062L\2072L\2103M\2104M\2114N\212" + "5O\2126Q\2158T\2209U\221:V\222:W\223;W\223;X\224;V\223\202:T\221\10;U\222" + ";V\223<V\224<W\224=W\225=X\226>Y\226?Y\227\202?Z\230\1@[\231\202A\\\232\7" + "B]\233B]\234C^\235C_\235D_\236D`\237E`\237\211\22)]\2\22)^\23+`\216\23,b" + "\4\23,c\24-c\24.d\25-c\202\25,a#\26-b\26.c\27.c\27/d\30/e\30""0e\31""1f\32" + """1g\32""2g\33""2h\33""3i\33""3j\33""4j\34""5k\34""5l\35""6l\35""6m\36""7" + "n\36""8o\37""8o\40""9p\40""9q!:q!;r\";s\"<s#<t#=u$>v%>v%?w&?x&@x'@y'Az\202" + "(B{\5)C|)C}*D}*E~+E\177\202,E\200\17-F\200-G\201.G\201.H\202/H\203/I\203" + "0I\2040J\2051K\2062K\2062L\2073L\2103M\2104N\2114N\212\2025O\213\5""7R\216" + "9U\221:V\222;W\223:V\223\2029S\220\13:T\221:U\222;U\222;V\223<V\224<W\224" + "=X\225>X\226>Y\227?Y\227?Z\230\202@[\231\5A\\\232A\\\233B]\233B^\234C^\235" + "\202D_\236\1E`\237\207\22)]\2\22)^\23+`\222\23,bE\23+`\24+_\24+`\25,a\25" + "-a\26-b\26.c\27.c\30/d\30""0e\31""0f\31""1f\32""1g\32""2h\33""2i\33""3i\33" + """4j\33""4k\34""5k\35""5l\35""6m\36""7m\36""7n\37""8o\37""8p\40""9p\40:q" + "!:r!;r\";s\"<t#=t$=u$>v%>w%?w&?x&@y'Ay'Az(B{)B|)C|*D}*D~+E~+E\177,E\200," + "F\200-F\200-G\201.G\202.H\202/H\2030I\2040J\2041J\2051K\2062K\2072L\2073" + "M\2103M\2114N\2114N\2125O\2136P\2136P\2147R\2169T\220\2028S\217\26""9S\220" + "9T\220:T\221:U\222;U\223<V\223<W\224=W\225=X\225>X\226>Y\227?Z\227?Z\230" + "@[\231@[\232A\\\232B]\233B]\234C^\234C^\235D_\236D`\237\205\22)]\2\22)^\23" + "+`\221\23,b\22\23,a\22*_\22)]\23*^\23+_\24+`\24,`\25,a\25-b\26-b\27.c\27" + "/d\30/e\30""0e\31""0f\31""1g\32""2g\32""2h\202\33""3i\5\33""4j\34""4k\34" + """5l\35""6l\35""6m\202\36""7n\13\37""8o\37""9p\40""9q\40:q!:r\";s\"<s#<t" + "#=u$=u$>v\202%?w\3&@x'@y'Az\202(B{\202)C|\2*D}*D~\202+E\177\1,E\200\202-" + "F\200\10.G\201.H\202/H\202/I\2030I\2040J\2051J\2051K\206\2022L\207\5""3M" + "\2104M\2114N\2125O\2125O\213\2026P\214\5""7Q\2157R\2168R\2178S\2179S\220" + "\202:T\221\22;U\222;V\223<V\223<W\224=W\225=X\226>Y\226>Y\227?Z\230@Z\230" + "@[\231A\\\232A\\\233B]\233B]\234C^\235C_\235D_\236\203\22)]\2\22)^\23+`\222" + "\23,b\1\22+`\203\22)]\4\22)^\23*^\24+_\24+`\202\25,a\13\26-b\26.c\27.c\27" + "/d\30/e\30""0e\31""1f\31""1g\32""2g\33""2h\33""3i\202\33""4j\26\34""5k\34" + """5l\35""6l\35""6m\36""7n\36""8o\37""8o\40""9p\40""9q!:q!;r\";s\"<t#<t#=" + "u$>v%>v%?w&?x&@x(B{*D~\202(B{\5)C|)C}*D}*E~+E\177\202,E\200\17-F\200-G\201" + ".G\201.H\202/H\203/I\2030J\2040J\2051K\2062K\2062L\2073L\2103M\2104N\211" + "4N\212\2025O\213\22""6P\2146Q\2157Q\2158R\2168R\2179S\2179T\220:T\221:U\222" + ";U\222;V\223<V\224<W\224=X\225>X\226>Y\227?Y\227?Z\230\202@[\231\11A\\\232" + "A\\\233B]\233B^\234C^\235D_\236\22)]\22)^\23+`\222\23,b\2\23+`\22)^\205\22" + ")]\17\23*^\23*_\24+_\24+`\25,a\25-a\26-b\26.c\27.d\27/d\30""0e\31""0f\31" + """1f\32""1g\32""2h\202\33""3iL\33""4j\33""4k\34""5k\34""6l\35""6m\36""7m" + "\36""7n\37""8o\37""8p\40""9p\40:q!:r!;r\";s\"<t#=u$=u$>v%>w%?w'@y)C~*D~*" + "C~(B{)B|)C|*D}*D~+E~+E\177,E\200,F\200-F\200-G\201.G\202/H\202/I\2030I\204" + "0J\2041J\2051K\2062K\2072L\2073M\2103M\2114N\2115N\2125O\2136P\2136P\214" + "7Q\2157Q\2168R\2168S\2179S\2209T\221:T\221;U\222;V\223<V\223<W\224=W\225" + "=X\225>X\226>Y\227?Z\227?Z\230@[\231@[\232A\\\232B]\233B]\234C^\234C^\235" + "\23+`\222\23,b\2\23+a\22*^\207\22)]\6\22)^\23*^\23+_\24+`\24,`\25,a\202\26" + "-b\10\27.c\27/d\30/e\30""0e\31""0f\31""1g\32""2g\32""2h\202\33""3i\5\33""4" + "j\34""5k\34""5l\35""6l\35""6m\202\36""7n\26\37""8o\37""9p\40""9q\40:q!:r" + "\";s\"<s#<t#=u$=u$>v%?x(B|)C})C~*D\177)C}(B{)C|)C}*D}*D~\202+E\177\1,E\200" + "\202-F\200\10.G\201.H\202/H\203/I\2030I\2040J\2051K\2051K\206\2022L\207\5" + """3M\2104N\2114N\2125O\2125O\213\2026P\214\27""7Q\2157R\2168R\2169S\2179" + "S\220:T\221:U\221;U\222;V\223<V\224<W\224=W\225=X\226>Y\226?Y\227?Z\230@" + "Z\230@[\231A\\\232A\\\233B]\233B]\234C^\235\222\23,b\1\22*_\212\22)]\4\22" + ")^\23*^\24+_\24+`\202\25,a\13\26-b\26.c\27.c\27/d\30/e\30""0e\31""1f\31""1" + "g\32""2h\33""2h\33""3i\202\33""4j\5\34""5k\34""5l\35""6l\36""6m\36""7n\202" + "\37""8o\26\40""9p\40""9q!:q!;r\";s\"<t#<t#=u$>v'@z(B|)B})C}*C~*D\177)C}(" + "B{)C|)C}*D~+E~+E\177\202,E\200\13-F\200-G\201.G\201.H\202/H\203/I\2040I\204" + "1J\2051K\2062K\2062L\207\2023M\210\2""4N\2114N\212\2025O\213\22""6P\2146" + "Q\2157Q\2158R\2168R\2179S\2209T\220:T\221:U\222;U\222;V\223<W\224=W\224=" + "X\225>X\226>Y\227?Y\227?Z\230\202@[\231\4A\\\232A\\\233B]\234B^\234\220\23" + ",b\1\22+`\215\22)]\17\23*^\23*_\24+_\24+`\25,a\25-a\26-b\26.c\27.d\27/d\30" + """0e\31""0f\31""1f\32""1g\32""2h\202\33""3i*\33""4j\33""4k\34""5k\35""5l" + "\35""6m\36""7m\36""7n\37""8o\37""8p\40""9p\40:q!:r!;r\";s#<t#=u&?x'A{(A|" + "(B|)C})C~*D~*D\177)C|)B|)C|*D}*D~+E~+E\177,E\200,F\200-F\200-G\201.G\202" + ".H\202/I\2030I\2040J\2041J\2051K\206\2022L\207\26""3M\2103M\2114N\2115N\212" + "5O\2136P\2136P\2147Q\2157Q\2168R\2168S\2179S\2209T\220:T\221:U\222;V\223" + "<V\223<W\224=W\225=X\225>X\226>Y\227\202?Z\230\5@[\231@[\232A\\\232B]\233" + "B]\234\216\23,b\2\23+`\22)^\217\22)]\5\23*^\23*_\24+`\24,`\25,a\202\26-b" + "\10\27.c\27/d\30/e\30""0e\31""0f\31""1g\32""2g\32""2h\202\33""3i\5\33""4" + "j\34""5k\34""5l\35""6l\35""6m\202\36""7n\21\37""8o\37""9p\40""9p!:q!:r\"" + ";s\"<s$>v&@z'@z'A{(B|(B})C}*C~*D\177+D\177\203)C|\2*D}*D~\202+E\177\22,E" + "\200,F\200-F\200.G\201.H\202/H\203/I\2030I\2040J\2051K\2051K\2062L\2072L" + "\2103M\2104N\2114N\2125O\2125O\213\2026P\214\25""7Q\2157R\2168R\2179S\217" + "9S\220:T\221:U\221;U\222;V\223<V\224<W\224=X\225=X\226>Y\226?Y\227?Z\230" + "@Z\230@[\231A\\\232A\\\233B]\233\214\23,b\2\23+a\22*^\221\22)]\21\22*^\23" + "*^\23+_\24+`\25,`\25,a\26-b\26.c\27.c\27/d\30/e\30""0e\31""1f\31""1g\32""2" + "h\33""2h\33""3i\202\33""4j\5\34""5k\34""5l\35""6m\35""7m\36""7n\202\37""8" + "o\20\40""9p\40""9q!:q!;r#<u%?y&?y&@z'A{(A{(B|)B})C}*C~*D\177+E\177\202)C" + "|\4)C}*D}+E~+E\177\202,E\200\13-F\200-G\201.G\201.H\202/H\203/I\2030J\204" + "1J\2051K\2062K\2062L\207\2023M\210\2""4N\2114N\212\2025O\213\1""6P\214\202" + "7Q\215\17""8R\2168R\2179S\2209T\220:T\221:U\222;U\222;V\223<V\224=W\224=" + "X\225>X\226>Y\227?Y\227?Z\230\202@[\231\2A\\\232A\\\233\213\23,b\1\22*_\224" + "\22)]\17\23*^\23*_\24+_\24,`\25,a\25-a\26-b\27.c\27.d\30/d\30""0e\31""0f" + "\31""1g\32""1g\32""2h\202\33""3i*\33""4j\33""4k\34""5k\35""5l\35""6m\36""7" + "m\36""7n\37""8o\37""8p\40""9p\40:q\";s$>w%>x&?y&@z'@z'A{(A|(B|)C})C~*D~*" + "D\177+E\200)C})C|*D}*D~+E~+E\177,E\200,F\200-F\200-G\201.G\202/H\202/I\203" + "0I\2040J\2041J\2051K\206\2022L\207\5""3M\2103M\2114N\2115N\2125O\213\202" + "6P\214\17""7Q\2157Q\2168R\2168S\2179S\2209T\220:T\221;U\222;V\223<V\223<" + "W\224=W\225=X\225>X\226>Y\227\202?Z\230\3@[\231@\\\232A\\\232\211\23,b\1" + "\22+`\226\22)]\6\22)^\23*^\23+_\24+`\24,`\25,a\202\26-b\10\27.c\27/d\30/" + "e\30""0e\31""0f\31""1g\32""2g\32""2h\202\33""3i\5\33""4j\34""5k\34""5l\35" + """6l\35""6m\202\36""7n\26\37""8o\37""9p\40""9q#=v$=w%>x%?x&?y&@z'@z'A{(A" + "|(B})C}*C~*D\177+D\177+E\200*D\177)C}*D}*D~\202+E\177\1,E\200\202-F\200$" + ".G\201.H\202/H\203/I\2030I\2040J\2051K\2051K\2062L\2073L\2103M\2104M\211" + "4N\2125O\2125O\2136P\2146P\2157Q\2157R\2168R\2179S\2179S\220:T\221:U\221" + ";U\222;V\223<V\224<W\224=W\225=X\226>Y\226?Y\227?Z\230@[\230@[\231A\\\232" + "\207\23,b\2\23+a\22)^\230\22)]\21\22*^\23*^\24+_\24+`\25,a\25-a\26-b\26." + "c\27.c\27/d\30/e\30""0f\31""1f\32""1g\32""2h\33""2h\33""3i\202\33""4j\5\34" + """5k\34""5l\35""6l\35""7m\36""7n\202\37""8o\17\";t#<v$=v$>w%>x%?y&?y'@z'" + "A{(A{(B|)B})C~*D~*D\177\202+E\200\5+F\200*D~*D}+E~+E\177\202,E\200\13-F\200" + "-G\201.G\201.H\202/H\203/I\2030J\2041J\2051K\2062K\2062L\207\2023M\210\2" + """4N\2114N\212\2025O\213\1""6P\214\2027Q\215\17""8R\2168R\2179S\2179T\220" + ":T\221:U\222;U\222;V\223<W\224=W\224=X\225>X\226>Y\227?Y\227?Z\230\202@[" + "\231\205\23,b\2\23,a\22*^\233\22)]\17\23*^\23*_\24+_\24+`\25,a\25-a\26-b" + "\27.c\27/d\30/d\30""0e\31""0f\31""1f\32""1g\32""2h\202\33""3i\35\33""4j\33" + """4k\34""5k\35""6l\35""6m\36""7m\36""7n!:r\";u#<u#=v$=w%>w%>x&?y&@z'@z'A" + "{(A|(B|)C})C~*D\177+D\177+E\200,F\200,G\200+F\200*D~\202+E\177#,E\200,F\200" + "-F\200.G\201.G\202/H\202/I\2030I\2040J\2041J\2051K\2062K\2072L\2073M\210" + "3M\2114N\2125N\2125O\2136P\2136P\2147Q\2157Q\2168R\2168S\2179S\2209T\221" + ":T\221:U\222;V\223<V\223<W\224=W\225=X\225>X\226>Y\227\202?Z\230\1@[\231" + "\204\23,b\1\22*_\235\22)]/\22)^\23*^\23+_\24+`\25,`\25,a\26-b\26.b\27.c\27" + "/d\30/e\30""0e\31""0f\31""1g\32""2g\32""2h\33""3i\33""3j\33""4j\34""5k\34" + """5l\35""6l\35""6m\37""8p!;s\";t\"<u#<v$=v$>w%>x%?x&?y&@z'@z'A{(B|)B})C}" + "*C~*D\177+E\177+E\200,F\200,G\200-H\201+F\200\202+E\177%,E\200-F\200-F\201" + ".G\201.H\202/H\203/I\2030I\2040J\2051K\2051K\2062L\2073L\2103M\2104N\211" + "4N\2125O\2125O\2136P\2146P\2157Q\2157R\2168R\2179S\2179S\220:T\221:U\221" + ";U\222;V\223<V\224<W\224=X\225=X\226>Y\226?Y\227?Z\230@[\231\202\23,b\1\23" + "+`\240\22)]\21\22*^\23*_\24+_\24+`\25,a\25-a\26-b\26.c\27.c\27/d\30/e\30" + """0e\31""1f\32""1g\32""2h\33""2h\33""3i\202\33""4j\5\34""5k\34""5l\36""7" + "n!:r!:s\202\";t\17#<u#<v$=v$>w%>x%?y&?y&@z'A{(A{(B|)B})C~*D~*D\177\202+E" + "\200\2,F\200,G\201\202-H\201\1,F\200\202,E\200\13-F\200-G\201.G\201.H\202" + "/H\203/I\2040J\2041J\2051K\2062K\2062L\207\2023M\210\5""4N\2114N\2125O\213" + "5P\2136P\214\2027Q\215\21""8R\2168R\2179S\2209T\220:T\221:U\222;U\222;V\223" + "<W\224=W\225=X\225>X\226>Y\227?Y\227?Z\230\23+a\22*^\242\22)]\17\23*^\23" + "*_\24+_\24,`\25,a\25-a\26-b\26.c\27.d\30/d\30""0e\31""0f\31""1f\32""1g\32" + """2h\202\33""3i\5\33""4j\33""4k\35""6l\37""8q\40""9r\202!:s\17\";t\"<u#<" + "u#=v$=w%>w%>x&?y&@z'@z'A{(A|(B|)C})C~\202*D\177\7+E\200,F\200,G\200-H\201" + "-H\202.I\202-H\202\202,F\200\11-F\200-G\201.G\202/H\202/I\2030I\2040J\205" + "1J\2051K\206\2022L\207\5""3M\2103M\2114N\2115O\2125O\213\2026P\214\20""7" + "Q\2157Q\2168R\2168S\2179S\2209T\221:T\221;U\222;V\223<V\223<W\224=W\225=" + "X\225>Y\226>Y\227?Z\230\245\22)]\5\23*^\23+_\24+`\25,`\25,a\202\26-b;\27" + ".c\27/d\30/e\30""0e\31""0f\31""1g\32""2g\32""2h\33""3i\33""3j\33""4k\36""7" + "o\37""8q\40""9q\40""9r!:s!;s\";t\"<u#<v$=v$=w%>x%?x&?y&@z'@{'A{(B|(B})C}" + ")C~*D\177+E\177+E\200,F\200,G\201-H\201-I\202.I\203,F\200,E\200-F\200-F\201" + ".G\201.H\202/H\203/I\2030I\2040J\2051K\2051K\2062L\2073L\2103M\2104N\211" + "4N\2125O\2125O\213\2026P\214\24""7Q\2157R\2168R\2179S\2179S\220:T\221:U\222" + ";U\222;V\223<V\224<W\224=X\225=X\226>Y\226?Y\227\302\303\307\314\315\321" + "\307\311\314\303\305\311\325\327\333\243\331\333\336\210\331\333\337\207" + "\332\333\337\220\332\334\340\203\333\334\340\202\333\334\341\230\333\335" + "\341\203\333\335\342\203\334\335\342\2\334\336\342\202\213\236\202p{\223" + "\1\237\244\256\202\253\255\261\1\260\262\266\202\253\255\261\1\260\262\266" + "\202\253\255\261\6\260\262\267\317\316\314\231\236\232\215\244\223\322\322" + "\322\340\340\340\346\345\345\345\1Xd\177\202:Jm\1\214\220\232\202\240\240" + "\240\1\250\250\250\202\240\240\240\1\250\250\250\202\240\240\240\6\247\247" + "\247\306\306\306\302\302\301\300\276\273\311\311\311\342\342\342\346\345" + "\345\345\1q{\216\202Yf\200\1\230\233\242\202\247\247\247\1\255\255\255\202" + "\247\247\247\1\255\255\255\202\247\247\247\1\256\256\256", +}; + diff --git a/src/image_data/rotation_orientation_horiz_flipped.h b/src/image_data/rotation_orientation_horiz_flipped.h index 20ce1d9..8ceca39 100644 --- a/src/image_data/rotation_orientation_horiz_flipped.h +++ b/src/image_data/rotation_orientation_horiz_flipped.h @@ -4,1152 +4,720 @@ static const nv_image_t rotation_orientation_horiz_flipped_image = { 120, 90, 3, 0, - "\377\0\0\0\363\0\0\0\2\2\16\2\27\233\27\216\37\315\37\2\34\237>\26""9\353" - "\340\25""5\375\2\20(\277\1\4\21\204\0\0\0\1\40\240\40\220*\324*\1'\255S\341" - "\34F\375\1\25""5\277\204\0\0\0\2224\3334\342$X\375\204\0\0\0\222>\342>\1" - "-~\351\341+i\375\204\0\0\0\221H\351H\1B\326\215\3421z\375\204\0\0\0\220R" - "\357R\2K\342\240:\224\370\3428\210\375\204\0\0\0\15>\254\373@\254\373A\255" - "\373C\255\373D\256\372F\256\372G\257\372H\257\372I\260\372K\260\372L\261" - "\371M\261\371N\261\371\202P\262\371\202R\263\371\1S\263\371\202U\264\370" - "\2V\264\370W\264\370\202X\265\370\3Y\265\370Z\265\370Z\266\370\202[\266\370" - "\202\\\266\370\202]\266\367\212]\267\367\202]\266\367\202\\\266\370\202[" - "\266\370\3Z\266\370Z\265\370Y\265\370\202X\265\370\2W\264\370V\264\370\202" - "U\264\370\1S\263\371\202R\263\371\202P\262\371\24N\261\371M\261\371L\261" - "\371K\260\372I\260\372H\257\372G\257\372F\256\372D\256\372C\255\373A\255" - "\373@\254\373>\254\373<\253\373;\253\3749\252\3748\252\3746\251\3744\250" - "\3743\250\375\2411\247\375\204\0\0\0\7A\255\373B\255\373C\256\373E\256\372" - "F\257\372H\257\372I\260\372\202K\260\372\2M\261\371N\261\371\202P\262\371" - "\202R\263\371\4T\263\371U\264\370V\264\370W\264\370\202X\265\370\4Z\265\370" - "Z\266\370[\266\370\\\266\370\202]\266\367\1]\267\367\202^\267\367\204_\267" - "\367\210`\267\367\204_\267\367\202^\267\367\1]\267\367\202]\266\367\4\\\266" - "\370[\266\370Z\266\370Z\265\370\202X\265\370\4W\264\370V\264\370U\264\370" - "T\263\371\202R\263\371\202P\262\371\2N\261\371M\261\371\202K\260\372\17I" - "\260\372H\257\372F\257\372E\256\372C\256\373B\255\373A\255\373>\254\373=" - "\253\373;\253\374:\252\3748\252\3746\251\3745\251\3743\250\375\2401\247\375" - "\204\0\0\0\20B\255\373D\256\372F\256\372G\257\372H\257\372J\260\372K\260" - "\372M\261\371N\261\371O\262\371P\262\371R\263\371S\263\371T\263\371U\264" - "\370V\264\370\202X\265\370\7Y\265\370Z\266\370[\266\370\\\266\370]\266\367" - "]\267\367^\267\367\202_\267\367\202`\267\367\1a\270\367\206b\270\367\204" - "c\270\367\206b\270\367\1a\270\367\202`\267\367\202_\267\367\7^\267\367]\267" - "\367]\266\367\\\266\370[\266\370Z\266\370Y\265\370\202X\265\370\31V\264\370" - "U\264\370T\263\371S\263\371R\263\371P\262\371O\262\371N\261\371M\261\371" - "K\260\372J\260\372H\257\372G\257\372F\256\372D\256\372B\255\373A\255\373" - "?\254\373>\254\373;\253\374:\252\3749\252\3746\251\3745\251\3744\250\375" - "\2371\247\375\204\0\0\0\11D\256\372F\257\372H\257\372I\260\372K\260\372L" - "\261\371M\261\371O\262\371P\262\371\202R\263\371\12T\263\371U\264\370V\264" - "\370X\265\370Y\265\370Z\265\370[\266\370\\\266\370]\266\367]\267\367\202" - "_\267\367\2`\267\367a\270\367\203b\270\367\1c\270\367\202d\271\367\202d\271" - "\366\212e\271\366\202d\271\366\202d\271\367\1c\270\367\203b\270\367\2a\270" - "\367`\267\367\202_\267\367\12]\267\367]\266\367\\\266\370[\266\370Z\265\370" - "Y\265\370X\265\370V\264\370U\264\370T\263\371\202R\263\371\23P\262\371O\262" - "\371M\261\371L\261\371K\260\372I\260\372H\257\372F\257\372D\256\372C\255" - "\373A\255\373@\254\373>\254\373<\253\373;\253\3749\252\3747\251\3745\251" - "\3744\250\375\2361\247\375\204\0\0\0\26F\257\372H\257\372J\260\372K\260\372" - "M\261\371N\261\371P\262\371Q\262\371R\263\371T\263\371U\264\370V\264\370" - "X\265\370Y\265\370Z\265\370[\266\370\\\266\370]\267\367^\267\367_\267\367" - "`\267\367a\270\367\202b\270\367\4c\270\367d\271\367d\271\366e\271\366\202" - "f\271\366\204g\272\366\210h\272\366\204g\272\366\202f\271\366\4e\271\366" - "d\271\366d\271\367c\270\367\202b\270\367!a\270\367`\267\367_\267\367^\267" - "\367]\267\367\\\266\370[\266\370Z\265\370Y\265\370X\265\370V\264\370U\264" - "\370T\263\371R\263\371Q\262\371P\262\371N\261\371M\261\371K\260\372J\260" - "\372H\257\372F\257\372E\256\372C\256\373A\255\373@\254\373>\254\373<\253" - "\373;\253\3749\252\3747\251\3745\251\3744\250\375\2351\247\375\204\0\0\0" - "\20H\257\372J\260\372L\261\371M\261\371O\262\371P\262\371R\263\371S\263\371" - "U\264\370V\264\370X\265\370Y\265\370Z\265\370[\266\370]\266\367]\267\367" - "\202_\267\367\1a\270\367\202b\270\367\4d\271\367d\271\366e\271\366f\271\366" - "\202g\272\366\202h\272\366\1i\272\366\202i\273\366\204j\273\366\204k\273" - "\366\204j\273\366\202i\273\366\1i\272\366\202h\272\366\202g\272\366\4f\271" - "\366e\271\366d\271\366d\271\367\202b\270\367\1a\270\367\202_\267\367\34]" - "\267\367]\266\367[\266\370Z\265\370Y\265\370X\265\370V\264\370U\264\370S" - "\263\371R\263\371P\262\371O\262\371M\261\371L\261\371J\260\372H\257\372G" - "\257\372F\256\372C\256\373B\255\373@\254\373>\254\373=\253\373;\253\3749" - "\252\3747\251\3745\251\3744\250\375\2341\247\375\204\0\0\0\26K\260\372L\261" - "\371N\261\371P\262\371Q\262\371R\263\371T\263\371U\264\370W\264\370X\265" - "\370Z\265\370[\266\370]\266\367]\267\367_\267\367`\267\367a\270\367b\270" - "\367c\270\367d\271\367e\271\366f\271\366\202g\272\366\5h\272\366i\272\366" - "i\273\366j\273\366k\273\366\202l\273\366\202l\274\365\212m\274\365\202l\274" - "\365\202l\273\366\5k\273\366j\273\366i\273\366i\272\366h\272\366\202g\272" - "\366#f\271\366e\271\366d\271\367c\270\367b\270\367a\270\367`\267\367_\267" - "\367]\267\367]\266\367[\266\370Z\265\370X\265\370W\264\370U\264\370T\263" - "\371R\263\371Q\262\371P\262\371N\261\371L\261\371K\260\372I\260\372G\257" - "\372F\256\372D\256\372B\255\373A\255\373>\254\373=\253\373;\253\3749\252" - "\3747\251\3745\251\3744\250\375\2331\247\375\204\0\0\0\23M\261\371N\261\371" - "P\262\371R\263\371S\263\371U\264\370V\264\370X\265\370Y\265\370Z\266\370" - "\\\266\370]\267\367_\267\367`\267\367a\270\367b\270\367c\270\367d\271\366" - "e\271\366\202g\272\366\6h\272\366i\273\366j\273\366k\273\366l\273\366l\274" - "\365\202m\274\365\1n\274\365\202o\274\365\202o\275\365\210p\275\365\202o" - "\275\365\202o\274\365\1n\274\365\202m\274\365\6l\274\365l\273\366k\273\366" - "j\273\366i\273\366h\272\366\202g\272\366!e\271\366d\271\366c\270\367b\270" - "\367a\270\367`\267\367_\267\367]\267\367\\\266\370Z\266\370Y\265\370X\265" - "\370V\264\370U\264\370S\263\371R\263\371P\262\371N\261\371M\261\371K\260" - "\372I\260\372H\257\372F\256\372D\256\372B\255\373A\255\373>\254\373=\253" - "\373;\253\3749\252\3747\251\3745\251\3743\250\375\2321\247\375\204\0\0\0" - "\35O\262\371P\262\371R\263\371T\263\371U\264\370W\264\370X\265\370Z\265\370" - "[\266\370]\266\367^\267\367_\267\367a\270\367b\270\367c\270\367d\271\366" - "f\271\366g\272\366h\272\366i\272\366j\273\366k\273\366l\273\366l\274\365" - "m\274\365n\274\365o\274\365o\275\365p\275\365\204q\275\365\203r\276\365\204" - "s\276\365\203r\276\365\204q\275\365,p\275\365o\275\365o\274\365n\274\365" - "m\274\365l\274\365l\273\366k\273\366j\273\366i\272\366h\272\366g\272\366" - "f\271\366d\271\366c\270\367b\270\367a\270\367_\267\367^\267\367]\266\367" - "[\266\370Z\265\370X\265\370W\264\370U\264\370T\263\371R\263\371P\262\371" - "O\262\371M\261\371K\260\372J\260\372H\257\372F\257\372D\256\372B\255\373" - "A\255\373>\254\373=\253\373;\253\3749\252\3747\251\3745\251\3743\250\375" - "\2311\247\375\204\0\0\0\31Q\262\371R\263\371T\263\371V\264\370X\265\370Y" - "\265\370Z\266\370\\\266\370]\267\367_\267\367`\267\367b\270\367c\270\367" - "d\271\366f\271\366g\272\366h\272\366i\273\366j\273\366l\273\366l\274\365" - "m\274\365o\274\365o\275\365p\275\365\202q\275\365\1r\276\365\202s\276\365" - "\1t\276\365\202t\276\364\212u\277\364\202t\276\364\1t\276\365\202s\276\365" - "\1r\276\365\202q\275\365)p\275\365o\275\365o\274\365m\274\365l\274\365l\273" - "\366j\273\366i\273\366h\272\366g\272\366f\271\366d\271\366c\270\367b\270" - "\367`\267\367_\267\367]\267\367\\\266\370Z\266\370Y\265\370X\265\370V\264" - "\370T\263\371R\263\371Q\262\371O\262\371M\261\371K\260\372J\260\372H\257" - "\372F\257\372D\256\372B\255\373A\255\373>\254\373<\253\373;\253\3749\252" - "\3746\251\3744\250\3743\250\375\2301\247\375\204\0\0\0\26R\263\371U\264\370" - "V\264\370X\265\370Z\265\370[\266\370]\266\367^\267\367_\267\367a\270\367" - "b\270\367d\271\367e\271\366g\272\366h\272\366i\273\366j\273\366l\273\366" - "m\274\365n\274\365o\274\365p\275\365\202q\275\365\5r\276\365s\276\365t\276" - "\365t\276\364u\277\364\203v\277\364\202w\277\364\210x\300\364\202w\277\364" - "\203v\277\364\5u\277\364t\276\364t\276\365s\276\365r\276\365\202q\275\365" - "'p\275\365o\274\365n\274\365m\274\365l\273\366j\273\366i\273\366h\272\366" - "g\272\366e\271\366d\271\367b\270\367a\270\367_\267\367^\267\367]\266\367" - "[\266\370Z\265\370X\265\370V\264\370U\264\370R\263\371Q\262\371O\262\371" - "M\261\371K\260\372J\260\372H\257\372F\257\372D\256\372B\255\373A\255\373" - ">\254\373<\253\373:\252\3749\252\3746\251\3744\250\3742\250\375\2271\247" - "\375\204\0\0\0\13U\264\370W\264\370X\265\370Z\265\370\\\266\370]\267\367" - "_\267\367`\267\367b\270\367c\270\367e\271\366\202g\272\366\14i\272\366j\273" - "\366l\273\366m\274\365n\274\365o\275\365p\275\365q\275\365r\276\365t\276" - "\365t\276\364u\277\364\202v\277\364\2w\277\364x\300\364\204y\300\364\203" - "z\300\364\204{\301\364\203z\300\364\204y\300\364\2x\300\364w\277\364\202" - "v\277\364\14u\277\364t\276\364t\276\365r\276\365q\275\365p\275\365o\275\365" - "n\274\365m\274\365l\273\366j\273\366i\272\366\202g\272\366\34e\271\366c\270" - "\367b\270\367`\267\367_\267\367]\267\367\\\266\370Z\265\370X\265\370W\264" - "\370U\264\370S\263\371Q\262\371P\262\371M\261\371K\260\372J\260\372H\257" - "\372F\256\372D\256\372B\255\373@\254\373>\254\373<\253\373:\252\3748\252" - "\3746\251\3744\250\375\2271\247\375\204\0\0\0\21W\264\370X\265\370Z\266\370" - "\\\266\370]\267\367_\267\367a\270\367b\270\367d\271\367e\271\366g\272\366" - "i\272\366j\273\366k\273\366l\274\365n\274\365o\275\365\202q\275\365\3s\276" - "\365t\276\365u\277\364\202v\277\364\1w\277\364\202y\300\364\202z\300\364" - "\202{\301\364\203|\301\363\210}\301\363\203|\301\363\202{\301\364\202z\300" - "\364\202y\300\364\1w\277\364\202v\277\364\3u\277\364t\276\365s\276\365\202" - "q\275\365#o\275\365n\274\365l\274\365k\273\366j\273\366i\272\366g\272\366" - "e\271\366d\271\367b\270\367a\270\367_\267\367]\267\367\\\266\370Z\266\370" - "X\265\370W\264\370U\264\370S\263\371Q\262\371P\262\371M\261\371K\260\372" - "J\260\372H\257\372F\256\372C\256\373B\255\373@\254\373>\254\373;\253\374" - "9\252\3747\251\3745\251\3743\250\375\2261\247\375\204\0\0\0\31X\265\370Z" - "\266\370\\\266\370^\267\367_\267\367b\270\367c\270\367d\271\366f\271\366" - "g\272\366i\273\366k\273\366l\274\365n\274\365o\275\365p\275\365q\275\365" - "s\276\365t\276\365u\277\364v\277\364w\277\364x\300\364y\300\364z\300\364" - "\202{\301\364\2|\301\363}\301\363\203~\302\363\203\177\302\363\206\200\302" - "\363\203\177\302\363\203~\302\363\2}\301\363|\301\363\202{\301\364,z\300" - "\364y\300\364x\300\364w\277\364v\277\364u\277\364t\276\365s\276\365q\275" - "\365p\275\365o\275\365n\274\365l\274\365k\273\366i\273\366g\272\366f\271" - "\366d\271\366c\270\367b\270\367_\267\367^\267\367\\\266\370Z\266\370X\265" - "\370W\264\370U\264\370S\263\371Q\262\371P\262\371M\261\371K\260\372I\260" - "\372H\257\372F\256\372C\256\373A\255\373?\254\373=\253\373;\253\3749\252" - "\3747\251\3745\251\3743\250\375\2251\247\375\204\0\0\0\24Z\266\370]\266\367" - "^\267\367`\267\367b\270\367c\270\367e\271\366g\272\366h\272\366i\273\366" - "l\273\366m\274\365o\274\365p\275\365q\275\365s\276\365t\276\365u\277\364" - "v\277\364w\277\364\202y\300\364\202{\301\364\1|\301\363\202~\302\363\1\177" - "\302\363\202\200\302\363\206\200\303\363\204\201\303\363\206\200\303\363" - "\202\200\302\363\1\177\302\363\202~\302\363\1|\301\363\202{\301\364\202y" - "\300\364(w\277\364v\277\364u\277\364t\276\365s\276\365q\275\365p\275\365" - "o\274\365m\274\365l\273\366i\273\366h\272\366g\272\366e\271\366c\270\367" - "b\270\367`\267\367^\267\367]\266\367Z\266\370Y\265\370W\264\370U\264\370" - "S\263\371Q\262\371O\262\371M\261\371K\260\372I\260\372G\257\372E\256\372" - "C\255\373A\255\373?\254\373=\253\373;\253\3749\252\3746\251\3744\250\374" - "2\250\375\2241\247\375\204\0\0\0\32]\266\367^\267\367`\267\367b\270\367d" - "\271\367e\271\366g\272\366i\272\366j\273\366l\273\366n\274\365o\275\365q" - "\275\365r\276\365t\276\365u\277\364v\277\364w\277\364y\300\364z\300\364{" - "\301\364|\301\363}\301\363~\302\363\177\302\363\200\302\363\203\200\303\363" - "\1\201\303\363\202\201\304\363\202\202\304\362\210\203\304\362\202\202\304" - "\362\202\201\304\363\1\201\303\363\203\200\303\363.\200\302\363\177\302\363" - "~\302\363}\301\363|\301\363{\301\364z\300\364y\300\364w\277\364v\277\364" - "u\277\364t\276\365r\276\365q\275\365o\275\365n\274\365l\273\366j\273\366" - "i\272\366g\272\366e\271\366d\271\367b\270\367`\267\367^\267\367]\266\367" - "Z\266\370Y\265\370W\264\370U\264\370R\263\371Q\262\371O\262\371M\261\371" - "K\260\372H\257\372G\257\372E\256\372C\255\373A\255\373>\254\373<\253\373" - ":\252\3748\252\3746\251\3744\250\375\2241\247\375\204\0\0\0\24^\267\367`" - "\267\367b\270\367d\271\367f\271\366g\272\366i\272\366k\273\366l\274\365n" - "\274\365p\275\365q\275\365s\276\365t\276\364v\277\364w\277\364y\300\364z" - "\300\364{\301\364|\301\363\202~\302\363\1\200\302\363\203\200\303\363\3\201" - "\304\363\202\304\362\203\304\362\202\204\304\362\1\204\305\362\203\205\305" - "\362\206\206\305\362\203\205\305\362\1\204\305\362\202\204\304\362\3\203" - "\304\362\202\304\362\201\304\363\203\200\303\363\1\200\302\363\202~\302\363" - ")|\301\363{\301\364z\300\364y\300\364w\277\364v\277\364t\276\364s\276\365" - "q\275\365p\275\365n\274\365l\274\365k\273\366i\272\366g\272\366f\271\366" - "d\271\367b\270\367`\267\367^\267\367]\266\367Z\266\370X\265\370W\264\370" - "U\264\370R\263\371P\262\371N\261\371M\261\371K\260\372H\257\372F\257\372" - "D\256\372B\255\373@\254\373>\254\373;\253\3749\252\3747\251\3745\251\374" - "3\250\375\2231\247\375\204\0\0\0\22`\267\367b\270\367d\271\367f\271\366g" - "\272\366i\273\366k\273\366m\274\365o\274\365p\275\365q\275\365t\276\365u" - "\277\364v\277\364x\300\364y\300\364{\301\364|\301\363\202~\302\363\1\200" - "\302\363\202\200\303\363\6\201\303\363\202\304\362\203\304\362\204\304\362" - "\204\305\362\205\305\362\202\206\305\362\202\207\306\362\203\210\306\362" - "\204\211\306\362\203\210\306\362\202\207\306\362\202\206\305\362\6\205\305" - "\362\204\305\362\204\304\362\203\304\362\202\304\362\201\303\363\202\200" - "\303\363\1\200\302\363\202~\302\363'|\301\363{\301\364y\300\364x\300\364" - "v\277\364u\277\364t\276\365q\275\365p\275\365o\274\365m\274\365k\273\366" - "i\273\366g\272\366f\271\366d\271\367b\270\367`\267\367^\267\367]\266\367" - "Z\266\370X\265\370V\264\370T\263\371R\263\371P\262\371N\261\371L\261\371" - "J\260\372H\257\372F\256\372C\256\373A\255\373?\254\373=\253\373;\253\374" - "9\252\3746\251\3744\250\374\2231\247\375\204\0\0\0\23b\270\367d\271\367f" - "\271\366g\272\366i\273\366k\273\366m\274\365o\274\365q\275\365r\276\365t" - "\276\365v\277\364w\277\364y\300\364z\300\364{\301\364}\301\363~\302\363\200" - "\302\363\202\200\303\363\10\201\304\363\202\304\362\204\304\362\204\305\362" - "\205\305\362\206\305\362\207\306\362\210\306\362\203\211\306\362\202\212" - "\306\361\210\213\307\361\202\212\306\361\203\211\306\362\10\210\306\362\207" - "\306\362\206\305\362\205\305\362\204\305\362\204\304\362\202\304\362\201" - "\304\363\202\200\303\363)\200\302\363~\302\363}\301\363{\301\364z\300\364" - "y\300\364w\277\364v\277\364t\276\365r\276\365q\275\365o\274\365m\274\365" - "k\273\366i\273\366g\272\366f\271\366d\271\367b\270\367`\267\367^\267\367" - "\\\266\370Z\265\370X\265\370V\264\370T\263\371R\263\371P\262\371M\261\371" - "K\260\372I\260\372G\257\372E\256\372C\255\373A\255\373>\254\373<\253\373" - ":\252\3748\252\3745\251\3743\250\375\2221\247\375\204\0\0\0\21d\271\367f" - "\271\366g\272\366i\273\366k\273\366m\274\365o\275\365q\275\365r\276\365t" - "\276\364v\277\364w\277\364y\300\364{\301\364|\301\363~\302\363\177\302\363" - "\202\200\303\363\7\201\304\363\202\304\362\204\304\362\205\305\362\206\305" - "\362\207\306\362\210\306\362\202\211\306\362\1\212\306\361\202\213\307\361" - "\202\214\307\361\202\215\307\361\206\216\310\361\202\215\307\361\202\214" - "\307\361\202\213\307\361\1\212\306\361\202\211\306\362\7\210\306\362\207" - "\306\362\206\305\362\205\305\362\204\304\362\202\304\362\201\304\363\202" - "\200\303\363(\177\302\363~\302\363|\301\363{\301\364y\300\364w\277\364v\277" - "\364t\276\364r\276\365q\275\365o\275\365m\274\365k\273\366i\273\366g\272" - "\366f\271\366d\271\367b\270\367_\267\367^\267\367\\\266\370Z\265\370X\265" - "\370U\264\370S\263\371Q\262\371O\262\371M\261\371K\260\372H\257\372F\257" - "\372D\256\372B\255\373@\254\373>\254\373;\253\3749\252\3746\251\3744\250" - "\3742\250\375\2211\247\375\204\0\0\0\35e\271\366g\272\366i\273\366k\273\366" - "m\274\365o\275\365q\275\365s\276\365t\276\364v\277\364x\300\364y\300\364" - "{\301\364}\301\363~\302\363\200\302\363\200\303\363\201\303\363\202\304\362" - "\204\304\362\205\305\362\206\305\362\207\306\362\210\306\362\211\306\362" - "\212\306\361\213\307\361\214\307\361\215\307\361\203\216\310\361\1\217\310" - "\361\203\220\310\361\204\220\311\361\203\220\310\361\1\217\310\361\203\216" - "\310\3614\215\307\361\214\307\361\213\307\361\212\306\361\211\306\362\210" - "\306\362\207\306\362\206\305\362\205\305\362\204\304\362\202\304\362\201" - "\303\363\200\303\363\200\302\363~\302\363}\301\363{\301\364y\300\364x\300" - "\364v\277\364t\276\364s\276\365q\275\365o\275\365m\274\365k\273\366i\273" - "\366g\272\366e\271\366d\271\367b\270\367_\267\367]\267\367[\266\370Y\265" - "\370W\264\370U\264\370R\263\371P\262\371N\261\371L\261\371J\260\372H\257" - "\372F\256\372C\256\373A\255\373?\254\373<\253\373:\252\3748\252\3746\251" - "\3744\250\375\2211\247\375\204\0\0\0\16g\272\366i\272\366k\273\366m\274\365" - "o\275\365q\275\365s\276\365t\276\364v\277\364x\300\364z\300\364{\301\364" - "}\301\363\177\302\363\202\200\303\363\5\201\304\363\203\304\362\204\305\362" - "\206\305\362\207\306\362\202\211\306\362\202\213\307\361\1\215\307\361\202" - "\216\310\361\4\217\310\361\220\310\361\220\311\361\221\311\361\202\222\311" - "\361\210\223\311\360\202\222\311\361\4\221\311\361\220\311\361\220\310\361" - "\217\310\361\202\216\310\361\1\215\307\361\202\213\307\361\202\211\306\362" - "\5\207\306\362\206\305\362\204\305\362\203\304\362\201\304\363\202\200\303" - "\363&\177\302\363}\301\363{\301\364z\300\364x\300\364v\277\364t\276\364s" - "\276\365q\275\365o\275\365m\274\365k\273\366i\272\366g\272\366e\271\366c" - "\270\367a\270\367_\267\367]\266\367Z\266\370X\265\370V\264\370T\263\371R" - "\263\371P\262\371M\261\371K\260\372I\260\372G\257\372E\256\372C\255\373@" - "\254\373>\254\373;\253\3749\252\3747\251\3744\250\3742\250\375\2201\247\375" - "\204\0\0\0\37i\272\366k\273\366m\274\365o\274\365q\275\365s\276\365t\276" - "\364v\277\364y\300\364z\300\364|\301\363~\302\363\177\302\363\200\303\363" - "\201\303\363\202\304\362\204\304\362\205\305\362\206\305\362\210\306\362" - "\211\306\362\213\307\361\214\307\361\215\307\361\216\310\361\217\310\361" - "\220\310\361\221\311\361\222\311\361\223\311\360\223\312\360\202\224\312" - "\360\212\225\312\360\202\224\312\3607\223\312\360\223\311\360\222\311\361" - "\221\311\361\220\310\361\217\310\361\216\310\361\215\307\361\214\307\361" - "\213\307\361\211\306\362\210\306\362\206\305\362\205\305\362\204\304\362" - "\202\304\362\201\303\363\200\303\363\177\302\363~\302\363|\301\363z\300\364" - "y\300\364v\277\364t\276\364s\276\365q\275\365o\274\365m\274\365k\273\366" - "i\272\366g\272\366d\271\366b\270\367`\267\367^\267\367]\266\367Z\266\370" - "X\265\370U\264\370S\263\371Q\262\371O\262\371M\261\371K\260\372H\257\372" - "F\257\372C\256\373A\255\373?\254\373=\253\373;\253\3748\252\3746\251\374" - "4\250\375\2201\247\375\204\0\0\0\35j\273\366l\274\365o\274\365q\275\365s" - "\276\365t\276\364v\277\364y\300\364z\300\364|\301\363~\302\363\200\302\363" - "\200\303\363\201\303\363\203\304\362\204\305\362\206\305\362\207\306\362" - "\211\306\362\212\306\361\213\307\361\215\307\361\216\310\361\217\310\361" - "\220\311\361\222\311\361\223\311\360\223\312\360\224\312\360\202\225\312" - "\360\2\226\313\360\227\313\360\212\230\313\360\2\227\313\360\226\313\360" - "\202\225\312\3606\224\312\360\223\312\360\223\311\360\221\311\361\220\311" - "\361\217\310\361\216\310\361\215\307\361\213\307\361\212\306\361\211\306" - "\362\207\306\362\206\305\362\204\305\362\203\304\362\201\303\363\200\303" - "\363\200\302\363~\302\363|\301\363z\300\364y\300\364v\277\364t\276\364s\276" - "\365q\275\365o\274\365l\274\365j\273\366h\272\366g\272\366d\271\366b\270" - "\367`\267\367^\267\367\\\266\370Z\265\370W\264\370U\264\370R\263\371P\262" - "\371N\261\371L\261\371J\260\372G\257\372E\256\372C\255\373A\255\373>\254" - "\373;\253\3749\252\3747\251\3744\250\3742\250\375\2171\247\375\204\0\0\0" - "\35l\274\365n\274\365p\275\365r\276\365t\276\364v\277\364x\300\364z\300\364" - "|\301\363~\302\363\200\302\363\200\303\363\201\304\363\203\304\362\205\305" - "\362\206\305\362\210\306\362\211\306\362\213\307\361\214\307\361\216\310" - "\361\217\310\361\220\311\361\222\311\361\223\311\360\224\312\360\225\312" - "\360\226\313\360\227\313\360\202\230\313\360\1\231\314\360\202\232\314\360" - "\210\233\314\357\202\232\314\360\1\231\314\360\202\230\313\3606\227\313\360" - "\226\313\360\225\312\360\224\312\360\223\311\360\222\311\361\220\311\361" - "\217\310\361\216\310\361\214\307\361\213\307\361\211\306\362\210\306\362" - "\206\305\362\205\305\362\203\304\362\201\304\363\200\303\363\200\302\363" - "~\302\363|\301\363z\300\364x\300\364v\277\364t\276\364r\276\365p\275\365" - "n\274\365l\274\365j\273\366h\272\366f\271\366d\271\367b\270\367_\267\367" - "]\267\367Z\266\370X\265\370V\264\370T\263\371R\263\371P\262\371M\261\371" - "K\260\372H\257\372F\257\372D\256\372A\255\373?\254\373=\253\373;\253\374" - "8\252\3746\251\3744\250\375\2171\247\375\204\0\0\0\32n\274\365p\275\365r" - "\276\365t\276\365v\277\364x\300\364z\300\364|\301\363~\302\363\200\302\363" - "\200\303\363\201\304\363\204\304\362\205\305\362\206\305\362\211\306\362" - "\212\306\361\213\307\361\215\307\361\217\310\361\220\311\361\221\311\361" - "\223\311\360\224\312\360\225\312\360\226\313\360\202\230\313\360\2\231\314" - "\360\232\314\360\202\233\314\357\1\234\315\357\212\235\315\357\1\234\315" - "\357\202\233\314\357\2\232\314\360\231\314\360\202\230\313\3604\226\313\360" - "\225\312\360\224\312\360\223\311\360\221\311\361\220\311\361\217\310\361" - "\215\307\361\213\307\361\212\306\361\211\306\362\206\305\362\205\305\362" - "\204\304\362\201\304\363\200\303\363\200\302\363~\302\363|\301\363z\300\364" - "x\300\364v\277\364t\276\365r\276\365p\275\365n\274\365l\273\366i\273\366" - "g\272\366e\271\366c\270\367a\270\367_\267\367\\\266\370Z\265\370X\265\370" - "U\264\370S\263\371Q\262\371N\261\371L\261\371J\260\372H\257\372E\256\372" - "C\255\373A\255\373>\254\373;\253\3749\252\3747\251\3744\250\3742\250\375" - "\2161\247\375\204\0\0\0\35o\275\365q\275\365t\276\365v\277\364x\300\364y" - "\300\364{\301\364~\302\363\200\302\363\200\303\363\201\304\363\204\304\362" - "\205\305\362\207\306\362\211\306\362\213\307\361\214\307\361\216\310\361" - "\217\310\361\221\311\361\223\311\360\224\312\360\225\312\360\226\313\360" - "\230\313\360\231\314\360\232\314\360\233\314\357\234\315\357\202\235\315" - "\357\1\236\315\357\202\237\316\357\210\240\316\357\202\237\316\357\1\236" - "\315\357\202\235\315\3577\234\315\357\233\314\357\232\314\360\231\314\360" - "\230\313\360\226\313\360\225\312\360\224\312\360\223\311\360\221\311\361" - "\217\310\361\216\310\361\214\307\361\213\307\361\211\306\362\207\306\362" - "\205\305\362\204\304\362\201\304\363\200\303\363\200\302\363~\302\363{\301" - "\364y\300\364x\300\364v\277\364t\276\365q\275\365o\275\365m\274\365k\273" - "\366i\272\366g\272\366d\271\366b\270\367_\267\367]\267\367[\266\370Y\265" - "\370W\264\370U\264\370R\263\371P\262\371M\261\371K\260\372H\257\372F\257" - "\372D\256\372A\255\373?\254\373=\253\373:\252\3748\252\3746\251\3743\250" - "\375\2161\247\375\204\0\0\0\26q\275\365s\276\365u\277\364w\277\364y\300\364" - "{\301\364~\302\363\177\302\363\200\303\363\201\304\363\204\304\362\205\305" - "\362\207\306\362\211\306\362\213\307\361\214\307\361\216\310\361\220\310" - "\361\221\311\361\223\312\360\225\312\360\226\313\360\202\230\313\360\6\232" - "\314\360\233\314\357\234\315\357\235\315\357\236\315\357\237\316\357\202" - "\240\316\357\2\241\316\357\242\317\357\210\242\317\356\2\242\317\357\241" - "\316\357\202\240\316\357\6\237\316\357\236\315\357\235\315\357\234\315\357" - "\233\314\357\232\314\360\202\230\313\3600\226\313\360\225\312\360\223\312" - "\360\221\311\361\220\310\361\216\310\361\214\307\361\213\307\361\211\306" - "\362\207\306\362\205\305\362\204\304\362\201\304\363\200\303\363\177\302" - "\363~\302\363{\301\364y\300\364w\277\364u\277\364s\276\365q\275\365o\274" - "\365l\274\365j\273\366h\272\366f\271\366c\270\367a\270\367_\267\367]\266" - "\367Z\266\370X\265\370U\264\370S\263\371Q\262\371N\261\371L\261\371J\260" - "\372H\257\372E\256\372C\255\373A\255\373>\254\373;\253\3749\252\3746\251" - "\3744\250\374\2161\247\375\204\0\0\0!r\276\365t\276\364v\277\364y\300\364" - "{\301\364}\301\363\177\302\363\200\303\363\201\304\363\203\304\362\205\305" - "\362\207\306\362\211\306\362\213\307\361\215\307\361\216\310\361\220\311" - "\361\222\311\361\223\312\360\225\312\360\227\313\360\230\313\360\232\314" - "\360\233\314\357\234\315\357\235\315\357\237\316\357\240\316\357\241\316" - "\357\242\317\357\242\317\356\243\317\356\244\317\356\212\245\320\356<\244" - "\317\356\243\317\356\242\317\356\242\317\357\241\316\357\240\316\357\237" - "\316\357\235\315\357\234\315\357\233\314\357\232\314\360\230\313\360\227" - "\313\360\225\312\360\223\312\360\222\311\361\220\311\361\216\310\361\215" - "\307\361\213\307\361\211\306\362\207\306\362\205\305\362\203\304\362\201" - "\304\363\200\303\363\177\302\363}\301\363{\301\364y\300\364v\277\364t\276" - "\364r\276\365p\275\365n\274\365l\273\366i\273\366g\272\366d\271\366b\270" - "\367`\267\367^\267\367[\266\370Y\265\370W\264\370U\264\370R\263\371P\262" - "\371M\261\371K\260\372H\257\372F\257\372C\256\373A\255\373?\254\373<\253" - "\373:\252\3747\251\3745\251\3743\250\375\2151\247\375\204\0\0\0\37t\276\365" - "v\277\364x\300\364z\300\364|\301\363~\302\363\200\303\363\201\303\363\203" - "\304\362\205\305\362\207\306\362\211\306\362\213\307\361\215\307\361\216" - "\310\361\220\311\361\222\311\361\224\312\360\225\312\360\227\313\360\231" - "\314\360\233\314\357\234\315\357\235\315\357\237\316\357\240\316\357\241" - "\316\357\242\317\356\243\317\356\244\317\356\245\320\356\202\246\320\356" - "\1\247\320\356\202\247\321\356\204\250\321\356\202\247\321\356\1\247\320" - "\356\202\246\320\356:\245\320\356\244\317\356\243\317\356\242\317\356\241" - "\316\357\240\316\357\237\316\357\235\315\357\234\315\357\233\314\357\231" - "\314\360\227\313\360\225\312\360\224\312\360\222\311\361\220\311\361\216" - "\310\361\215\307\361\213\307\361\211\306\362\207\306\362\205\305\362\203" - "\304\362\201\303\363\200\303\363~\302\363|\301\363z\300\364x\300\364v\277" - "\364t\276\365q\275\365o\275\365m\274\365j\273\366h\272\366f\271\366d\271" - "\367b\270\367_\267\367]\266\367Z\266\370X\265\370U\264\370S\263\371Q\262" - "\371N\261\371L\261\371J\260\372G\257\372E\256\372B\255\373@\254\373>\254" - "\373;\253\3749\252\3746\251\3744\250\375\2151\247\375\204\0\0\0\33u\277\364" - "w\277\364y\300\364{\301\364~\302\363\200\302\363\200\303\363\202\304\362" - "\204\305\362\206\305\362\211\306\362\213\307\361\214\307\361\216\310\361" - "\220\311\361\222\311\361\224\312\360\225\312\360\230\313\360\231\314\360" - "\233\314\357\235\315\357\236\315\357\240\316\357\241\316\357\242\317\356" - "\243\317\356\202\245\320\356\4\247\320\356\247\321\356\250\321\356\251\321" - "\356\202\252\321\356\206\252\322\355\202\252\321\356\4\251\321\356\250\321" - "\356\247\321\356\247\320\356\202\245\320\3567\243\317\356\242\317\356\241" - "\316\357\240\316\357\236\315\357\235\315\357\233\314\357\231\314\360\230" - "\313\360\225\312\360\224\312\360\222\311\361\220\311\361\216\310\361\214" - "\307\361\213\307\361\211\306\362\206\305\362\204\305\362\202\304\362\200" - "\303\363\200\302\363~\302\363{\301\364y\300\364w\277\364u\277\364s\276\365" - "q\275\365n\274\365l\273\366i\273\366g\272\366e\271\366b\270\367`\267\367" - "^\267\367[\266\370Y\265\370W\264\370T\263\371R\263\371P\262\371M\261\371" - "K\260\372H\257\372F\256\372C\256\373A\255\373>\254\373;\253\3749\252\374" - "7\251\3744\250\3742\250\375\2141\247\375\204\0\0\0\40v\277\364y\300\364{" - "\301\364}\301\363\177\302\363\200\303\363\201\304\363\204\304\362\206\305" - "\362\210\306\362\212\306\361\214\307\361\216\310\361\220\311\361\222\311" - "\361\224\312\360\226\313\360\230\313\360\232\314\360\233\314\357\235\315" - "\357\237\316\357\240\316\357\242\317\357\243\317\356\245\320\356\246\320" - "\356\247\320\356\250\321\356\251\321\356\252\321\356\253\322\355\203\254" - "\322\355\206\255\323\355\203\254\322\355<\253\322\355\252\321\356\251\321" - "\356\250\321\356\247\320\356\246\320\356\245\320\356\243\317\356\242\317" - "\357\240\316\357\237\316\357\235\315\357\233\314\357\232\314\360\230\313" - "\360\226\313\360\224\312\360\222\311\361\220\311\361\216\310\361\214\307" - "\361\212\306\361\210\306\362\206\305\362\204\304\362\201\304\363\200\303" - "\363\177\302\363}\301\363{\301\364y\300\364v\277\364t\276\364q\275\365o\275" - "\365m\274\365k\273\366h\272\366f\271\366d\271\367b\270\367_\267\367]\266" - "\367Z\266\370X\265\370U\264\370R\263\371P\262\371N\261\371K\260\372I\260" - "\372F\257\372D\256\372B\255\373?\254\373=\253\373:\252\3748\252\3745\251" - "\3743\250\375\2141\247\375\204\0\0\0\35x\300\364z\300\364|\301\363~\302\363" - "\200\303\363\201\303\363\203\304\362\205\305\362\207\306\362\211\306\362" - "\213\307\361\216\310\361\220\310\361\222\311\361\224\312\360\226\313\360" - "\230\313\360\232\314\360\233\314\357\235\315\357\237\316\357\241\316\357" - "\242\317\356\244\317\356\245\320\356\247\320\356\250\321\356\252\321\356" - "\252\322\355\202\254\322\355\2\255\323\355\256\323\355\203\257\323\355\204" - "\260\324\355\203\257\323\355\2\256\323\355\255\323\355\202\254\322\3559\252" - "\322\355\252\321\356\250\321\356\247\320\356\245\320\356\244\317\356\242" - "\317\356\241\316\357\237\316\357\235\315\357\233\314\357\232\314\360\230" - "\313\360\226\313\360\224\312\360\222\311\361\220\310\361\216\310\361\213" - "\307\361\211\306\362\207\306\362\205\305\362\203\304\362\201\303\363\200" - "\303\363~\302\363|\301\363z\300\364x\300\364u\277\364s\276\365q\275\365o" - "\274\365l\273\366i\273\366g\272\366d\271\366b\270\367`\267\367]\267\367[" - "\266\370Y\265\370V\264\370T\263\371Q\262\371O\262\371M\261\371J\260\372H" - "\257\372E\256\372C\255\373@\254\373>\254\373;\253\3749\252\3746\251\3744" - "\250\375\2141\247\375\204\0\0\0\33y\300\364{\301\364~\302\363\200\302\363" - "\200\303\363\202\304\362\204\305\362\207\306\362\211\306\362\213\307\361" - "\216\310\361\220\310\361\221\311\361\223\312\360\225\312\360\230\313\360" - "\232\314\360\233\314\357\235\315\357\240\316\357\241\316\357\242\317\356" - "\245\320\356\246\320\356\247\321\356\251\321\356\252\322\355\202\254\322" - "\355\4\256\323\355\257\323\355\260\324\355\261\324\355\202\262\324\355\206" - "\262\324\354\202\262\324\355\4\261\324\355\260\324\355\257\323\355\256\323" - "\355\202\254\322\3558\252\322\355\251\321\356\247\321\356\246\320\356\245" - "\320\356\242\317\356\241\316\357\240\316\357\235\315\357\233\314\357\232" - "\314\360\230\313\360\225\312\360\223\312\360\221\311\361\220\310\361\216" - "\310\361\213\307\361\211\306\362\206\305\362\204\305\362\202\304\362\200" - "\303\363\200\302\363~\302\363{\301\364y\300\364v\277\364t\276\364r\276\365" - "o\275\365m\274\365k\273\366h\272\366f\271\366d\271\367a\270\367_\267\367" - "\\\266\370Z\265\370X\265\370U\264\370R\263\371P\262\371M\261\371K\260\372" - "H\257\372F\256\372C\256\373A\255\373>\254\373<\253\3739\252\3747\251\374" - "4\250\3742\250\375\2131\247\375\204\0\0\0!z\300\364|\301\363\177\302\363" - "\200\303\363\201\304\363\204\304\362\206\305\362\210\306\362\213\307\361" - "\215\307\361\217\310\361\221\311\361\223\312\360\225\312\360\227\313\360" - "\231\314\360\233\314\357\235\315\357\240\316\357\241\316\357\243\317\356" - "\245\320\356\247\320\356\250\321\356\252\321\356\253\322\355\254\322\355" - "\256\323\355\257\323\355\260\324\355\262\324\355\262\324\354\263\325\354" - "\202\264\325\354\206\265\325\354\202\264\325\354>\263\325\354\262\324\354" - "\262\324\355\260\324\355\257\323\355\256\323\355\254\322\355\253\322\355" - "\252\321\356\250\321\356\247\320\356\245\320\356\243\317\356\241\316\357" - "\240\316\357\235\315\357\233\314\357\231\314\360\227\313\360\225\312\360" - "\223\312\360\221\311\361\217\310\361\215\307\361\213\307\361\210\306\362" - "\206\305\362\204\304\362\201\304\363\200\303\363\177\302\363|\301\363z\300" - "\364x\300\364u\277\364s\276\365q\275\365n\274\365l\273\366i\273\366g\272" - "\366d\271\366b\270\367_\267\367]\267\367Z\266\370X\265\370U\264\370S\263" - "\371P\262\371N\261\371L\261\371I\260\372G\257\372D\256\372B\255\373?\254" - "\373=\253\373:\252\3748\252\3745\251\3743\250\375\2131\247\375\204\0\0\0" - "!{\301\364~\302\363\200\302\363\200\303\363\203\304\362\205\305\362\207\306" - "\362\211\306\362\213\307\361\216\310\361\220\311\361\223\311\360\225\312" - "\360\227\313\360\231\314\360\233\314\357\235\315\357\237\316\357\241\316" - "\357\243\317\356\245\320\356\247\320\356\250\321\356\252\322\355\254\322" - "\355\255\323\355\257\323\355\260\324\355\262\324\355\263\325\354\264\325" - "\354\265\325\354\266\326\354\203\267\326\354\204\270\326\354\203\267\326" - "\354>\266\326\354\265\325\354\264\325\354\263\325\354\262\324\355\260\324" - "\355\257\323\355\255\323\355\254\322\355\252\322\355\250\321\356\247\320" - "\356\245\320\356\243\317\356\241\316\357\237\316\357\235\315\357\233\314" - "\357\231\314\360\227\313\360\225\312\360\223\311\360\220\311\361\216\310" - "\361\213\307\361\211\306\362\207\306\362\205\305\362\203\304\362\200\303" - "\363\200\302\363~\302\363{\301\364y\300\364v\277\364t\276\364q\275\365o\275" - "\365l\274\365j\273\366h\272\366e\271\366c\270\367`\267\367^\267\367\\\266" - "\370Y\265\370W\264\370T\263\371R\263\371O\262\371M\261\371J\260\372H\257" - "\372E\256\372C\255\373@\254\373>\254\373;\253\3749\252\3746\251\3744\250" - "\375\2131\247\375\204\0\0\0\36|\301\363~\302\363\200\303\363\201\304\363" - "\204\304\362\206\305\362\211\306\362\213\307\361\215\307\361\217\310\361" - "\222\311\361\224\312\360\226\313\360\230\313\360\233\314\357\235\315\357" - "\237\316\357\241\316\357\242\317\356\245\320\356\247\320\356\251\321\356" - "\252\322\355\254\322\355\256\323\355\257\323\355\261\324\355\262\324\354" - "\264\325\354\265\325\354\202\267\326\354\3\270\326\354\271\326\354\271\327" - "\354\206\272\327\353\3\271\327\354\271\326\354\270\326\354\202\267\326\354" - ";\265\325\354\264\325\354\262\324\354\261\324\355\257\323\355\256\323\355" - "\254\322\355\252\322\355\251\321\356\247\320\356\245\320\356\242\317\356" - "\241\316\357\237\316\357\235\315\357\233\314\357\230\313\360\226\313\360" - "\224\312\360\222\311\361\217\310\361\215\307\361\213\307\361\211\306\362" - "\206\305\362\204\304\362\201\304\363\200\303\363~\302\363|\301\363z\300\364" - "w\277\364u\277\364s\276\365p\275\365n\274\365k\273\366i\272\366g\272\366" - "d\271\367b\270\367_\267\367]\266\367Z\265\370X\265\370U\264\370R\263\371" - "P\262\371M\261\371K\260\372H\257\372F\256\372C\256\373A\255\373>\254\373" - ";\253\3749\252\3746\251\3744\250\375\2131\247\375\204\0\0\0\"~\302\363\200" - "\302\363\200\303\363\203\304\362\205\305\362\207\306\362\212\306\361\214" - "\307\361\216\310\361\220\311\361\223\311\360\225\312\360\230\313\360\232" - "\314\360\234\315\357\236\315\357\240\316\357\242\317\356\245\320\356\247" - "\320\356\250\321\356\252\322\355\254\322\355\256\323\355\260\324\355\262" - "\324\355\263\325\354\264\325\354\266\326\354\267\326\354\271\326\354\271" - "\327\354\273\327\353\274\327\353\202\274\330\353\204\275\330\353\202\274" - "\330\353@\274\327\353\273\327\353\271\327\354\271\326\354\267\326\354\266" - "\326\354\264\325\354\263\325\354\262\324\355\260\324\355\256\323\355\254" - "\322\355\252\322\355\250\321\356\247\320\356\245\320\356\242\317\356\240" - "\316\357\236\315\357\234\315\357\232\314\360\230\313\360\225\312\360\223" - "\311\360\220\311\361\216\310\361\214\307\361\212\306\361\207\306\362\205" - "\305\362\203\304\362\200\303\363\200\302\363~\302\363{\301\364y\300\364v" - "\277\364t\276\365q\275\365o\274\365l\274\365i\273\366g\272\366d\271\366b" - "\270\367_\267\367]\267\367Z\266\370X\265\370U\264\370S\263\371P\262\371N" - "\261\371K\260\372I\260\372F\257\372D\256\372A\255\373?\254\373<\253\3739" - "\252\3747\251\3744\250\3742\250\375\2121\247\375\204\0\0\0!~\302\363\200" - "\303\363\201\304\363\204\304\362\206\305\362\211\306\362\213\307\361\215" - "\307\361\220\310\361\222\311\361\224\312\360\226\313\360\231\314\360\233" - "\314\357\235\315\357\240\316\357\242\317\357\244\317\356\246\320\356\250" - "\321\356\252\322\355\254\322\355\256\323\355\260\324\355\262\324\355\264" - "\325\354\265\325\354\267\326\354\270\326\354\271\327\354\273\327\353\274" - "\330\353\275\330\353\202\276\330\353\1\277\331\353\204\300\331\353\1\277" - "\331\353\202\276\330\353?\275\330\353\274\330\353\273\327\353\271\327\354" - "\270\326\354\267\326\354\265\325\354\264\325\354\262\324\355\260\324\355" - "\256\323\355\254\322\355\252\322\355\250\321\356\246\320\356\244\317\356" - "\242\317\357\240\316\357\235\315\357\233\314\357\231\314\360\226\313\360" - "\224\312\360\222\311\361\220\310\361\215\307\361\213\307\361\211\306\362" - "\206\305\362\204\304\362\201\304\363\200\303\363~\302\363|\301\363y\300\364" - "w\277\364t\276\364r\276\365o\275\365m\274\365j\273\366h\272\366e\271\366" - "c\270\367`\267\367^\267\367[\266\370Y\265\370V\264\370T\263\371Q\262\371" - "O\262\371L\261\371J\260\372G\257\372D\256\372B\255\373?\254\373=\253\373" - ":\252\3748\252\3745\251\3743\250\375\2121\247\375\204\0\0\0!\177\302\363" - "\200\303\363\202\304\362\204\305\362\207\306\362\211\306\362\214\307\361" - "\216\310\361\220\311\361\223\312\360\225\312\360\230\313\360\232\314\360" - "\235\315\357\237\316\357\241\316\357\243\317\356\245\320\356\247\321\356" - "\252\321\356\254\322\355\256\323\355\260\324\355\262\324\355\264\325\354" - "\266\326\354\267\326\354\271\326\354\272\327\353\274\330\353\275\330\353" - "\276\330\353\300\331\353\202\301\331\353\206\302\332\352\202\301\331\353" - "?\300\331\353\276\330\353\275\330\353\274\330\353\272\327\353\271\326\354" - "\267\326\354\266\326\354\264\325\354\262\324\355\260\324\355\256\323\355" - "\254\322\355\252\321\356\247\321\356\245\320\356\243\317\356\241\316\357" - "\237\316\357\235\315\357\232\314\360\230\313\360\225\312\360\223\312\360" - "\220\311\361\216\310\361\214\307\361\211\306\362\207\306\362\204\305\362" - "\202\304\362\200\303\363\177\302\363}\301\363z\300\364x\300\364u\277\364" - "s\276\365p\275\365n\274\365k\273\366i\272\366f\271\366d\271\367a\270\367" - "_\267\367\\\266\370Z\265\370W\264\370U\264\370R\263\371P\262\371M\261\371" - "J\260\372H\257\372E\256\372C\255\373@\254\373>\254\373;\253\3748\252\374" - "6\251\3743\250\375\2121\247\375\204\0\0\0!\200\302\363\201\303\363\203\304" - "\362\206\305\362\210\306\362\213\307\361\215\307\361\217\310\361\222\311" - "\361\224\312\360\226\313\360\231\314\360\233\314\357\235\315\357\240\316" - "\357\242\317\356\245\320\356\247\320\356\251\321\356\253\322\355\255\323" - "\355\257\323\355\262\324\355\264\325\354\266\326\354\267\326\354\271\327" - "\354\273\327\353\274\330\353\276\330\353\300\331\353\301\331\353\302\332" - "\352\202\303\332\352\1\304\332\352\204\305\333\352\1\304\332\352\202\303" - "\332\352?\302\332\352\301\331\353\300\331\353\276\330\353\274\330\353\273" - "\327\353\271\327\354\267\326\354\266\326\354\264\325\354\262\324\355\257" - "\323\355\255\323\355\253\322\355\251\321\356\247\320\356\245\320\356\242" - "\317\356\240\316\357\235\315\357\233\314\357\231\314\360\226\313\360\224" - "\312\360\222\311\361\217\310\361\215\307\361\213\307\361\210\306\362\206" - "\305\362\203\304\362\201\303\363\200\302\363~\302\363{\301\364y\300\364v" - "\277\364t\276\365q\275\365o\274\365l\273\366i\273\366g\272\366d\271\366b" - "\270\367_\267\367]\266\367Z\266\370X\265\370U\264\370R\263\371P\262\371M" - "\261\371K\260\372H\257\372F\256\372C\256\373A\255\373>\254\373;\253\3749" - "\252\3746\251\3744\250\375\2121\247\375\204\0\0\0!\200\303\363\201\304\363" - "\204\305\362\206\305\362\211\306\362\213\307\361\216\310\361\220\311\361" - "\223\311\360\225\312\360\230\313\360\232\314\360\235\315\357\237\316\357" - "\241\316\357\244\317\356\246\320\356\250\321\356\252\322\355\254\322\355" - "\257\323\355\261\324\355\263\325\354\265\325\354\267\326\354\271\327\354" - "\273\327\353\275\330\353\276\330\353\301\331\353\302\332\352\303\332\352" - "\304\332\352\202\306\333\352\202\307\333\352\202\310\334\352\202\307\333" - "\352\202\306\333\352?\304\332\352\303\332\352\302\332\352\301\331\353\276" - "\330\353\275\330\353\273\327\353\271\327\354\267\326\354\265\325\354\263" - "\325\354\261\324\355\257\323\355\254\322\355\252\322\355\250\321\356\246" - "\320\356\244\317\356\241\316\357\237\316\357\235\315\357\232\314\360\230" - "\313\360\225\312\360\223\311\360\220\311\361\216\310\361\213\307\361\211" - "\306\362\206\305\362\204\305\362\201\304\363\200\303\363~\302\363|\301\363" - "y\300\364w\277\364t\276\364q\275\365o\275\365l\274\365j\273\366g\272\366" - "e\271\366b\270\367`\267\367]\267\367Z\266\370X\265\370U\264\370S\263\371" - "P\262\371N\261\371K\260\372H\257\372F\257\372C\256\373A\255\373>\254\373" - ";\253\3749\252\3746\251\3744\250\374\2121\247\375\204\0\0\0\"\200\303\363" - "\202\304\362\205\305\362\207\306\362\212\306\361\214\307\361\217\310\361" - "\221\311\361\223\312\360\226\313\360\230\313\360\233\314\357\235\315\357" - "\240\316\357\242\317\356\245\320\356\247\320\356\252\321\356\254\322\355" - "\256\323\355\260\324\355\262\324\354\264\325\354\267\326\354\271\326\354" - "\273\327\353\275\330\353\277\331\353\301\331\353\302\332\352\304\332\352" - "\306\333\352\307\333\352\310\334\352\202\311\334\352\204\312\334\352\202" - "\311\334\352A\310\334\352\307\333\352\306\333\352\304\332\352\302\332\352" - "\301\331\353\277\331\353\275\330\353\273\327\353\271\326\354\267\326\354" - "\264\325\354\262\324\354\260\324\355\256\323\355\254\322\355\252\321\356" - "\247\320\356\245\320\356\242\317\356\240\316\357\235\315\357\233\314\357" - "\230\313\360\226\313\360\223\312\360\221\311\361\217\310\361\214\307\361" - "\212\306\361\207\306\362\205\305\362\202\304\362\200\303\363\177\302\363" - "}\301\363z\300\364w\277\364u\277\364r\276\365p\275\365m\274\365k\273\366" - "h\272\366f\271\366c\270\367`\267\367^\267\367[\266\370Y\265\370V\264\370" - "S\263\371Q\262\371N\261\371L\261\371I\260\372F\257\372D\256\372A\255\373" - "?\254\373<\253\3739\252\3747\251\3744\250\3742\250\375\2111\247\375\204\0" - "\0\0$\201\303\363\203\304\362\206\305\362\210\306\362\213\307\361\215\307" - "\361\220\310\361\222\311\361\225\312\360\227\313\360\232\314\360\234\315" - "\357\236\315\357\241\316\357\243\317\356\246\320\356\250\321\356\252\322" - "\355\255\323\355\257\323\355\262\324\355\264\325\354\266\326\354\271\326" - "\354\273\327\353\275\330\353\276\330\353\301\331\353\303\332\352\304\332" - "\352\306\333\352\310\334\352\311\334\352\312\334\352\313\335\351\314\335" - "\351\204\315\335\351C\314\335\351\313\335\351\312\334\352\311\334\352\310" - "\334\352\306\333\352\304\332\352\303\332\352\301\331\353\276\330\353\275" - "\330\353\273\327\353\271\326\354\266\326\354\264\325\354\262\324\355\257" - "\323\355\255\323\355\252\322\355\250\321\356\246\320\356\243\317\356\241" - "\316\357\236\315\357\234\315\357\232\314\360\227\313\360\225\312\360\222" - "\311\361\220\310\361\215\307\361\213\307\361\210\306\362\206\305\362\203" - "\304\362\201\303\363\200\302\363}\301\363{\301\364x\300\364v\277\364s\276" - "\365q\275\365n\274\365k\273\366i\272\366f\271\366d\271\367a\270\367^\267" - "\367\\\266\370Y\265\370W\264\370T\263\371Q\262\371O\262\371L\261\371J\260" - "\372G\257\372D\256\372B\255\373?\254\373=\253\373:\252\3747\251\3745\251" - "\3742\250\375\2111\247\375\204\0\0\0\"\201\303\363\204\304\362\206\305\362" - "\211\306\362\213\307\361\216\310\361\220\311\361\223\311\360\225\312\360" - "\230\313\360\233\314\357\235\315\357\240\316\357\242\317\357\245\320\356" - "\247\320\356\251\321\356\254\322\355\256\323\355\261\324\355\263\325\354" - "\265\325\354\267\326\354\271\327\354\274\330\353\276\330\353\301\331\353" - "\303\332\352\304\332\352\306\333\352\310\334\352\312\334\352\313\335\351" - "\315\335\351\202\316\336\351\1\317\336\351\202\320\336\351\1\317\336\351" - "\202\316\336\351A\315\335\351\313\335\351\312\334\352\310\334\352\306\333" - "\352\304\332\352\303\332\352\301\331\353\276\330\353\274\330\353\271\327" - "\354\267\326\354\265\325\354\263\325\354\261\324\355\256\323\355\254\322" - "\355\251\321\356\247\320\356\245\320\356\242\317\357\240\316\357\235\315" - "\357\233\314\357\230\313\360\225\312\360\223\311\360\220\311\361\216\310" - "\361\213\307\361\211\306\362\206\305\362\204\304\362\201\303\363\200\303" - "\363~\302\363{\301\364y\300\364v\277\364t\276\365q\275\365o\274\365l\273" - "\366i\273\366g\272\366d\271\367b\270\367_\267\367]\266\367Z\265\370W\264" - "\370U\264\370R\263\371O\262\371M\261\371J\260\372H\257\372E\256\372B\255" - "\373@\254\373=\253\373:\252\3748\252\3745\251\3743\250\375\2111\247\375\204" - "\0\0\0$\201\304\363\204\305\362\206\305\362\211\306\362\213\307\361\216\310" - "\361\221\311\361\223\312\360\226\313\360\230\313\360\233\314\357\235\315" - "\357\240\316\357\242\317\356\245\320\356\247\321\356\252\322\355\254\322" - "\355\257\323\355\262\324\355\264\325\354\267\326\354\271\326\354\273\327" - "\353\275\330\353\300\331\353\302\332\352\304\332\352\306\333\352\310\334" - "\352\312\334\352\314\335\351\316\336\351\317\336\351\320\337\351\321\337" - "\351\204\322\337\351C\321\337\351\320\337\351\317\336\351\316\336\351\314" - "\335\351\312\334\352\310\334\352\306\333\352\304\332\352\302\332\352\300" - "\331\353\275\330\353\273\327\353\271\326\354\267\326\354\264\325\354\262" - "\324\355\257\323\355\254\322\355\252\322\355\247\321\356\245\320\356\242" - "\317\356\240\316\357\235\315\357\233\314\357\230\313\360\226\313\360\223" - "\312\360\221\311\361\216\310\361\213\307\361\211\306\362\206\305\362\204" - "\305\362\201\304\363\200\303\363~\302\363{\301\364y\300\364v\277\364t\276" - "\364q\275\365o\274\365l\274\365i\273\366g\272\366d\271\366b\270\367_\267" - "\367]\266\367Z\265\370X\265\370U\264\370R\263\371P\262\371M\261\371K\260" - "\372H\257\372E\256\372C\255\373@\254\373>\254\373;\253\3748\252\3746\251" - "\3743\250\375\2111\247\375\204\0\0\0$\202\304\362\204\305\362\207\306\362" - "\212\306\361\214\307\361\217\310\361\221\311\361\224\312\360\227\313\360" - "\231\314\360\234\315\357\236\315\357\241\316\357\243\317\356\246\320\356" - "\250\321\356\253\322\355\255\323\355\260\324\355\262\324\354\265\325\354" - "\267\326\354\272\327\353\274\330\353\276\330\353\301\331\353\303\332\352" - "\306\333\352\310\334\352\312\334\352\314\335\351\316\336\351\320\336\351" - "\321\337\351\323\337\350\323\340\350\204\325\340\350C\323\340\350\323\337" - "\350\321\337\351\320\336\351\316\336\351\314\335\351\312\334\352\310\334" - "\352\306\333\352\303\332\352\301\331\353\276\330\353\274\330\353\272\327" - "\353\267\326\354\265\325\354\262\324\354\260\324\355\255\323\355\253\322" - "\355\250\321\356\246\320\356\243\317\356\241\316\357\236\315\357\234\315" - "\357\231\314\360\227\313\360\224\312\360\221\311\361\217\310\361\214\307" - "\361\212\306\361\207\306\362\204\305\362\202\304\362\200\303\363\177\302" - "\363|\301\363y\300\364w\277\364t\276\364r\276\365o\275\365l\274\365j\273" - "\366g\272\366d\271\366b\270\367_\267\367]\267\367Z\266\370X\265\370U\264" - "\370R\263\371P\262\371M\261\371K\260\372H\257\372F\256\372C\255\373A\255" - "\373>\254\373;\253\3749\252\3746\251\3743\250\375\2111\247\375\204\0\0\0" - "%\202\304\362\205\305\362\210\306\362\212\306\361\215\307\361\217\310\361" - "\222\311\361\225\312\360\227\313\360\232\314\360\234\315\357\237\316\357" - "\242\317\357\244\317\356\247\320\356\251\321\356\254\322\355\256\323\355" - "\261\324\355\263\325\354\266\326\354\270\326\354\273\327\353\275\330\353" - "\300\331\353\302\332\352\304\332\352\307\333\352\311\334\352\313\335\351" - "\316\336\351\320\336\351\322\337\351\323\340\350\325\340\350\326\341\350" - "\327\341\350\202\330\341\350D\327\341\350\326\341\350\325\340\350\323\340" - "\350\322\337\351\320\336\351\316\336\351\313\335\351\311\334\352\307\333" - "\352\304\332\352\302\332\352\300\331\353\275\330\353\273\327\353\270\326" - "\354\266\326\354\263\325\354\261\324\355\256\323\355\254\322\355\251\321" - "\356\247\320\356\244\317\356\242\317\357\237\316\357\234\315\357\232\314" - "\360\227\313\360\225\312\360\222\311\361\217\310\361\215\307\361\212\306" - "\361\210\306\362\205\305\362\202\304\362\200\303\363\177\302\363}\301\363" - "z\300\364w\277\364u\277\364r\276\365o\275\365m\274\365j\273\366h\272\366" - "e\271\366b\270\367`\267\367]\267\367Z\266\370X\265\370U\264\370R\263\371" - "P\262\371M\261\371K\260\372H\257\372F\256\372C\256\373A\255\373>\254\373" - ";\253\3749\252\3746\251\3744\250\375\2111\247\375\204\0\0\0$\203\304\362" - "\206\305\362\210\306\362\213\307\361\215\307\361\220\310\361\223\311\360" - "\225\312\360\230\313\360\232\314\360\235\315\357\240\316\357\242\317\357" - "\245\320\356\247\321\356\252\321\356\254\322\355\257\323\355\262\324\355" - "\264\325\354\267\326\354\271\326\354\274\327\353\276\330\353\301\331\353" - "\303\332\352\306\333\352\310\334\352\313\335\351\315\335\351\317\336\351" - "\321\337\351\323\340\350\325\340\350\327\341\350\330\341\350\204\332\342" - "\350C\330\341\350\327\341\350\325\340\350\323\340\350\321\337\351\317\336" - "\351\315\335\351\313\335\351\310\334\352\306\333\352\303\332\352\301\331" - "\353\276\330\353\274\327\353\271\326\354\267\326\354\264\325\354\262\324" - "\355\257\323\355\254\322\355\252\321\356\247\321\356\245\320\356\242\317" - "\357\240\316\357\235\315\357\232\314\360\230\313\360\225\312\360\223\311" - "\360\220\310\361\215\307\361\213\307\361\210\306\362\206\305\362\203\304" - "\362\200\303\363\200\302\363}\301\363z\300\364x\300\364u\277\364r\276\365" - "p\275\365m\274\365k\273\366h\272\366e\271\366c\270\367`\267\367]\267\367" - "[\266\370X\265\370U\264\370S\263\371P\262\371M\261\371K\260\372H\257\372" - "F\257\372C\256\373A\255\373>\254\373;\253\3749\252\3746\251\3744\250\375" - "\2111\247\375\204\0\0\0%\203\304\362\206\305\362\211\306\362\213\307\361" - "\216\310\361\220\310\361\223\311\360\225\312\360\230\313\360\233\314\357" - "\235\315\357\240\316\357\242\317\356\245\320\356\247\321\356\252\322\355" - "\254\322\355\257\323\355\262\324\354\264\325\354\267\326\354\271\327\354" - "\274\330\353\276\330\353\301\331\353\304\332\352\306\333\352\311\334\352" - "\313\335\351\316\336\351\320\337\351\323\337\350\325\340\350\327\341\350" - "\331\342\350\332\342\347\334\343\347\202\335\343\347D\334\343\347\332\342" - "\347\331\342\350\327\341\350\325\340\350\323\337\350\320\337\351\316\336" - "\351\313\335\351\311\334\352\306\333\352\304\332\352\301\331\353\276\330" - "\353\274\330\353\271\327\354\267\326\354\264\325\354\262\324\354\257\323" - "\355\254\322\355\252\322\355\247\321\356\245\320\356\242\317\356\240\316" - "\357\235\315\357\233\314\357\230\313\360\225\312\360\223\311\360\220\310" - "\361\216\310\361\213\307\361\211\306\362\206\305\362\203\304\362\201\303" - "\363\200\302\363}\301\363{\301\364x\300\364u\277\364s\276\365p\275\365m\274" - "\365k\273\366h\272\366f\271\366c\270\367`\267\367^\267\367[\266\370X\265" - "\370V\264\370S\263\371P\262\371N\261\371K\260\372H\257\372F\257\372C\256" - "\373A\255\373>\254\373;\253\3749\252\3746\251\3744\250\375\2111\247\375\204" - "\0\0\0%\204\304\362\206\305\362\211\306\362\213\307\361\216\310\361\220\311" - "\361\223\311\360\225\312\360\230\313\360\233\314\357\235\315\357\240\316" - "\357\242\317\356\245\320\356\250\321\356\252\322\355\255\323\355\257\323" - "\355\262\324\354\265\325\354\267\326\354\272\327\353\275\330\353\277\331" - "\353\302\332\352\304\332\352\307\333\352\312\334\352\314\335\351\317\336" - "\351\321\337\351\324\340\350\326\341\350\330\341\350\332\342\347\335\343" - "\347\336\343\347\202\340\344\347D\336\343\347\335\343\347\332\342\347\330" - "\341\350\326\341\350\324\340\350\321\337\351\317\336\351\314\335\351\312" - "\334\352\307\333\352\304\332\352\302\332\352\277\331\353\275\330\353\272" - "\327\353\267\326\354\265\325\354\262\324\354\257\323\355\255\323\355\252" - "\322\355\250\321\356\245\320\356\242\317\356\240\316\357\235\315\357\233" - "\314\357\230\313\360\225\312\360\223\311\360\220\311\361\216\310\361\213" - "\307\361\211\306\362\206\305\362\204\304\362\201\303\363\200\302\363~\302" - "\363{\301\364x\300\364v\277\364s\276\365p\275\365n\274\365k\273\366h\272" - "\366f\271\366c\270\367`\267\367^\267\367[\266\370Y\265\370V\264\370S\263" - "\371Q\262\371N\261\371K\260\372I\260\372F\257\372C\256\373A\255\373>\254" - "\373;\253\3749\252\3746\251\3744\250\375\2111\247\375\204\0\0\0%\204\304" - "\362\206\305\362\211\306\362\213\307\361\216\310\361\220\311\361\223\312" - "\360\225\312\360\230\313\360\233\314\357\235\315\357\240\316\357\243\317" - "\356\245\320\356\250\321\356\253\322\355\255\323\355\260\324\355\262\324" - "\354\265\325\354\270\326\354\272\327\353\275\330\353\300\331\353\302\332" - "\352\305\333\352\310\334\352\312\334\352\315\335\351\317\336\351\322\337" - "\351\325\340\350\327\341\350\332\342\350\334\343\347\336\343\347\340\344" - "\347\202\342\345\347D\340\344\347\336\343\347\334\343\347\332\342\350\327" - "\341\350\325\340\350\322\337\351\317\336\351\315\335\351\312\334\352\310" - "\334\352\305\333\352\302\332\352\300\331\353\275\330\353\272\327\353\270" - "\326\354\265\325\354\262\324\354\260\324\355\255\323\355\253\322\355\250" - "\321\356\245\320\356\243\317\356\240\316\357\235\315\357\233\314\357\230" - "\313\360\225\312\360\223\312\360\220\311\361\216\310\361\213\307\361\211" - "\306\362\206\305\362\204\304\362\201\303\363\200\302\363~\302\363{\301\364" - "y\300\364v\277\364s\276\365q\275\365n\274\365k\273\366i\272\366f\271\366" - "c\270\367a\270\367^\267\367[\266\370Y\265\370V\264\370S\263\371Q\262\371" - "N\261\371K\260\372I\260\372F\257\372C\256\373A\255\373>\254\373;\253\374" - "9\252\3746\251\3744\250\375\2111\247\375\204\0\0\0%\204\304\362\206\305\362" - "\211\306\362\213\307\361\216\310\361\220\311\361\223\312\360\225\312\360" - "\230\313\360\233\314\357\235\315\357\240\316\357\243\317\356\245\320\356" - "\250\321\356\253\322\355\255\323\355\260\324\355\263\325\354\265\325\354" - "\270\326\354\273\327\353\275\330\353\300\331\353\303\332\352\305\333\352" - "\310\334\352\313\335\351\315\335\351\320\336\351\323\337\350\325\340\350" - "\330\341\350\332\342\350\335\343\347\340\344\347\342\345\347\202\344\345" - "\346D\342\345\347\340\344\347\335\343\347\332\342\350\330\341\350\325\340" - "\350\323\337\350\320\336\351\315\335\351\313\335\351\310\334\352\305\333" - "\352\303\332\352\300\331\353\275\330\353\273\327\353\270\326\354\265\325" - "\354\263\325\354\260\324\355\255\323\355\253\322\355\250\321\356\245\320" - "\356\243\317\356\240\316\357\235\315\357\233\314\357\230\313\360\225\312" - "\360\223\312\360\220\311\361\216\310\361\213\307\361\211\306\362\206\305" - "\362\204\304\362\201\303\363\200\303\363~\302\363{\301\364y\300\364v\277" - "\364s\276\365q\275\365n\274\365k\273\366i\272\366f\271\366c\270\367a\270" - "\367^\267\367[\266\370Y\265\370V\264\370S\263\371Q\262\371N\261\371K\260" - "\372I\260\372F\257\372C\256\373A\255\373>\254\373;\253\3749\252\3746\251" - "\3744\250\374\2111\247\375\204\0\0\0%\204\304\362\206\305\362\211\306\362" - "\213\307\361\216\310\361\220\311\361\223\312\360\225\312\360\230\313\360" - "\233\314\357\235\315\357\240\316\357\243\317\356\245\320\356\250\321\356" - "\253\322\355\255\323\355\260\324\355\263\325\354\265\325\354\270\326\354" - "\273\327\353\275\330\353\300\331\353\303\332\352\305\333\352\310\334\352" - "\313\335\351\315\335\351\320\336\351\323\337\350\325\340\350\330\341\350" - "\332\342\350\335\343\347\340\344\347\342\345\347\202\344\345\346D\342\345" - "\347\340\344\347\335\343\347\332\342\350\330\341\350\325\340\350\323\337" - "\350\320\336\351\315\335\351\313\335\351\310\334\352\305\333\352\303\332" - "\352\300\331\353\275\330\353\273\327\353\270\326\354\265\325\354\263\325" - "\354\260\324\355\255\323\355\253\322\355\250\321\356\245\320\356\243\317" - "\356\240\316\357\235\315\357\233\314\357\230\313\360\225\312\360\223\312" - "\360\220\311\361\216\310\361\213\307\361\211\306\362\206\305\362\204\304" - "\362\201\303\363\200\303\363~\302\363{\301\364y\300\364v\277\364s\276\365" - "q\275\365n\274\365k\273\366i\272\366f\271\366c\270\367a\270\367^\267\367" - "[\266\370Y\265\370V\264\370S\263\371Q\262\371N\261\371K\260\372I\260\372" - "F\257\372C\256\373A\255\373>\254\373;\253\3749\252\3746\251\3744\250\374" - "\2111\247\375\204\0\0\0%\204\304\362\206\305\362\211\306\362\213\307\361" - "\216\310\361\220\311\361\223\312\360\225\312\360\230\313\360\233\314\357" - "\235\315\357\240\316\357\243\317\356\245\320\356\250\321\356\253\322\355" - "\255\323\355\260\324\355\262\324\354\265\325\354\270\326\354\272\327\353" - "\275\330\353\300\331\353\302\332\352\305\333\352\310\334\352\312\334\352" - "\315\335\351\317\336\351\322\337\351\325\340\350\327\341\350\332\342\350" - "\334\343\347\336\343\347\340\344\347\202\342\345\347D\340\344\347\336\343" - "\347\334\343\347\332\342\350\327\341\350\325\340\350\322\337\351\317\336" - "\351\315\335\351\312\334\352\310\334\352\305\333\352\302\332\352\300\331" - "\353\275\330\353\272\327\353\270\326\354\265\325\354\262\324\354\260\324" - "\355\255\323\355\253\322\355\250\321\356\245\320\356\243\317\356\240\316" - "\357\235\315\357\233\314\357\230\313\360\225\312\360\223\312\360\220\311" - "\361\216\310\361\213\307\361\211\306\362\206\305\362\204\304\362\201\303" - "\363\200\302\363~\302\363{\301\364y\300\364v\277\364s\276\365q\275\365n\274" - "\365k\273\366i\272\366f\271\366c\270\367a\270\367^\267\367[\266\370Y\265" - "\370V\264\370S\263\371Q\262\371N\261\371K\260\372I\260\372F\257\372C\256" - "\373A\255\373>\254\373;\253\3749\252\3746\251\3744\250\375\2111\247\375\204" - "\0\0\0%\204\304\362\206\305\362\211\306\362\213\307\361\216\310\361\220\311" - "\361\223\311\360\225\312\360\230\313\360\233\314\357\235\315\357\240\316" - "\357\242\317\356\245\320\356\250\321\356\252\322\355\255\323\355\257\323" - "\355\262\324\354\265\325\354\267\326\354\272\327\353\275\330\353\277\331" - "\353\302\332\352\304\332\352\307\333\352\312\334\352\314\335\351\317\336" - "\351\321\337\351\324\340\350\326\341\350\330\341\350\332\342\347\335\343" - "\347\336\343\347\202\340\344\347D\336\343\347\335\343\347\332\342\347\330" - "\341\350\326\341\350\324\340\350\321\337\351\317\336\351\314\335\351\312" - "\334\352\307\333\352\304\332\352\302\332\352\277\331\353\275\330\353\272" - "\327\353\267\326\354\265\325\354\262\324\354\257\323\355\255\323\355\252" - "\322\355\250\321\356\245\320\356\242\317\356\240\316\357\235\315\357\233" - "\314\357\230\313\360\225\312\360\223\311\360\220\311\361\216\310\361\213" - "\307\361\211\306\362\206\305\362\204\304\362\201\303\363\200\302\363~\302" - "\363{\301\364x\300\364v\277\364s\276\365p\275\365n\274\365k\273\366h\272" - "\366f\271\366c\270\367`\267\367^\267\367[\266\370Y\265\370V\264\370S\263" - "\371Q\262\371N\261\371K\260\372I\260\372F\257\372C\256\373A\255\373>\254" - "\373;\253\3749\252\3746\251\3744\250\375\2111\247\375\204\0\0\0%\203\304" - "\362\206\305\362\211\306\362\213\307\361\216\310\361\220\310\361\223\311" - "\360\225\312\360\230\313\360\233\314\357\235\315\357\240\316\357\242\317" - "\356\245\320\356\247\321\356\252\322\355\254\322\355\257\323\355\262\324" - "\354\264\325\354\267\326\354\271\327\354\274\330\353\276\330\353\301\331" - "\353\304\332\352\306\333\352\311\334\352\313\335\351\316\336\351\320\337" - "\351\323\337\350\325\340\350\327\341\350\331\342\350\332\342\347\334\343" - "\347\202\335\343\347D\334\343\347\332\342\347\331\342\350\327\341\350\325" - "\340\350\323\337\350\320\337\351\316\336\351\313\335\351\311\334\352\306" - "\333\352\304\332\352\301\331\353\276\330\353\274\330\353\271\327\354\267" - "\326\354\264\325\354\262\324\354\257\323\355\254\322\355\252\322\355\247" - "\321\356\245\320\356\242\317\356\240\316\357\235\315\357\233\314\357\230" - "\313\360\225\312\360\223\311\360\220\310\361\216\310\361\213\307\361\211" - "\306\362\206\305\362\203\304\362\201\303\363\200\302\363}\301\363{\301\364" - "x\300\364u\277\364s\276\365p\275\365m\274\365k\273\366h\272\366f\271\366" - "c\270\367`\267\367^\267\367[\266\370X\265\370V\264\370S\263\371P\262\371" - "N\261\371K\260\372H\257\372F\257\372C\256\373A\255\373>\254\373;\253\374" - "9\252\3746\251\3744\250\375\2111\247\375\204\0\0\0$\203\304\362\206\305\362" - "\210\306\362\213\307\361\215\307\361\220\310\361\223\311\360\225\312\360" - "\230\313\360\232\314\360\235\315\357\240\316\357\242\317\357\245\320\356" - "\247\321\356\252\321\356\254\322\355\257\323\355\262\324\355\264\325\354" - "\267\326\354\271\326\354\274\327\353\276\330\353\301\331\353\303\332\352" - "\306\333\352\310\334\352\313\335\351\315\335\351\317\336\351\321\337\351" - "\323\340\350\325\340\350\327\341\350\330\341\350\204\332\342\350C\330\341" - "\350\327\341\350\325\340\350\323\340\350\321\337\351\317\336\351\315\335" - "\351\313\335\351\310\334\352\306\333\352\303\332\352\301\331\353\276\330" - "\353\274\327\353\271\326\354\267\326\354\264\325\354\262\324\355\257\323" - "\355\254\322\355\252\321\356\247\321\356\245\320\356\242\317\357\240\316" - "\357\235\315\357\232\314\360\230\313\360\225\312\360\223\311\360\220\310" - "\361\215\307\361\213\307\361\210\306\362\206\305\362\203\304\362\200\303" - "\363\200\302\363}\301\363z\300\364x\300\364u\277\364r\276\365p\275\365m\274" - "\365k\273\366h\272\366e\271\366c\270\367`\267\367]\267\367[\266\370X\265" - "\370U\264\370S\263\371P\262\371M\261\371K\260\372H\257\372F\257\372C\256" - "\373A\255\373>\254\373;\253\3749\252\3746\251\3744\250\375\2111\247\375\204" - "\0\0\0%\202\304\362\205\305\362\210\306\362\212\306\361\215\307\361\217\310" - "\361\222\311\361\225\312\360\227\313\360\232\314\360\234\315\357\237\316" - "\357\242\317\357\244\317\356\247\320\356\251\321\356\254\322\355\256\323" - "\355\261\324\355\263\325\354\266\326\354\270\326\354\273\327\353\275\330" - "\353\300\331\353\302\332\352\304\332\352\307\333\352\311\334\352\313\335" - "\351\316\336\351\320\336\351\322\337\351\323\340\350\325\340\350\326\341" - "\350\327\341\350\202\330\341\350D\327\341\350\326\341\350\325\340\350\323" - "\340\350\322\337\351\320\336\351\316\336\351\313\335\351\311\334\352\307" - "\333\352\304\332\352\302\332\352\300\331\353\275\330\353\273\327\353\270" - "\326\354\266\326\354\263\325\354\261\324\355\256\323\355\254\322\355\251" - "\321\356\247\320\356\244\317\356\242\317\357\237\316\357\234\315\357\232" - "\314\360\227\313\360\225\312\360\222\311\361\217\310\361\215\307\361\212" - "\306\361\210\306\362\205\305\362\202\304\362\200\303\363\177\302\363}\301" - "\363z\300\364w\277\364u\277\364r\276\365o\275\365m\274\365j\273\366h\272" - "\366e\271\366b\270\367`\267\367]\267\367Z\266\370X\265\370U\264\370R\263" - "\371P\262\371M\261\371K\260\372H\257\372F\256\372C\256\373A\255\373>\254" - "\373;\253\3749\252\3746\251\3744\250\375\2111\247\375\204\0\0\0$\202\304" - "\362\204\305\362\207\306\362\212\306\361\214\307\361\217\310\361\221\311" - "\361\224\312\360\227\313\360\231\314\360\234\315\357\236\315\357\241\316" - "\357\243\317\356\246\320\356\250\321\356\253\322\355\255\323\355\260\324" - "\355\262\324\354\265\325\354\267\326\354\272\327\353\274\330\353\276\330" - "\353\301\331\353\303\332\352\306\333\352\310\334\352\312\334\352\314\335" - "\351\316\336\351\320\336\351\321\337\351\323\337\350\323\340\350\204\325" - "\340\350C\323\340\350\323\337\350\321\337\351\320\336\351\316\336\351\314" - "\335\351\312\334\352\310\334\352\306\333\352\303\332\352\301\331\353\276" - "\330\353\274\330\353\272\327\353\267\326\354\265\325\354\262\324\354\260" - "\324\355\255\323\355\253\322\355\250\321\356\246\320\356\243\317\356\241" - "\316\357\236\315\357\234\315\357\231\314\360\227\313\360\224\312\360\221" - "\311\361\217\310\361\214\307\361\212\306\361\207\306\362\204\305\362\202" - "\304\362\200\303\363\177\302\363|\301\363y\300\364w\277\364t\276\364r\276" - "\365o\275\365l\274\365j\273\366g\272\366d\271\366b\270\367_\267\367]\267" - "\367Z\266\370X\265\370U\264\370R\263\371P\262\371M\261\371K\260\372H\257" - "\372F\256\372C\255\373A\255\373>\254\373;\253\3749\252\3746\251\3743\250" - "\375\2111\247\375\204\0\0\0$\201\304\363\204\305\362\206\305\362\211\306" - "\362\213\307\361\216\310\361\221\311\361\223\312\360\226\313\360\230\313" - "\360\233\314\357\235\315\357\240\316\357\242\317\356\245\320\356\247\321" - "\356\252\322\355\254\322\355\257\323\355\262\324\355\264\325\354\267\326" - "\354\271\326\354\273\327\353\275\330\353\300\331\353\302\332\352\304\332" - "\352\306\333\352\310\334\352\312\334\352\314\335\351\316\336\351\317\336" - "\351\320\337\351\321\337\351\204\322\337\351C\321\337\351\320\337\351\317" - "\336\351\316\336\351\314\335\351\312\334\352\310\334\352\306\333\352\304" - "\332\352\302\332\352\300\331\353\275\330\353\273\327\353\271\326\354\267" - "\326\354\264\325\354\262\324\355\257\323\355\254\322\355\252\322\355\247" - "\321\356\245\320\356\242\317\356\240\316\357\235\315\357\233\314\357\230" - "\313\360\226\313\360\223\312\360\221\311\361\216\310\361\213\307\361\211" - "\306\362\206\305\362\204\305\362\201\304\363\200\303\363~\302\363{\301\364" - "y\300\364v\277\364t\276\364q\275\365o\274\365l\274\365i\273\366g\272\366" - "d\271\366b\270\367_\267\367]\266\367Z\265\370X\265\370U\264\370R\263\371" - "P\262\371M\261\371K\260\372H\257\372E\256\372C\255\373@\254\373>\254\373" - ";\253\3748\252\3746\251\3743\250\375\2111\247\375\204\0\0\0#\201\303\363" - "\204\304\362\206\305\362\211\306\362\213\307\361\216\310\361\220\311\361" - "\223\311\360\225\312\360\230\313\360\233\314\357\235\315\357\240\316\357" - "\242\317\357\245\320\356\247\320\356\251\321\356\254\322\355\256\323\355" - "\261\324\355\263\325\354\265\325\354\267\326\354\271\327\354\274\330\353" - "\276\330\353\301\331\353\303\332\352\304\332\352\306\333\352\310\334\352" - "\312\334\352\313\335\351\315\335\351\316\336\351\202\317\336\351\202\320" - "\336\351\202\317\336\351B\316\336\351\315\335\351\313\335\351\312\334\352" - "\310\334\352\306\333\352\304\332\352\303\332\352\301\331\353\276\330\353" - "\274\330\353\271\327\354\267\326\354\265\325\354\263\325\354\261\324\355" - "\256\323\355\254\322\355\251\321\356\247\320\356\245\320\356\242\317\357" - "\240\316\357\235\315\357\233\314\357\230\313\360\225\312\360\223\311\360" - "\220\311\361\216\310\361\213\307\361\211\306\362\206\305\362\204\304\362" - "\201\303\363\200\303\363~\302\363{\301\364y\300\364v\277\364t\276\365q\275" - "\365o\274\365l\273\366i\273\366g\272\366d\271\367b\270\367_\267\367]\266" - "\367Z\265\370W\264\370U\264\370R\263\371O\262\371M\261\371J\260\372H\257" - "\372E\256\372B\255\373@\254\373=\253\373:\252\3748\252\3745\251\3743\250" - "\375\2111\247\375\204\0\0\0$\201\303\363\203\304\362\206\305\362\210\306" - "\362\213\307\361\215\307\361\220\310\361\222\311\361\225\312\360\227\313" - "\360\232\314\360\234\315\357\236\315\357\241\316\357\243\317\356\246\320" - "\356\250\321\356\252\322\355\255\323\355\257\323\355\262\324\355\264\325" - "\354\266\326\354\271\326\354\273\327\353\275\330\353\276\330\353\301\331" - "\353\303\332\352\304\332\352\306\333\352\310\334\352\311\334\352\312\334" - "\352\313\335\351\314\335\351\204\315\335\351C\314\335\351\313\335\351\312" - "\334\352\311\334\352\310\334\352\306\333\352\304\332\352\303\332\352\301" - "\331\353\276\330\353\275\330\353\273\327\353\271\326\354\266\326\354\264" - "\325\354\262\324\355\257\323\355\255\323\355\252\322\355\250\321\356\246" - "\320\356\243\317\356\241\316\357\236\315\357\234\315\357\232\314\360\227" - "\313\360\225\312\360\222\311\361\220\310\361\215\307\361\213\307\361\210" - "\306\362\206\305\362\203\304\362\201\303\363\200\302\363}\301\363{\301\364" - "x\300\364v\277\364s\276\365q\275\365n\274\365k\273\366i\272\366f\271\366" - "d\271\367a\270\367^\267\367\\\266\370Y\265\370W\264\370T\263\371Q\262\371" - "O\262\371L\261\371J\260\372G\257\372D\256\372B\255\373?\254\373=\253\373" - ":\252\3747\251\3745\251\3742\250\375\2111\247\375\204\0\0\0\"\200\303\363" - "\202\304\362\205\305\362\207\306\362\212\306\361\214\307\361\217\310\361" - "\221\311\361\223\312\360\226\313\360\230\313\360\233\314\357\235\315\357" - "\240\316\357\242\317\356\245\320\356\247\320\356\252\321\356\254\322\355" - "\256\323\355\260\324\355\262\324\354\264\325\354\267\326\354\271\326\354" - "\273\327\353\275\330\353\277\331\353\301\331\353\303\332\352\304\332\352" - "\306\333\352\307\333\352\310\334\352\202\311\334\352\204\312\334\352\202" - "\311\334\352A\310\334\352\307\333\352\306\333\352\304\332\352\302\332\352" - "\301\331\353\277\331\353\275\330\353\273\327\353\271\326\354\267\326\354" - "\264\325\354\262\324\354\260\324\355\256\323\355\254\322\355\252\321\356" - "\247\320\356\245\320\356\242\317\356\240\316\357\235\315\357\233\314\357" - "\230\313\360\226\313\360\223\312\360\221\311\361\217\310\361\214\307\361" - "\212\306\361\207\306\362\205\305\362\202\304\362\200\303\363\177\302\363" - "}\301\363z\300\364w\277\364u\277\364r\276\365p\275\365m\274\365k\273\366" - "h\272\366f\271\366c\270\367`\267\367^\267\367[\266\370Y\265\370V\264\370" - "S\263\371Q\262\371N\261\371L\261\371I\260\372F\257\372D\256\372A\255\373" - "?\254\373<\253\3739\252\3747\251\3744\250\3742\250\375\2111\247\375\204\0" - "\0\0!\200\303\363\201\304\363\204\305\362\206\305\362\211\306\362\213\307" - "\361\216\310\361\220\311\361\223\311\360\225\312\360\230\313\360\232\314" - "\360\235\315\357\237\316\357\241\316\357\244\317\356\246\320\356\250\321" - "\356\252\322\355\254\322\355\257\323\355\261\324\355\263\325\354\265\325" - "\354\267\326\354\271\327\354\273\327\353\275\330\353\276\330\353\301\331" - "\353\302\332\352\303\332\352\304\332\352\202\306\333\352\202\307\333\352" - "\202\310\334\352\202\307\333\352\202\306\333\352?\304\332\352\303\332\352" - "\302\332\352\301\331\353\276\330\353\275\330\353\273\327\353\271\327\354" - "\267\326\354\265\325\354\263\325\354\261\324\355\257\323\355\254\322\355" - "\252\322\355\250\321\356\246\320\356\244\317\356\241\316\357\237\316\357" - "\235\315\357\232\314\360\230\313\360\225\312\360\223\311\360\220\311\361" - "\216\310\361\213\307\361\211\306\362\206\305\362\204\305\362\201\304\363" - "\200\303\363~\302\363|\301\363y\300\364w\277\364t\276\364q\275\365o\275\365" - "l\274\365j\273\366g\272\366e\271\366b\270\367`\267\367]\267\367Z\266\370" - "X\265\370U\264\370S\263\371P\262\371N\261\371K\260\372H\257\372F\257\372" - "C\256\373A\255\373>\254\373;\253\3749\252\3746\251\3744\250\374\2121\247" - "\375\204\0\0\0!\200\302\363\201\303\363\203\304\362\206\305\362\210\306\362" - "\213\307\361\215\307\361\217\310\361\222\311\361\224\312\360\226\313\360" - "\231\314\360\233\314\357\235\315\357\240\316\357\242\317\356\245\320\356" - "\247\320\356\251\321\356\253\322\355\255\323\355\257\323\355\262\324\355" - "\264\325\354\266\326\354\267\326\354\271\327\354\273\327\353\274\330\353" - "\276\330\353\300\331\353\301\331\353\302\332\352\202\303\332\352\1\304\332" - "\352\204\305\333\352\1\304\332\352\202\303\332\352?\302\332\352\301\331\353" - "\300\331\353\276\330\353\274\330\353\273\327\353\271\327\354\267\326\354" - "\266\326\354\264\325\354\262\324\355\257\323\355\255\323\355\253\322\355" - "\251\321\356\247\320\356\245\320\356\242\317\356\240\316\357\235\315\357" - "\233\314\357\231\314\360\226\313\360\224\312\360\222\311\361\217\310\361" - "\215\307\361\213\307\361\210\306\362\206\305\362\203\304\362\201\303\363" - "\200\302\363~\302\363{\301\364y\300\364v\277\364t\276\365q\275\365o\274\365" - "l\273\366i\273\366g\272\366d\271\366b\270\367_\267\367]\266\367Z\266\370" - "X\265\370U\264\370R\263\371P\262\371M\261\371K\260\372H\257\372F\256\372" - "C\256\373A\255\373>\254\373;\253\3749\252\3746\251\3744\250\375\2121\247" - "\375\204\0\0\0!\177\302\363\200\303\363\202\304\362\204\305\362\207\306\362" - "\211\306\362\214\307\361\216\310\361\220\311\361\223\312\360\225\312\360" - "\230\313\360\232\314\360\235\315\357\237\316\357\241\316\357\243\317\356" - "\245\320\356\247\321\356\252\321\356\254\322\355\256\323\355\260\324\355" - "\262\324\355\264\325\354\266\326\354\267\326\354\271\326\354\273\327\353" - "\274\330\353\275\330\353\276\330\353\300\331\353\202\301\331\353\206\302" - "\332\352\202\301\331\353?\300\331\353\276\330\353\275\330\353\274\330\353" - "\272\327\353\271\326\354\267\326\354\266\326\354\264\325\354\262\324\355" - "\260\324\355\256\323\355\254\322\355\252\321\356\247\321\356\245\320\356" - "\243\317\356\241\316\357\237\316\357\235\315\357\232\314\360\230\313\360" - "\225\312\360\223\312\360\220\311\361\216\310\361\214\307\361\211\306\362" - "\207\306\362\204\305\362\202\304\362\200\303\363\177\302\363}\301\363z\300" - "\364x\300\364u\277\364s\276\365p\275\365n\274\365k\273\366i\272\366f\271" - "\366d\271\367a\270\367_\267\367\\\266\370Z\265\370W\264\370U\264\370R\263" - "\371P\262\371M\261\371J\260\372H\257\372E\256\372C\255\373@\254\373>\254" - "\373;\253\3748\252\3746\251\3743\250\375\2121\247\375\204\0\0\0!~\302\363" - "\200\303\363\201\304\363\204\304\362\206\305\362\211\306\362\213\307\361" - "\215\307\361\220\310\361\222\311\361\224\312\360\226\313\360\231\314\360" - "\233\314\357\235\315\357\240\316\357\242\317\357\244\317\356\246\320\356" - "\250\321\356\252\322\355\254\322\355\256\323\355\260\324\355\262\324\355" - "\264\325\354\265\325\354\267\326\354\270\326\354\271\327\354\273\327\353" - "\274\330\353\275\330\353\202\276\330\353\1\277\331\353\204\300\331\353\1" - "\277\331\353\202\276\330\353?\275\330\353\274\330\353\273\327\353\271\327" - "\354\270\326\354\267\326\354\265\325\354\264\325\354\262\324\355\260\324" - "\355\256\323\355\254\322\355\252\322\355\250\321\356\246\320\356\244\317" - "\356\242\317\357\240\316\357\235\315\357\233\314\357\231\314\360\226\313" - "\360\224\312\360\222\311\361\220\310\361\215\307\361\213\307\361\211\306" - "\362\206\305\362\204\304\362\201\304\363\200\303\363~\302\363|\301\363y\300" - "\364w\277\364t\276\364r\276\365o\275\365m\274\365j\273\366h\272\366e\271" - "\366c\270\367`\267\367^\267\367[\266\370Y\265\370V\264\370T\263\371Q\262" - "\371O\262\371L\261\371J\260\372G\257\372D\256\372B\255\373?\254\373=\253" - "\373:\252\3748\252\3745\251\3743\250\375\2121\247\375\204\0\0\0\"~\302\363" - "\200\302\363\200\303\363\203\304\362\205\305\362\207\306\362\212\306\361" - "\214\307\361\216\310\361\220\311\361\223\311\360\225\312\360\230\313\360" - "\232\314\360\234\315\357\236\315\357\240\316\357\242\317\356\245\320\356" - "\247\320\356\250\321\356\252\322\355\254\322\355\256\323\355\260\324\355" - "\262\324\355\263\325\354\264\325\354\266\326\354\267\326\354\271\326\354" - "\271\327\354\273\327\353\274\327\353\202\274\330\353\204\275\330\353\202" - "\274\330\353@\274\327\353\273\327\353\271\327\354\271\326\354\267\326\354" - "\266\326\354\264\325\354\263\325\354\262\324\355\260\324\355\256\323\355" - "\254\322\355\252\322\355\250\321\356\247\320\356\245\320\356\242\317\356" - "\240\316\357\236\315\357\234\315\357\232\314\360\230\313\360\225\312\360" - "\223\311\360\220\311\361\216\310\361\214\307\361\212\306\361\207\306\362" - "\205\305\362\203\304\362\200\303\363\200\302\363~\302\363{\301\364y\300\364" - "v\277\364t\276\365q\275\365o\274\365l\274\365i\273\366g\272\366d\271\366" - "b\270\367_\267\367]\267\367Z\266\370X\265\370U\264\370S\263\371P\262\371" - "N\261\371K\260\372I\260\372F\257\372D\256\372A\255\373?\254\373<\253\373" - "9\252\3747\251\3744\250\3742\250\375\2121\247\375\204\0\0\0\36|\301\363~" - "\302\363\200\303\363\201\304\363\204\304\362\206\305\362\211\306\362\213" - "\307\361\215\307\361\217\310\361\222\311\361\224\312\360\226\313\360\230" - "\313\360\233\314\357\235\315\357\237\316\357\241\316\357\242\317\356\245" - "\320\356\247\320\356\251\321\356\252\322\355\254\322\355\256\323\355\257" - "\323\355\261\324\355\262\324\354\264\325\354\265\325\354\202\267\326\354" - "\3\270\326\354\271\326\354\271\327\354\206\272\327\353\3\271\327\354\271" - "\326\354\270\326\354\202\267\326\354;\265\325\354\264\325\354\262\324\354" - "\261\324\355\257\323\355\256\323\355\254\322\355\252\322\355\251\321\356" - "\247\320\356\245\320\356\242\317\356\241\316\357\237\316\357\235\315\357" - "\233\314\357\230\313\360\226\313\360\224\312\360\222\311\361\217\310\361" - "\215\307\361\213\307\361\211\306\362\206\305\362\204\304\362\201\304\363" - "\200\303\363~\302\363|\301\363z\300\364w\277\364u\277\364s\276\365p\275\365" - "n\274\365k\273\366i\272\366g\272\366d\271\367b\270\367_\267\367]\266\367" - "Z\265\370X\265\370U\264\370R\263\371P\262\371M\261\371K\260\372H\257\372" - "F\256\372C\256\373A\255\373>\254\373;\253\3749\252\3746\251\3744\250\375" - "\2131\247\375\204\0\0\0!{\301\364~\302\363\200\302\363\200\303\363\203\304" - "\362\205\305\362\207\306\362\211\306\362\213\307\361\216\310\361\220\311" - "\361\223\311\360\225\312\360\227\313\360\231\314\360\233\314\357\235\315" - "\357\237\316\357\241\316\357\243\317\356\245\320\356\247\320\356\250\321" - "\356\252\322\355\254\322\355\255\323\355\257\323\355\260\324\355\262\324" - "\355\263\325\354\264\325\354\265\325\354\266\326\354\203\267\326\354\204" - "\270\326\354\203\267\326\354>\266\326\354\265\325\354\264\325\354\263\325" - "\354\262\324\355\260\324\355\257\323\355\255\323\355\254\322\355\252\322" - "\355\250\321\356\247\320\356\245\320\356\243\317\356\241\316\357\237\316" - "\357\235\315\357\233\314\357\231\314\360\227\313\360\225\312\360\223\311" - "\360\220\311\361\216\310\361\213\307\361\211\306\362\207\306\362\205\305" - "\362\203\304\362\200\303\363\200\302\363~\302\363{\301\364y\300\364v\277" - "\364t\276\364q\275\365o\275\365l\274\365j\273\366h\272\366e\271\366c\270" - "\367`\267\367^\267\367\\\266\370Y\265\370W\264\370T\263\371R\263\371O\262" - "\371M\261\371J\260\372H\257\372E\256\372C\255\373@\254\373>\254\373;\253" - "\3749\252\3746\251\3744\250\375\2131\247\375\204\0\0\0!z\300\364|\301\363" - "\177\302\363\200\303\363\201\304\363\204\304\362\206\305\362\210\306\362" - "\213\307\361\215\307\361\217\310\361\221\311\361\223\312\360\225\312\360" - "\227\313\360\231\314\360\233\314\357\235\315\357\240\316\357\241\316\357" - "\243\317\356\245\320\356\247\320\356\250\321\356\252\321\356\253\322\355" - "\254\322\355\256\323\355\257\323\355\260\324\355\262\324\355\262\324\354" - "\263\325\354\202\264\325\354\206\265\325\354\202\264\325\354>\263\325\354" - "\262\324\354\262\324\355\260\324\355\257\323\355\256\323\355\254\322\355" - "\253\322\355\252\321\356\250\321\356\247\320\356\245\320\356\243\317\356" - "\241\316\357\240\316\357\235\315\357\233\314\357\231\314\360\227\313\360" - "\225\312\360\223\312\360\221\311\361\217\310\361\215\307\361\213\307\361" - "\210\306\362\206\305\362\204\304\362\201\304\363\200\303\363\177\302\363" - "|\301\363z\300\364x\300\364u\277\364s\276\365q\275\365n\274\365l\273\366" - "i\273\366g\272\366d\271\366b\270\367_\267\367]\267\367Z\266\370X\265\370" - "U\264\370S\263\371P\262\371N\261\371L\261\371I\260\372G\257\372D\256\372" - "B\255\373?\254\373=\253\373:\252\3748\252\3745\251\3743\250\375\2131\247" - "\375\204\0\0\0\33y\300\364{\301\364~\302\363\200\302\363\200\303\363\202" - "\304\362\204\305\362\207\306\362\211\306\362\213\307\361\216\310\361\220" - "\310\361\221\311\361\223\312\360\225\312\360\230\313\360\232\314\360\233" - "\314\357\235\315\357\240\316\357\241\316\357\242\317\356\245\320\356\246" - "\320\356\247\321\356\251\321\356\252\322\355\202\254\322\355\4\256\323\355" - "\257\323\355\260\324\355\261\324\355\202\262\324\355\206\262\324\354\202" - "\262\324\355\4\261\324\355\260\324\355\257\323\355\256\323\355\202\254\322" - "\3558\252\322\355\251\321\356\247\321\356\246\320\356\245\320\356\242\317" - "\356\241\316\357\240\316\357\235\315\357\233\314\357\232\314\360\230\313" - "\360\225\312\360\223\312\360\221\311\361\220\310\361\216\310\361\213\307" - "\361\211\306\362\206\305\362\204\305\362\202\304\362\200\303\363\200\302" - "\363~\302\363{\301\364y\300\364v\277\364t\276\364r\276\365o\275\365m\274" - "\365k\273\366h\272\366f\271\366d\271\367a\270\367_\267\367\\\266\370Z\265" - "\370X\265\370U\264\370R\263\371P\262\371M\261\371K\260\372H\257\372F\256" - "\372C\256\373A\255\373>\254\373<\253\3739\252\3747\251\3744\250\3742\250" - "\375\2131\247\375\204\0\0\0\35x\300\364z\300\364|\301\363~\302\363\200\303" - "\363\201\303\363\203\304\362\205\305\362\210\306\362\211\306\362\213\307" - "\361\216\310\361\220\310\361\222\311\361\224\312\360\226\313\360\230\313" - "\360\232\314\360\233\314\357\235\315\357\237\316\357\241\316\357\242\317" - "\356\244\317\356\245\320\356\247\320\356\250\321\356\252\321\356\252\322" - "\355\202\254\322\355\2\255\323\355\256\323\355\203\257\323\355\204\260\324" - "\355\203\257\323\355\2\256\323\355\255\323\355\202\254\322\3559\252\322\355" - "\252\321\356\250\321\356\247\320\356\245\320\356\244\317\356\242\317\356" - "\241\316\357\237\316\357\235\315\357\233\314\357\232\314\360\230\313\360" - "\226\313\360\224\312\360\222\311\361\220\310\361\216\310\361\213\307\361" - "\211\306\362\207\306\362\205\305\362\203\304\362\201\303\363\200\303\363" - "~\302\363|\301\363z\300\364x\300\364u\277\364s\276\365q\275\365o\274\365" - "l\273\366i\273\366g\272\366d\271\366b\270\367`\267\367]\267\367[\266\370" - "Y\265\370V\264\370T\263\371Q\262\371O\262\371M\261\371J\260\372H\257\372" - "E\256\372C\255\373@\254\373>\254\373;\253\3749\252\3746\251\3744\250\375" - "\2141\247\375\204\0\0\0\40v\277\364y\300\364{\301\364}\301\363\177\302\363" - "\200\303\363\201\304\363\204\304\362\206\305\362\210\306\362\212\306\361" - "\214\307\361\216\310\361\220\311\361\222\311\361\224\312\360\226\313\360" - "\230\313\360\232\314\360\233\314\357\235\315\357\237\316\357\240\316\357" - "\242\317\357\243\317\356\245\320\356\246\320\356\247\320\356\250\321\356" - "\251\321\356\252\321\356\253\322\355\203\254\322\355\206\255\323\355\203" - "\254\322\355<\253\322\355\252\321\356\251\321\356\250\321\356\247\320\356" - "\246\320\356\245\320\356\243\317\356\242\317\357\240\316\357\237\316\357" - "\235\315\357\233\314\357\232\314\360\230\313\360\226\313\360\224\312\360" - "\222\311\361\220\311\361\216\310\361\214\307\361\212\306\361\210\306\362" - "\206\305\362\204\304\362\201\304\363\200\303\363\177\302\363}\301\363{\301" - "\364y\300\364v\277\364t\276\364q\275\365o\275\365m\274\365k\273\366h\272" - "\366f\271\366d\271\367b\270\367_\267\367]\266\367Z\266\370X\265\370U\264" - "\370R\263\371P\262\371N\261\371K\260\372I\260\372F\257\372D\256\372B\255" - "\373?\254\373=\253\373:\252\3748\252\3745\251\3743\250\375\2141\247\375\204" - "\0\0\0\33u\277\364w\277\364y\300\364{\301\364~\302\363\200\302\363\200\303" - "\363\202\304\362\204\305\362\206\305\362\211\306\362\213\307\361\214\307" - "\361\216\310\361\220\311\361\222\311\361\224\312\360\225\312\360\230\313" - "\360\231\314\360\233\314\357\235\315\357\236\315\357\240\316\357\241\316" - "\357\242\317\356\243\317\356\202\245\320\356\4\247\320\356\247\321\356\250" - "\321\356\251\321\356\202\252\321\356\206\252\322\355\202\252\321\356\4\251" - "\321\356\250\321\356\247\321\356\247\320\356\202\245\320\3567\243\317\356" - "\242\317\356\241\316\357\240\316\357\236\315\357\235\315\357\233\314\357" - "\231\314\360\230\313\360\225\312\360\224\312\360\222\311\361\220\311\361" - "\216\310\361\214\307\361\213\307\361\211\306\362\206\305\362\204\305\362" - "\202\304\362\200\303\363\200\302\363~\302\363{\301\364y\300\364w\277\364" - "u\277\364s\276\365q\275\365n\274\365l\273\366i\273\366g\272\366e\271\366" - "b\270\367`\267\367^\267\367[\266\370Y\265\370W\264\370T\263\371R\263\371" - "P\262\371M\261\371K\260\372H\257\372F\256\372C\256\373A\255\373>\254\373" - ";\253\3749\252\3747\251\3744\250\3742\250\375\2141\247\375\204\0\0\0\37t" - "\276\365v\277\364x\300\364z\300\364|\301\363~\302\363\200\303\363\201\303" - "\363\203\304\362\205\305\362\207\306\362\211\306\362\213\307\361\215\307" - "\361\216\310\361\220\311\361\222\311\361\224\312\360\225\312\360\227\313" - "\360\231\314\360\233\314\357\234\315\357\235\315\357\237\316\357\240\316" - "\357\241\316\357\242\317\356\243\317\356\244\317\356\245\320\356\202\246" - "\320\356\1\247\320\356\202\247\321\356\204\250\321\356\202\247\321\356\1" - "\247\320\356\202\246\320\356:\245\320\356\244\317\356\243\317\356\242\317" - "\356\241\316\357\240\316\357\237\316\357\235\315\357\234\315\357\233\314" - "\357\231\314\360\227\313\360\225\312\360\224\312\360\222\311\361\220\311" - "\361\216\310\361\215\307\361\213\307\361\211\306\362\207\306\362\205\305" - "\362\203\304\362\201\303\363\200\303\363~\302\363|\301\363z\300\364x\300" - "\364v\277\364t\276\365q\275\365o\275\365m\274\365j\273\366h\272\366f\271" - "\366d\271\367b\270\367_\267\367]\266\367Z\266\370X\265\370U\264\370S\263" - "\371Q\262\371N\261\371L\261\371J\260\372G\257\372E\256\372B\255\373@\254" - "\373>\254\373;\253\3749\252\3746\251\3744\250\375\2151\247\375\204\0\0\0" - "!r\276\365t\276\364v\277\364y\300\364{\301\364}\301\363\177\302\363\200\303" - "\363\201\304\363\203\304\362\205\305\362\207\306\362\211\306\362\213\307" - "\361\215\307\361\216\310\361\220\311\361\222\311\361\223\312\360\225\312" - "\360\227\313\360\230\313\360\232\314\360\233\314\357\234\315\357\235\315" - "\357\237\316\357\240\316\357\241\316\357\242\317\357\242\317\356\243\317" - "\356\244\317\356\212\245\320\356<\244\317\356\243\317\356\242\317\356\242" - "\317\357\241\316\357\240\316\357\237\316\357\235\315\357\234\315\357\233" - "\314\357\232\314\360\230\313\360\227\313\360\225\312\360\223\312\360\222" - "\311\361\220\311\361\216\310\361\215\307\361\213\307\361\211\306\362\207" - "\306\362\205\305\362\203\304\362\201\304\363\200\303\363\177\302\363}\301" - "\363{\301\364y\300\364v\277\364t\276\364r\276\365p\275\365n\274\365l\273" - "\366i\273\366g\272\366d\271\366b\270\367`\267\367^\267\367[\266\370Y\265" - "\370W\264\370U\264\370R\263\371P\262\371M\261\371K\260\372H\257\372F\257" - "\372C\256\373A\255\373?\254\373<\253\373:\252\3747\251\3745\251\3743\250" - "\375\2151\247\375\204\0\0\0\26V\217\271s\276\365u\277\364w\277\364y\300\364" - "{\301\364~\302\363\177\302\363\200\303\363\201\304\363\204\304\362\205\305" - "\362\207\306\362\211\306\362\213\307\361\214\307\361\216\310\361\220\310" - "\361\221\311\361\223\312\360\225\312\360\226\313\360\202\230\313\360\6\232" - "\314\360\233\314\357\234\315\357\235\315\357\236\315\357\237\316\357\202" - "\240\316\357\2\241\316\357\242\317\357\210\242\317\356\2\242\317\357\241" - "\316\357\202\240\316\357\6\237\316\357\236\315\357\235\315\357\234\315\357" - "\233\314\357\232\314\360\202\230\313\3600\226\313\360\225\312\360\223\312" - "\360\221\311\361\220\310\361\216\310\361\214\307\361\213\307\361\211\306" - "\362\207\306\362\205\305\362\204\304\362\201\304\363\200\303\363\177\302" - "\363~\302\363{\301\364y\300\364w\277\364u\277\364s\276\365q\275\365o\274" - "\365l\274\365j\273\366h\272\366f\271\366c\270\367a\270\367_\267\367]\266" - "\367Z\266\370X\265\370U\264\370S\263\371Q\262\371N\261\371L\261\371J\260" - "\372H\257\372E\256\372C\255\373A\255\373>\254\373;\253\3749\252\3746\251" - "\3744\250\374\2151\247\375\1%\200\277\204\0\0\0\35\7\15\20V\217\271t\276" - "\365v\277\364x\300\364y\300\364{\301\364~\302\363\200\302\363\200\303\363" - "\201\304\363\204\304\362\205\305\362\207\306\362\211\306\362\213\307\361" - "\214\307\361\216\310\361\217\310\361\221\311\361\223\311\360\224\312\360" - "\225\312\360\226\313\360\230\313\360\231\314\360\232\314\360\233\314\357" - "\234\315\357\202\235\315\357\1\236\315\357\202\237\316\357\210\240\316\357" - "\202\237\316\357\1\236\315\357\202\235\315\3577\234\315\357\233\314\357\232" - "\314\360\231\314\360\230\313\360\226\313\360\225\312\360\224\312\360\223" - "\311\360\221\311\361\217\310\361\216\310\361\214\307\361\213\307\361\211" - "\306\362\207\306\362\205\305\362\204\304\362\201\304\363\200\303\363\200" - "\302\363~\302\363{\301\364y\300\364x\300\364v\277\364t\276\365q\275\365o" - "\275\365m\274\365k\273\366i\272\366g\272\366d\271\366b\270\367_\267\367]" - "\267\367[\266\370Y\265\370W\264\370U\264\370R\263\371P\262\371M\261\371K" - "\260\372H\257\372F\257\372D\256\372A\255\373?\254\373=\253\373:\252\3748" - "\252\3746\251\3743\250\375\2141\247\375\2%\200\277\3\13\21\377\0\0\0\363" - "\0\0\0", + "\5\306\306\306\302\302\301\300\276\273\311\311\311\342\342\342\346\345\345" + "\345\1q{\216\202Yf\200\1\230\233\242\202\247\247\247\1\255\255\255\202\247" + "\247\247\1\255\255\255\202\247\247\247\6\256\256\256\317\316\314\231\236" + "\232\215\244\223\322\322\322\340\340\340\346\345\345\345\1Xd\177\202:Jm\1" + "\214\220\232\202\240\240\240\1\250\250\250\202\240\240\240\1\250\250\250" + "\202\240\240\240\6\247\247\247\302\303\307\314\315\321\307\311\314\303\305" + "\311\325\327\333\243\331\333\336\210\331\333\337\207\332\333\337\220\332" + "\334\340\203\333\334\340\202\333\334\341\230\333\335\341\203\333\335\342" + "\203\334\335\342\2\334\336\342\202\213\236\202p{\223\1\237\244\256\202\253" + "\255\261\1\260\262\266\202\253\255\261\1\260\262\266\202\253\255\261\1\260" + "\262\267\245\22)]\5\23*^\23+_\24+`\25,`\25,a\202\26-b;\27.c\27/d\30/e\30" + """0e\31""0f\31""1g\32""2g\32""2h\33""3i\33""3j\33""4k\36""7o\37""8q\40""9" + "q\40""9r!:s!;s\";t\"<u#<v$=v$=w%>x%?x&?y&@z'@{'A{(B|(B})C})C~*D\177+E\177" + "+E\200,F\200,G\201-H\201-I\202.I\203,F\200,E\200-F\200-F\201.G\201.H\202" + "/H\203/I\2030I\2040J\2051K\2051K\2062L\2073L\2103M\2104N\2114N\2125O\212" + "5O\213\2026P\214\21""7Q\2157R\2168R\2179S\2179S\220:T\221:U\222;U\222;V\223" + "<V\224<W\224=X\225=X\226>Y\226?Y\227\23+a\22*^\242\22)]\17\23*^\23*_\24+" + "_\24,`\25,a\25-a\26-b\26.c\27.d\30/d\30""0e\31""0f\31""1f\32""1g\32""2h\202" + "\33""3i\5\33""4j\33""4k\35""6l\37""8q\40""9r\202!:s\17\";t\"<u#<u#=v$=w%" + ">w%>x&?y&@z'@z'A{(A|(B|)C})C~\202*D\177\7+E\200,F\200,G\200-H\201-H\202." + "I\202-H\202\202,F\200\11-F\200-G\201.G\202/H\202/I\2030I\2040J\2051J\205" + "1K\206\2022L\207\5""3M\2103M\2114N\2115O\2125O\213\2026P\214\20""7Q\2157" + "Q\2168R\2168S\2179S\2209T\221:T\221;U\222;V\223<V\223<W\224=W\225=X\225>" + "Y\226>Y\227?Z\230\202\23,b\1\23+`\240\22)]\21\22*^\23*_\24+_\24+`\25,a\25" + "-a\26-b\26.c\27.c\27/d\30/e\30""0e\31""1f\32""1g\32""2h\33""2h\33""3i\202" + "\33""4j\5\34""5k\34""5l\36""7n!:r!:s\202\";t\17#<u#<v$=v$>w%>x%?y&?y&@z'" + "A{(A{(B|)B})C~*D~*D\177\202+E\200\2,F\200,G\201\202-H\201\1,F\200\202,E\200" + "\13-F\200-G\201.G\201.H\202/H\203/I\2040J\2041J\2051K\2062K\2062L\207\202" + "3M\210\5""4N\2114N\2125O\2135P\2136P\214\2027Q\215\17""8R\2168R\2179S\220" + "9T\220:T\221:U\222;U\222;V\223<W\224=W\225=X\225>X\226>Y\227?Y\227?Z\230" + "\204\23,b\1\22*_\235\22)]/\22)^\23*^\23+_\24+`\25,`\25,a\26-b\26.b\27.c\27" + "/d\30/e\30""0e\31""0f\31""1g\32""2g\32""2h\33""3i\33""3j\33""4j\34""5k\34" + """5l\35""6l\35""6m\37""8p!;s\";t\"<u#<v$=v$>w%>x%?x&?y&@z'@z'A{(B|)B})C}" + "*C~*D\177+E\177+E\200,F\200,G\200-H\201+F\200\202+E\177%,E\200-F\200-F\201" + ".G\201.H\202/H\203/I\2030I\2040J\2051K\2051K\2062L\2073L\2103M\2104N\211" + "4N\2125O\2125O\2136P\2146P\2157Q\2157R\2168R\2179S\2179S\220:T\221:U\221" + ";U\222;V\223<V\224<W\224=X\225=X\226>Y\226?Y\227?Z\230@[\231\205\23,b\2\23" + ",a\22*^\233\22)]\17\23*^\23*_\24+_\24+`\25,a\25-a\26-b\27.c\27/d\30/d\30" + """0e\31""0f\31""1f\32""1g\32""2h\202\33""3i\35\33""4j\33""4k\34""5k\35""6" + "l\35""6m\36""7m\36""7n!:r\";u#<u#=v$=w%>w%>x&?y&@z'@z'A{(A|(B|)C})C~*D\177" + "+D\177+E\200,F\200,G\200+F\200*D~\202+E\177#,E\200,F\200-F\200.G\201.G\202" + "/H\202/I\2030I\2040J\2041J\2051K\2062K\2072L\2073M\2103M\2114N\2125N\212" + "5O\2136P\2136P\2147Q\2157Q\2168R\2168S\2179S\2209T\221:T\221:U\222;V\223" + "<V\223<W\224=W\225=X\225>X\226>Y\227\202?Z\230\1@[\231\207\23,b\2\23+a\22" + ")^\230\22)]\21\22*^\23*^\24+_\24+`\25,a\25-a\26-b\26.c\27.c\27/d\30/e\30" + """0f\31""1f\32""1g\32""2h\33""2h\33""3i\202\33""4j\5\34""5k\34""5l\35""6" + "l\35""7m\36""7n\202\37""8o\17\";t#<v$=v$>w%>x%?y&?y'@z'A{(A{(B|)B})C~*D~" + "*D\177\202+E\200\5+F\200*D~*D}+E~+E\177\202,E\200\13-F\200-G\201.G\201.H" + "\202/H\203/I\2030J\2041J\2051K\2062K\2062L\207\2023M\210\2""4N\2114N\212" + "\2025O\213\1""6P\214\2027Q\215\17""8R\2168R\2179S\2179T\220:T\221:U\222;" + "U\222;V\223<W\224=W\224=X\225>X\226>Y\227?Y\227?Z\230\202@[\231\211\23,b" + "\1\22+`\226\22)]\6\22)^\23*^\23+_\24+`\24,`\25,a\202\26-b\10\27.c\27/d\30" + "/e\30""0e\31""0f\31""1g\32""2g\32""2h\202\33""3i\5\33""4j\34""5k\34""5l\35" + """6l\35""6m\202\36""7n\26\37""8o\37""9p\40""9q#=v$=w%>x%?x&?y&@z'@z'A{(A" + "|(B})C}*C~*D\177+D\177+E\200*D\177)C}*D}*D~\202+E\177\1,E\200\202-F\200$" + ".G\201.H\202/H\203/I\2030I\2040J\2051K\2051K\2062L\2073L\2103M\2104M\211" + "4N\2125O\2125O\2136P\2146P\2157Q\2157R\2168R\2179S\2179S\220:T\221:U\221" + ";U\222;V\223<V\224<W\224=W\225=X\226>Y\226?Y\227?Z\230@[\230@[\231A\\\232" + "\213\23,b\1\22*_\224\22)]\17\23*^\23*_\24+_\24,`\25,a\25-a\26-b\27.c\27." + "d\30/d\30""0e\31""0f\31""1g\32""1g\32""2h\202\33""3i*\33""4j\33""4k\34""5" + "k\35""5l\35""6m\36""7m\36""7n\37""8o\37""8p\40""9p\40:q\";s$>w%>x&?y&@z'" + "@z'A{(A|(B|)C})C~*D~*D\177+E\200)C})C|*D}*D~+E~+E\177,E\200,F\200-F\200-" + "G\201.G\202/H\202/I\2030I\2040J\2041J\2051K\206\2022L\207\5""3M\2103M\211" + "4N\2115N\2125O\213\2026P\214\17""7Q\2157Q\2168R\2168S\2179S\2209T\220:T\221" + ";U\222;V\223<V\223<W\224=W\225=X\225>X\226>Y\227\202?Z\230\3@[\231@\\\232" + "A\\\232\214\23,b\2\23+a\22*^\221\22)]\21\22*^\23*^\23+_\24+`\25,`\25,a\26" + "-b\26.c\27.c\27/d\30/e\30""0e\31""1f\31""1g\32""2h\33""2h\33""3i\202\33""4" + "j\5\34""5k\34""5l\35""6m\35""7m\36""7n\202\37""8o\20\40""9p\40""9q!:q!;r" + "#<u%?y&?y&@z'A{(A{(B|)B})C}*C~*D\177+E\177\202)C|\4)C}*D}+E~+E\177\202,E" + "\200\13-F\200-G\201.G\201.H\202/H\203/I\2030J\2041J\2051K\2062K\2062L\207" + "\2023M\210\2""4N\2114N\212\2025O\213\1""6P\214\2027Q\215\17""8R\2168R\217" + "9S\2209T\220:T\221:U\222;U\222;V\223<V\224=W\224=X\225>X\226>Y\227?Y\227" + "?Z\230\202@[\231\2A\\\232A\\\233\216\23,b\2\23+`\22)^\217\22)]\5\23*^\23" + "*_\24+`\24,`\25,a\202\26-b\10\27.c\27/d\30/e\30""0e\31""0f\31""1g\32""2g" + "\32""2h\202\33""3i\5\33""4j\34""5k\34""5l\35""6l\35""6m\202\36""7n\21\37" + """8o\37""9p\40""9p!:q!:r\";s\"<s$>v&@z'@z'A{(B|(B})C}*C~*D\177+D\177\203" + ")C|\2*D}*D~\202+E\177\22,E\200,F\200-F\200.G\201.H\202/H\203/I\2030I\204" + "0J\2051K\2051K\2062L\2072L\2103M\2104N\2114N\2125O\2125O\213\2026P\214\25" + """7Q\2157R\2168R\2179S\2179S\220:T\221:U\221;U\222;V\223<V\224<W\224=X\225" + "=X\226>Y\226?Y\227?Z\230@Z\230@[\231A\\\232A\\\233B]\233\220\23,b\1\22+`" + "\215\22)]\17\23*^\23*_\24+_\24+`\25,a\25-a\26-b\26.c\27.d\27/d\30""0e\31" + """0f\31""1f\32""1g\32""2h\202\33""3i*\33""4j\33""4k\34""5k\35""5l\35""6m" + "\36""7m\36""7n\37""8o\37""8p\40""9p\40:q!:r!;r\";s#<t#=u&?x'A{(A|(B|)C})" + "C~*D~*D\177)C|)B|)C|*D}*D~+E~+E\177,E\200,F\200-F\200-G\201.G\202.H\202/" + "I\2030I\2040J\2041J\2051K\206\2022L\207\26""3M\2103M\2114N\2115N\2125O\213" + "6P\2136P\2147Q\2157Q\2168R\2168S\2179S\2209T\220:T\221:U\222;V\223<V\223" + "<W\224=W\225=X\225>X\226>Y\227\202?Z\230\5@[\231@[\232A\\\232B]\233B]\234" + "\222\23,b\1\22*_\212\22)]\4\22)^\23*^\24+_\24+`\202\25,a\13\26-b\26.c\27" + ".c\27/d\30/e\30""0e\31""1f\31""1g\32""2h\33""2h\33""3i\202\33""4j\5\34""5" + "k\34""5l\35""6l\36""6m\36""7n\202\37""8o\26\40""9p\40""9q!:q!;r\";s\"<t#" + "<t#=u$>v'@z(B|)B})C}*C~*D\177)C}(B{)C|)C}*D~+E~+E\177\202,E\200\13-F\200" + "-G\201.G\201.H\202/H\203/I\2040I\2041J\2051K\2062K\2062L\207\2023M\210\2" + """4N\2114N\212\2025O\213\22""6P\2146Q\2157Q\2158R\2168R\2179S\2209T\220:" + "T\221:U\222;U\222;V\223<W\224=W\224=X\225>X\226>Y\227?Y\227?Z\230\202@[\231" + "\5A\\\232A\\\233B]\234B^\234\23+`\222\23,b\2\23+a\22*^\207\22)]\6\22)^\23" + "*^\23+_\24+`\24,`\25,a\202\26-b\10\27.c\27/d\30/e\30""0e\31""0f\31""1g\32" + """2g\32""2h\202\33""3i\5\33""4j\34""5k\34""5l\35""6l\35""6m\202\36""7n\26" + "\37""8o\37""9p\40""9q\40:q!:r\";s\"<s#<t#=u$=u$>v%?x(B|)C})C~*D\177)C}(B" + "{)C|)C}*D}*D~\202+E\177\1,E\200\202-F\200\10.G\201.H\202/H\203/I\2030I\204" + "0J\2051K\2051K\206\2022L\207\5""3M\2104N\2114N\2125O\2125O\213\2026P\214" + "\32""7Q\2157R\2168R\2169S\2179S\220:T\221:U\221;U\222;V\223<V\224<W\224=" + "W\225=X\226>Y\226?Y\227?Z\230@Z\230@[\231A\\\232A\\\233B]\233B]\234C^\235" + "\22)]\22)^\23+`\222\23,b\2\23+`\22)^\205\22)]\17\23*^\23*_\24+_\24+`\25," + "a\25-a\26-b\26.c\27.d\27/d\30""0e\31""0f\31""1f\32""1g\32""2h\202\33""3i" + "K\33""4j\33""4k\34""5k\34""6l\35""6m\36""7m\36""7n\37""8o\37""8p\40""9p\40" + ":q!:r!;r\";s\"<t#=u$=u$>v%>w%?w'@y)C~*D~*C~(B{)B|)C|*D}*D~+E~+E\177,E\200" + ",F\200-F\200-G\201.G\202/H\202/I\2030I\2040J\2041J\2051K\2062K\2072L\207" + "3M\2103M\2114N\2115N\2125O\2136P\2136P\2147Q\2157Q\2168R\2168S\2179S\220" + "9T\221:T\221;U\222;V\223<V\223<W\224=W\225=X\225>X\226>Y\227?Z\227?Z\230" + "@[\231@[\232A\\\232B]\233B]\234C^\234C^\235\203\22)]\2\22)^\23+`\222\23," + "b\1\22+`\203\22)]\4\22)^\23*^\24+_\24+`\202\25,a\13\26-b\26.c\27.c\27/d\30" + "/e\30""0e\31""1f\31""1g\32""2g\33""2h\33""3i\202\33""4j\26\34""5k\34""5l" + "\35""6l\35""6m\36""7n\36""8o\37""8o\40""9p\40""9q!:q!;r\";s\"<t#<t#=u$>v" + "%>v%?w&?x&@x(B{*D~\202(B{\5)C|)C}*D}*E~+E\177\202,E\200\17-F\200-G\201.G" + "\201.H\202/H\203/I\2030J\2040J\2051K\2062K\2062L\2073L\2103M\2104N\2114N" + "\212\2025O\213\22""6P\2146Q\2157Q\2158R\2168R\2179S\2179T\220:T\221:U\222" + ";U\222;V\223<V\224<W\224=X\225>X\226>Y\227?Y\227?Z\230\202@[\231\6A\\\232" + "A\\\233B]\233B^\234C^\235D_\236\205\22)]\2\22)^\23+`\221\23,b\22\23,a\22" + "*_\22)]\23*^\23+_\24+`\24,`\25,a\25-b\26-b\27.c\27/d\30/e\30""0e\31""0f\31" + """1g\32""2g\32""2h\202\33""3i\5\33""4j\34""4k\34""5l\35""6l\35""6m\202\36" + """7n\13\37""8o\37""9p\40""9q\40:q!:r\";s\"<s#<t#=u$=u$>v\202%?w\3&@x'@y'" + "Az\202(B{\202)C|\2*D}*D~\202+E\177\1,E\200\202-F\200\10.G\201.H\202/H\202" + "/I\2030I\2040J\2051J\2051K\206\2022L\207\5""3M\2104M\2114N\2125O\2125O\213" + "\2026P\214\5""7Q\2157R\2168R\2178S\2179S\220\202:T\221\22;U\222;V\223<V\223" + "<W\224=W\225=X\226>Y\226>Y\227?Z\230@Z\230@[\231A\\\232A\\\233B]\233B]\234" + "C^\235C_\235D_\236\207\22)]\2\22)^\23+`\222\23,bE\23+`\24+_\24+`\25,a\25" + "-a\26-b\26.c\27.c\30/d\30""0e\31""0f\31""1f\32""1g\32""2h\33""2i\33""3i\33" + """4j\33""4k\34""5k\35""5l\35""6m\36""7m\36""7n\37""8o\37""8p\40""9p\40:q" + "!:r!;r\";s\"<t#=t$=u$>v%>w%?w&?x&@y'Ay'Az(B{)B|)C|*D}*D~+E~+E\177,E\200," + "F\200-F\200-G\201.G\202.H\202/H\2030I\2040J\2041J\2051K\2062K\2072L\2073" + "M\2103M\2114N\2114N\2125O\2136P\2136P\2147R\2169T\220\2028S\217\26""9S\220" + "9T\220:T\221:U\222;U\223<V\223<W\224=W\225=X\225>X\226>Y\227?Z\227?Z\230" + "@[\231@[\232A\\\232B]\233B]\234C^\234C^\235D_\236D`\237\211\22)]\2\22)^\23" + "+`\216\23,b\4\23,c\24-c\24.d\25-c\202\25,a#\26-b\26.c\27.c\27/d\30/e\30""0" + "e\31""1f\32""1g\32""2g\33""2h\33""3i\33""3j\33""4j\34""5k\34""5l\35""6l\35" + """6m\36""7n\36""8o\37""8o\40""9p\40""9q!:q!;r\";s\"<s#<t#=u$>v%>v%?w&?x&" + "@x'@y'Az\202(B{\5)C|)C}*D}*E~+E\177\202,E\200\17-F\200-G\201.G\201.H\202" + "/H\203/I\2030I\2040J\2051K\2062K\2062L\2073L\2103M\2104N\2114N\212\2025O" + "\213\5""7R\2169U\221:V\222;W\223:V\223\2029S\220\13:T\221:U\222;U\222;V\223" + "<V\224<W\224=X\225>X\226>Y\227?Y\227?Z\230\202@[\231\5A\\\232A\\\233B]\233" + "B^\234C^\235\202D_\236\1E`\237\213\22)]\2\22*^\23+`\214\23,b\17\24-c\24-" + "d\25.e\25/e\26/f\26.d\26.b\27.c\27/d\30/d\30""0e\31""0f\31""1g\32""2g\32" + """2h\202\33""3i\5\33""4j\34""4k\34""5l\35""6l\35""6m\202\36""7n\22\37""8" + "o\37""9p\40""9p!:q!:r\";s\"<s#<t#=u$=u$>v%>w%?x&@x&@y'Az(Az(B{\202)C|\2*" + "D}*D~\202+E\177\31,E\200,F\200-F\200-G\201.H\202/H\203/I\2030I\2040J\205" + "1J\2051K\2062L\2072L\2103M\2104M\2114N\2125O\2126Q\2158T\2209U\221:V\222" + ":W\223;W\223;X\224;V\223\202:T\221\10;U\222;V\223<V\224<W\224=W\225=X\226" + ">Y\226?Y\227\202?Z\230\1@[\231\202A\\\232\7B]\233B]\234C^\235C_\235D_\236" + "D`\237E`\237\215\22)]\2\22*^\23+a\211\23,b\6\24-c\24-d\25.d\25.e\26/f\26" + """0f\202\27""0gX\27/e\27/d\30""0e\31""0f\31""1f\32""1g\32""2h\33""2h\33""3" + "i\33""4j\33""4k\34""5k\34""5l\35""6m\36""7m\36""7n\37""8o\37""8p\40""9p\40" + ":q!:r!;r\";s\"<t#<t$=u$>v%>w%?w&?x&@y'Ay'Az(B{(B|)C|*D}*D~+E~+E\177,E\200" + ",F\200-F\200-G\201.G\202.H\202/I\2030I\2040J\2041J\2051K\2062K\2072L\207" + "3M\2103M\2114N\2115O\2137S\2179U\2209U\221:V\222:V\223;W\223;X\224<X\225" + "<Y\225;V\223;U\222;U\223<V\223<W\224=W\225=X\225>X\226>Y\227?Z\227?Z\230" + "@[\231@[\232A\\\232B]\233B]\234C^\234C^\235D_\236D`\236E`\237Ea\240\217\22" + ")]\2\22*^\23+a\206\23,b\13\23,c\24-c\24.d\25.e\26/e\26/f\27""0g\27""1h\30" + """1h\30""2i\31""2i\202\31""1f\34\31""1g\32""2g\33""2h\33""3i\33""3j\33""4" + "j\34""5k\34""5l\35""6l\35""6m\36""7n\36""8o\37""8o\40""9p\40""9q!:q!;r\"" + ";s\"<s#<t#=u$=v$>v%?w&?x&@x'@y'Az\202(B{\5)C|)C}*D}*E~+E\177\202,E\200\32" + "-F\200-F\201.G\201.H\202/H\203/I\2030I\2040J\2051K\2062K\2062L\2073L\210" + "3M\2104N\2116Q\2148T\2178T\2209U\2219V\222:V\222;W\223;W\224<X\225<Y\225" + "=Y\226=Z\226\202;V\223\7<V\224<W\224=X\225=X\226>Y\226?Y\227?Z\230\202@[" + "\231\5A\\\232A\\\233B]\233B]\234C^\235\202D_\236\3E`\237E`\240Ea\240\221" + "\22)]\2\22*^\23+a\204\23,b\15\24-c\24-d\25.d\25/e\26/f\26""0g\27""0g\30""1" + "h\30""2i\31""2i\31""3j\32""3k\32""3j\202\32""2h\202\33""3i\5\33""4j\34""4" + "k\34""5k\35""6l\35""6m\202\36""7n\17\37""8o\37""9p\40""9p\40:q!:r!;s\";s" + "#<t#=u$=u$>v%>w%?w&@x&@y\202'Az\1(B{\202)C|\2*D}*D~\202+E\177\13,E\200,F" + "\200-F\200.G\201.H\202/H\202/I\2030I\2040J\2051J\2051K\206\2022L\207\5""3" + "M\2104N\2116R\2158T\2178T\220\2029U\221\5:V\222:W\223;W\223;X\224<X\225\202" + "=Y\226\202>Z\227\11<V\224<W\224=W\225=X\226>Y\226>Y\227?Z\230@Z\230@[\231" + "\202A\\\232\2B]\233B]\234\202C^\235\5D_\236D`\237E`\237Ea\240Ea\241\223\22" + ")]\33\22*^\23+a\23,b\23-c\24-d\25.d\25.e\26/f\26""0f\27""0g\27""1h\30""1" + "h\30""2i\31""3j\32""3k\32""4k\33""4l\33""5m\33""4k\33""3i\33""4j\33""4k\34" + """5k\34""5l\35""6m\36""7m\36""7n\202\37""8o*\40""9p\40:q!:r!;r\";s\"<t#<" + "t$=u$>v%>w%?w&?x&@y'Ay'Az(B{(B|)C|*D}*D~+E~+E\177,E\200,F\200-F\200-G\201" + ".G\202.H\202/I\2030I\2040J\2041J\2051K\2062K\2072L\2073M\2104N\2116R\215" + "7S\2178T\2209U\2209U\221\202:V\222\34;W\223;W\224<X\225<Y\225=Y\226=Z\227" + ">Z\227?[\230>Z\227=W\225=X\225>X\226>Y\227?Z\227?Z\230@[\231@[\232A\\\232" + "B\\\233B]\234C^\234C^\235D_\236D`\236E`\237Ea\240Ea\241Eb\241\225\22)]\20" + "\23*_\24,b\24.d\25.e\26/e\26/f\27""0g\27""1g\30""1h\30""2i\31""2j\31""3j" + "\32""3k\32""4l\33""5l\34""5m\202\35""6n\27\34""5l\34""5k\34""5l\35""6l\35" + """6m\36""7n\36""8n\37""8o\40""9p\40""9q!:q!:r\";s\"<s#<t#=u$=v$>v%?w%?x&" + "@x'@y'Az\202(B{\17)C|)C}*D}*E~+E\177,E\177,E\200-F\200-G\201.G\201.H\202" + "/H\203/I\2030J\2040J\205\2021K\206\31""2L\2073L\2104N\2116R\2157S\2178T\217" + "8T\2209U\2219V\222:V\222;W\223;W\224<X\224<Y\225=Y\226=Z\227>Z\227>[\230" + "?[\231?\\\231>Z\227>X\226>Y\226?Y\227?Z\230\202@[\231\14A\\\232A\\\233B]" + "\233B]\234C^\235C_\236D_\236E`\237E`\240Ea\240Eb\241Fb\242\225\22)]\24\23" + "*^\23*_\24,a\25.d\26/f\26""0g\27""0g\27""1h\30""2i\31""2i\31""3j\32""3k\32" + """4l\33""4l\33""5m\34""6n\35""6n\36""7o\37""7p\36""7o\202\35""6m\202\36""7" + "n\22\37""8o\37""9p\40""9p\40:q!:r!;s\"<s#<t#=u$=u$>v%>w%?w&@x&@y'Az(Az(B" + "{\202)C|\2*D}*D~\202+E\177\13,E\200,F\200-F\200.G\201.H\202/H\202/I\2030" + "I\2040J\2051J\2051K\206\2022L\207\5""4N\2116R\2157S\2178T\2178T\220\2029" + "U\221\17:V\222:W\223;W\223;X\224<X\225<Y\226=Y\226>Z\227>[\230?[\230?\\\231" + "@\\\232@]\232?Z\227>Y\227\202?Z\230\1@[\231\202A\\\232\13B]\233B]\234C^\235" + "C_\235D_\236D`\237E`\237Ea\240Ea\241Fb\241Fc\242\224\22)]\30\23*^\23*_\24" + "+_\24+`\25,a\25.c\27""0f\27""1h\30""1h\30""2i\31""2j\32""3k\32""4k\33""4" + "l\33""5m\34""5m\35""6n\36""7o\36""7p\37""8p\37""8q\40""9r\37""9p\36""7o\202" + "\37""8o\17\40""9p\40:q!:q!;r\";s\"<t#<t$=u$>v%>w%?w&?x&@y'Ay'Az\202(B{\5" + ")C|*D}*D~+E~+E\177\202,E\200\22-F\200-G\201.G\201.H\202/H\2030I\2040J\204" + "1J\2051K\2062K\2062L\2073M\2116R\2157S\2167S\2178T\2208U\2209U\221\202:V" + "\222\15;W\223;W\224<X\225<Y\225=Y\226=Z\227>Z\227>[\230?\\\231@\\\232@]\232" + "A]\233A^\233\202?Z\230\202@[\231\5A\\\232A]\233B]\234C^\234C^\235\202D_\236" + "\6E`\237Ea\240Ea\241Eb\241Fb\242Gc\243\223\22)]\27\22)^\23*^\23+_\24+`\25" + ",`\25,a\26-b\26.c\27/e\30""1h\31""2j\31""3j\32""3k\32""4l\33""5l\34""5m\35" + """6n\36""6o\36""7o\37""8p\37""8q\40""9q\40""9r\202!:s\26\40""9q\40""9p\40" + """9q!:q!;r\";s\"<s#<t#=u$=v$>v%?w&?x&@x'@y'Az(Bz(B{)C|)C}*D}*E~\202+E\177" + "$,E\200-F\200-F\201.G\201.H\202/H\203/I\2030I\2040J\2051K\2051K\2062L\207" + "3M\2106Q\2157S\2167S\2178T\2178T\2209U\2219U\222:V\222:W\223;W\224<X\224" + "<X\225=Y\226=Z\227>Z\227>[\230?[\231?\\\231@]\232@]\233A^\234B^\234A^\234" + "\202@[\231\16A\\\232A\\\233B]\233B]\234C^\235C_\236D_\236E`\237E`\240Ea\240" + "Eb\241Fb\242Fc\242Gc\243\223\22)]\26\23*^\23*_\24+_\24,`\25,a\25-b\26-b\26" + ".c\27/d\30/d\30""1g\32""3j\32""4l\33""4l\33""5m\34""6n\35""6n\36""7o\36""7" + "p\37""8q\40""9q\40""9r\202!:s\22\";t\"<u#<u!;s!:r\";r\";s#<t#=u$=u$>v%>w" + "%?w&@x&@y'Az(Az(B{\202)C|\2*D}*D~\202+E\177\13,E\200,F\200-F\200.G\201.G" + "\202/H\202/I\2030I\2040J\2051J\2051K\206\2022L\207\5""5Q\2147R\2167S\217" + "8T\2178T\220\2029U\221\17:V\222:V\223;W\223;X\224<X\225<Y\226=Y\226>Z\227" + ">[\230?[\230?\\\231@\\\232@]\233A^\233A^\234\202B_\235\1B^\234\202A\\\232" + "\2B]\233B]\234\202C^\235\11D_\236D`\237E`\237Ea\240Ea\241Fb\241Fc\242Gc\243" + "Gd\244\222\22)]\4\23*^\23*_\24+_\24+`\202\25,a\22\26-b\26.c\27.c\27/d\30" + "/e\30""0f\31""1f\32""2i\33""4l\34""5m\35""6n\36""7o\36""7p\37""8p\37""8q" + "\40""9r\40:r!:s\202\";t\17#<u#<v$=w#=v#<t\"<t#<t$=u$>v%>v%?w&?x&@y'Ay'Az" + "\202(B{\5)C|*D}*D~+E~+E\177\202,E\200\17-F\200-G\201.G\201.H\202/H\203/I" + "\2040J\2041J\2051K\2062K\2062L\2075P\2136R\2167S\2167S\217\2028T\220\31""9" + "U\221:V\222:V\223;W\223;X\224<X\225<Y\225=Y\226=Z\227>Z\227>[\230?\\\231" + "@\\\232@]\232A]\233A^\234B_\234B_\235C`\236C`\237B^\234A\\\233B]\234C^\234" + "C^\235\202D_\236\10E`\237Ea\240Ea\241Eb\241Fb\242Fc\243Gd\243Hd\244\221\22" + ")]\6\22)^\23*^\23*_\24+`\24,`\25,a\202\26-bM\27.c\27/d\30/e\30""0e\31""1" + "f\31""1g\32""2g\32""2h\34""4k\35""6n\36""7o\37""8p\37""8q\40""9q\40""9r!" + ":s!;s\";t#<u#<v$=v$=w%>x%?x%>x$>v$=u$>v%?w&?x&@x'@y'Az(Bz(B{)C|)C}*D}*D~" + "+E\177,E\177,E\200-F\200-G\201.G\201.H\202/H\203/I\2030I\2040J\2051K\205" + "2K\2062L\2073M\2106R\2157S\2167S\2178T\2178T\2209U\2219U\222:V\222:W\223" + ";W\224<X\224<X\225=Y\226=Z\226>Z\227>[\230?[\231?\\\231@]\232A]\233A^\233" + "B^\234B_\235\202C`\236\202Da\237\16B^\234B]\234C^\235C_\235D_\236E`\237E" + "`\240Ea\240Eb\241Fb\242Fc\242Gc\243Gd\244He\245\221\22)]\17\23*^\23*_\24" + "+_\24+`\25,a\25-b\26-b\26.c\27.d\30/d\30""0e\31""0f\31""1f\32""1g\32""2h" + "\202\33""3i\5\33""4j\35""5m\37""8p\40""9q\40""9r\202!:s\17\";t\";u#<u#=v" + "$=w$>w%>x&?y&@z'@z&@z&?x%?w&@x&@y\202'Az\1(B{\202)C|\17*D}*D~+E~+E\177,E" + "\200,F\200-F\200-G\201.G\202/H\202/I\2030I\2040J\2041J\2051K\206\2022L\207" + "\5""3M\2104O\2127S\2168T\2178T\220\2029U\221\17:V\222:V\223;W\223;X\224<" + "X\225<Y\226=Y\226>Z\227>[\230?[\230?\\\231@\\\232@]\232A^\233A^\234\202B" + "_\235\5C`\236D`\237Da\237Eb\240Ea\240\202C^\235\13D_\236D`\237E`\237Ea\240" + "Ea\241Eb\242Fc\242Gc\243Gd\244Hd\244He\245\220\22)]\4\22*^\23*^\24+_\24+" + "`\202\25,a\13\26-b\26.c\27.c\27/d\30/e\30""0f\31""1f\32""1g\32""2h\33""2" + "h\33""3i\202\33""4j\5\34""5k\34""5l\36""7o\40""9r!:s\202\";t\12#<u#=v$=v" + "$>w%>x%?y&?y&@z'A{(A|\202(B|\3'A{'Ay'Az\202(B{\5)C|)C}*D}+E~+E\177\202,E" + "\200\13-F\200-G\201.G\201.H\202/H\203/I\2040J\2041J\2051K\2062K\2062L\207" + "\2023M\210\5""4N\2116P\2148T\2209T\2209U\221\202:V\222\26;W\223;W\224<X\225" + "<Y\225=Y\226=Z\227>Z\227>[\230?\\\231@\\\231@]\232A]\233A^\234B^\234B_\235" + "C`\236C`\237Da\237Db\240Eb\241Fc\241Ea\240\202D_\236\12E`\237Ea\240Ea\241" + "Eb\241Fb\242Fc\243Gd\243Hd\244He\245Ie\245\217\22)]\6\22)^\23*^\23+_\24+" + "`\24,`\25,a\202\26-b'\27.c\27/d\30/e\30""0e\31""0f\31""1g\32""2g\32""2h\33" + """3i\33""3j\33""4j\34""5k\34""5l\35""6l\35""6m\36""7n\40""9q\";t#<u#<v$=" + "v$=w%>x%?x&?y&@z'@{'A{(B|(B})C}(B{'Az(Bz(B{)C|)C}*D}*D~\202+E\177\22,E\200" + "-F\200-F\201.G\201.H\202/H\203/I\2030I\2040J\2051K\2051K\2062L\2073L\210" + "3M\2104N\2114N\2125O\2127R\215\2029U\221\31:V\222:W\223;W\224<X\224<X\225" + "=Y\226=Z\226>Z\227>[\230?[\231?\\\231@]\232@]\233A^\233B^\234B_\235C_\236" + "C`\236Da\237Da\240Eb\240Eb\241Fc\242Gd\242Fa\240\202E`\237\6Ea\240Eb\241" + "Fb\242Fc\242Gc\243Gd\244\202He\245\1If\246\217\22)]\17\23*^\23*_\24+_\24" + "+`\25,a\25-b\26-b\26.c\27/d\30/d\30""0e\31""0f\31""1f\32""1g\32""2h\202\33" + """3i\5\33""4j\33""4k\34""5k\35""6l\35""6m\202\36""7n\22\37""8o\37""9p!:s" + "#<v$=w%>w%>x&?y&@z'@z'A{(A|(B|)B|'Az'Ay(Az(B{\202)C|\17*D}*D~+E~+E\177,E" + "\200,F\200-F\200-G\201.G\202/H\202/I\2030I\2040J\2041J\2051K\206\2022L\207" + "\26""3M\2103M\2114N\2115N\2125O\2136P\2148S\217:V\222:V\223;W\223;X\224<" + "X\225<Y\226=Y\226>Z\227>[\230?[\230?\\\231@\\\232@]\232A^\233A^\234\202B" + "_\235\22C`\236D`\237Da\237Eb\240Eb\241Fc\241Gc\242Hd\243Hd\244Fa\240Ea\240" + "Ea\241Fb\241Fc\242Gc\243Gd\244Hd\244He\245\202If\246\1\22*^\215\22)]\21\22" + "*^\23*^\23+_\24+`\25,a\25-a\26-b\26.c\27.c\27/d\30/e\30""0e\31""1f\32""1" + "g\32""2h\33""2h\33""3i\202\33""4j\5\34""5k\34""5l\35""6m\35""7m\36""7n\202" + "\37""8o\17\40""9p\40""9q!:r#<u%>x%?y&?y&@z'A{(A{(B|'A{&@y'Ay'Az\202(B{\5" + ")C|)C}*D~+E~+E\177\202,E\200\17-F\200-G\201.G\201.H\202/H\2030I\2040J\204" + "1J\2051K\2062K\2062L\2073L\2103M\2104N\2114N\212\2025O\213\22""6P\2147Q\215" + "9T\220;W\223;W\224<X\225<Y\225=Y\226=Z\227>Z\227>[\230?\\\231@\\\231@]\232" + "A]\233A^\234B^\234B_\235\202C`\236\5Da\237Da\240Eb\241Fc\241Gc\242\202Hd" + "\243\202Ie\244\202Eb\241\10Fb\242Fc\243Gd\243Gd\244He\245Ie\245If\246Jf\247" + "\202\23,b\2\23+`\22*_\212\22)]\5\23*^\23+_\24+`\25,`\25,a\202\26-b\17\27" + ".c\27/d\30/d\30""0e\31""0f\31""1g\32""2g\32""2h\33""3i\33""3j\33""4j\34""5" + "k\34""5l\35""6l\35""6m\202\36""7n\26\37""8o\37""9p\40""9q!:q!:r\";s\"<t$" + ">w&@y'@z'A{&@z&?x&@x'@y'Az(Az(B{)C|)C}*D}*D~\202+E\177\1,E\200\202-F\200" + "2.G\201.H\202/H\203/I\2030I\2040J\2051K\2051K\2062L\2073L\2103M\2104N\211" + "4N\2125O\2125O\2136P\2146P\2157Q\2157R\2169T\221<X\224<X\225=Y\226=Z\227" + ">Z\227>[\230?[\231?\\\231@]\232@]\233A^\233B^\234B_\235C`\235C`\236Da\237" + "Da\240Eb\240Eb\241Fc\242Gd\242Hd\243Ie\244Ie\245Jf\245Ie\245Fb\242Fc\242" + "Gc\243Gd\244\202He\245\3If\246Jf\247Jg\247\205\23,b\2\23+a\22*_\206\22)]" + "\17\23*^\23*_\24+_\24,`\25,a\25-a\26-b\27.c\27.d\30/d\30""0e\31""0f\31""1" + "f\32""1g\32""2h\202\33""3i\21\33""4j\33""4k\34""5k\35""5l\35""6m\36""7m\36" + """7n\37""8o\37""8p\40""9p\40:q!:r!;r\";s\"<t#=u$=v\202%>w\27%?w&@x&@y'Ay" + "'Az(B{)B|)C|*D}*D~+E~+E\177,E\200,F\200-F\200-G\201.G\202.H\202/I\2030I\204" + "0J\2041J\2051K\206\2022L\207\5""3M\2103M\2114N\2115N\2125O\213\2026P\214" + "\17""7Q\2157Q\2168R\2168S\217:U\221<Y\225=Y\226>Z\227>[\230?[\230?\\\231" + "@\\\232@]\232A]\233A^\234\202B_\235\1C`\236\202Da\237\23Eb\240Eb\241Fc\241" + "Gc\242Hd\243He\244Ie\244If\245Jf\246Jg\246He\244Gc\243Gd\244Hd\244He\245" + "Ie\246If\246Jg\247Jg\250\210\23,b\34\23+a\22*_\22)^\22)]\22)^\23*^\24+_\24" + "+`\25,a\25-a\26-b\26.c\27.c\27/d\30/e\30""0e\31""1f\32""1g\32""2h\33""2h" + "\33""3i\33""3j\33""4j\34""5k\34""5l\35""6l\36""6m\36""7n\202\37""8o\17\40" + """9p\40""9q!:q!;r\";s\"<t#<t#=u$>v%>v%?w&?x&@x'Ay'Az\202(B{\5)C|)D}*D~*E" + "~+E\177\202,E\200\17-F\200-G\201.G\201.H\202/H\203/I\2040J\2041J\2051K\206" + "2K\2062L\2073L\2103M\2104N\2114N\212\2025O\213\1""6P\214\2027Q\215\17""8" + "R\2168R\2179S\2209T\220;U\222=Y\226>Z\227>[\230?\\\231@\\\231@]\232A]\233" + "A^\234B^\234B_\235\202C`\236\5Da\237Da\240Eb\241Fc\241Gc\242\202Hd\243\16" + "Ie\244If\245Jf\245Jg\246Kg\247Kh\247He\245Hd\244He\245Ie\245If\246Jf\247" + "Jg\250Kh\250\214\23,b\1\23,a\202\24+`\14\24,`\25,a\26-b\26.b\27.c\27/d\30" + "/e\30""0e\31""0f\31""1g\32""2g\32""2h\202\33""3i\5\33""4j\34""5k\34""5l\35" + """6l\35""6m\202\36""7n\26\37""8o\37""9p\40""9q!:q!:r\";s\"<s#<t#=u$=u$>v" + "%>w%?x&@x&@y'Az(Bz(B{)C|)C}*D}*D~\202+E\177\1,E\200\202-F\200\17.G\201.H" + "\202/H\203/I\2030I\2040J\2051K\2051K\2062L\2072L\2103M\2104N\2114N\2125O" + "\2125O\213\2026P\214\31""7Q\2157R\2168R\2178S\2179S\220:T\221:U\221;V\222" + "=Y\226?[\231?\\\231@\\\232@]\233A^\233A^\234B_\235C_\235C`\236Da\237Da\240" + "Eb\240Eb\241Fc\242Gd\242Hd\243\202Ie\244\4Jf\245Jf\246Kg\247Kh\247\202Lh" + "\250\202He\245\5If\246Jf\247Jg\247Kg\250Kh\251\213\23,b\17\24-c\24-d\25." + "d\25.e\25.d\26.c\26-b\26.c\27.d\30/d\30""0e\31""0f\31""1f\32""1g\32""2h\202" + "\33""3i1\33""4j\33""4k\34""5k\35""6l\35""6m\36""7m\36""7n\37""8o\37""8p\40" + """9p\40:q!:r!;r\";s\"<t#=t$=u$>v%>w%?w&@x&@y'Ay'Az(B{)B|)C|*D}*D~+E~+E\177" + ",E\200,F\200-F\200-G\201.G\202.H\202/I\2030I\2040J\2041J\2051K\2063M\210" + "4O\2123M\2103M\2114N\2114N\2125O\213\2026P\214\17""7Q\2157Q\2168R\2168S\217" + "9S\2209T\220:T\221:U\222;V\223<V\223=Y\226@\\\232@]\232A^\233A^\234\202B" + "_\235\22C`\236C`\237Da\237Eb\240Eb\241Fc\241Gc\242Hd\243He\244Ie\244If\245" + "Jf\246Jg\246Kg\247Lh\250Li\251Mi\251Li\251\202If\246\4Jg\247Jg\250Kh\250" + "Lh\251\212\23,b\12\23,c\24-c\24.d\25.e\26/e\26/f\27""0g\27""1g\30""0g\30" + """0f\202\30""0e\5\31""1f\31""1g\32""2h\33""2h\33""3i\202\33""4j\5\34""5k" + "\34""5l\35""6l\35""7m\36""7n\202\37""8o\17\40""9p\40""9q!:q!;r\";s\"<t#<" + "t#=u$>v%>v%?w&?x&@x'@y'Az\202(B{\5)C|)C}*D}*E~+E\177\202,E\200\16-F\200-" + "G\201.G\201.H\202/H\203/I\2030J\2041J\2051K\2063M\2105Q\2146Q\2156R\2156" + "Q\214\2035O\213\1""6P\214\2027Q\215\17""8R\2168R\2179S\2209T\220:T\221:U" + "\222;U\222;V\223<W\224=W\224>Y\226@\\\232A^\234B^\234B_\235\202C`\236\5D" + "a\237Da\240Eb\240Ec\241Fc\242\202Hd\243\5Ie\244If\245Jf\245Jg\246Kg\247\202" + "Lh\250\11Li\251Mj\252Nj\252Li\251Jf\247Jg\250Kh\250Kh\251Li\252\212\23,b" + "\15\24-c\24.d\25.e\25/e\26/f\26""0g\27""0g\30""1h\30""2i\31""2i\31""3j\32" + """3j\32""2i\202\32""2h\202\33""3i\1\33""4j\202\34""5k\2\35""6l\35""6m\202" + "\36""7n\22\37""8o\37""9p\40""9p!:q!:r\";s\"<s#<t#=u$=u$>v%>w%?x&@x&@y'Az" + "(Az(B{\202)C|\2*D}*D~\202+E\177\1,E\200\202-F\200\10.G\201.H\202/H\202/I" + "\2030I\2040J\2051K\2063N\211\2025Q\21416R\2157R\2167S\2178T\2177S\2167Q\215" + "6P\2147Q\2157R\2168R\2168S\2179S\220:T\221:U\221;U\222;V\223<V\223<W\224" + "=W\225=X\226>Y\226@\\\232B_\235C_\235C`\236Da\237Da\240Eb\240Eb\241Fc\242" + "Gd\242Hd\243He\244Ie\244Jf\245Jg\246Kg\247Kh\247Lh\250Li\251Mi\251Mj\252" + "Nk\253Ok\254Kh\251Kg\250Kh\251Li\251Li\252\211\23,b\21\24-c\24-d\25.d\25" + "/e\26/f\26""0f\27""0g\27""1h\30""1i\31""2i\31""3j\32""3k\32""4k\33""4l\33" + """5m\34""5m\34""5l\202\34""4k(\34""5k\35""5l\35""6m\36""7m\36""7n\37""8o" + "\37""8p\40""9p\40:q!:r!;r\";s#<t#=t$=u$>v%>w%?w&?x&@y'Ay'Az(B{)B|)C|*D}*" + "D~+E~+E\177,E\200,F\200-F\200-G\201.G\202.H\202/I\2030I\2040J\2041K\2063" + "O\212\2025Q\214\6""6R\2156R\2167S\2167S\2178T\2209U\220\2029U\221$8S\217" + "8R\2168S\2179S\2209T\220:T\221:U\222;V\223<V\223<W\224=W\225=X\225>X\226" + ">Y\227?Z\227@[\231B^\235C`\237Da\237Eb\240Eb\241Fc\241Gc\242Hd\243He\244" + "Ie\244If\245Jf\246Jg\246Kg\247Lh\250Li\250Mi\251Mj\252Nj\253Nk\253\202Ol" + "\254\4Li\251Kh\251Li\252Mj\253\210\23,b\23\23-c\24-c\25.d\25.e\26/e\26/f" + "\27""0g\27""1h\30""1h\30""2i\31""2j\31""3j\32""4k\33""4l\33""5m\34""5m\34" + """6m\35""6m\34""5m\202\34""5l\15\35""6l\35""6m\36""7n\36""8o\37""8o\40""9" + "p\40""9q!:q!;r\";s\"<s#<t#=u\202$>v\5%?w&?x&@x'@y'Az\202(B{\26)C|)C}*D}*" + "E~+E\177,E\177,E\200-F\200-G\201.G\201.H\202/H\203/I\2030J\2041K\2064O\212" + "5P\2135Q\2146Q\2156R\2157S\2167S\217\2028T\220\3""9U\2219V\222:V\222\202" + ";W\223\15:U\2229T\220:T\221:U\222;U\222;V\223<V\224<W\224=X\225>X\226>Y\227" + "?Y\227?Z\230\202@[\231\5B]\234Da\237Eb\240Ec\241Fc\242\202Hd\243\17Ie\244" + "If\245Jf\245Jg\246Kg\247Kh\250Lh\250Li\251Mj\252Nj\252Nk\253Ok\254Ol\254" + "Pm\255Ol\255\202Li\252\1Mj\253\210\23,b\15\24-c\24-d\25.d\25/e\26/f\26""0" + "g\27""0g\30""1h\30""2i\31""2i\31""3j\32""3k\32""3j\202\33""3j\202\33""3i" + "\1\33""4j\202\34""5k\2\35""6l\35""6m\202\36""7n\26\37""8o\37""9p\40""9p!" + ":q!:r\";s\"<s#<t#=u$=u$>v%?w%?x&@x'@y'Az(Az(B{)C|)C}*D}*D~\202+E\177\13," + "E\200,F\200-F\200.G\201.H\202/H\203/I\2030I\2042M\2074P\2124P\213\2025Q\214" + "\5""6R\2157R\2167S\2178T\2178T\220\2029U\221\7:V\222:W\223;W\224<X\224<X" + "\225<Y\225<W\224\202;V\223\11<V\223<W\224=W\225=X\226>Y\226>Y\227?Z\230@" + "Z\230@[\231\202A\\\232\26B]\233C_\236Fb\241Gd\242Hd\243He\244Ie\244Jf\245" + "Jg\246Kg\247Kh\247Lh\250Li\251Mi\251Mj\252Nk\253Nk\254Ol\254Pl\255Pm\256" + "Qn\256Ol\255\202Mj\253\207\23,b\11\24-c\31""2g\37""4b/Bl)<g\35""4f\27""0" + "g\27""1h\30""1h\202\30""1gf\31""1g\31""1f\32""1g\32""2h\33""2h\33""3i\33" + """4j\33""4k\34""5k\35""5l\35""6m\36""7m\36""7n\37""8o\37""8p\40""9p\40:q" + "!:r!;r\";s#<t#=t$=u$>v%>w%?w&?x&@y'Ay'Az(B{(B|)C|*D}*D~+E~+E\177,E\200,F" + "\200-F\200-G\201.G\202.H\202/I\2030I\2040J\2042M\2104P\2135P\2135Q\2146R" + "\2156R\2167S\2167S\2178T\2209U\2209U\221:V\222:V\223;W\223;X\224<X\225<Y" + "\225=Y\226=Z\227>Z\227>Y\227=X\225=W\225=X\225>X\226>Y\227?Z\227?Z\230@[" + "\231@[\232A\\\232A]\233B]\234C^\234C^\235E`\237Gc\242Ie\244If\245Jf\246J" + "g\246Kg\247Lh\250Li\250Mi\251Mj\252Nj\253Nk\253Ol\254Ol\255Pm\255Pm\256Q" + "n\257Ro\260Ol\255Mj\253\206\23,b\7\23,c\24-c0Es@OoARwM\\{+?k\203\27/d\30" + "\30/e\30""0e\31""1f\32""1g\32""2h\33""2h\33""3i\33""3j\33""4j\34""5k\34""5" + "l\35""6l\35""6m\36""7n\36""8o\37""8o\40""9p\40""9q!:q!;r\";s\"<s#<t#=u\202" + "$>v\5%?w&?x&@x'@y'Az\202(B{\5)C|)C}*D}*E~+E\177\202,E\200\17-F\200-G\201" + ".G\201.H\202/H\203/I\2030J\2040J\2051K\2062L\2074P\2136Q\2156R\2157S\216" + "7S\217\2028T\220\22""9U\2219V\222:V\222;W\223;W\224<X\224<X\225=Y\226=Z\227" + ">Z\227>[\230?[\231@\\\231?\\\231?Z\230>Y\227?Y\227?Z\230\202@[\231\5A\\\232" + "A\\\233B]\233B^\234C^\235\202D_\236\17E`\237Ea\240Gc\242He\244Jg\246Kh\250" + "Lh\250Li\251Mj\252Nj\252Nk\253Ok\254Ol\254Pm\255Pm\256\202Qn\257\202Ro\260" + "\1Nk\254\206\23,b\5\24-c\24-d\25.d\25-c\25-b\202\26-b\10\27.c\27/d\30/d\30" + """0e\31""0f\31""1g\32""2g\32""2h\202\33""3i\5\33""4j\34""4k\34""5l\35""6" + "l\35""6m\202\36""7n\22\37""8o\37""9p\40""9p!:q!:r\";s\"<s#<t#=u$=u$>v%>w" + "%?x&@x&@y'Az(Az(B{\202)C|\2*D}*D~\202+E\177\13,E\200,F\200-F\200.G\201.H" + "\202/H\203/I\2030I\2040J\2051J\2051K\206\2022L\207\5""3N\2115P\2147S\216" + "8T\2178T\220\2029U\221\5:V\222:W\223;W\223;X\224<X\225\202=Y\226\12>Z\227" + ">[\230?[\230?\\\231@\\\232@]\233A^\233A^\234A^\233A]\233\203A\\\232\26B]" + "\233B]\234C^\235C_\235D_\236D`\237E`\237Ea\240Eb\241Fb\242Fc\242Hd\244If" + "\246Kg\247Li\251Nj\253Nk\254Ol\254Pl\255Pm\256Qn\256Qn\257\203Ro\260\1Qn" + "\257\205\23,b%\24-c\24,b\24,a\24+`hr\207\201\204\213Q\\t\26.c\27.c\27/d\30" + """0e\31""0f\31""1f\32""1g\32""2h\33""2h\33""3i\33""4j\33""4k\34""5k\35""5" + "l\35""6m\36""7m\36""7n\37""8o\37""8p\40""9p\40:q!:r!;r\";s\"<t#=u%>w%?x'" + "@z'A{\202(B|3(Az'Az(B{(B|)C|*D}*D~+E~+E\177,E\200,F\200-F\200-G\201.G\202" + ".H\202/H\2030I\2040J\2041J\2051K\2062K\2072L\2073M\2103M\2114N\2114N\212" + "6Q\2148S\2179U\221:V\222:V\223;W\223;X\224<X\225<Y\225=Y\226=Z\227>Z\230" + "?[\230?\\\231@\\\232@]\232A]\233A^\234B_\234B_\235C`\236C`\237D`\237C_\236" + "C_\235\202C^\235\23D_\236D`\236E`\237Ea\240Ea\241Eb\241Fb\242Gc\243Gd\243" + "Hd\244He\245Ie\246If\246Kh\250Li\252Nk\253Ol\255Pm\256Qo\257\204Ro\260\204" + "\23,b(\23+a\23+_\24+_\24+`\26+]\312\312\313\245\245\246\233\234\236\26-a" + "\27/d\30/e\30""0e\31""0f\32""1g\32""2g\33""2h\33""3i\33""3j\33""4j\34""5" + "k\34""5l\35""6l\35""6m\36""7n\36""8o\37""8o\40""9p\40:q!;s\"<t$=v%>w&?y&" + "@z'@{'A{(B|)B})C}*D~\202*D\177\1*D~\202)C}\3*D}*E~+E\177\202,E\200#-F\200" + "-G\201.G\201.H\202/H\203/I\2030I\2040J\2051K\2062K\2062L\2073L\2103M\210" + "4N\2114N\2125O\2125O\2136P\2147Q\2158S\217:V\222;W\224<X\224<Y\225=Y\226" + "=Z\227>Z\227>[\230?[\231?\\\231@]\232A]\233A^\233B^\234B_\235\202C`\236\7" + "Da\237Da\240Eb\240Ec\241Fc\242Fb\241Fa\240\203Ea\240\5Eb\241Fb\242Fc\243" + "Gc\243Gd\244\202He\245\5If\246Jf\247Jg\247Kh\250Kh\251\202Li\252\3Mj\253" + "Nk\254Ol\255\202Pm\256\202\23,b\21\23+`\22*^\23*^\23*_\24+_\24,`';e\241\257" + "\275\226\241\253\214\230\243\35""1^\30/d\30""0e\31""0f\31""1g\32""2g\32""2" + "h\202\33""3i\26\33""4j\33""4k\34""5l\35""6l\35""6m\36""7n\37""8p\40:r!;s" + "#<u#=v$=w%>x%?x&?y&@z'@z'A{(A|(B|)C})C~\202*D\177\2+E\200,F\200\202,G\200" + "\1+F\200\202+E\177\13,E\200,F\200-F\200.G\201.H\202/H\203/I\2030I\2040J\205" + "1J\2051K\206\2022L\207\5""3M\2104M\2114N\2125O\2125O\213\2026P\214\31""7" + "Q\2157R\2168R\2169S\220:V\222<X\225=Y\226>Z\227>[\230?[\230?\\\231@\\\232" + "@]\233A^\233A^\234B_\235C_\235C`\236Da\237Da\240Eb\240Eb\241Fc\242Gc\242" + "Hd\243\202Ie\244\17If\245He\244Hd\244Gd\243Gc\243Gd\244Hd\244He\245If\246" + "If\247Jg\247Kg\250Kh\251Li\251Li\252\206Mj\253,\23+a\22*^\22)]\23*^\23*_" + "\24+_\24+`\25,a7Hk\225\230\234\315\317\321\237\244\252':e\30/e\31""0f\31" + """1f\32""1g\32""2h\33""2h\33""3i\33""4j\34""5k\35""6m\36""7o\37""8q\40""9" + "r!:s\";t\";u#<u#=v$=w$>w%>x%?y&?y'@z'A{(A{(B|)B})C~*D~*D\177\202+E\200\4" + ",F\200-H\201-H\202.I\202\202.I\203+-G\201-F\200-G\201.G\202.H\202/H\2030" + "I\2040J\2041J\2051K\2062K\2062L\2073M\2103M\2114N\2114N\2125O\2136P\2136" + "P\2147Q\2157Q\2168R\2168S\2179S\2209T\220:T\221;V\223=X\225>[\230?\\\231" + "@\\\232@]\232A]\233A^\234B_\234B_\235C`\236C`\237Da\237Eb\240Eb\241Fc\241" + "Gc\242\202Hd\243\6Ie\244If\245Jf\246Jg\246Kg\247Kh\250\202Lh\250\2Kh\250" + "Kg\247\202Jg\247\5Jg\250Kh\250Kh\251Li\252Mi\252\206Mj\253\202\22)])\22)" + "^\23*^\23+_\24+`\25,`\25,a\26-a&9dBTy+?j\30/e\30""0e\31""1f\31""1g\32""2" + "h\33""3j\34""5l\35""6n\36""7o\37""8p\37""8q\40""9q\40""9r!:s!;t\";t#<u#<" + "v$=v$=w%>x%?x&?y&@z'@{'A{(B|(B})C}*C~*D\177\202+E\200*,F\200,G\201-H\201" + "-I\202.I\203/J\203/J\204.I\203-F\201.G\201.H\202/H\203/I\2030I\2040J\205" + "1K\2062K\2062L\2073L\2103M\2104N\2114N\2125O\2125O\2136P\2146Q\2157Q\215" + "7R\2168R\2179S\2179S\220:T\221:U\221;U\222;V\223<W\224>Y\227@\\\231A]\233" + "A^\233B^\234B_\235\202C`\236\17Da\237Da\240Eb\240Eb\241Fc\242Gd\243Hd\243" + "Ie\244Ie\245Jf\245Jg\246Kg\247Kh\247Lh\250Li\251\202Mj\252\2Nk\253Ok\254" + "\202Ol\254\4Ol\255Ol\254Nk\254Ol\255\202Nk\254\204Mj\253\202\22)]\26\23*" + "^\23*_\24+_\24,`\25,a\25-a\26-b\27.c\27/d\30/e\30""1g\31""2i\32""3j\33""4" + "l\33""5m\34""6n\35""6n\36""7o\37""7p\37""8p\40""9q\40""9r\202!:s\26\";t\"" + "<u#<u#=v$=w%>w%>x&?y&@z'@z'A{(A|(B|)C})C~*D\177+D\177+E\200,F\200,G\200-" + "H\201-H\202\202.I\203\12/J\204/K\205/I\203.G\201.G\202/H\202/I\2031K\206" + "2N\2102M\210\2032L\207\5""3M\2104M\2114N\2115O\2125O\213\2026P\214\5""7Q" + "\2157Q\2168R\2168S\2179S\220\202:T\221\13;U\222;V\223<V\223<W\224=W\225=" + "X\226?Z\230@]\233B_\235C_\235C`\236\202Da\237\26Eb\240Eb\241Fc\242Gc\242" + "Hd\243He\244Ie\244If\245Jf\246Kg\247Kh\247Lh\250Li\251Mi\251Mj\252Nk\253" + "Nk\254Ol\254Ol\255Pm\256Qn\256Qn\257\206Ro\260\202Qn\257\1\22)]\202\23*^" + "\17\24+_\24+`\25,a\25-a\26-b\27/e\30""0g\30""2h\31""2j\32""3k\32""4k\33""4" + "l\33""5m\34""5m\35""6n\202\36""7o\5\37""8p\37""8q\40""9r!:r!:s\202\";t\17" + "#<u#=v$=w$>w%>x%?y&?y'@z'A{(A|(B|)B})C~*D~*D\177\202+E\200\5,F\200,H\201" + "-H\202.I\202.I\203\202/J\204\11""0K\205/I\203.G\201.H\202/H\203/I\2042N\210" + "4O\2124P\213\2025P\213\37""4O\2134N\2124N\2114N\2125O\2136P\2136P\2147Q\215" + "7Q\2168R\2168S\2179S\2209T\220:T\221:U\222;U\223;V\223<W\224=W\225=X\225" + ">X\226>Y\227?Z\227@[\231B^\234C`\236Da\237Eb\240Eb\241Fc\241Gc\242\202Hd" + "\243\17Ie\244If\245Jf\246Jg\246Kg\247Kh\250Li\250Mi\251Mj\252Nj\253Nk\253" + "Ol\254Ol\255Pm\255Pm\256\202Qn\257\210Ro\260)\22)]\23*^\23+_\24+`\25,`\25" + "-b\26/e\27""0g\30""1h\30""2i\31""2j\31""3j\32""3k\32""4l\33""5l\34""5m\34" + """6n\35""6o\36""7o\37""8p\37""8q\40""9q\40""9r!:s!;s\";t#<u#<v$=v$=w%>x%" + "?x&?y&@z'@{'A{(B|(B})C}*C~*D\177\202+E\200\11,F\200,G\201-H\201-I\202.I\203" + "/J\203/J\2040K\2050K\206\202.H\202\4/H\203/I\2031K\2063O\212\2024P\213\3" + """5Q\2146Q\2156R\215\2027S\216\24""7R\2166Q\2156P\2146Q\2157Q\2157R\2168" + "R\2179S\2179S\220:T\221:U\221;U\222;V\223<V\224<W\224=X\225=X\226>Y\226?" + "Y\227?Z\230\202@[\231\30A\\\232B^\235Da\237Eb\241Fc\242Gd\243Hd\243Ie\244" + "Ie\245Jf\245Jg\246Kg\247Kh\247Lh\250Li\251Mj\251Mj\252Nk\253Ok\254Ol\254" + "Pm\255Pm\256Qn\256Qn\257\211Ro\260\26\23*^\23*_\24+_\24,b\26/e\26""0g\27" + """0g\30""1h\30""2i\31""2i\31""3j\32""3k\32""4k\33""4l\33""5m\34""6n\35""6" + "n\36""7o\36""7p\37""8p\40""9q\40""9r\202!:s#\";t\";u#<u#=v$=w$>x%>x&?y&@" + "z'@z'A{(A|(B|)C})C~*D~+D\177+E\200,F\200,G\200-H\201-H\202.I\202.J\203/J" + "\204/K\2050K\205/J\205.G\202/H\202/I\2030I\2043N\2114O\2124P\213\2025Q\214" + "\5""6R\2156R\2167S\2168T\2178T\220\2039U\221\1""9T\220\2028S\217\13""9S\220" + "9T\220:T\221;U\222;V\223<V\223<W\224=W\225=X\225>Y\226>Y\227\202?Z\230\16" + "@[\231A[\232A\\\232B]\233B]\234C_\235Ea\240Gc\242He\244Ie\244If\245Jf\246" + "If\245Ie\245\204He\245\7If\246Jf\247Kg\250Li\251Mj\252Nk\254Pm\256\212Ro" + "\260\20\23*_\24+_\25-b\26/f\26""0f\27""0g0DoBQq;Kn7Jt)=k7Iq=Lm@Pt6Ho\35""6" + "n\202\36""7o\5\37""8p\37""8q\40""9r\40:r!:s\202\";t\17#<u#=v$=v$>w%>x%?y" + "&?y'@z'A{(A{(B|)B})C~*D~*D\177\202+E\200\5,F\200,H\201-H\202.I\202.I\203" + "\202/J\204\2""0K\2050J\205\202.H\202\13/H\2030I\2042M\2074O\2124P\2135P\213" + "5Q\2146R\2156R\2167S\2167S\217\2028T\220\1""9U\221\202:V\222\1;W\223\202" + ";W\224\14;V\223;U\222:U\222;U\223;V\223<W\224=W\224=X\225>X\226>Y\227?Z\227" + "?Z\230\202@[\231\5A\\\232B\\\233B]\234C^\234C^\235\202D_\236\17Ea\240Fb\241" + "Fc\242Fb\241Fb\242Fc\243Gd\243Hd\244He\245Ie\246If\246Jg\247Jg\250Kh\250" + "Kh\251\202Li\252\4Mj\253Nk\254Pm\256Qn\257\206Ro\260\4\23+_\24,`\26/e\26" + "/f\202\27""0g!*Aq3Hu;Nx2Fq2Gu=Py7Ly7Lz.Du\36""6o\36""7o\37""8p\37""8q\40" + """9q\40""9r!:s!;t\";t#<u#<v$=v$=w%>x%?x&?y&@z'@{'A{(B|(B})C}*C~*D\177\202" + "+E\200*,F\200,G\201-H\201-I\202.I\203.J\203/J\204/K\204.I\203.G\201.H\202" + "/H\203/I\2031L\2063O\2124P\2124P\2135Q\2146Q\2156R\2157R\2167S\2178T\217" + "8T\2209U\2219V\221:V\222;W\223;W\224<X\224<X\225=Y\226=Z\226>Z\227=Y\226" + "=X\225<W\225=X\225=X\226>Y\226?Y\227?Z\230\202@[\231\17A\\\232A\\\233B]\233" + "B]\234C^\235C_\235D_\236E`\237E`\240Ea\240Eb\241Fb\242Fc\242Gc\243Gd\244" + "\202He\245\7If\246Jf\247Jg\247Kg\250Kh\251Li\251Li\252\205Mj\253\4Nk\254" + "Ol\255Pm\256Qn\257\202Ro\260\7\24+_\24,b\26/f\26""0f\27""0g\27""1h\30""1" + "i\202\31""2i\13\32""3k(6aEE]\40""5e\34""6n\35""6n\36""7o\36""7p\37""8p\40" + """9q\40""9r\202!:s\27\";t\";u#<u#=v$=w%>w%>x&?y&@z'@z'A{(A|(B|)C})C~*D\177" + "+D\177+E\200,F\200,G\200-H\201-H\202.I\202\202.H\202\12-G\201-F\200.G\201" + ".G\202/H\202/I\2031K\2063O\2114O\2124P\213\2025Q\214\5""6R\2156R\2167S\216" + "8T\2178T\220\2029U\221\16:V\222:V\223;W\223;X\224<X\225<Y\226=Y\226>Z\227" + ">[\230?[\230?\\\231@\\\232?\\\231?[\230\203?Z\230\1@[\231\202A\\\232\2B]" + "\233B]\234\202C^\235\13D_\236D`\237E`\237Ea\240Ea\241Fb\241Fc\242Gc\243G" + "d\244Hd\244He\245\202If\246\5Jg\247Jg\250Kh\251Lh\251Li\252\212Mj\253\20" + "Nk\254Ol\255\24+`\25,a\26.d\27""0g\27""1h\30""1h\30""2i\31""2jafv\237\204" + "a\217_?\235jEqK?\35""6n\202\36""7o\5\37""8p\37""8q\40""9r!:r!:s\202\";t\17" + "#<u#<v$=w$>w%>x%?y&?y&@z'A{(A{(B|)B})C~*D~*D\177\203+E\200\4+F\200+E\177" + "+F\177+E\177\202,E\200\17-F\200-G\201.G\201.H\2020I\2042M\2073O\2114O\212" + "4P\2135P\2135Q\2146R\2156R\2167S\2167S\217\2028T\220\1""9U\221\202:V\222" + "\15;W\223;X\224<X\225<Y\225=Y\226=Z\227>Z\227>[\230?\\\231@\\\232@]\232A" + "]\233A^\234\202B^\234\7A]\233A\\\233A\\\232A\\\233B]\234C^\234C^\235\202" + "D_\236\1E`\237\202Ea\240\14Eb\241Fb\242Fc\243Gc\243Hd\244He\245Ie\245If\246" + "Jg\247Jg\250Kh\250Kh\251\202Li\252\214Mj\253\23\24,`\25,a\26-b\26.c\27""0" + "f\30""1h\31""2j\31""3jjjs\361\312\223\177vlle_HIU\36""6n\36""7o\37""8p\37" + """8q\40""9q\40""9r\202!:s\11\";t\"<u#<v$=v$>w%>x%?x&?y&@y\202&@z\202'Az\2" + "'A{(A{\203(B{\4)C|)C}*D}*D~\202+E\177\22,E\200-F\200-F\201.H\2020J\2041L" + "\2072N\2103N\2113O\2124P\2124P\2135Q\2146Q\2156R\2157S\2167S\2178T\2178T" + "\220\2029U\221\20:V\222:W\223;W\224<X\224<X\225=Y\226=Z\226>Z\227>[\230?" + "[\231?\\\231@]\232@]\233A^\233B^\234B_\235\202C`\236\202Da\237\23D`\237C" + "_\236C^\235C_\235D_\236E`\237E`\240Ea\240Eb\241Fb\242Fc\242Gc\243Gd\244H" + "e\245If\246Kh\250Nj\253Ol\254Pl\255\204Pm\256\2Ol\255Nk\254\212Mj\253\30" + "\25,a\25-a\26-b\26.c\27.d\30/d\30""0e\31""1g\200zu\333\271\206\321\264\210" + "\336\300\222\223\207{\33""4k\34""5l\34""6l\35""6m\36""7n\36""8o\37""8o\40" + """9p\40""9q!:q!;r\202\";s\11\"<t#<t#=u$=u$>v%>w%?w&@x&@y\202'Az\22(B{)B|" + ")C|*D}*D~+E~+E\200-G\200.H\202/J\2040L\2061L\2072M\2072N\2103N\2113O\211" + "4O\2124P\213\2025Q\214\5""6R\2156R\2167S\2168S\2178T\220\2029U\221\17:V\222" + ":V\223;W\223;X\224<X\225<Y\225=Y\226>Z\227>[\230?[\230?\\\231@\\\232@]\232" + "A^\233A^\234\202B_\235\1C`\236\202Da\237\3Eb\240Eb\241Fc\241\203Gc\242\203" + "Fb\241\15Fb\242Fc\243Gd\243He\245Jg\247Li\251Nj\253Nk\253Ol\254Ol\255Pm\256" + "Qm\256Qn\257\205Ro\260\202Qn\257\3Pm\256Ol\255Nk\254\204Mj\253\23\25-b\26" + "-b\26.c\27.c\27/d\30/e\30""0e\31""1f|xt\315\257z\225\204l\267\231j4Ce\33" + """4j\34""5k\34""5l\35""6m\35""7m\36""7n\202\37""8o\26\40""9p\40""9q!:q!;" + "r\";s\"<t#<t#=u$>v%>v%?w&?x&@y'Ay'Az(B{)C|*D~+E\177,G\200-H\201.I\203\202" + "/J\204\13""0K\2050L\2061L\2061M\2072M\2102N\2113O\2114O\2124P\2135P\2135" + "Q\214\2026R\215\2""7S\2167S\217\2028T\220\1""9U\221\202:V\222\17;W\223;W" + "\224<X\225<Y\225=Y\226=Z\227>Z\227>[\230?\\\231@\\\232@]\232A]\233A^\234" + "B_\234B_\235\202C`\236\5Da\237Da\240Eb\241Fc\241Fc\242\202Hd\243\17Ie\244" + "If\245Jf\246Jg\246Kg\247Kh\250Li\250Mi\251Mj\252Nj\252Nk\253Ol\254Ol\255" + "Pm\255Pm\256\202Qn\257\213Ro\260\3Qn\257Pm\256Ol\255\202\27""0g\15\27""0" + "f\30""0g\30""1g\31""1g\31""1h\32""2h\32""2i\33""2h\33""4j\33""3j\34""5l\35" + """5l\35""6m\202\36""7nX\37""8o\37""8p\40""9q\40:q!:r!;s\";s#<t#=u$=v$>w%" + "?x&@y'@z'A{(B|)C}*D~+D\177+E\200,F\200,G\201-H\201-H\202.I\203.J\203/J\204" + "0K\2050K\2061L\2061M\2072M\2102N\2103N\2113O\2124P\2124P\2135Q\2146Q\215" + "6R\2157R\2167S\2178T\2178T\2209U\2219U\222:V\222:W\223;W\224;X\224<X\225" + "=Y\226=Z\226>Z\227>[\230?[\231?\\\231@]\232@]\233A^\233B^\234B_\235C_\235" + "C`\236Da\237Da\240Eb\240Eb\241Fc\242Gd\242Hd\243Ie\244Ie\245Jf\245Jf\246" + "Kg\247Kh\247Lh\250Li\251Mj\251Mj\252Nk\253Ok\254Ol\254Pl\255Pm\256Qn\256" + "Qn\257\217Ro\2605\27""0g\27""1h\30""1i\31""2i\31""3j\32""3k\32""4k\33""4" + "l\33""5m\34""6n\35""6n\36""7o\36""7p\37""8p\40""9q\40""9r!:r!:s\";t\";u#" + "<u#=v$=w$>w%>x&?y&@z'@z'A{(A|(B|)C})C~*D~*D\177+E\200,E\200,G\200-H\201-" + "H\202.I\202.I\203/J\204/K\2050K\2050L\2061L\2072M\2072N\2103N\2113O\2114" + "O\2124P\213\2025Q\214\5""6R\2156R\2167S\2168S\2178T\220\2029U\221\17:V\222" + ":V\223;W\223;X\224<X\225<Y\225=Y\226>Z\227>[\230?[\230?\\\231@\\\232@]\232" + "A]\233A^\234\202B_\235\22C`\236D`\237Da\237Eb\240Eb\241Fc\242Gc\242Hd\243" + "He\244Ie\244If\245Jf\246Kg\246Kg\247Lh\250Li\251Mi\251Mj\252\202Nk\253\5" + "Ol\254Ol\255Pm\255Pm\256Qn\257\220Ro\260\12\27""1h\30""1h\30""2i\31""2j\31" + """3j\32""4k\33""4l\33""5m\34""5m\35""6n\202\36""7o\2\37""8p\37""8q\202\40" + """9r\1!:s\202\";t\10#<u#<v$=v$>w%>x%?y&?y&@z\202'A{\5(B|)B})C}*C~*D\177\202" + "+E\200\5,F\200,G\201-H\201.I\202.I\203\202/J\204\13""0K\2050L\2061L\2061" + "M\2072M\2102N\2103O\2114O\2124P\2135P\2135Q\214\2026R\215\2""7S\2167S\217" + "\2028T\220\22""9U\2219V\222:V\222;W\223;W\224<X\224<Y\225=Y\226=Z\227>Z\227" + ">[\230?\\\231@\\\231@]\232A]\233A^\234B^\234B_\235\202C`\236\5Da\237Da\240" + "Eb\241Fc\241Fc\242\202Hd\243\17Ie\244If\245Jf\245Jg\246Kg\247Kh\250Li\250" + "Mi\251Mj\252Nj\252Nk\253Ok\254Ol\255Pm\255Pm\256\202Qn\257\220Ro\260\17\30" + """1h\30""2i\31""2j\31""3j\32""3k\32""4l\33""5l\33""5m\34""6n\35""6n\36""7" + "o\37""7p\37""8q\40""9q\40""9r\202!:s\31\";t\"<u#<v$=v$=w%>x%?x&?y&@z'@z'" + "A{(B|(B})C}*C~*D\177+E\177+E\200,F\200,G\200-H\201-H\202.I\203.J\203/J\204" + "\2020K\205\17""1L\2061M\2072M\2102N\2103N\2113O\2124P\2124P\2135Q\2146Q\214" + "6R\2157R\2167S\2178T\2178T\220\2029U\221*:V\222:W\223;W\224<X\224<X\225=" + "Y\226=Z\226>Z\227>[\230?[\231?\\\231@]\232@]\233A^\233A^\234B_\235C_\235" + "C`\236Da\237Da\240Eb\240Eb\241Fc\242Gd\242Hd\243Ie\244Ie\245Jf\245Jg\246" + "Kg\247Kh\247Lh\250Li\251Mi\251Mj\252Nk\253Ok\254Ol\254Pl\255Pm\256Qn\256" + "Qn\257\220Ro\2604Qn\257\30""1i\31""2i\31""3j\32""3k\32""4k\33""4l\33""5m" + "\34""6m\35""6n\36""7o\36""7p\37""8p\40""9q\40""9r!:r!:s\";t\";u#<u#=v$=w" + "%>w%>x&?y&@y'@z'A{(A|(B|)B})C~*D~*D\177+E\200,E\200,F\200-H\201-H\202.I\202" + ".I\203/J\204/K\2050K\2050L\2061L\2072M\2072N\2103N\2113O\2124O\2124P\213" + "\2025Q\214\5""6R\2156R\2167S\2167S\2178T\220\2029U\221*:V\222:V\223;W\223" + ";X\224<X\225<Y\225=Y\226=Z\227>[\230?[\230?\\\231@\\\232@]\232A]\233A^\234" + "B_\234B_\235C`\236D`\237Da\237Eb\240Eb\241Fc\241Gc\242Hd\243He\244Ie\244" + "If\245Jf\246Kg\246Kh\247Lh\250Li\250Mi\251Mj\252Nj\253Nk\253Ol\254Ol\255" + "Pm\256Qm\256Qn\257\212Ro\260\2Qn\257Pm\256\202Ol\255\1Nk\254\203Mj\253\14" + "\30""2i\31""2j\31""3j\32""4k\32""4l\33""5m\34""5m\34""6n\36""6o\36""7o\37" + """8p\37""8q\202\40""9r\1!:s\202\";t\17#<u#<v$=v$>w%>x%?y&?y&@z'A{(A{(B|)" + "B})C}*D~*D\177\202+E\200\26,F\200,G\201-H\201-I\202.I\203/J\203/J\2040K\205" + "0L\2061L\2061M\2072M\2102N\2103N\2114O\2124P\2135P\2135Q\2146Q\2156R\215" + "7S\2167S\217\2028T\220\22""9U\2219V\222:V\222;W\223;W\224<X\224<Y\225=Y\226" + "=Z\227>Z\227>[\230?[\231@\\\231@]\232A]\233A^\234B^\234B_\235\202C`\236\5" + "Da\237Da\240Eb\241Fc\241Fc\242\202Hd\243\17Ie\244Ie\245Jf\245Jg\246Kg\247" + "Kh\250Li\250Li\251Mj\252Nj\252Nk\253Ok\254Ol\255Pm\255Pm\256\202Qn\257\203" + "Ro\260\2Qn\257Pm\256\202Ol\255\1Nk\254\212Mj\253\15\31""2i\31""3j\32""3k" + "\32""4l\33""5l\33""5m\34""6n\35""6n\36""7o\37""8p\37""8q\40""9q\40""9r\202" + "!:s*\";t\"<u#<u$=v$=w%>x%?x&?y&@z'@z'A{(B|(B})C}*C~*D\177+D\177+E\200,F\200" + ",G\201-H\201-H\202.I\203.J\203/J\204/K\2050K\2051L\2061M\2072M\2102N\210" + "3N\2113O\2124O\2124P\2135Q\2146Q\2146R\2157R\2167S\2178T\2178T\220\2029U" + "\221&:V\222:W\223;W\224;X\224<X\225=Y\226=Z\226>Z\227>[\230?[\230?\\\231" + "@\\\232@]\233A^\233A^\234B_\235C_\235C`\236Da\237Da\240Eb\240Eb\241Fc\242" + "Gd\242Hd\243He\244Ie\244Jf\245Jf\246Kg\247Kh\247Lh\250Li\251Mj\251Mj\252" + "Nk\253Nk\254Ol\254\202Ol\255\202Ol\254\2Ol\255Nk\254\221Mj\253\37\31""3j" + "\32""3k\32""4k\33""4l\33""5m\34""6m\35""6n8Kx8Ku=LnFUwIXzBRv5Go\";t\";u#" + "<u#=v$=w$>w%>x&?y&@y'@z'A{(A|(B|)C})C~*D~*D\177\202+E\200\20,F\200-H\201" + "-H\202.I\202.I\203/J\204/K\2040K\2050L\2061L\2071M\2072N\2103N\2113O\211" + "4O\2124P\213\2025Q\214\5""6R\2156R\2167S\2167S\2178T\220\2029U\221\30:V\222" + ":V\223;W\223;X\224<X\225<Y\225=Y\226=Z\227>Z\230?[\230?\\\231@\\\232@]\232" + "A]\233A^\234B_\234B_\235C`\236D`\237Da\237Eb\240Eb\241Fc\241Gc\242\202Hd" + "\243\5Ie\244If\245Jf\246Jg\246Kh\247\203Lh\250\204Kh\250\4Kg\250Kh\250Kh" + "\251Li\252\224Mj\253\27\31""3j\32""4k\32""4l\33""5m\34""5m\35""6n\36""7o" + ">Py5JwAT\177>Q}>Q~BT~<P}\";t#<u#<v$=v$>w%>x%?y&?y&@z\202'A{\5(B|)B})C}*C" + "~*D\177\202+E\200\5,F\200,G\201-H\201.I\202.I\203\202/J\204\22""0K\2050L" + "\2061L\2061M\2072M\2102N\2103N\2113O\2124P\2135P\2135Q\2146Q\2156R\2157S" + "\2167S\2178T\2178T\2209U\221\202:V\222\17;W\223;W\224<X\224<Y\225=Y\226=" + "Z\227>Z\227>[\230?[\231?\\\231@]\232A]\233A^\234B^\234B_\235\202C`\236\7" + "Da\237Da\240Eb\240Ec\241Fc\242Gd\243Hd\243\203Hd\244\202Hd\243\12Gd\244G" + "d\243Gd\244He\245Ie\245If\246Jf\247Jg\250Kh\250Kh\251\202Li\252\224Mj\253" + "\13\32""3k\32""4l\33""5l\33""5m\34""6n\35""6n\36""7o\37""7p\37""8q\40""8" + "p\40""9r\202!:s#\";t\"<u#<u#=v$=w%>x%?x&?y&@z'@z'A{(B|(B})C})C~*D\177+D\177" + "+E\200,F\200,G\200-H\201-H\202.I\203.J\203/J\204/K\2050K\2051L\2061M\207" + "2M\2102N\2103N\2113O\2124P\2124P\213\2025Q\214\5""6R\2157R\2167S\2178T\217" + "8T\220\2029U\221\5:V\222:W\223;W\224;X\224<X\225\202=Y\226\13>Z\227>[\230" + "?[\230?\\\231@\\\232@]\233A^\233A^\234B_\235C_\235C`\236\203Da\237\202D`" + "\237\204E`\237\17Ea\240Eb\241Fb\242Fc\242Gc\243Gd\244Hd\244He\245If\246I" + "f\247Jg\247Kg\250Kh\251Li\251Li\252\224Mj\253\36Nk\254\32""4k\33""4l\33""5" + "m\34""5m\35""6n\36""7o\36""7p\37""8pox\214\234\234\235Ybwft\222Vh\201\";" + "u#<u#=v$=w$>w%>x%?y&@y'@z'A{(A|(B|)C})C~*D~*D\177\202+E\200\20,F\200-H\201" + "-H\202.I\202.I\203/J\204/K\2040K\2050L\2061L\2071M\2072N\2103N\2113O\211" + "4O\2124P\213\2025Q\214\27""6R\2156R\2167S\2167S\2178T\2209U\2209U\221:V\222" + ":V\223;W\223;X\224<X\225<Y\225=Y\226=Z\227>Z\227?[\230?\\\231@\\\232@]\232" + "A]\233@]\232A]\232\202A\\\232\30A\\\233A\\\232A]\233B]\234C^\234C^\235D_" + "\236D`\237E`\237Ea\240Ea\241Eb\241Fb\242Gc\243Gd\243Hd\244He\245Ie\246If" + "\246Jg\247Jg\250Kh\250Lh\251Li\252\216Mj\253\1Nk\254\202Ol\255\1Pm\256\202" + "Qn\257\202Ro\260\34\33""4l\33""5m\34""5m\35""6n\36""6o\36""7o\37""8p\37""8" + "q{\203\227\247\304\331\271\302\311\310\313\311\207\215\231#<u#<v$=v$>w%>" + "x%?x&?y&@z'@{'A{(B|)B})C}*D~*D\177\202+E\200\26,F\200,G\201-H\201-I\202." + "I\203/J\203/J\2040K\2050L\2061L\2061M\2072M\2102N\2103N\2113O\2124P\2135" + "P\2135Q\2146Q\2156R\2157S\2167S\217\2028T\220\7""9U\2219V\222:V\222;W\223" + ";W\224<X\224<X\225\207=Y\226\4>X\226>Y\227?Y\227?Z\230\202@[\231\5A\\\232" + "A\\\233B]\233B^\234C^\235\202D_\236\1E`\237\202Ea\240\14Eb\241Fb\242Fc\242" + "Gc\243Gd\244He\245Ie\245If\246Jf\247Jg\247Kh\250Kh\251\202Li\252\206Mj\253" + "\1Nk\254\202Ol\255\1Pm\256\202Qn\257\212Ro\260$\33""4l\33""5m\34""6n\35""6" + "n\36""7o\37""8p\37""8q\40""9qmy\222\215\301\345\236\310\350\302\314\324\177" + "\207\234#<u#=v$=w%>x%?x&?y&@z'@z'A{(B|(B})C})C~*D\177+D\177+E\200,F\200," + "G\200-H\201-H\202.I\203.J\203/J\204\2020K\205\10""1L\2061M\2072M\2072N\210" + "3N\2113O\2124O\2124P\213\2025Q\214\5""6R\2157R\2167S\2178T\2178T\220\204" + "9U\221\205:U\221\34;U\222;V\223<V\223<W\224=W\225=X\226>Y\226>Y\227?Z\230" + "@Z\230@[\231A\\\232A\\\233B]\233B]\234C^\235C_\235D_\236D`\237E`\237Ea\240" + "Ea\241Fb\242Fc\242Gc\243Gd\244Hd\244He\245\202If\246\7Jg\247Kg\250Kh\251" + "Li\252Mj\253Nk\254Ol\255\202Pm\256\1Qn\257\222Ro\260\33\33""5m\34""5m\35" + """6n\36""7o\36""7p\37""8p\37""8q\40""9rGX\200\203\222\247\227\260\304\213" + "\232\254$<s#=v$=w$>w%>x%?y&?z'@z'A{(A{(B|)B})C~*D~*D\177\202+E\200\22,F\200" + "-H\201-H\202.I\202.I\203/J\204/K\2050K\2050L\2061L\2071M\2072M\2103N\211" + "3O\2114O\2124P\2135P\2135Q\214\2076Q\215+7Q\2157Q\2168R\2168R\2179S\2209" + "T\220:T\221:U\222;V\223<V\223<W\224=W\225=X\225>X\226>Y\227?Z\227?Z\230@" + "[\231@[\232A\\\232B\\\233B]\234C^\234C^\235D_\236D`\237E`\237Ea\240Ea\241" + "Eb\241Fb\242Gc\243Gd\243Hd\244If\246Jg\247Kh\250Mi\252Nj\253Ol\254Pm\256" + "Qn\257Rn\260\227Ro\260\32\34""5m\34""6n\36""6o\36""7o\37""8p\37""8q\40""9" + "q\40""9r!:s!;t\":p*@r#<v$=v$>w%>x%?y&?y&@z'@{'A{(B|)B})C}*C~*D\177\202+E" + "\200\5,F\200,G\201-H\201-I\202.I\203\202/J\204\11""0K\2050K\2061L\2061M\207" + "2M\2102N\2103N\2102N\2103N\210\2043M\210\26""4N\2114N\2125O\2125O\2136P\214" + "6Q\2157Q\2158R\2168R\2179S\2209T\220:T\221:U\222;U\222;V\223<V\224<W\224" + "=X\225>X\226>Y\226?Y\227?Z\230\202@[\231\5A\\\232A\\\233B]\233B^\234C^\235" + "\202D_\236\17E`\237Fa\240Fb\242Gd\243Ie\244Jf\246Kg\247Li\250Mj\252Nj\252" + "Nk\253Ok\254Ol\254Pm\255Pm\256\202Qn\257\230Ro\260\7\34""6n\35""6n\36""7" + "o\37""7p\37""8p\40""9q\40""9r\202!:s\30\";t\"<u#<u#=v$=w$>x%>x&?y&@z'@z'" + "A{(B|(B})C})C~*D\177+D\177+E\200,F\200,G\200-H\201-H\202.I\203.J\203\205" + "/J\204\2030I\204\3""0J\2051K\2051K\206\2022L\207\5""3M\2103M\2114N\2115O" + "\2125O\213\2026P\214\5""7Q\2157Q\2168R\2178S\2179S\220\202:T\221\34;U\222" + ";V\223<V\223<W\224=W\225=X\226>Y\226>Y\227?Z\230@Z\230@[\231A\\\232B]\233" + "C^\235C_\236Ea\237Fb\241Gc\242Hd\243Ie\244Jf\245Jf\246Kg\247Kh\247Lh\250" + "Li\251Mi\251Mj\252\202Nk\253\5Ol\254Pl\255Pm\256Qn\256Qn\257\231Ro\260\10" + "\35""6n\36""7o\36""7p\37""8p\37""8q\40""9r!:r!:s\202\";t\5#<u#=v$=w$>w%>" + "x\202&?y\10'@z'A{(A{(B|)B})C~*D~*D\177\202+E\200\1+F\200\206,F\200;-F\200" + "-G\201.G\202.H\202/H\203/I\2040J\2041J\2051K\2062K\2062L\2073M\2103M\211" + "4N\2114N\2125O\2136P\2136P\2147Q\2157Q\2168R\2168S\2179S\2209T\220:T\221" + ":U\222;U\222<V\223<W\224=W\225>Y\226?Z\227?[\231@\\\232A]\233B_\235C`\236" + "Da\237Eb\240Eb\241Fc\241Gc\242Hd\243He\243Ie\244If\245Jf\246Jg\246Kg\247" + "Lh\250Li\250Mi\251Mj\252Nj\252Nk\253Ol\254Ol\255Pm\255Pm\256\202Qn\257\231" + "Ro\260\23\36""6o\36""7o\37""8p\37""8q\40""9q\40""9r!:s!;s\";t#<u#<v$=v$>" + "w%>x%?x&?y&@z'@{'A{\205(B|\1)B|\202)C|))C}*D}*E~+E\177,E\177,E\200-F\200" + "-F\201.G\201.H\202/H\203/I\2030I\2040J\2051K\2052K\2062L\2073L\2103M\210" + "4N\2114N\2125O\2125O\2136P\2146Q\2157Q\2158R\2168S\2179T\221:U\222;V\223" + "<W\224=X\225=Z\227>[\230?\\\231@]\232A]\233A^\233B^\234B_\235\202C`\236\17" + "Da\237Da\240Eb\240Eb\241Fc\242Gd\243Hd\243Ie\244Ie\245Jf\245Jg\246Kg\247" + "Kh\247Lh\250Li\251\202Mj\252\5Nk\253Ok\254Ol\254Pl\255Pm\256\202Qn\257\232" + "Ro\260\5\36""7o\37""7p\37""8p\40""9q\40""9r\202!:s\6\";t\"<u#<u#=v$=w$>w" + "\204%>w\203%?w\5&@x&@y'Az(Az(B{\202)C|\2*D}*D~\202+E\177&,E\200,F\200-F\200" + ".G\201.G\202/H\202/I\2030I\2040J\2051J\2051K\2062L\2073M\2103N\2114O\212" + "5P\2136Q\2157R\2168S\2178T\2209U\221:V\223;W\223;X\224<X\225<Y\226=Y\226" + ">Z\227>[\230?[\230?\\\231@\\\232@]\233A^\233A^\234B_\235C_\235C`\236\202" + "Da\237\26Eb\240Eb\241Fc\242Gc\242Hd\243He\244Ie\244If\245Jg\246Kg\247Kh\247" + "Lh\250Li\251Mi\251Mj\252Nk\253Nk\254Ol\254Ol\255Pm\256Qm\256Qn\257\233Ro" + "\260\5$<r%=r%=s&>t'?t\205'?u\23(@u'@u(@u(Av)Aw)Bw*Bx+Cy+Dy,Dz,Ez-E{-F|.F" + "}.G}/G~/H\1770H\1770I\200\2021I\200\33""2J\2012J\2023K\2034L\2044M\2055N" + "\2066O\2077P\2108Q\2119S\2139T\214:U\215;U\216;V\216<V\217<W\220=X\220=X" + "\221>Y\222>Y\223?Z\223@Z\224@[\224A[\225A\\\226B\\\226B]\227\202C^\230\2" + "D_\231D_\232\202E`\233\12Fa\234Fb\234Gb\235Gc\236Hc\237Hd\237Ie\240Ie\241" + "Jf\241Kf\242\202Lg\243\7Mh\244Mh\245Ni\245Nj\246Oj\247Ok\247Pk\250\202Ql" + "\251\10Rm\252Rn\253Sn\253So\254To\255Tp\255Up\256Uq\257\233Vq\257\6\340\340" + "\340\330\325\325\322\312\312\335\335\335\316\316\316\305\305\305\202\325" + "\325\325\31\320\320\320\324\324\324\326\326\326\324\324\324\340\340\340\335" + "\335\335\324\324\324\325\325\325\326\326\326\324\324\324\331\331\331\337" + "\337\337\277\303\307\301\301\305\333\332\331\317\305\263\323\317\310\333" + "\332\327\306\304\305\311\312\313\327\327\330\266\303\320\326\326\326\301" + "\306\316\252\254\273\302\340\340\340\3\334\334\334\340\340\340\334\334\334" + "\202\325\325\325\6\331\331\331\323\323\323\277\277\277\320\320\320\317\317" + "\317\327\327\327\202\334\334\334*\325\325\325\334\334\334\331\331\331\333" + "\333\333\340\340\340\307\307\307\315\315\315\340\340\340\336\332\332\265" + "<6\262US\315\315\315\225\225\225\242\242\242\214\214\214\273\273\273\225" + "\225\225\251\251\251\231\231\231\263\263\263\345\345\345\261\261\261\247" + "\247\247\242\242\242\254\254\254\237\237\237\311\311\311\266\277\305u\232" + "\225\204\214\235\320\301\251\264\247\202\300\276\262\277\276\274\312\312" + "\315\321\321\321\270\270\277\210\235\252\277\301\312\227\265\322\252\242" + "\235\330\330\330\301\345\345\345\10\342\342\342\344\344\344\267\267\267\237" + "\237\237\301\301\301\226\226\226\257\257\257\254\254\254\202\270\270\270" + "\12\342\342\342\274\274\274\275\275\275\223\223\223\264\264\264\213\213\213" + "\204\204\204\343\343\343\234\234\234\265\265\265\202\345\345\345\6\334\313" + "\312\336\327\326\345\345\345\342\342\342\345\345\345\340\340\340\202\345" + "\345\345\1\343\343\343\203\345\345\345\3\342\342\342\345\345\345\343\343" + "\343\203\345\345\345\17\320\322\322\254\312\311\271\305\325\334\334\333\276" + "\306\312\331\332\331\327\327\327\311\311\311\340\340\340\310\310\317\251" + "\260\266\320\321\330\325\326\327\316\322\324\341\341\341\301\345\345\345" + "\3\341\341\341\344\344\344\330\330\330\202\345\345\345\1\342\342\342\202" + "\345\345\345\202\337\337\337\13\345\345\345\334\334\334\343\343\343\336\336" + "\336\345\345\345\340\340\340\341\341\341\345\345\345\310\310\310\307\307" + "\307\345\345\345", }; diff --git a/src/image_data/rotation_orientation_vert.h b/src/image_data/rotation_orientation_vert.h index 441aba7..52fa3f9 100644 --- a/src/image_data/rotation_orientation_vert.h +++ b/src/image_data/rotation_orientation_vert.h @@ -1,1259 +1,736 @@ -/* GIMP RGB C-Source image dump 1-byte-run-length-encoded (...) */
-
-#include "image.h"
-
-static const nv_image_t rotation_orientation_vert_image = {
- 90, 120, 3, 0,
- "\377\0\0\0\267\0\0\0\11\12\16\20w\233\265\235\316\360\236\316\360\240\317"
- "\360\241\317\360\242\317\360\243\320\357\244\320\357\202\246\321\357\5\247"
- "\321\357\250\321\357\250\322\357\251\322\357\252\322\357\202\253\322\357"
- "\203\253\323\356\203\254\323\356\203\253\323\356\202\253\322\357\5\252\322"
- "\357\251\322\357\250\322\357\250\321\357\247\321\357\202\246\321\3572\244"
- "\320\357\243\320\357\242\317\360\241\317\360\240\317\360\236\316\360\235"
- "\316\360\234\315\360\233\315\361\231\314\361\230\314\361\226\313\361\225"
- "\313\361\223\312\362\221\312\362\220\311\362\217\311\362\215\310\362\213"
- "\307\362\212\307\363\207\306\363\206\306\363\205\305\363\202\305\364\201"
- "\304\364\200\303\364~\303\364|\302\364{\302\365y\301\365v\300\365u\300\365"
- "s\277\366q\276\366o\276\366m\275\366l\274\367i\274\367g\273\367e\272\367"
- "d\272\370b\271\370_\270\370]\270\370\\\267\371Z\266\371X\266\371U\265\371"
- "@\210\275\5\14\21\204\0\0\0\16w\233\265\236\316\360\237\316\360\240\317\360"
- "\241\317\360\243\320\360\243\320\357\245\320\357\246\321\357\247\321\357"
- "\250\321\357\250\322\357\252\322\357\253\322\357\202\253\323\356\1\254\323"
- "\356\213\255\323\356\1\254\323\356\202\253\323\3567\253\322\357\252\322\357"
- "\250\322\357\250\321\357\247\321\357\246\321\357\245\320\357\243\320\357"
- "\243\320\360\241\317\360\240\317\360\237\316\360\236\316\360\234\315\360"
- "\233\315\361\231\314\361\230\314\361\226\313\361\224\313\361\223\312\362"
- "\221\312\362\220\311\362\216\310\362\214\310\362\212\307\363\211\307\363"
- "\207\306\363\205\306\363\204\305\363\202\304\364\200\304\364\177\303\364"
- "~\303\364{\302\365y\301\365x\301\365v\300\365t\277\366r\277\366p\276\366"
- "n\275\366l\275\366j\274\367h\273\367g\273\367d\272\367b\271\370`\270\370"
- "_\270\370]\267\370Z\267\371X\266\371V\265\371U\265\371>\210\275\204\0\0\0"
- "\2\236\316\360\237\316\360\202\241\317\360\2\243\320\360\244\320\357\202"
- "\246\321\357\6\250\321\357\250\322\357\252\322\357\253\322\357\253\323\356"
- "\254\323\356\202\255\323\356\202\256\324\356\202\257\324\356\205\260\324"
- "\356\202\257\324\356\202\256\324\356\202\255\323\356\6\254\323\356\253\323"
- "\356\253\322\357\252\322\357\250\322\357\250\321\357\202\246\321\357\2\244"
- "\320\357\243\320\360\202\241\317\360+\237\316\360\236\316\360\234\315\360"
- "\233\315\361\231\314\361\227\314\361\226\313\361\224\313\361\223\312\362"
- "\221\311\362\217\311\362\216\310\362\214\310\362\212\307\363\210\307\363"
- "\207\306\363\205\305\363\203\305\363\201\304\364\200\304\364~\303\364|\302"
- "\364{\302\365y\301\365v\300\365u\300\365s\277\366q\276\366o\276\366m\275"
- "\366k\274\367i\273\367g\273\367e\272\367c\271\370a\271\370_\270\370]\270"
- "\370[\267\371Y\266\371W\265\371U\265\371S\264\372\204\0\0\0\16\237\316\360"
- "\241\317\360\242\317\360\243\320\357\244\320\357\246\321\357\247\321\357"
- "\250\322\357\251\322\357\253\322\357\253\323\356\254\323\356\255\323\356"
- "\256\324\356\202\257\324\356\203\260\324\356\207\261\325\356\203\260\324"
- "\356\202\257\324\3567\256\324\356\255\323\356\254\323\356\253\323\356\253"
- "\322\357\251\322\357\250\322\357\247\321\357\246\321\357\244\320\357\243"
- "\320\357\242\317\360\241\317\360\237\316\360\236\316\360\234\315\360\232"
- "\315\361\231\314\361\227\314\361\226\313\361\224\312\361\222\312\362\221"
- "\311\362\217\311\362\215\310\362\213\307\362\212\307\363\207\306\363\206"
- "\306\363\204\305\363\202\305\364\200\304\364\177\303\364~\303\364{\302\365"
- "y\301\365x\301\365v\300\365t\277\366r\277\366p\276\366n\275\366l\274\367"
- "j\274\367h\273\367f\272\367d\272\370b\271\370`\270\370^\270\370\\\267\371"
- "Z\266\371X\266\371V\265\371T\264\372\204\0\0\0\15\241\317\360\242\317\360"
- "\243\320\357\245\320\357\246\321\357\247\321\357\250\322\357\252\322\357"
- "\253\322\357\254\323\356\255\323\356\256\324\356\257\324\356\202\260\324"
- "\356\1\261\325\356\202\262\325\356\1\263\325\356\207\263\325\355\1\263\325"
- "\356\202\262\325\356\1\261\325\356\202\260\324\3566\257\324\356\256\324\356"
- "\255\323\356\254\323\356\253\322\357\252\322\357\250\322\357\247\321\357"
- "\246\321\357\245\320\357\243\320\357\242\317\360\241\317\360\236\316\360"
- "\235\316\360\234\315\360\232\315\361\231\314\361\226\313\361\225\313\361"
- "\224\312\361\221\312\362\220\311\362\216\310\362\214\310\362\212\307\363"
- "\211\307\363\207\306\363\205\305\363\203\305\363\201\304\364\200\304\364"
- "~\303\364|\302\364{\302\365y\301\365v\300\365t\277\365s\277\366q\276\366"
- "o\275\366l\275\366k\274\367i\273\367g\273\367d\272\367c\271\370a\271\370"
- "_\270\370]\267\370Z\267\371X\266\371V\265\371U\265\371\204\0\0\0\10\241\317"
- "\360\243\320\357\245\320\357\246\321\357\250\321\357\250\322\357\252\322"
- "\357\253\323\356\202\255\323\356\1\257\324\356\202\260\324\356\1\261\325"
- "\356\202\263\325\356\2\263\325\355\264\326\355\211\265\326\355\2\264\326"
- "\355\263\325\355\202\263\325\356\1\261\325\356\202\260\324\356\1\257\324"
- "\356\202\255\323\3561\253\323\356\252\322\357\250\322\357\250\321\357\246"
- "\321\357\245\320\357\243\320\357\241\317\360\240\317\360\236\316\360\235"
- "\316\360\234\315\360\231\314\361\230\314\361\226\313\361\224\313\361\223"
- "\312\362\221\311\362\217\311\362\215\310\362\214\310\362\212\307\363\207"
- "\306\363\206\306\363\204\305\363\202\305\364\200\304\364\177\303\364~\303"
- "\364{\302\365y\301\365w\300\365v\300\365t\277\366q\276\366o\276\366n\275"
- "\366l\274\367i\274\367g\273\367e\272\367d\272\370b\271\370_\270\370]\270"
- "\370[\267\371Y\266\371W\265\371U\265\371\204\0\0\0\17\243\320\360\244\320"
- "\357\246\321\357\250\321\357\251\322\357\252\322\357\253\323\356\255\323"
- "\356\256\324\356\257\324\356\260\324\356\261\325\356\263\325\356\263\325"
- "\355\264\326\355\202\265\326\355\202\266\326\355\207\267\327\355\202\266"
- "\326\355\202\265\326\3558\264\326\355\263\325\355\263\325\356\261\325\356"
- "\260\324\356\257\324\356\256\324\356\255\323\356\253\323\356\253\322\357"
- "\251\322\357\250\321\357\246\321\357\244\320\357\243\320\360\241\317\360"
- "\240\317\360\236\316\360\234\315\360\233\315\361\231\314\361\227\314\361"
- "\226\313\361\224\312\361\222\312\362\220\311\362\217\311\362\214\310\362"
- "\212\307\363\211\307\363\207\306\363\205\306\363\203\305\363\201\304\364"
- "\200\303\364~\303\364|\302\364z\301\365y\301\365v\300\365t\277\365r\277\366"
- "p\276\366o\275\366l\275\366j\274\367h\273\367f\272\367d\272\370b\271\370"
- "`\270\370^\270\370\\\267\371Z\266\371X\266\371U\265\371\204\0\0\0\15\244"
- "\320\357\246\321\357\247\321\357\251\322\357\253\322\357\254\323\356\255"
- "\323\356\256\324\356\260\324\356\261\325\356\262\325\356\263\325\355\264"
- "\326\355\202\265\326\355\2\266\326\355\267\327\355\203\270\327\355\205\271"
- "\327\355\203\270\327\355\2\267\327\355\266\326\355\202\265\326\3556\264\326"
- "\355\263\325\355\262\325\356\261\325\356\260\324\356\256\324\356\255\323"
- "\356\254\323\356\253\322\357\251\322\357\247\321\357\246\321\357\244\320"
- "\357\243\320\360\241\317\360\237\316\360\236\316\360\234\315\360\232\315"
- "\361\231\314\361\226\313\361\225\313\361\223\312\362\221\312\362\217\311"
- "\362\215\310\362\214\310\362\212\307\363\207\306\363\206\306\363\204\305"
- "\363\202\304\364\200\304\364\177\303\364}\302\364{\302\365y\301\365w\300"
- "\365u\300\365s\277\366q\276\366o\276\366m\275\366k\274\367i\273\367g\273"
- "\367d\272\367c\271\370a\271\370_\270\370]\267\370Z\267\371X\266\371V\265"
- "\371\204\0\0\0\13\246\321\357\247\321\357\250\322\357\252\322\357\254\323"
- "\356\255\323\356\256\324\356\260\324\356\261\325\356\263\325\356\263\325"
- "\355\202\265\326\355\1\267\327\355\202\270\327\355\1\271\327\355\202\272"
- "\327\355\203\272\330\355\1\273\330\354\203\272\330\355\202\272\327\355\1"
- "\271\327\355\202\270\327\355\1\267\327\355\202\265\326\3554\263\325\355\263"
- "\325\356\261\325\356\260\324\356\256\324\356\255\323\356\254\323\356\252"
- "\322\357\250\322\357\247\321\357\246\321\357\244\320\357\242\317\360\241"
- "\317\360\237\316\360\235\316\360\234\315\360\231\314\361\230\314\361\226"
- "\313\361\224\313\361\222\312\362\220\311\362\217\311\362\214\310\362\212"
- "\307\363\211\307\363\207\306\363\205\305\363\203\305\363\201\304\364\200"
- "\303\364~\303\364{\302\365z\301\365x\301\365v\300\365t\277\366q\276\366p"
- "\276\366n\275\366l\274\367i\274\367g\273\367e\272\367c\271\370b\271\370_"
- "\270\370]\270\370[\267\371Y\266\371W\265\371\204\0\0\0\14\247\321\357\250"
- "\322\357\252\322\357\253\323\356\255\323\356\257\324\356\260\324\356\261"
- "\325\356\263\325\356\264\326\355\265\326\355\266\326\355\202\270\327\355"
- "\4\271\327\355\272\327\355\272\330\355\273\330\354\202\274\330\354\205\275"
- "\330\354\202\274\330\354\4\273\330\354\272\330\355\272\327\355\271\327\355"
- "\202\270\327\3555\266\326\355\265\326\355\264\326\355\263\325\356\261\325"
- "\356\260\324\356\257\324\356\255\323\356\253\323\356\252\322\357\250\322"
- "\357\247\321\357\245\320\357\243\320\357\242\317\360\240\317\360\236\316"
- "\360\234\315\360\233\315\361\231\314\361\227\314\361\225\313\361\223\312"
- "\362\221\312\362\217\311\362\215\310\362\214\310\362\212\307\363\207\306"
- "\363\205\306\363\204\305\363\202\304\364\200\304\364~\303\364}\302\364{\302"
- "\365y\301\365v\300\365t\277\365r\277\366q\276\366o\275\366l\275\366j\274"
- "\367h\273\367f\272\367d\272\370b\271\370_\270\370^\270\370\\\267\371Z\266"
- "\371X\266\371\204\0\0\0\21\250\321\357\252\322\357\253\323\356\255\323\356"
- "\256\324\356\260\324\356\262\325\356\263\325\356\264\326\355\265\326\355"
- "\267\327\355\270\327\355\271\327\355\272\327\355\273\330\354\274\330\354"
- "\275\330\354\202\275\331\354\202\276\331\354\203\277\331\354\202\276\331"
- "\354\202\275\331\354:\275\330\354\274\330\354\273\330\354\272\327\355\271"
- "\327\355\270\327\355\267\327\355\265\326\355\264\326\355\263\325\356\262"
- "\325\356\260\324\356\256\324\356\255\323\356\253\323\356\252\322\357\250"
- "\321\357\246\321\357\245\320\357\243\320\360\241\317\360\237\316\360\236"
- "\316\360\234\315\360\232\315\361\230\314\361\226\313\361\224\313\361\222"
- "\312\362\220\311\362\217\311\362\214\310\362\212\307\363\210\307\363\207"
- "\306\363\205\305\363\202\305\364\200\304\364\177\303\364~\303\364{\302\365"
- "y\301\365w\300\365u\300\365s\277\366q\276\366o\276\366m\275\366k\274\367"
- "i\273\367g\273\367d\272\367b\271\370`\270\370^\270\370\\\267\371Z\267\371"
- "X\266\371\204\0\0\0\21\251\322\357\253\322\357\255\323\356\256\324\356\260"
- "\324\356\261\325\356\263\325\356\264\326\355\265\326\355\267\327\355\270"
- "\327\355\272\327\355\272\330\355\274\330\354\275\330\354\275\331\354\276"
- "\331\354\202\277\331\354\207\300\332\354\202\277\331\354:\276\331\354\275"
- "\331\354\275\330\354\274\330\354\272\330\355\272\327\355\270\327\355\267"
- "\327\355\265\326\355\264\326\355\263\325\356\261\325\356\260\324\356\256"
- "\324\356\255\323\356\253\322\357\251\322\357\250\321\357\246\321\357\244"
- "\320\357\242\317\360\241\317\360\236\316\360\234\315\360\233\315\361\231"
- "\314\361\227\314\361\225\313\361\223\312\362\221\311\362\217\311\362\215"
- "\310\362\213\307\362\211\307\363\207\306\363\205\306\363\203\305\363\201"
- "\304\364\200\303\364~\303\364|\302\364z\301\365x\301\365v\300\365t\277\366"
- "q\276\366o\276\366n\275\366l\274\367i\274\367g\273\367e\272\367c\271\370"
- "a\271\370_\270\370]\267\370Z\267\371X\266\371\204\0\0\0\22\253\322\357\254"
- "\323\356\255\323\356\260\324\356\261\325\356\263\325\356\264\326\355\265"
- "\326\355\267\327\355\270\327\355\272\327\355\273\330\354\275\330\354\275"
- "\331\354\276\331\354\277\331\354\300\332\354\301\332\354\211\302\332\354"
- ";\301\332\354\300\332\354\277\331\354\276\331\354\275\331\354\275\330\354"
- "\273\330\354\272\327\355\270\327\355\267\327\355\265\326\355\264\326\355"
- "\263\325\356\261\325\356\260\324\356\255\323\356\254\323\356\253\322\357"
- "\250\322\357\247\321\357\245\320\357\243\320\357\241\317\360\237\316\360"
- "\236\316\360\234\315\360\231\314\361\230\314\361\226\313\361\224\312\361"
- "\222\312\362\220\311\362\216\310\362\214\310\362\212\307\363\210\307\363"
- "\206\306\363\204\305\363\202\304\364\200\304\364~\303\364}\302\364{\302\365"
- "y\301\365v\300\365t\277\365r\277\366p\276\366n\275\366l\274\367i\274\367"
- "h\273\367f\272\367d\272\370b\271\370_\270\370]\270\370[\267\371Y\266\371"
- "\204\0\0\0\20\253\323\356\255\323\356\257\324\356\260\324\356\263\325\356"
- "\264\326\355\265\326\355\267\327\355\270\327\355\272\327\355\273\330\354"
- "\275\330\354\276\331\354\277\331\354\300\332\354\301\332\354\202\302\332"
- "\354\1\303\333\353\207\304\333\353\1\303\333\353\202\302\332\3549\301\332"
- "\354\300\332\354\277\331\354\276\331\354\275\330\354\273\330\354\272\327"
- "\355\270\327\355\267\327\355\265\326\355\264\326\355\263\325\356\260\324"
- "\356\257\324\356\255\323\356\253\323\356\252\322\357\250\321\357\246\321"
- "\357\244\320\357\242\317\360\241\317\360\236\316\360\234\315\360\233\315"
- "\361\231\314\361\226\313\361\224\313\361\223\312\362\221\311\362\217\311"
- "\362\214\310\362\212\307\363\211\307\363\207\306\363\205\305\363\202\305"
- "\364\200\304\364\177\303\364}\302\364{\302\365y\301\365w\300\365u\300\365"
- "s\277\366q\276\366o\275\366l\275\366j\274\367h\273\367f\272\367d\272\370"
- "b\271\370`\270\370^\270\370\\\267\371Z\266\371\204\0\0\0\16\255\323\356\256"
- "\324\356\260\324\356\262\325\356\263\325\355\265\326\355\267\327\355\270"
- "\327\355\272\327\355\273\330\354\275\330\354\276\331\354\277\331\354\301"
- "\332\354\202\302\332\354\202\304\333\353\202\305\333\353\205\306\334\353"
- "\202\305\333\353\202\304\333\353\202\302\332\3547\301\332\354\277\331\354"
- "\276\331\354\275\330\354\273\330\354\272\327\355\270\327\355\267\327\355"
- "\265\326\355\263\325\355\262\325\356\260\324\356\256\324\356\255\323\356"
- "\253\322\357\251\322\357\247\321\357\245\320\357\243\320\357\241\317\360"
- "\237\316\360\236\316\360\234\315\360\231\314\361\227\314\361\226\313\361"
- "\224\312\361\221\312\362\217\311\362\215\310\362\213\307\362\212\307\363"
- "\207\306\363\205\306\363\203\305\363\201\304\364\200\303\364~\303\364{\302"
- "\365y\301\365x\301\365v\300\365t\277\366q\276\366o\276\366m\275\366k\274"
- "\367i\273\367g\273\367d\272\367b\271\370`\270\370^\270\370\\\267\371Z\266"
- "\371\204\0\0\0\22\255\323\356\260\324\356\261\325\356\263\325\355\265\326"
- "\355\267\327\355\270\327\355\272\327\355\273\330\354\275\330\354\276\331"
- "\354\277\331\354\301\332\354\302\332\354\303\333\353\304\333\353\305\333"
- "\353\306\334\353\203\307\334\353\203\310\334\353\203\307\334\353;\306\334"
- "\353\305\333\353\304\333\353\303\333\353\302\332\354\301\332\354\277\331"
- "\354\276\331\354\275\330\354\273\330\354\272\327\355\270\327\355\267\327"
- "\355\265\326\355\263\325\355\261\325\356\260\324\356\255\323\356\254\323"
- "\356\252\322\357\250\321\357\246\321\357\244\320\357\242\317\360\241\317"
- "\360\236\316\360\234\315\360\232\315\361\230\314\361\226\313\361\224\313"
- "\361\222\312\362\220\311\362\216\310\362\214\310\362\212\307\363\210\307"
- "\363\206\306\363\204\305\363\202\304\364\200\304\364~\303\364|\302\364z\301"
- "\365x\301\365v\300\365t\277\366q\276\366p\276\366n\275\366l\274\367i\274"
- "\367g\273\367e\272\367c\271\370a\271\370_\270\370]\267\370Z\267\371\204\0"
- "\0\0\22\257\324\356\260\324\356\263\325\356\264\326\355\266\326\355\270\327"
- "\355\272\327\355\273\330\354\275\330\354\276\331\354\277\331\354\301\332"
- "\354\302\332\354\304\333\353\305\333\353\306\334\353\307\334\353\310\334"
- "\353\202\311\335\353\205\312\335\353\202\311\335\353;\310\334\353\307\334"
- "\353\306\334\353\305\333\353\304\333\353\302\332\354\301\332\354\277\331"
- "\354\276\331\354\275\330\354\273\330\354\272\327\355\270\327\355\266\326"
- "\355\264\326\355\263\325\356\260\324\356\257\324\356\255\323\356\253\322"
- "\357\251\322\357\247\321\357\245\320\357\243\320\360\241\317\360\237\316"
- "\360\235\316\360\233\315\361\231\314\361\227\314\361\225\313\361\223\312"
- "\362\221\311\362\217\311\362\214\310\362\212\307\363\210\307\363\207\306"
- "\363\205\305\363\202\305\364\200\304\364\177\303\364}\302\364{\302\365y\301"
- "\365v\300\365t\277\365r\277\366p\276\366n\275\366l\274\367i\274\367g\273"
- "\367e\272\367c\271\370a\271\370_\270\370]\267\370Z\267\371\204\0\0\0\16\260"
- "\324\356\262\325\356\263\325\355\265\326\355\267\327\355\271\327\355\272"
- "\330\355\275\330\354\276\331\354\277\331\354\301\332\354\302\332\354\304"
- "\333\353\305\333\353\202\307\334\353\1\311\335\353\202\312\335\353\1\313"
- "\335\353\205\314\336\352\1\313\335\353\202\312\335\353\1\311\335\353\202"
- "\307\334\3537\305\333\353\304\333\353\302\332\354\301\332\354\277\331\354"
- "\276\331\354\275\330\354\272\330\355\271\327\355\267\327\355\265\326\355"
- "\263\325\355\262\325\356\260\324\356\255\323\356\253\323\356\252\322\357"
- "\250\321\357\246\321\357\243\320\357\242\317\360\240\317\360\236\316\360"
- "\234\315\360\231\314\361\227\314\361\226\313\361\224\312\361\221\312\362"
- "\217\311\362\215\310\362\213\307\362\211\307\363\207\306\363\205\305\363"
- "\202\305\364\200\304\364\200\303\364~\303\364{\302\365y\301\365w\300\365"
- "u\300\365s\277\366q\276\366o\275\366l\275\366j\274\367h\273\367f\272\367"
- "d\272\370b\271\370_\270\370]\270\370[\267\371\204\0\0\0\17\260\324\356\263"
- "\325\356\264\326\355\266\326\355\270\327\355\272\327\355\274\330\354\275"
- "\331\354\277\331\354\301\332\354\302\332\354\304\333\353\305\333\353\307"
- "\334\353\310\334\353\202\312\335\353\202\314\336\352\202\315\336\352\203"
- "\316\336\352\202\315\336\352\202\314\336\352\202\312\335\3538\310\334\353"
- "\307\334\353\305\333\353\304\333\353\302\332\354\301\332\354\277\331\354"
- "\275\331\354\274\330\354\272\327\355\270\327\355\266\326\355\264\326\355"
- "\263\325\356\260\324\356\256\324\356\255\323\356\253\322\357\250\322\357"
- "\246\321\357\245\320\357\243\320\360\241\317\360\236\316\360\234\315\360"
- "\232\315\361\230\314\361\226\313\361\224\313\361\222\312\362\220\311\362"
- "\216\310\362\214\310\362\212\307\363\207\306\363\205\306\363\203\305\363"
- "\201\304\364\200\303\364~\303\364{\302\365y\301\365w\300\365u\300\365s\277"
- "\366q\276\366o\275\366l\275\366j\274\367h\273\367f\272\367d\272\370b\271"
- "\370_\270\370]\270\370[\267\371\204\0\0\0\23\261\325\356\263\325\355\265"
- "\326\355\267\327\355\271\327\355\273\330\354\275\330\354\277\331\354\300"
- "\332\354\302\332\354\304\333\353\305\333\353\307\334\353\310\334\353\312"
- "\335\353\313\335\353\314\336\352\315\336\352\316\336\352\207\317\337\352"
- "<\316\336\352\315\336\352\314\336\352\313\335\353\312\335\353\310\334\353"
- "\307\334\353\305\333\353\304\333\353\302\332\354\300\332\354\277\331\354"
- "\275\330\354\273\330\354\271\327\355\267\327\355\265\326\355\263\325\355"
- "\261\325\356\260\324\356\255\323\356\253\323\356\251\322\357\247\321\357"
- "\245\320\357\243\320\357\241\317\360\237\316\360\235\316\360\233\315\361"
- "\231\314\361\226\313\361\224\313\361\222\312\362\220\311\362\217\311\362"
- "\214\310\362\212\307\363\210\307\363\206\306\363\204\305\363\202\304\364"
- "\200\304\364~\303\364|\302\364z\301\365x\301\365v\300\365t\277\366q\276\366"
- "o\276\366m\275\366k\274\367i\273\367g\273\367d\272\367b\271\370`\270\370"
- "^\270\370\\\267\371\204\0\0\0\23\262\325\356\264\326\355\266\326\355\270"
- "\327\355\272\327\355\274\330\354\276\331\354\277\331\354\302\332\354\303"
- "\333\353\305\333\353\307\334\353\310\334\353\312\335\353\313\335\353\314"
- "\336\352\316\336\352\317\337\352\320\337\352\202\321\337\352\203\321\340"
- "\352\202\321\337\352<\320\337\352\317\337\352\316\336\352\314\336\352\313"
- "\335\353\312\335\353\310\334\353\307\334\353\305\333\353\303\333\353\302"
- "\332\354\277\331\354\276\331\354\274\330\354\272\327\355\270\327\355\266"
- "\326\355\264\326\355\262\325\356\260\324\356\256\324\356\254\323\356\252"
- "\322\357\250\321\357\246\321\357\243\320\357\242\317\360\240\317\360\236"
- "\316\360\234\315\360\231\314\361\227\314\361\225\313\361\223\312\362\221"
- "\311\362\217\311\362\214\310\362\212\307\363\210\307\363\206\306\363\204"
- "\305\363\202\304\364\200\304\364~\303\364|\302\364z\301\365x\301\365v\300"
- "\365t\277\366q\276\366o\276\366m\275\366k\274\367i\273\367g\273\367d\272"
- "\367b\271\370`\270\370^\270\370\\\267\371\204\0\0\0\24\263\325\356\265\326"
- "\355\267\327\355\271\327\355\273\330\354\275\330\354\277\331\354\301\332"
- "\354\302\332\354\304\333\353\306\334\353\310\334\353\312\335\353\313\335"
- "\353\314\336\352\316\336\352\317\337\352\321\337\352\321\340\352\322\340"
- "\352\202\323\340\352\1\324\340\351\202\323\340\352=\322\340\352\321\340\352"
- "\321\337\352\317\337\352\316\336\352\314\336\352\313\335\353\312\335\353"
- "\310\334\353\306\334\353\304\333\353\302\332\354\301\332\354\277\331\354"
- "\275\330\354\273\330\354\271\327\355\267\327\355\265\326\355\263\325\356"
- "\261\325\356\257\324\356\255\323\356\253\322\357\250\322\357\246\321\357"
- "\244\320\357\242\317\360\240\317\360\236\316\360\234\315\360\232\315\361"
- "\230\314\361\226\313\361\224\312\361\221\312\362\217\311\362\215\310\362"
- "\213\307\362\211\307\363\207\306\363\205\305\363\202\305\364\200\304\364"
- "\177\303\364}\302\364{\302\365y\301\365v\300\365t\277\365r\277\366p\276\366"
- "n\275\366l\274\367i\274\367g\273\367e\272\367c\271\370a\271\370_\270\370"
- "]\267\370\204\0\0\0\23\263\325\355\265\326\355\270\327\355\272\327\355\274"
- "\330\354\275\331\354\277\331\354\302\332\354\304\333\353\305\333\353\307"
- "\334\353\311\335\353\313\335\353\314\336\352\316\336\352\317\337\352\321"
- "\337\352\322\340\352\323\340\352\202\324\341\351\203\325\341\351\202\324"
- "\341\351<\323\340\352\322\340\352\321\337\352\317\337\352\316\336\352\314"
- "\336\352\313\335\353\311\335\353\307\334\353\305\333\353\304\333\353\302"
- "\332\354\277\331\354\275\331\354\274\330\354\272\327\355\270\327\355\265"
- "\326\355\263\325\355\262\325\356\260\324\356\255\323\356\253\323\356\251"
- "\322\357\247\321\357\245\320\357\243\320\360\241\317\360\236\316\360\234"
- "\315\360\232\315\361\230\314\361\226\313\361\224\312\361\221\312\362\217"
- "\311\362\215\310\362\213\307\362\211\307\363\207\306\363\205\305\363\202"
- "\305\364\200\304\364\177\303\364}\302\364{\302\365y\301\365v\300\365t\277"
- "\365r\277\366p\276\366n\275\366l\274\367i\274\367g\273\367e\272\367c\271"
- "\370a\271\370_\270\370]\267\370\204\0\0\0\23\264\326\355\266\326\355\270"
- "\327\355\272\330\355\275\330\354\277\331\354\300\332\354\302\332\354\304"
- "\333\353\307\334\353\310\334\353\312\335\353\314\336\352\316\336\352\317"
- "\337\352\321\337\352\322\340\352\324\340\351\325\341\351\202\326\341\351"
- "\203\327\342\351\202\326\341\351<\325\341\351\324\340\351\322\340\352\321"
- "\337\352\317\337\352\316\336\352\314\336\352\312\335\353\310\334\353\307"
- "\334\353\304\333\353\302\332\354\300\332\354\277\331\354\275\330\354\272"
- "\330\355\270\327\355\266\326\355\264\326\355\262\325\356\260\324\356\255"
- "\323\356\254\323\356\252\322\357\250\321\357\246\321\357\243\320\357\241"
- "\317\360\237\316\360\235\316\360\233\315\361\231\314\361\226\313\361\224"
- "\313\361\222\312\362\220\311\362\216\310\362\214\310\362\212\307\363\207"
- "\306\363\205\306\363\203\305\363\201\304\364\200\303\364~\303\364{\302\365"
- "y\301\365w\300\365u\300\365s\277\366q\276\366o\275\366l\275\366j\274\367"
- "h\273\367e\272\367c\271\370a\271\370_\270\370]\267\370\204\0\0\0\25\265\326"
- "\355\267\327\355\271\327\355\273\330\354\275\331\354\277\331\354\301\332"
- "\354\303\333\353\305\333\353\307\334\353\311\335\353\313\335\353\315\336"
- "\352\317\337\352\321\337\352\322\340\352\324\340\351\325\341\351\326\341"
- "\351\327\342\351\330\342\351\203\331\342\351>\330\342\351\327\342\351\326"
- "\341\351\325\341\351\324\340\351\322\340\352\321\337\352\317\337\352\315"
- "\336\352\313\335\353\311\335\353\307\334\353\305\333\353\303\333\353\301"
- "\332\354\277\331\354\275\331\354\273\330\354\271\327\355\267\327\355\265"
- "\326\355\263\325\356\260\324\356\256\324\356\254\323\356\252\322\357\250"
- "\321\357\246\321\357\243\320\357\241\317\360\237\316\360\235\316\360\233"
- "\315\361\231\314\361\226\313\361\224\313\361\222\312\362\220\311\362\216"
- "\310\362\214\310\362\212\307\363\207\306\363\205\306\363\203\305\363\201"
- "\304\364\200\303\364~\303\364{\302\365y\301\365w\300\365u\300\365s\277\366"
- "q\276\366o\275\366l\275\366j\274\367h\273\367f\272\367d\272\370b\271\370"
- "_\270\370]\270\370\204\0\0\0\25\265\326\355\270\327\355\272\327\355\274\330"
- "\354\275\331\354\277\331\354\302\332\354\304\333\353\306\334\353\310\334"
- "\353\312\335\353\314\336\352\316\336\352\320\337\352\321\340\352\324\340"
- "\351\325\341\351\326\341\351\330\342\351\331\342\351\332\343\351\203\333"
- "\343\351>\332\343\351\331\342\351\330\342\351\326\341\351\325\341\351\324"
- "\340\351\321\340\352\320\337\352\316\336\352\314\336\352\312\335\353\310"
- "\334\353\306\334\353\304\333\353\302\332\354\277\331\354\275\331\354\274"
- "\330\354\272\327\355\270\327\355\265\326\355\263\325\355\261\325\356\257"
- "\324\356\255\323\356\253\322\357\250\322\357\246\321\357\244\320\357\242"
- "\317\360\240\317\360\236\316\360\234\315\360\231\314\361\227\314\361\225"
- "\313\361\223\312\362\221\311\362\217\311\362\214\310\362\212\307\363\210"
- "\307\363\206\306\363\204\305\363\202\304\364\200\303\364~\303\364{\302\365"
- "y\301\365w\300\365u\300\365s\277\366q\276\366o\275\366l\275\366j\274\367"
- "h\273\367f\272\367d\272\370b\271\370_\270\370]\270\370\204\0\0\0V\265\326"
- "\355\270\327\355\272\327\355\274\330\354\276\331\354\300\332\354\302\332"
- "\354\304\333\353\307\334\353\311\335\353\313\335\353\314\336\352\317\337"
- "\352\321\337\352\323\340\352\324\341\351\326\341\351\330\342\351\331\342"
- "\351\333\343\351\333\343\350\334\343\350\335\344\350\334\343\350\333\343"
- "\350\333\343\351\331\342\351\330\342\351\326\341\351\324\341\351\323\340"
- "\352\321\337\352\317\337\352\314\336\352\313\335\353\311\335\353\307\334"
- "\353\304\333\353\302\332\354\300\332\354\276\331\354\274\330\354\272\327"
- "\355\270\327\355\265\326\355\263\325\355\261\325\356\257\324\356\255\323"
- "\356\253\322\357\250\322\357\246\321\357\244\320\357\242\317\360\240\317"
- "\360\236\316\360\234\315\360\231\314\361\227\314\361\225\313\361\223\312"
- "\362\221\311\362\217\311\362\214\310\362\212\307\363\210\307\363\206\306"
- "\363\204\305\363\202\304\364\200\304\364~\303\364|\302\364z\301\365x\301"
- "\365v\300\365t\277\366q\276\366o\275\366l\275\366j\274\367h\273\367f\272"
- "\367d\272\370b\271\370_\270\370]\270\370\204\0\0\0\24\266\326\355\270\327"
- "\355\272\330\355\275\330\354\277\331\354\301\332\354\303\333\353\305\333"
- "\353\307\334\353\312\335\353\314\336\352\315\336\352\317\337\352\321\340"
- "\352\324\340\351\326\341\351\327\342\351\331\342\351\333\343\351\334\343"
- "\350\205\336\344\350=\334\343\350\333\343\351\331\342\351\327\342\351\326"
- "\341\351\324\340\351\321\340\352\317\337\352\315\336\352\314\336\352\312"
- "\335\353\307\334\353\305\333\353\303\333\353\301\332\354\277\331\354\275"
- "\330\354\272\330\355\270\327\355\266\326\355\264\326\355\262\325\356\260"
- "\324\356\255\323\356\253\323\356\251\322\357\247\321\357\245\320\357\243"
- "\320\360\241\317\360\236\316\360\234\315\360\231\314\361\227\314\361\225"
- "\313\361\223\312\362\221\311\362\217\311\362\214\310\362\212\307\363\210"
- "\307\363\206\306\363\204\305\363\202\304\364\200\304\364~\303\364|\302\364"
- "z\301\365x\301\365v\300\365t\277\366q\276\366o\276\366m\275\366k\274\367"
- "i\273\367f\272\367d\272\370b\271\370_\270\370]\270\370\204\0\0\0V\266\326"
- "\355\270\327\355\272\330\355\275\330\354\277\331\354\301\332\354\303\333"
- "\353\305\333\353\307\334\353\312\335\353\314\336\352\316\336\352\320\337"
- "\352\322\340\352\324\341\351\326\341\351\331\342\351\332\343\351\334\343"
- "\350\336\344\350\337\344\350\340\345\350\341\345\350\340\345\350\337\344"
- "\350\336\344\350\334\343\350\332\343\351\331\342\351\326\341\351\324\341"
- "\351\322\340\352\320\337\352\316\336\352\314\336\352\312\335\353\307\334"
- "\353\305\333\353\303\333\353\301\332\354\277\331\354\275\330\354\272\330"
- "\355\270\327\355\266\326\355\264\326\355\262\325\356\260\324\356\255\323"
- "\356\253\323\356\251\322\357\247\321\357\245\320\357\243\320\360\241\317"
- "\360\236\316\360\234\315\360\232\315\361\230\314\361\226\313\361\224\312"
- "\361\221\312\362\217\311\362\214\310\362\212\307\363\210\307\363\206\306"
- "\363\204\305\363\202\304\364\200\304\364~\303\364|\302\364z\301\365x\301"
- "\365v\300\365t\277\366q\276\366o\276\366m\275\366k\274\367i\273\367g\273"
- "\367d\272\367b\271\370_\270\370]\270\370\204\0\0\0\25\267\327\355\271\327"
- "\355\273\330\354\275\331\354\277\331\354\302\332\354\304\333\353\306\334"
- "\353\310\334\353\312\335\353\314\336\352\317\337\352\321\337\352\323\340"
- "\352\325\341\351\327\342\351\331\342\351\333\343\351\335\344\350\337\344"
- "\350\341\345\350\203\342\345\350>\341\345\350\337\344\350\335\344\350\333"
- "\343\351\331\342\351\327\342\351\325\341\351\323\340\352\321\337\352\317"
- "\337\352\314\336\352\312\335\353\310\334\353\306\334\353\304\333\353\302"
- "\332\354\277\331\354\275\331\354\273\330\354\271\327\355\267\327\355\264"
- "\326\355\262\325\356\260\324\356\255\323\356\253\323\356\251\322\357\247"
- "\321\357\245\320\357\243\320\360\241\317\360\236\316\360\234\315\360\232"
- "\315\361\230\314\361\226\313\361\224\312\361\221\312\362\217\311\362\215"
- "\310\362\213\307\362\211\307\363\206\306\363\204\305\363\202\304\364\200"
- "\304\364~\303\364|\302\364z\301\365x\301\365v\300\365t\277\366q\276\366o"
- "\276\366m\275\366k\274\367i\273\367g\273\367d\272\367b\271\370`\270\370^"
- "\270\370\204\0\0\0V\267\327\355\271\327\355\273\330\354\275\331\354\277\331"
- "\354\302\332\354\304\333\353\306\334\353\310\334\353\312\335\353\314\336"
- "\352\317\337\352\321\337\352\323\340\352\325\341\351\327\342\351\331\342"
- "\351\333\343\350\336\344\350\340\345\350\342\345\350\343\346\347\344\346"
- "\347\343\346\347\342\345\350\340\345\350\336\344\350\333\343\350\331\342"
- "\351\327\342\351\325\341\351\323\340\352\321\337\352\317\337\352\314\336"
- "\352\312\335\353\310\334\353\306\334\353\304\333\353\302\332\354\277\331"
- "\354\275\331\354\273\330\354\271\327\355\267\327\355\265\326\355\263\325"
- "\356\260\324\356\256\324\356\253\323\356\251\322\357\247\321\357\245\320"
- "\357\243\320\360\241\317\360\236\316\360\234\315\360\232\315\361\230\314"
- "\361\226\313\361\224\312\361\221\312\362\217\311\362\215\310\362\213\307"
- "\362\211\307\363\207\306\363\205\305\363\202\304\364\200\304\364~\303\364"
- "|\302\364z\301\365x\301\365v\300\365t\277\366q\276\366o\276\366m\275\366"
- "k\274\367i\273\367g\273\367d\272\367b\271\370`\270\370^\270\370\204\0\0\0"
- "V\267\327\355\271\327\355\273\330\354\275\331\354\277\331\354\302\332\354"
- "\304\333\353\306\334\353\310\334\353\312\335\353\314\336\352\317\337\352"
- "\321\337\352\323\340\352\326\341\351\330\342\351\332\343\351\334\343\350"
- "\336\344\350\341\345\350\343\346\350\345\346\347\346\347\347\345\346\347"
- "\343\346\350\341\345\350\336\344\350\334\343\350\332\343\351\330\342\351"
- "\326\341\351\323\340\352\321\337\352\317\337\352\314\336\352\312\335\353"
- "\310\334\353\306\334\353\304\333\353\302\332\354\277\331\354\275\331\354"
- "\273\330\354\271\327\355\267\327\355\265\326\355\263\325\356\260\324\356"
- "\256\324\356\254\323\356\251\322\357\247\321\357\245\320\357\243\320\360"
- "\241\317\360\236\316\360\234\315\360\232\315\361\230\314\361\226\313\361"
- "\224\312\361\221\312\362\217\311\362\215\310\362\213\307\362\211\307\363"
- "\207\306\363\205\305\363\202\305\364\200\304\364~\303\364|\302\364z\301\365"
- "x\301\365v\300\365t\277\366q\276\366o\276\366m\275\366k\274\367i\273\367"
- "g\273\367d\272\367b\271\370`\270\370^\270\370\204\0\0\0V\267\327\355\271"
- "\327\355\273\330\354\275\331\354\277\331\354\302\332\354\304\333\353\306"
- "\334\353\310\334\353\312\335\353\314\336\352\317\337\352\321\337\352\323"
- "\340\352\326\341\351\330\342\351\332\343\351\334\343\350\336\344\350\341"
- "\345\350\343\346\350\345\346\347\346\347\347\345\346\347\343\346\350\341"
- "\345\350\336\344\350\334\343\350\332\343\351\330\342\351\326\341\351\323"
- "\340\352\321\337\352\317\337\352\314\336\352\312\335\353\310\334\353\306"
- "\334\353\304\333\353\302\332\354\277\331\354\275\331\354\273\330\354\271"
- "\327\355\267\327\355\265\326\355\263\325\356\260\324\356\256\324\356\254"
- "\323\356\251\322\357\247\321\357\245\320\357\243\320\360\241\317\360\236"
- "\316\360\234\315\360\232\315\361\230\314\361\226\313\361\224\312\361\221"
- "\312\362\217\311\362\215\310\362\213\307\362\211\307\363\207\306\363\205"
- "\305\363\202\305\364\200\304\364~\303\364|\302\364z\301\365x\301\365v\300"
- "\365t\277\366q\276\366o\276\366m\275\366k\274\367i\273\367g\273\367d\272"
- "\367b\271\370`\270\370^\270\370\204\0\0\0V\267\327\355\271\327\355\273\330"
- "\354\275\331\354\277\331\354\302\332\354\304\333\353\306\334\353\310\334"
- "\353\312\335\353\314\336\352\317\337\352\321\337\352\323\340\352\325\341"
- "\351\327\342\351\331\342\351\333\343\350\336\344\350\340\345\350\342\345"
- "\350\343\346\347\344\346\347\343\346\347\342\345\350\340\345\350\336\344"
- "\350\333\343\350\331\342\351\327\342\351\325\341\351\323\340\352\321\337"
- "\352\317\337\352\314\336\352\312\335\353\310\334\353\306\334\353\304\333"
- "\353\302\332\354\277\331\354\275\331\354\273\330\354\271\327\355\267\327"
- "\355\265\326\355\263\325\356\260\324\356\256\324\356\253\323\356\251\322"
- "\357\247\321\357\245\320\357\243\320\360\241\317\360\236\316\360\234\315"
- "\360\232\315\361\230\314\361\226\313\361\224\312\361\221\312\362\217\311"
- "\362\215\310\362\213\307\362\211\307\363\207\306\363\205\305\363\202\304"
- "\364\200\304\364~\303\364|\302\364z\301\365x\301\365v\300\365t\277\366q\276"
- "\366o\276\366m\275\366k\274\367i\273\367g\273\367d\272\367b\271\370`\270"
- "\370^\270\370\204\0\0\0\25\267\327\355\271\327\355\273\330\354\275\331\354"
- "\277\331\354\302\332\354\304\333\353\306\334\353\310\334\353\312\335\353"
- "\314\336\352\317\337\352\321\337\352\323\340\352\325\341\351\327\342\351"
- "\331\342\351\333\343\351\335\344\350\337\344\350\341\345\350\203\342\345"
- "\350>\341\345\350\337\344\350\335\344\350\333\343\351\331\342\351\327\342"
- "\351\325\341\351\323\340\352\321\337\352\317\337\352\314\336\352\312\335"
- "\353\310\334\353\306\334\353\304\333\353\302\332\354\277\331\354\275\331"
- "\354\273\330\354\271\327\355\267\327\355\264\326\355\262\325\356\260\324"
- "\356\255\323\356\253\323\356\251\322\357\247\321\357\245\320\357\243\320"
- "\360\241\317\360\236\316\360\234\315\360\232\315\361\230\314\361\226\313"
- "\361\224\312\361\221\312\362\217\311\362\215\310\362\213\307\362\211\307"
- "\363\206\306\363\204\305\363\202\304\364\200\304\364~\303\364|\302\364z\301"
- "\365x\301\365v\300\365t\277\366q\276\366o\276\366m\275\366k\274\367i\273"
- "\367g\273\367d\272\367b\271\370`\270\370^\270\370\204\0\0\0V\266\326\355"
- "\270\327\355\272\330\355\275\330\354\277\331\354\301\332\354\303\333\353"
- "\305\333\353\307\334\353\312\335\353\314\336\352\316\336\352\320\337\352"
- "\322\340\352\324\341\351\326\341\351\331\342\351\332\343\351\334\343\350"
- "\336\344\350\337\344\350\340\345\350\341\345\350\340\345\350\337\344\350"
- "\336\344\350\334\343\350\332\343\351\331\342\351\326\341\351\324\341\351"
- "\322\340\352\320\337\352\316\336\352\314\336\352\312\335\353\307\334\353"
- "\305\333\353\303\333\353\301\332\354\277\331\354\275\330\354\272\330\355"
- "\270\327\355\266\326\355\264\326\355\262\325\356\260\324\356\255\323\356"
- "\253\323\356\251\322\357\247\321\357\245\320\357\243\320\360\241\317\360"
- "\236\316\360\234\315\360\232\315\361\230\314\361\226\313\361\224\312\361"
- "\221\312\362\217\311\362\214\310\362\212\307\363\210\307\363\206\306\363"
- "\204\305\363\202\304\364\200\304\364~\303\364|\302\364z\301\365x\301\365"
- "v\300\365t\277\366q\276\366o\276\366m\275\366k\274\367i\273\367g\273\367"
- "d\272\367b\271\370_\270\370]\270\370\204\0\0\0\24\266\326\355\270\327\355"
- "\272\330\355\275\330\354\277\331\354\301\332\354\303\333\353\305\333\353"
- "\307\334\353\312\335\353\314\336\352\315\336\352\317\337\352\321\340\352"
- "\324\340\351\326\341\351\327\342\351\331\342\351\333\343\351\334\343\350"
- "\205\336\344\350=\334\343\350\333\343\351\331\342\351\327\342\351\326\341"
- "\351\324\340\351\321\340\352\317\337\352\315\336\352\314\336\352\312\335"
- "\353\307\334\353\305\333\353\303\333\353\301\332\354\277\331\354\275\330"
- "\354\272\330\355\270\327\355\266\326\355\264\326\355\262\325\356\260\324"
- "\356\255\323\356\253\323\356\251\322\357\247\321\357\245\320\357\243\320"
- "\360\241\317\360\236\316\360\234\315\360\231\314\361\227\314\361\225\313"
- "\361\223\312\362\221\311\362\217\311\362\214\310\362\212\307\363\210\307"
- "\363\206\306\363\204\305\363\202\304\364\200\304\364~\303\364|\302\364z\301"
- "\365x\301\365v\300\365t\277\366q\276\366o\276\366m\275\366k\274\367i\273"
- "\367f\272\367d\272\370b\271\370_\270\370]\270\370\204\0\0\0V\265\326\355"
- "\270\327\355\272\327\355\274\330\354\276\331\354\300\332\354\302\332\354"
- "\304\333\353\307\334\353\311\335\353\313\335\353\314\336\352\317\337\352"
- "\321\337\352\323\340\352\324\341\351\326\341\351\330\342\351\331\342\351"
- "\333\343\351\333\343\350\334\343\350\335\344\350\334\343\350\333\343\350"
- "\333\343\351\331\342\351\330\342\351\326\341\351\324\341\351\323\340\352"
- "\321\337\352\317\337\352\314\336\352\313\335\353\311\335\353\307\334\353"
- "\304\333\353\302\332\354\300\332\354\276\331\354\274\330\354\272\327\355"
- "\270\327\355\265\326\355\263\325\355\261\325\356\257\324\356\255\323\356"
- "\253\322\357\250\322\357\246\321\357\244\320\357\242\317\360\240\317\360"
- "\236\316\360\234\315\360\231\314\361\227\314\361\225\313\361\223\312\362"
- "\221\311\362\217\311\362\214\310\362\212\307\363\210\307\363\206\306\363"
- "\204\305\363\202\304\364\200\304\364~\303\364|\302\364z\301\365x\301\365"
- "v\300\365t\277\366q\276\366o\275\366l\275\366j\274\367h\273\367f\272\367"
- "d\272\370b\271\370_\270\370]\270\370\204\0\0\0\25\265\326\355\270\327\355"
- "\272\327\355\274\330\354\275\331\354\277\331\354\302\332\354\304\333\353"
- "\306\334\353\310\334\353\312\335\353\314\336\352\316\336\352\320\337\352"
- "\321\340\352\324\340\351\325\341\351\326\341\351\330\342\351\331\342\351"
- "\332\343\351\203\333\343\351>\332\343\351\331\342\351\330\342\351\326\341"
- "\351\325\341\351\324\340\351\321\340\352\320\337\352\316\336\352\314\336"
- "\352\312\335\353\310\334\353\306\334\353\304\333\353\302\332\354\277\331"
- "\354\275\331\354\274\330\354\272\327\355\270\327\355\265\326\355\263\325"
- "\355\261\325\356\257\324\356\255\323\356\253\322\357\250\322\357\246\321"
- "\357\244\320\357\242\317\360\240\317\360\236\316\360\234\315\360\231\314"
- "\361\227\314\361\225\313\361\223\312\362\221\311\362\217\311\362\214\310"
- "\362\212\307\363\210\307\363\206\306\363\204\305\363\202\304\364\200\303"
- "\364~\303\364{\302\365y\301\365w\300\365u\300\365s\277\366q\276\366o\275"
- "\366l\275\366j\274\367h\273\367f\272\367d\272\370b\271\370_\270\370]\270"
- "\370\204\0\0\0\25\265\326\355\267\327\355\271\327\355\273\330\354\275\331"
- "\354\277\331\354\301\332\354\303\333\353\305\333\353\307\334\353\311\335"
- "\353\313\335\353\315\336\352\317\337\352\321\337\352\322\340\352\324\340"
- "\351\325\341\351\326\341\351\327\342\351\330\342\351\203\331\342\351>\330"
- "\342\351\327\342\351\326\341\351\325\341\351\324\340\351\322\340\352\321"
- "\337\352\317\337\352\315\336\352\313\335\353\311\335\353\307\334\353\305"
- "\333\353\303\333\353\301\332\354\277\331\354\275\331\354\273\330\354\271"
- "\327\355\267\327\355\265\326\355\263\325\356\260\324\356\256\324\356\254"
- "\323\356\252\322\357\250\321\357\246\321\357\243\320\357\241\317\360\237"
- "\316\360\235\316\360\233\315\361\231\314\361\226\313\361\224\313\361\222"
- "\312\362\220\311\362\216\310\362\214\310\362\212\307\363\207\306\363\205"
- "\306\363\203\305\363\201\304\364\200\303\364~\303\364{\302\365y\301\365w"
- "\300\365u\300\365s\277\366q\276\366o\275\366l\275\366j\274\367h\273\367f"
- "\272\367d\272\370b\271\370_\270\370]\270\370\204\0\0\0\23\264\326\355\266"
- "\326\355\270\327\355\272\330\355\275\330\354\277\331\354\300\332\354\302"
- "\332\354\304\333\353\307\334\353\310\334\353\312\335\353\314\336\352\316"
- "\336\352\317\337\352\321\337\352\322\340\352\324\340\351\325\341\351\202"
- "\326\341\351\203\327\342\351\202\326\341\351<\325\341\351\324\340\351\322"
- "\340\352\321\337\352\317\337\352\316\336\352\314\336\352\312\335\353\310"
- "\334\353\307\334\353\304\333\353\302\332\354\300\332\354\277\331\354\275"
- "\330\354\272\330\355\270\327\355\266\326\355\264\326\355\262\325\356\260"
- "\324\356\255\323\356\254\323\356\252\322\357\250\321\357\246\321\357\243"
- "\320\357\241\317\360\237\316\360\235\316\360\233\315\361\231\314\361\226"
- "\313\361\224\313\361\222\312\362\220\311\362\216\310\362\214\310\362\212"
- "\307\363\207\306\363\205\306\363\203\305\363\201\304\364\200\303\364~\303"
- "\364{\302\365y\301\365w\300\365u\300\365s\277\366q\276\366o\275\366l\275"
- "\366j\274\367h\273\367e\272\367c\271\370a\271\370_\270\370]\267\370\204\0"
- "\0\0\23\263\325\355\265\326\355\270\327\355\272\327\355\274\330\354\275\331"
- "\354\277\331\354\302\332\354\304\333\353\305\333\353\307\334\353\311\335"
- "\353\313\335\353\314\336\352\316\336\352\317\337\352\321\337\352\322\340"
- "\352\323\340\352\202\324\341\351\203\325\341\351\202\324\341\351<\323\340"
- "\352\322\340\352\321\337\352\317\337\352\316\336\352\314\336\352\313\335"
- "\353\311\335\353\307\334\353\305\333\353\304\333\353\302\332\354\277\331"
- "\354\275\331\354\274\330\354\272\327\355\270\327\355\265\326\355\263\325"
- "\355\262\325\356\260\324\356\255\323\356\253\323\356\251\322\357\247\321"
- "\357\245\320\357\243\320\360\241\317\360\236\316\360\234\315\360\232\315"
- "\361\230\314\361\226\313\361\224\312\361\221\312\362\217\311\362\215\310"
- "\362\213\307\362\211\307\363\207\306\363\205\305\363\202\305\364\200\304"
- "\364\177\303\364}\302\364{\302\365y\301\365v\300\365t\277\365r\277\366p\276"
- "\366n\275\366l\274\367i\274\367g\273\367e\272\367c\271\370a\271\370_\270"
- "\370]\267\370\204\0\0\0\24\263\325\356\265\326\355\267\327\355\271\327\355"
- "\273\330\354\275\330\354\277\331\354\301\332\354\302\332\354\304\333\353"
- "\306\334\353\310\334\353\312\335\353\313\335\353\314\336\352\316\336\352"
- "\317\337\352\321\337\352\321\340\352\322\340\352\202\323\340\352\1\324\340"
- "\351\202\323\340\352=\322\340\352\321\340\352\321\337\352\317\337\352\316"
- "\336\352\314\336\352\313\335\353\312\335\353\310\334\353\306\334\353\304"
- "\333\353\302\332\354\301\332\354\277\331\354\275\330\354\273\330\354\271"
- "\327\355\267\327\355\265\326\355\263\325\356\261\325\356\257\324\356\255"
- "\323\356\253\322\357\250\322\357\246\321\357\244\320\357\242\317\360\240"
- "\317\360\236\316\360\234\315\360\232\315\361\230\314\361\226\313\361\224"
- "\312\361\221\312\362\217\311\362\215\310\362\213\307\362\211\307\363\207"
- "\306\363\205\305\363\202\305\364\200\304\364\177\303\364}\302\364{\302\365"
- "y\301\365v\300\365t\277\365r\277\366p\276\366n\275\366l\274\367i\274\367"
- "g\273\367e\272\367c\271\370a\271\370_\270\370]\267\370\204\0\0\0\23\262\325"
- "\356\264\326\355\266\326\355\270\327\355\272\327\355\274\330\354\276\331"
- "\354\277\331\354\302\332\354\303\333\353\305\333\353\307\334\353\310\334"
- "\353\312\335\353\313\335\353\314\336\352\316\336\352\317\337\352\320\337"
- "\352\202\321\337\352\203\321\340\352\202\321\337\352<\320\337\352\317\337"
- "\352\316\336\352\314\336\352\313\335\353\312\335\353\310\334\353\307\334"
- "\353\305\333\353\303\333\353\302\332\354\277\331\354\276\331\354\274\330"
- "\354\272\327\355\270\327\355\266\326\355\264\326\355\262\325\356\260\324"
- "\356\256\324\356\254\323\356\252\322\357\250\321\357\246\321\357\243\320"
- "\357\242\317\360\240\317\360\236\316\360\234\315\360\231\314\361\227\314"
- "\361\225\313\361\223\312\362\221\311\362\217\311\362\214\310\362\212\307"
- "\363\210\307\363\206\306\363\204\305\363\202\304\364\200\304\364~\303\364"
- "|\302\364z\301\365x\301\365v\300\365t\277\366q\276\366o\276\366m\275\366"
- "k\274\367i\273\367g\273\367d\272\367b\271\370`\270\370^\270\370\\\267\371"
- "\204\0\0\0\23\261\325\356\263\325\355\265\326\355\267\327\355\271\327\355"
- "\273\330\354\275\330\354\277\331\354\300\332\354\302\332\354\304\333\353"
- "\305\333\353\307\334\353\310\334\353\312\335\353\313\335\353\314\336\352"
- "\315\336\352\316\336\352\207\317\337\352<\316\336\352\315\336\352\314\336"
- "\352\313\335\353\312\335\353\310\334\353\307\334\353\305\333\353\304\333"
- "\353\302\332\354\300\332\354\277\331\354\275\330\354\273\330\354\271\327"
- "\355\267\327\355\265\326\355\263\325\355\261\325\356\260\324\356\255\323"
- "\356\253\323\356\251\322\357\247\321\357\245\320\357\243\320\357\241\317"
- "\360\237\316\360\235\316\360\233\315\361\231\314\361\226\313\361\224\313"
- "\361\222\312\362\220\311\362\217\311\362\214\310\362\212\307\363\210\307"
- "\363\206\306\363\204\305\363\202\304\364\200\304\364~\303\364|\302\364z\301"
- "\365x\301\365v\300\365t\277\366q\276\366o\276\366m\275\366k\274\367i\273"
- "\367g\273\367d\272\367b\271\370`\270\370^\270\370\\\267\371\204\0\0\0\17"
- "\260\324\356\263\325\356\264\326\355\266\326\355\270\327\355\272\327\355"
- "\274\330\354\275\331\354\277\331\354\301\332\354\302\332\354\304\333\353"
- "\305\333\353\307\334\353\310\334\353\202\312\335\353\202\314\336\352\202"
- "\315\336\352\203\316\336\352\202\315\336\352\202\314\336\352\202\312\335"
- "\3538\310\334\353\307\334\353\305\333\353\304\333\353\302\332\354\301\332"
- "\354\277\331\354\275\331\354\274\330\354\272\327\355\270\327\355\266\326"
- "\355\264\326\355\263\325\356\260\324\356\256\324\356\255\323\356\253\322"
- "\357\250\322\357\246\321\357\245\320\357\243\320\360\241\317\360\236\316"
- "\360\234\315\360\232\315\361\230\314\361\226\313\361\224\313\361\222\312"
- "\362\220\311\362\216\310\362\214\310\362\212\307\363\207\306\363\205\306"
- "\363\203\305\363\201\304\364\200\303\364~\303\364{\302\365y\301\365w\300"
- "\365u\300\365s\277\366q\276\366o\275\366l\275\366j\274\367h\273\367f\272"
- "\367d\272\370b\271\370_\270\370]\270\370[\267\371\204\0\0\0\16\260\324\356"
- "\262\325\356\263\325\355\265\326\355\267\327\355\271\327\355\272\330\355"
- "\275\330\354\276\331\354\277\331\354\301\332\354\302\332\354\304\333\353"
- "\305\333\353\202\307\334\353\1\311\335\353\202\312\335\353\1\313\335\353"
- "\205\314\336\352\1\313\335\353\202\312\335\353\1\311\335\353\202\307\334"
- "\3537\305\333\353\304\333\353\302\332\354\301\332\354\277\331\354\276\331"
- "\354\275\330\354\272\330\355\271\327\355\267\327\355\265\326\355\263\325"
- "\355\262\325\356\260\324\356\255\323\356\253\323\356\252\322\357\250\321"
- "\357\246\321\357\243\320\357\242\317\360\240\317\360\236\316\360\234\315"
- "\360\231\314\361\227\314\361\226\313\361\224\312\361\221\312\362\217\311"
- "\362\215\310\362\213\307\362\211\307\363\207\306\363\205\305\363\202\305"
- "\364\200\304\364\200\303\364~\303\364{\302\365y\301\365w\300\365u\300\365"
- "s\277\366q\276\366o\275\366l\275\366j\274\367h\273\367f\272\367d\272\370"
- "b\271\370_\270\370]\270\370[\267\371\204\0\0\0\22\257\324\356\260\324\356"
- "\263\325\356\264\326\355\266\326\355\270\327\355\272\327\355\273\330\354"
- "\275\330\354\276\331\354\277\331\354\301\332\354\302\332\354\304\333\353"
- "\305\333\353\306\334\353\307\334\353\310\334\353\202\311\335\353\205\312"
- "\335\353\202\311\335\353;\310\334\353\307\334\353\306\334\353\305\333\353"
- "\304\333\353\302\332\354\301\332\354\277\331\354\276\331\354\275\330\354"
- "\273\330\354\272\327\355\270\327\355\266\326\355\264\326\355\263\325\356"
- "\260\324\356\257\324\356\255\323\356\253\322\357\251\322\357\247\321\357"
- "\245\320\357\243\320\360\241\317\360\237\316\360\235\316\360\233\315\361"
- "\231\314\361\227\314\361\225\313\361\223\312\362\221\311\362\217\311\362"
- "\214\310\362\212\307\363\210\307\363\207\306\363\205\305\363\202\305\364"
- "\200\304\364\177\303\364}\302\364{\302\365y\301\365v\300\365t\277\365r\277"
- "\366p\276\366n\275\366l\274\367i\274\367g\273\367e\272\367c\271\370a\271"
- "\370_\270\370]\267\370Z\267\371\204\0\0\0\22\255\323\356\260\324\356\261"
- "\325\356\263\325\355\265\326\355\267\327\355\270\327\355\272\327\355\273"
- "\330\354\275\330\354\276\331\354\277\331\354\301\332\354\302\332\354\303"
- "\333\353\304\333\353\305\333\353\306\334\353\203\307\334\353\203\310\334"
- "\353\203\307\334\353;\306\334\353\305\333\353\304\333\353\303\333\353\302"
- "\332\354\301\332\354\277\331\354\276\331\354\275\330\354\273\330\354\272"
- "\327\355\270\327\355\267\327\355\265\326\355\263\325\355\261\325\356\260"
- "\324\356\255\323\356\254\323\356\252\322\357\250\321\357\246\321\357\244"
- "\320\357\242\317\360\241\317\360\236\316\360\234\315\360\232\315\361\230"
- "\314\361\226\313\361\224\313\361\222\312\362\220\311\362\216\310\362\214"
- "\310\362\212\307\363\210\307\363\206\306\363\204\305\363\202\304\364\200"
- "\304\364~\303\364|\302\364z\301\365x\301\365v\300\365t\277\366q\276\366p"
- "\276\366n\275\366l\274\367i\274\367g\273\367e\272\367c\271\370a\271\370_"
- "\270\370]\267\370Z\267\371\204\0\0\0\16\255\323\356\256\324\356\260\324\356"
- "\262\325\356\263\325\355\265\326\355\267\327\355\270\327\355\272\327\355"
- "\273\330\354\275\330\354\276\331\354\277\331\354\301\332\354\202\302\332"
- "\354\202\304\333\353\202\305\333\353\205\306\334\353\202\305\333\353\202"
- "\304\333\353\202\302\332\3547\301\332\354\277\331\354\276\331\354\275\330"
- "\354\273\330\354\272\327\355\270\327\355\267\327\355\265\326\355\263\325"
- "\355\262\325\356\260\324\356\256\324\356\255\323\356\253\322\357\251\322"
- "\357\247\321\357\245\320\357\243\320\357\241\317\360\237\316\360\236\316"
- "\360\234\315\360\231\314\361\227\314\361\226\313\361\224\312\361\221\312"
- "\362\217\311\362\215\310\362\213\307\362\212\307\363\207\306\363\205\306"
- "\363\203\305\363\201\304\364\200\303\364~\303\364{\302\365y\301\365x\301"
- "\365v\300\365t\277\366q\276\366o\276\366m\275\366k\274\367i\273\367g\273"
- "\367d\272\367b\271\370`\270\370^\270\370\\\267\371Z\266\371\204\0\0\0\20"
- "\253\323\356\255\323\356\257\324\356\260\324\356\263\325\356\264\326\355"
- "\265\326\355\267\327\355\270\327\355\272\327\355\273\330\354\275\330\354"
- "\276\331\354\277\331\354\300\332\354\301\332\354\202\302\332\354\1\303\333"
- "\353\207\304\333\353\1\303\333\353\202\302\332\3549\301\332\354\300\332\354"
- "\277\331\354\276\331\354\275\330\354\273\330\354\272\327\355\270\327\355"
- "\267\327\355\265\326\355\264\326\355\263\325\356\260\324\356\257\324\356"
- "\255\323\356\253\323\356\252\322\357\250\321\357\246\321\357\244\320\357"
- "\242\317\360\241\317\360\236\316\360\234\315\360\233\315\361\231\314\361"
- "\226\313\361\224\313\361\223\312\362\221\311\362\217\311\362\214\310\362"
- "\212\307\363\211\307\363\207\306\363\205\305\363\202\305\364\200\304\364"
- "\177\303\364}\302\364{\302\365y\301\365w\300\365u\300\365s\277\366q\276\366"
- "o\275\366l\275\366j\274\367h\273\367f\272\367d\272\370b\271\370`\270\370"
- "^\270\370\\\267\371Z\266\371\204\0\0\0\22\253\322\357\254\323\356\255\323"
- "\356\260\324\356\261\325\356\263\325\356\264\326\355\265\326\355\267\327"
- "\355\270\327\355\272\327\355\273\330\354\275\330\354\275\331\354\276\331"
- "\354\277\331\354\300\332\354\301\332\354\211\302\332\354;\301\332\354\300"
- "\332\354\277\331\354\276\331\354\275\331\354\275\330\354\273\330\354\272"
- "\327\355\270\327\355\267\327\355\265\326\355\264\326\355\263\325\356\261"
- "\325\356\260\324\356\255\323\356\254\323\356\253\322\357\250\322\357\247"
- "\321\357\245\320\357\243\320\357\241\317\360\237\316\360\236\316\360\234"
- "\315\360\231\314\361\230\314\361\226\313\361\224\312\361\222\312\362\220"
- "\311\362\216\310\362\214\310\362\212\307\363\210\307\363\206\306\363\204"
- "\305\363\202\304\364\200\304\364~\303\364}\302\364{\302\365y\301\365v\300"
- "\365t\277\365r\277\366p\276\366n\275\366l\274\367i\274\367h\273\367f\272"
- "\367d\272\370b\271\370_\270\370]\270\370[\267\371Y\266\371\204\0\0\0\21\251"
- "\322\357\253\322\357\255\323\356\256\324\356\260\324\356\261\325\356\263"
- "\325\356\264\326\355\265\326\355\267\327\355\270\327\355\272\327\355\272"
- "\330\355\274\330\354\275\330\354\275\331\354\276\331\354\202\277\331\354"
- "\207\300\332\354\202\277\331\354:\276\331\354\275\331\354\275\330\354\274"
- "\330\354\272\330\355\272\327\355\270\327\355\267\327\355\265\326\355\264"
- "\326\355\263\325\356\261\325\356\260\324\356\256\324\356\255\323\356\253"
- "\322\357\251\322\357\250\321\357\246\321\357\244\320\357\242\317\360\241"
- "\317\360\236\316\360\234\315\360\233\315\361\231\314\361\227\314\361\225"
- "\313\361\223\312\362\221\311\362\217\311\362\215\310\362\213\307\362\211"
- "\307\363\207\306\363\205\306\363\203\305\363\201\304\364\200\303\364~\303"
- "\364|\302\364z\301\365x\301\365v\300\365t\277\366q\276\366o\276\366n\275"
- "\366l\274\367i\274\367g\273\367e\272\367c\271\370a\271\370_\270\370]\267"
- "\370Z\267\371X\266\371\204\0\0\0\21\250\321\357\252\322\357\253\323\356\255"
- "\323\356\256\324\356\260\324\356\262\325\356\263\325\356\264\326\355\265"
- "\326\355\267\327\355\270\327\355\271\327\355\272\327\355\273\330\354\274"
- "\330\354\275\330\354\202\275\331\354\202\276\331\354\203\277\331\354\202"
- "\276\331\354\202\275\331\354:\275\330\354\274\330\354\273\330\354\272\327"
- "\355\271\327\355\270\327\355\267\327\355\265\326\355\264\326\355\263\325"
- "\356\262\325\356\260\324\356\256\324\356\255\323\356\253\323\356\252\322"
- "\357\250\321\357\246\321\357\245\320\357\243\320\360\241\317\360\237\316"
- "\360\236\316\360\234\315\360\232\315\361\230\314\361\226\313\361\224\313"
- "\361\222\312\362\220\311\362\217\311\362\214\310\362\212\307\363\210\307"
- "\363\207\306\363\205\305\363\202\305\364\200\304\364\177\303\364~\303\364"
- "{\302\365y\301\365w\300\365u\300\365s\277\366q\276\366o\276\366m\275\366"
- "k\274\367i\273\367g\273\367d\272\367b\271\370`\270\370^\270\370\\\267\371"
- "Z\267\371X\266\371\204\0\0\0\14\247\321\357\250\322\357\252\322\357\253\323"
- "\356\255\323\356\257\324\356\260\324\356\261\325\356\263\325\356\264\326"
- "\355\265\326\355\266\326\355\202\270\327\355\4\271\327\355\272\327\355\272"
- "\330\355\273\330\354\202\274\330\354\205\275\330\354\202\274\330\354\4\273"
- "\330\354\272\330\355\272\327\355\271\327\355\202\270\327\3555\266\326\355"
- "\265\326\355\264\326\355\263\325\356\261\325\356\260\324\356\257\324\356"
- "\255\323\356\253\323\356\252\322\357\250\322\357\247\321\357\245\320\357"
- "\243\320\357\242\317\360\240\317\360\236\316\360\234\315\360\233\315\361"
- "\231\314\361\227\314\361\225\313\361\223\312\362\221\312\362\217\311\362"
- "\215\310\362\214\310\362\212\307\363\207\306\363\205\306\363\204\305\363"
- "\202\304\364\200\304\364~\303\364}\302\364{\302\365y\301\365v\300\365t\277"
- "\365r\277\366q\276\366o\275\366l\275\366j\274\367h\273\367f\272\367d\272"
- "\370b\271\370_\270\370^\270\370\\\267\371Z\266\371X\266\371\204\0\0\0\13"
- "\246\321\357\247\321\357\250\322\357\252\322\357\254\323\356\255\323\356"
- "\256\324\356\260\324\356\261\325\356\263\325\356\263\325\355\202\265\326"
- "\355\1\267\327\355\202\270\327\355\1\271\327\355\202\272\327\355\203\272"
- "\330\355\1\273\330\354\203\272\330\355\202\272\327\355\1\271\327\355\202"
- "\270\327\355\1\267\327\355\202\265\326\3554\263\325\355\263\325\356\261\325"
- "\356\260\324\356\257\324\356\255\323\356\254\323\356\252\322\357\250\322"
- "\357\247\321\357\246\321\357\244\320\357\242\317\360\241\317\360\237\316"
- "\360\235\316\360\234\315\360\231\314\361\230\314\361\226\313\361\224\313"
- "\361\222\312\362\220\311\362\217\311\362\214\310\362\212\307\363\211\307"
- "\363\207\306\363\205\305\363\203\305\363\201\304\364\200\303\364~\303\364"
- "{\302\365z\301\365x\301\365v\300\365t\277\366q\276\366p\276\366n\275\366"
- "l\274\367i\274\367g\273\367e\272\367c\271\370b\271\370_\270\370]\270\370"
- "[\267\371Y\266\371W\265\371\204\0\0\0\15\244\320\357\246\321\357\247\321"
- "\357\251\322\357\253\322\357\254\323\356\255\323\356\256\324\356\260\324"
- "\356\261\325\356\262\325\356\263\325\355\264\326\355\202\265\326\355\2\266"
- "\326\355\267\327\355\203\270\327\355\205\271\327\355\203\270\327\355\2\267"
- "\327\355\266\326\355\202\265\326\3556\264\326\355\263\325\355\262\325\356"
- "\261\325\356\260\324\356\256\324\356\255\323\356\254\323\356\253\322\357"
- "\251\322\357\247\321\357\246\321\357\244\320\357\243\320\360\241\317\360"
- "\237\316\360\236\316\360\234\315\360\232\315\361\231\314\361\226\313\361"
- "\225\313\361\223\312\362\221\312\362\217\311\362\215\310\362\214\310\362"
- "\212\307\363\207\306\363\206\306\363\204\305\363\202\304\364\200\304\364"
- "\177\303\364}\302\364{\302\365y\301\365w\300\365u\300\365s\277\366q\276\366"
- "o\276\366m\275\366k\274\367i\273\367g\273\367d\272\367c\271\370a\271\370"
- "_\270\370]\267\370Z\267\371X\266\371V\265\371\204\0\0\0\17\243\320\360\244"
- "\320\357\246\321\357\250\321\357\251\322\357\253\322\357\253\323\356\255"
- "\323\356\256\324\356\257\324\356\260\324\356\261\325\356\263\325\356\263"
- "\325\355\264\326\355\202\265\326\355\202\266\326\355\207\267\327\355\202"
- "\266\326\355\202\265\326\3558\264\326\355\263\325\355\263\325\356\261\325"
- "\356\260\324\356\257\324\356\256\324\356\255\323\356\253\323\356\253\322"
- "\357\251\322\357\250\321\357\246\321\357\244\320\357\243\320\360\241\317"
- "\360\240\317\360\236\316\360\234\315\360\233\315\361\231\314\361\227\314"
- "\361\226\313\361\224\312\361\222\312\362\220\311\362\217\311\362\214\310"
- "\362\212\307\363\211\307\363\207\306\363\205\306\363\203\305\363\201\304"
- "\364\200\303\364~\303\364|\302\364z\301\365y\301\365v\300\365t\277\365r\277"
- "\366p\276\366o\275\366l\275\366j\274\367h\273\367f\272\367d\272\370b\271"
- "\370`\270\370^\270\370\\\267\371Z\266\371X\266\371U\265\371\204\0\0\0\10"
- "\241\317\360\243\320\357\245\320\357\246\321\357\250\321\357\250\322\357"
- "\252\322\357\253\323\356\202\255\323\356\1\257\324\356\202\260\324\356\1"
- "\261\325\356\202\263\325\356\2\263\325\355\264\326\355\211\265\326\355\2"
- "\264\326\355\263\325\355\202\263\325\356\1\261\325\356\202\260\324\356\1"
- "\257\324\356\202\255\323\3561\253\323\356\252\322\357\250\322\357\250\321"
- "\357\246\321\357\245\320\357\243\320\357\241\317\360\240\317\360\236\316"
- "\360\235\316\360\234\315\360\231\314\361\230\314\361\226\313\361\224\313"
- "\361\223\312\362\221\311\362\217\311\362\215\310\362\214\310\362\212\307"
- "\363\207\306\363\206\306\363\204\305\363\202\305\364\200\304\364\177\303"
- "\364~\303\364{\302\365y\301\365w\300\365v\300\365t\277\366q\276\366o\276"
- "\366n\275\366l\274\367i\274\367g\273\367e\272\367d\272\370b\271\370_\270"
- "\370]\270\370[\267\371Y\266\371W\265\371U\265\371\204\0\0\0\15\241\317\360"
- "\242\317\360\243\320\357\245\320\357\246\321\357\247\321\357\250\322\357"
- "\252\322\357\253\322\357\254\323\356\255\323\356\256\324\356\257\324\356"
- "\202\260\324\356\1\261\325\356\202\262\325\356\1\263\325\356\207\263\325"
- "\355\1\263\325\356\202\262\325\356\1\261\325\356\202\260\324\3566\257\324"
- "\356\256\324\356\255\323\356\254\323\356\253\322\357\252\322\357\250\322"
- "\357\247\321\357\246\321\357\245\320\357\243\320\357\242\317\360\241\317"
- "\360\236\316\360\235\316\360\234\315\360\232\315\361\231\314\361\226\313"
- "\361\225\313\361\224\312\361\221\312\362\220\311\362\216\310\362\214\310"
- "\362\212\307\363\211\307\363\207\306\363\205\305\363\203\305\363\201\304"
- "\364\200\304\364~\303\364|\302\364{\302\365y\301\365v\300\365t\277\365s\277"
- "\366q\276\366o\275\366l\275\366k\274\367i\273\367g\273\367d\272\367c\271"
- "\370a\271\370_\270\370]\267\370Z\267\371X\266\371V\265\371U\265\371\204\0"
- "\0\0\16\237\316\360\241\317\360\242\317\360\243\320\357\244\320\357\246\321"
- "\357\247\321\357\250\322\357\251\322\357\253\322\357\253\323\356\254\323"
- "\356\255\323\356\256\324\356\202\257\324\356\203\260\324\356\207\261\325"
- "\356\203\260\324\356\202\257\324\3567\256\324\356\255\323\356\254\323\356"
- "\253\323\356\253\322\357\251\322\357\250\322\357\247\321\357\246\321\357"
- "\244\320\357\243\320\357\242\317\360\241\317\360\237\316\360\236\316\360"
- "\234\315\360\232\315\361\231\314\361\227\314\361\226\313\361\224\312\361"
- "\222\312\362\221\311\362\217\311\362\215\310\362\213\307\362\212\307\363"
- "\207\306\363\206\306\363\204\305\363\202\305\364\200\304\364\177\303\364"
- "~\303\364{\302\365y\301\365x\301\365v\300\365t\277\366r\277\366p\276\366"
- "n\275\366l\274\367j\274\367h\273\367f\272\367d\272\370b\271\370`\270\370"
- "^\270\370\\\267\371Z\266\371X\266\371V\265\371T\264\372\204\0\0\0\2\236\316"
- "\360\237\316\360\202\241\317\360\2\243\320\360\244\320\357\202\246\321\357"
- "\6\250\321\357\250\322\357\252\322\357\253\322\357\253\323\356\254\323\356"
- "\202\255\323\356\202\256\324\356\202\257\324\356\205\260\324\356\202\257"
- "\324\356\202\256\324\356\202\255\323\356\6\254\323\356\253\323\356\253\322"
- "\357\252\322\357\250\322\357\250\321\357\202\246\321\357\2\244\320\357\243"
- "\320\360\202\241\317\360+\237\316\360\236\316\360\234\315\360\233\315\361"
- "\231\314\361\227\314\361\226\313\361\224\313\361\223\312\362\221\311\362"
- "\217\311\362\216\310\362\214\310\362\212\307\363\210\307\363\207\306\363"
- "\205\305\363\203\305\363\201\304\364\200\304\364~\303\364|\302\364{\302\365"
- "y\301\365v\300\365u\300\365s\277\366q\276\366o\276\366m\275\366k\274\367"
- "i\273\367g\273\367e\272\367c\271\370a\271\370_\270\370]\270\370[\267\371"
- "Y\266\371W\265\371U\265\371S\264\372\204\0\0\0\16\234\315\360\236\316\360"
- "\237\316\360\240\317\360\241\317\360\243\320\360\243\320\357\245\320\357"
- "\246\321\357\247\321\357\250\321\357\250\322\357\252\322\357\253\322\357"
- "\202\253\323\356\1\254\323\356\213\255\323\356\1\254\323\356\202\253\323"
- "\3567\253\322\357\252\322\357\250\322\357\250\321\357\247\321\357\246\321"
- "\357\245\320\357\243\320\357\243\320\360\241\317\360\240\317\360\237\316"
- "\360\236\316\360\234\315\360\233\315\361\231\314\361\230\314\361\226\313"
- "\361\224\313\361\223\312\362\221\312\362\220\311\362\216\310\362\214\310"
- "\362\212\307\363\211\307\363\207\306\363\205\306\363\204\305\363\202\304"
- "\364\200\304\364\177\303\364~\303\364{\302\365y\301\365x\301\365v\300\365"
- "t\277\366r\277\366p\276\366n\275\366l\275\366j\274\367h\273\367g\273\367"
- "d\272\367b\271\370`\270\370_\270\370]\267\370Z\267\371X\266\371V\265\371"
- "U\265\371R\264\372\204\0\0\0\11\233\315\361\234\315\360\235\316\360\236\316"
- "\360\240\317\360\241\317\360\242\317\360\243\320\357\244\320\357\202\246"
- "\321\357\5\247\321\357\250\321\357\250\322\357\251\322\357\252\322\357\202"
- "\253\322\357\203\253\323\356\203\254\323\356\203\253\323\356\202\253\322"
- "\357\5\252\322\357\251\322\357\250\322\357\250\321\357\247\321\357\202\246"
- "\321\3572\244\320\357\243\320\357\242\317\360\241\317\360\240\317\360\236"
- "\316\360\235\316\360\234\315\360\233\315\361\231\314\361\230\314\361\226"
- "\313\361\225\313\361\223\312\362\221\312\362\220\311\362\217\311\362\215"
- "\310\362\213\307\362\212\307\363\207\306\363\206\306\363\205\305\363\202"
- "\305\364\201\304\364\200\303\364~\303\364|\302\364{\302\365y\301\365v\300"
- "\365u\300\365s\277\366q\276\366o\276\366m\275\366l\274\367i\274\367g\273"
- "\367e\272\367d\272\370b\271\370_\270\370]\270\370\\\267\371Z\266\371X\266"
- "\371U\265\371T\264\372R\264\372\204\0\0\0\6\231\314\361\233\315\361\234\315"
- "\360\235\316\360\236\316\360\237\316\360\202\241\317\360\3\243\320\360\243"
- "\320\357\244\320\357\202\246\321\357\1\247\321\357\202\250\321\357\1\250"
- "\322\357\202\251\322\357\207\252\322\357\202\251\322\357\1\250\322\357\202"
- "\250\321\357\1\247\321\357\202\246\321\357\3\244\320\357\243\320\357\243"
- "\320\360\202\241\317\360/\237\316\360\236\316\360\235\316\360\234\315\360"
- "\233\315\361\231\314\361\230\314\361\226\313\361\225\313\361\224\312\361"
- "\222\312\362\220\311\362\217\311\362\215\310\362\214\310\362\212\307\363"
- "\210\307\363\207\306\363\205\305\363\203\305\363\202\304\364\200\304\364"
- "\177\303\364}\302\364{\302\365y\301\365x\301\365v\300\365t\277\366r\277\366"
- "p\276\366o\275\366l\275\366j\274\367i\273\367g\273\367d\272\367c\271\370"
- "a\271\370_\270\370]\267\370[\267\371Y\266\371W\265\371U\265\371R\264\372"
- "Q\263\372\204\0\0\0\16\230\314\361\231\314\361\232\315\361\234\315\360\235"
- "\316\360\236\316\360\237\316\360\240\317\360\241\317\360\242\317\360\243"
- "\320\360\243\320\357\244\320\357\245\320\357\202\246\321\357\202\247\321"
- "\357\211\250\321\357\202\247\321\357\202\246\321\3577\245\320\357\244\320"
- "\357\243\320\357\243\320\360\242\317\360\241\317\360\240\317\360\237\316"
- "\360\236\316\360\235\316\360\234\315\360\232\315\361\231\314\361\230\314"
- "\361\226\313\361\225\313\361\224\312\361\222\312\362\221\311\362\217\311"
- "\362\215\310\362\214\310\362\212\307\363\211\307\363\207\306\363\205\306"
- "\363\204\305\363\202\304\364\200\304\364\200\303\364~\303\364|\302\364z\301"
- "\365y\301\365v\300\365u\300\365s\277\366q\276\366o\276\366m\275\366l\274"
- "\367i\274\367g\273\367f\272\367d\272\370b\271\370`\270\370^\270\370\\\267"
- "\371Z\266\371X\266\371V\265\371T\264\372R\264\372P\263\372\204\0\0\0\16\226"
- "\313\361\227\314\361\231\314\361\232\315\361\233\315\361\234\315\360\235"
- "\316\360\236\316\360\237\316\360\240\317\360\241\317\360\242\317\360\243"
- "\320\360\243\320\357\202\244\320\357\1\245\320\357\213\246\321\357\1\245"
- "\320\357\202\244\320\3577\243\320\357\243\320\360\242\317\360\241\317\360"
- "\240\317\360\237\316\360\236\316\360\235\316\360\234\315\360\233\315\361"
- "\232\315\361\231\314\361\227\314\361\226\313\361\225\313\361\224\312\361"
- "\222\312\362\221\311\362\217\311\362\216\310\362\214\310\362\212\307\363"
- "\211\307\363\207\306\363\206\306\363\204\305\363\202\305\364\201\304\364"
- "\200\303\364~\303\364}\302\364{\302\365y\301\365w\300\365v\300\365t\277\366"
- "r\277\366p\276\366n\275\366l\275\366j\274\367i\273\367g\273\367d\272\367"
- "c\271\370a\271\370_\270\370]\270\370[\267\371Y\266\371X\266\371U\265\371"
- "S\264\372Q\263\372P\263\372\204\0\0\0\3\224\313\361\226\313\361\227\314\361"
- "\202\231\314\361\1\233\315\361\202\234\315\360\202\236\316\360\2\237\316"
- "\360\240\317\360\202\241\317\360\1\242\317\360\202\243\320\360\202\243\320"
- "\357\207\244\320\357\202\243\320\357\202\243\320\360\1\242\317\360\202\241"
- "\317\360\2\240\317\360\237\316\360\202\236\316\360\202\234\315\360\1\233"
- "\315\361\202\231\314\361,\227\314\361\226\313\361\224\313\361\224\312\361"
- "\222\312\362\221\311\362\217\311\362\216\310\362\214\310\362\213\307\362"
- "\212\307\363\207\306\363\206\306\363\205\305\363\203\305\363\201\304\364"
- "\200\304\364\177\303\364}\302\364{\302\365z\301\365x\301\365v\300\365t\277"
- "\365s\277\366q\276\366o\276\366m\275\366l\274\367i\274\367g\273\367f\272"
- "\367d\272\370b\271\370`\270\370^\270\370\\\267\371Z\267\371X\266\371V\265"
- "\371U\265\371R\264\372P\263\372N\262\372\204\0\0\0\2\223\312\362\224\313"
- "\361\202\226\313\361\6\230\314\361\231\314\361\232\315\361\233\315\361\234"
- "\315\360\235\316\360\202\236\316\360\1\237\316\360\202\240\317\360\203\241"
- "\317\360\203\242\317\360\203\243\320\360\203\242\317\360\203\241\317\360"
- "\202\240\317\360\1\237\316\360\202\236\316\360\6\235\316\360\234\315\360"
- "\233\315\361\232\315\361\231\314\361\230\314\361\202\226\313\361+\224\313"
- "\361\223\312\362\222\312\362\221\311\362\217\311\362\216\310\362\214\310"
- "\362\213\307\362\212\307\363\210\307\363\207\306\363\205\305\363\203\305"
- "\363\202\304\364\200\304\364\177\303\364~\303\364|\302\364z\301\365y\301"
- "\365w\300\365u\300\365t\277\366q\276\366p\276\366n\275\366l\275\366j\274"
- "\367i\273\367g\273\367d\272\367c\271\370a\271\370_\270\370]\270\370[\267"
- "\371Z\266\371X\266\371U\265\371S\264\372R\264\372P\263\372M\262\372\204\0"
- "\0\0\12\221\312\362\223\312\362\224\312\361\225\313\361\226\313\361\227\314"
- "\361\230\314\361\231\314\361\232\315\361\233\315\361\202\234\315\360\1\235"
- "\316\360\202\236\316\360\202\237\316\360\202\240\317\360\207\241\317\360"
- "\202\240\317\360\202\237\316\360\202\236\316\360\1\235\316\360\202\234\315"
- "\3603\233\315\361\232\315\361\231\314\361\230\314\361\227\314\361\226\313"
- "\361\225\313\361\224\312\361\223\312\362\221\312\362\220\311\362\217\311"
- "\362\216\310\362\214\310\362\213\307\362\212\307\363\210\307\363\207\306"
- "\363\205\306\363\204\305\363\202\304\364\200\304\364\200\303\364~\303\364"
- "|\302\364{\302\365y\301\365w\300\365v\300\365t\277\365r\277\366q\276\366"
- "o\275\366m\275\366k\274\367i\274\367g\273\367f\272\367d\272\370b\271\370"
- "`\270\370^\270\370]\267\370Z\267\371X\266\371W\265\371U\265\371R\264\372"
- "Q\263\372O\263\372M\262\372\204\0\0\0\5\220\311\362\221\312\362\222\312\362"
- "\224\312\361\224\313\361\202\226\313\361\1\227\314\361\202\231\314\361\2"
- "\232\315\361\233\315\361\203\234\315\360\1\235\316\360\215\236\316\360\1"
- "\235\316\360\203\234\315\360\2\233\315\361\232\315\361\202\231\314\361\1"
- "\227\314\361\202\226\313\361.\224\313\361\224\312\361\222\312\362\221\312"
- "\362\220\311\362\217\311\362\215\310\362\214\310\362\213\307\362\212\307"
- "\363\210\307\363\207\306\363\205\306\363\204\305\363\202\305\364\201\304"
- "\364\200\303\364~\303\364}\302\364{\302\365y\301\365x\301\365v\300\365t\277"
- "\365s\277\366q\276\366o\276\366n\275\366l\274\367j\274\367h\273\367g\273"
- "\367d\272\367c\271\370a\271\370_\270\370]\270\370[\267\371Z\266\371X\266"
- "\371U\265\371T\264\372R\264\372P\263\372N\262\372L\262\372\204\0\0\0\202"
- "\217\311\362\5\221\311\362\222\312\362\223\312\362\224\312\361\225\313\361"
- "\202\226\313\361\2\227\314\361\230\314\361\202\231\314\361\2\232\315\361"
- "\233\315\361\205\234\315\360\205\235\316\360\205\234\315\360\2\233\315\361"
- "\232\315\361\202\231\314\361\2\230\314\361\227\314\361\202\226\313\361\5"
- "\225\313\361\224\312\361\223\312\362\222\312\362\221\311\362\202\217\311"
- "\362)\215\310\362\214\310\362\213\307\362\212\307\363\210\307\363\207\306"
- "\363\205\306\363\204\305\363\202\305\364\201\304\364\200\304\364\177\303"
- "\364}\302\364{\302\365z\301\365y\301\365v\300\365u\300\365t\277\366q\276"
- "\366p\276\366o\275\366l\275\366k\274\367i\273\367g\273\367e\272\367d\272"
- "\370b\271\370`\270\370^\270\370\\\267\371Z\267\371X\266\371W\265\371U\265"
- "\371R\264\372Q\263\372O\263\372M\262\372K\261\373\204\0\0\0\11\215\310\362"
- "\216\310\362\217\311\362\220\311\362\221\312\362\222\312\362\223\312\362"
- "\224\313\361\225\313\361\202\226\313\361\2\227\314\361\230\314\361\203\231"
- "\314\361\203\232\315\361\207\233\315\361\203\232\315\361\203\231\314\361"
- "\2\230\314\361\227\314\361\202\226\313\3612\225\313\361\224\313\361\223\312"
- "\362\222\312\362\221\312\362\220\311\362\217\311\362\216\310\362\215\310"
- "\362\214\310\362\212\307\363\211\307\363\210\307\363\207\306\363\205\306"
- "\363\204\305\363\202\305\364\201\304\364\200\304\364\177\303\364~\303\364"
- "|\302\364z\301\365y\301\365w\300\365v\300\365t\277\366r\277\366q\276\366"
- "o\275\366m\275\366l\274\367i\274\367h\273\367f\272\367d\272\367b\271\370"
- "a\271\370_\270\370]\270\370[\267\371Y\266\371X\266\371U\265\371T\264\372"
- "R\264\372P\263\372N\262\372L\262\372J\261\373\204\0\0\0\3\213\307\362\214"
- "\310\362\215\310\362\202\217\311\362\7\221\311\362\221\312\362\222\312\362"
- "\223\312\362\224\312\361\224\313\361\225\313\361\202\226\313\361\202\227"
- "\314\361\202\230\314\361\211\231\314\361\202\230\314\361\202\227\314\361"
- "\202\226\313\361\7\225\313\361\224\313\361\224\312\361\223\312\362\222\312"
- "\362\221\312\362\221\311\362\202\217\311\362\5\215\310\362\214\310\362\213"
- "\307\362\212\307\363\211\307\363\202\207\306\363%\205\306\363\204\305\363"
- "\202\305\364\201\304\364\200\304\364\177\303\364~\303\364|\302\364{\302\365"
- "y\301\365w\300\365v\300\365t\277\365s\277\366q\276\366o\276\366n\275\366"
- "l\274\367j\274\367i\273\367g\273\367e\272\367c\271\370b\271\370_\270\370"
- "^\270\370\\\267\371Z\267\371X\266\371V\265\371U\265\371R\264\372Q\263\372"
- "O\263\372M\262\372K\261\373I\261\373\204\0\0\0\15\212\307\363\213\307\362"
- "\214\310\362\215\310\362\216\310\362\217\311\362\220\311\362\221\311\362"
- "\221\312\362\222\312\362\223\312\362\224\312\361\224\313\361\202\225\313"
- "\361\205\226\313\361\205\227\314\361\205\226\313\361\202\225\313\3616\224"
- "\313\361\224\312\361\223\312\362\222\312\362\221\312\362\221\311\362\220"
- "\311\362\217\311\362\216\310\362\215\310\362\214\310\362\213\307\362\212"
- "\307\363\211\307\363\207\306\363\206\306\363\205\305\363\204\305\363\202"
- "\305\364\201\304\364\200\304\364\177\303\364~\303\364|\302\364{\302\365y"
- "\301\365x\301\365v\300\365t\277\365s\277\366q\276\366p\276\366n\275\366l"
- "\275\366k\274\367i\273\367g\273\367e\272\367d\272\370b\271\370`\270\370_"
- "\270\370]\267\370[\267\371Y\266\371X\266\371U\265\371T\264\372R\264\372P"
- "\263\372N\262\372L\262\372J\261\373H\260\373\204\0\0\0\7\210\307\363\211"
- "\307\363\212\307\363\213\307\362\214\310\362\215\310\362\216\310\362\202"
- "\217\311\362\1\221\311\362\202\221\312\362\2\222\312\362\223\312\362\202"
- "\224\312\361\202\224\313\361\211\225\313\361\202\224\313\361\202\224\312"
- "\361\2\223\312\362\222\312\362\202\221\312\362\1\221\311\362\202\217\311"
- "\3620\216\310\362\215\310\362\214\310\362\213\307\362\212\307\363\211\307"
- "\363\210\307\363\207\306\363\206\306\363\205\305\363\203\305\363\202\305"
- "\364\201\304\364\200\304\364\177\303\364~\303\364|\302\364{\302\365y\301"
- "\365x\301\365v\300\365u\300\365t\277\366q\276\366p\276\366o\275\366m\275"
- "\366k\274\367i\274\367h\273\367f\272\367d\272\367b\271\370a\271\370_\270"
- "\370]\270\370\\\267\371Z\266\371X\266\371V\265\371U\265\371R\264\372Q\263"
- "\372O\263\372M\262\372K\261\373I\261\373H\260\373\204\0\0\0\202\207\306\363"
- "\1\211\307\363\202\212\307\363\202\214\310\362\2\215\310\362\216\310\362"
- "\202\217\311\362\1\220\311\362\202\221\311\362\1\221\312\362\202\222\312"
- "\362\204\223\312\362\203\224\312\361\204\223\312\362\202\222\312\362\1\221"
- "\312\362\202\221\311\362\1\220\311\362\202\217\311\362\2\216\310\362\215"
- "\310\362\202\214\310\362\202\212\307\363\1\211\307\363\202\207\306\363\4"
- "\205\306\363\204\305\363\203\305\363\202\304\364\202\200\304\364#\177\303"
- "\364~\303\364|\302\364{\302\365y\301\365x\301\365v\300\365u\300\365t\277"
- "\366r\277\366q\276\366o\275\366m\275\366l\274\367j\274\367h\273\367g\273"
- "\367e\272\367c\271\370b\271\370_\270\370^\270\370]\267\370Z\267\371Y\266"
- "\371W\265\371U\265\371S\264\372R\264\372P\263\372N\262\372L\262\372J\261"
- "\373H\260\373F\260\373\204\0\0\0\5\205\305\363\206\306\363\207\306\363\210"
- "\307\363\211\307\363\202\212\307\363\202\214\310\362\1\215\310\362\202\216"
- "\310\362\202\217\311\362\202\220\311\362\203\221\311\362\207\221\312\362"
- "\203\221\311\362\202\220\311\362\202\217\311\362\202\216\310\362\1\215\310"
- "\362\202\214\310\362\202\212\307\363\12\211\307\363\210\307\363\207\306\363"
- "\206\306\363\205\305\363\204\305\363\202\305\364\202\304\364\200\304\364"
- "\200\303\364\202~\303\364\"|\302\364{\302\365y\301\365x\301\365v\300\365"
- "u\300\365t\277\366r\277\366q\276\366o\276\366m\275\366l\274\367j\274\367"
- "i\273\367g\273\367e\272\367d\272\370b\271\370`\270\370_\270\370]\267\370"
- "[\267\371Z\266\371X\266\371V\265\371T\264\372R\264\372P\263\372O\263\372"
- "M\262\372K\261\373I\261\373G\260\373F\257\373\204\0\0\0\7\203\305\363\205"
- "\305\363\205\306\363\206\306\363\207\306\363\210\307\363\211\307\363\202"
- "\212\307\363\1\213\307\362\202\214\310\362\202\215\310\362\1\216\310\362"
- "\217\217\311\362\1\216\310\362\202\215\310\362\202\214\310\362\1\213\307"
- "\362\202\212\307\3630\211\307\363\210\307\363\207\306\363\206\306\363\205"
- "\306\363\205\305\363\203\305\363\202\305\364\201\304\364\200\304\364\200"
- "\303\364~\303\364}\302\364|\302\364{\302\365y\301\365x\301\365v\300\365u"
- "\300\365t\277\366r\277\366q\276\366o\276\366n\275\366l\275\366j\274\367i"
- "\273\367g\273\367f\272\367d\272\367b\271\370a\271\370_\270\370]\270\370\\"
- "\267\371Z\266\371X\266\371W\265\371U\265\371S\264\372Q\263\372P\263\372M"
- "\262\372L\262\372J\261\373H\260\373F\260\373D\257\373\204\0\0\0\11\202\304"
- "\364\202\305\364\204\305\363\205\305\363\205\306\363\206\306\363\207\306"
- "\363\210\307\363\211\307\363\203\212\307\363\1\213\307\362\204\214\310\362"
- "\203\215\310\362\205\216\310\362\203\215\310\362\204\214\310\362\1\213\307"
- "\362\203\212\307\363\11\211\307\363\210\307\363\207\306\363\206\306\363\205"
- "\306\363\205\305\363\204\305\363\202\305\364\202\304\364\202\200\304\364"
- "'\177\303\364~\303\364}\302\364{\302\365z\301\365y\301\365x\301\365v\300"
- "\365u\300\365t\277\366r\277\366q\276\366o\276\366n\275\366l\275\366k\274"
- "\367i\274\367g\273\367f\272\367d\272\367c\271\370b\271\370_\270\370^\270"
- "\370]\267\370Z\267\371Y\266\371W\265\371U\265\371T\264\372R\264\372P\263"
- "\372N\262\372M\262\372K\261\373I\261\373G\260\373F\257\373C\257\374\204\0"
- "\0\0\10\200\304\364\201\304\364\202\304\364\203\305\363\204\305\363\205\305"
- "\363\205\306\363\206\306\363\202\207\306\363\2\210\307\363\211\307\363\204"
- "\212\307\363\202\213\307\362\211\214\310\362\202\213\307\362\204\212\307"
- "\363\2\211\307\363\210\307\363\202\207\306\3631\206\306\363\205\306\363\205"
- "\305\363\204\305\363\203\305\363\202\304\364\201\304\364\200\304\364\200"
- "\303\364\177\303\364~\303\364|\302\364{\302\365z\301\365y\301\365x\301\365"
- "v\300\365u\300\365t\277\366r\277\366q\276\366o\276\366n\275\366l\275\366"
- "k\274\367i\274\367h\273\367g\273\367d\272\367c\271\370b\271\370`\270\370"
- "^\270\370]\267\370[\267\371Z\266\371X\266\371V\265\371T\264\372R\264\372"
- "Q\263\372O\263\372M\262\372K\261\373J\261\373H\260\373F\260\373D\257\373"
- "C\256\374\204\0\0\0\1\177\303\364\202\200\304\364\6\201\304\364\202\304\364"
- "\203\305\363\204\305\363\205\305\363\205\306\363\202\206\306\363\202\207"
- "\306\363\202\210\307\363\202\211\307\363\213\212\307\363\202\211\307\363"
- "\202\210\307\363\202\207\306\363\202\206\306\363\6\205\306\363\205\305\363"
- "\204\305\363\203\305\363\202\304\364\201\304\364\202\200\304\364*\177\303"
- "\364~\303\364}\302\364|\302\364{\302\365z\301\365y\301\365w\300\365v\300"
- "\365u\300\365t\277\366r\277\366q\276\366o\276\366n\275\366l\275\366k\274"
- "\367i\274\367h\273\367g\273\367e\272\367d\272\370b\271\370`\270\370_\270"
- "\370]\270\370[\267\371Z\266\371X\266\371W\265\371U\265\371S\264\372Q\263"
- "\372P\263\372N\262\372L\262\372K\261\373H\260\373G\260\373E\257\373C\257"
- "\374A\256\374\204\0\0\0\202~\303\364\1\200\303\364\202\200\304\364\6\201"
- "\304\364\202\304\364\202\305\364\203\305\363\204\305\363\205\305\363\202"
- "\205\306\363\1\206\306\363\205\207\306\363\207\210\307\363\205\207\306\363"
- "\1\206\306\363\202\205\306\363\6\205\305\363\204\305\363\203\305\363\202"
- "\305\364\202\304\364\201\304\364\202\200\304\364\1\200\303\364\202~\303\364"
- ")|\302\364{\302\365z\301\365y\301\365x\301\365w\300\365v\300\365t\277\365"
- "t\277\366r\277\366q\276\366o\276\366n\275\366l\275\366k\274\367i\274\367"
- "h\273\367g\273\367e\272\367d\272\370b\271\370a\271\370_\270\370]\270\370"
- "\\\267\371Z\267\371X\266\371W\265\371U\265\371S\264\372R\264\372P\263\372"
- "N\262\372M\262\372K\261\373I\261\373H\260\373F\257\373D\257\373B\256\374"
- "A\256\374\204\0\0\0\2|\302\364}\302\364\202~\303\364\1\200\303\364\202\200"
- "\304\364\2\201\304\364\202\304\364\202\202\305\364\2\203\305\363\204\305"
- "\363\202\205\305\363\203\205\306\363\211\206\306\363\203\205\306\363\202"
- "\205\305\363\2\204\305\363\203\305\363\202\202\305\364\2\202\304\364\201"
- "\304\364\202\200\304\364\1\200\303\364\202~\303\364\12}\302\364|\302\364"
- "{\302\365z\301\365y\301\365x\301\365v\300\365u\300\365t\277\365s\277\366"
- "\202q\276\366\37o\276\366n\275\366l\275\366k\274\367i\274\367h\273\367g\273"
- "\367e\272\367d\272\370b\271\370a\271\370_\270\370^\270\370\\\267\371Z\267"
- "\371Y\266\371X\266\371U\265\371T\264\372R\264\372P\263\372O\263\372M\262"
- "\372K\261\373J\261\373H\260\373F\260\373E\257\373C\256\374A\256\374?\255"
- "\374\204\0\0\0\4z\301\365{\302\365|\302\364}\302\364\202~\303\364\2\177\303"
- "\364\200\303\364\202\200\304\364\1\201\304\364\202\202\304\364\1\202\305"
- "\364\202\203\305\363\204\204\305\363\205\205\305\363\204\204\305\363\202"
- "\203\305\363\1\202\305\364\202\202\304\364\1\201\304\364\202\200\304\364"
- "\2\200\303\364\177\303\364\202~\303\364-}\302\364|\302\364{\302\365z\301"
- "\365y\301\365x\301\365w\300\365v\300\365u\300\365t\277\366s\277\366q\276"
- "\366p\276\366o\276\366n\275\366l\275\366k\274\367i\274\367h\273\367g\273"
- "\367e\272\367d\272\370b\271\370a\271\370_\270\370^\270\370]\267\370[\267"
- "\371Y\266\371X\266\371V\265\371U\265\371R\264\372Q\263\372P\263\372M\262"
- "\372L\262\372K\261\373H\260\373G\260\373F\257\373C\257\374B\256\374@\255"
- "\374>\255\374\204\0\0\0\202y\301\365\4z\301\365{\302\365|\302\364}\302\364"
- "\202~\303\364\1\177\303\364\202\200\303\364\203\200\304\364\202\201\304\364"
- "\202\202\304\364\211\202\305\364\202\202\304\364\202\201\304\364\203\200"
- "\304\364\202\200\303\364\1\177\303\364\202~\303\364\4}\302\364|\302\364{"
- "\302\365z\301\365\202y\301\365\1w\300\365\202v\300\365&t\277\365t\277\366"
- "r\277\366q\276\366p\276\366o\275\366m\275\366l\275\366k\274\367i\274\367"
- "h\273\367g\273\367e\272\367d\272\370b\271\370a\271\370_\270\370^\270\370"
- "]\267\370[\267\371Z\266\371X\266\371V\265\371U\265\371S\264\372R\264\372"
- "P\263\372N\262\372M\262\372K\261\373I\261\373H\260\373F\257\373D\257\373"
- "B\256\374A\256\374?\255\374=\254\374\204\0\0\0\2v\300\365x\301\365\202y\301"
- "\365\1z\301\365\202{\302\365\2|\302\364}\302\364\202~\303\364\202\177\303"
- "\364\202\200\303\364\217\200\304\364\202\200\303\364\202\177\303\364\202"
- "~\303\364\2}\302\364|\302\364\202{\302\365\1z\301\365\202y\301\365\1x\301"
- "\365\202v\300\365\3u\300\365t\277\366s\277\366\202q\276\366#o\276\366o\275"
- "\366m\275\366l\274\367j\274\367i\274\367h\273\367g\273\367e\272\367d\272"
- "\370b\271\370a\271\370_\270\370^\270\370]\267\370[\267\371Z\266\371X\266"
- "\371W\265\371U\265\371S\264\372R\264\372P\263\372O\263\372M\262\372K\261"
- "\373J\261\373H\260\373F\260\373E\257\373C\256\374A\256\374?\255\374>\255"
- "\374<\254\374\204\0\0\0\4u\300\365v\300\365w\300\365x\301\365\202y\301\365"
- "\1z\301\365\202{\302\365\202|\302\364\1}\302\364\204~\303\364\203\177\303"
- "\364\207\200\303\364\203\177\303\364\204~\303\364\1}\302\364\202|\302\364"
- "\202{\302\365\1z\301\365\202y\301\365-x\301\365w\300\365v\300\365u\300\365"
- "t\277\365s\277\366r\277\366q\276\366p\276\366o\276\366n\275\366l\275\366"
- "l\274\367j\274\367i\273\367h\273\367g\273\367e\272\367d\272\370b\271\370"
- "a\271\370_\270\370^\270\370]\267\370[\267\371Z\266\371X\266\371W\265\371"
- "U\265\371T\264\372R\264\372P\263\372O\263\372M\262\372L\262\372J\261\373"
- "H\260\373G\260\373E\257\373C\257\374B\256\374@\255\374>\255\374<\254\374"
- ";\254\375\204\0\0\0\3t\277\366t\277\365u\300\365\202v\300\365\2w\300\365"
- "x\301\365\202y\301\365\1z\301\365\203{\302\365\202|\302\364\203}\302\364"
- "\211~\303\364\203}\302\364\202|\302\364\203{\302\365\1z\301\365\202y\301"
- "\365\2x\301\365w\300\365\202v\300\365\4u\300\365t\277\365t\277\366r\277\366"
- "\202q\276\366&o\276\366o\275\366m\275\366l\275\366k\274\367j\274\367i\273"
- "\367g\273\367f\272\367e\272\367d\272\370b\271\370a\271\370_\270\370^\270"
- "\370]\267\370[\267\371Z\266\371X\266\371W\265\371U\265\371T\264\372R\264"
- "\372Q\263\372P\263\372M\262\372L\262\372K\261\373I\261\373G\260\373F\257"
- "\373D\257\373B\256\374A\256\374?\255\374=\254\374;\254\3759\253\375\204\0"
- "\0\0\5q\276\366s\277\366t\277\366t\277\365u\300\365\202v\300\365\2w\300\365"
- "x\301\365\203y\301\365\202z\301\365\206{\302\365\205|\302\364\206{\302\365"
- "\202z\301\365\203y\301\365\2x\301\365w\300\365\202v\300\365\4u\300\365t\277"
- "\365t\277\366s\277\366\202q\276\366(p\276\366o\275\366n\275\366m\275\366"
- "l\274\367k\274\367i\274\367h\273\367g\273\367f\272\367d\272\367d\272\370"
- "b\271\370a\271\370_\270\370^\270\370]\267\370[\267\371Z\266\371X\266\371"
- "W\265\371U\265\371T\264\372R\264\372Q\263\372P\263\372N\262\372M\262\372"
- "K\261\373I\261\373H\260\373F\260\373D\257\373C\256\374A\256\374?\255\374"
- ">\255\374<\254\374:\253\3759\253\375\204\0\0\0\1p\276\366\202q\276\366\5"
- "r\277\366s\277\366t\277\366t\277\365u\300\365\202v\300\365\202w\300\365\1"
- "x\301\365\205y\301\365\211z\301\365\205y\301\365\1x\301\365\202w\300\365"
- "\202v\300\365\5u\300\365t\277\365t\277\366s\277\366r\277\366\202q\276\366"
- "*p\276\366o\276\366n\275\366m\275\366l\275\366k\274\367j\274\367i\273\367"
- "h\273\367g\273\367e\272\367d\272\367c\271\370b\271\370a\271\370_\270\370"
- "^\270\370]\267\370[\267\371Z\266\371X\266\371W\265\371U\265\371T\264\372"
- "R\264\372Q\263\372P\263\372N\262\372M\262\372K\261\373J\261\373H\260\373"
- "F\260\373E\257\373C\257\374A\256\374@\255\374>\255\374<\254\374;\254\375"
- "9\253\3757\252\375\204\0\0\0\3o\275\366o\276\366p\276\366\202q\276\366\3"
- "r\277\366s\277\366t\277\366\202t\277\365\1u\300\365\203v\300\365\203w\300"
- "\365\213x\301\365\203w\300\365\203v\300\365\1u\300\365\202t\277\365\3t\277"
- "\366s\277\366r\277\366\202q\276\366,p\276\366o\276\366o\275\366m\275\366"
- "l\275\366l\274\367j\274\367i\274\367h\273\367g\273\367f\272\367e\272\367"
- "d\272\370c\271\370b\271\370`\270\370_\270\370^\270\370]\267\370[\267\371"
- "Z\266\371X\266\371W\265\371U\265\371T\264\372R\264\372Q\263\372P\263\372"
- "N\262\372M\262\372K\261\373J\261\373H\260\373G\260\373E\257\373C\257\374"
- "B\256\374A\256\374>\255\374=\254\374;\254\3759\253\3758\253\3756\252\375"
- "\204\0\0\0\5l\275\366m\275\366n\275\366o\276\366p\276\366\203q\276\366\2"
- "r\277\366s\277\366\202t\277\366\202t\277\365\202u\300\365\215v\300\365\202"
- "u\300\365\202t\277\365\202t\277\366\2s\277\366r\277\366\203q\276\366.p\276"
- "\366o\276\366n\275\366m\275\366l\275\366l\274\367k\274\367i\274\367i\273"
- "\367h\273\367g\273\367f\272\367d\272\367d\272\370b\271\370a\271\370`\270"
- "\370_\270\370]\270\370]\267\370[\267\371Z\266\371X\266\371W\265\371U\265"
- "\371T\264\372R\264\372Q\263\372P\263\372N\262\372M\262\372K\261\373J\261"
- "\373H\260\373G\260\373F\257\373D\257\373B\256\374A\256\374?\255\374>\255"
- "\374;\254\375:\253\3759\253\3756\252\3755\252\375\204\0\0\0\10k\274\367l"
- "\274\367l\275\366m\275\366n\275\366o\275\366o\276\366p\276\366\203q\276\366"
- "\202r\277\366\202s\277\366\203t\277\366\211t\277\365\203t\277\366\202s\277"
- "\366\202r\277\366\203q\276\366\22p\276\366o\276\366o\275\366n\275\366m\275"
- "\366l\275\366l\274\367k\274\367j\274\367i\273\367h\273\367g\273\367f\272"
- "\367e\272\367d\272\370c\271\370b\271\370a\271\370\202_\270\370\35]\270\370"
- "\\\267\371Z\267\371Z\266\371X\266\371W\265\371U\265\371T\264\372R\264\372"
- "Q\263\372P\263\372N\262\372M\262\372K\261\373J\261\373H\260\373G\260\373"
- "F\257\373D\257\373C\256\374A\256\374?\255\374>\255\374<\254\374;\254\375"
- "9\253\3757\252\3756\252\3754\251\376\204\0\0\0\5i\273\367i\274\367k\274\367"
- "l\274\367l\275\366\202m\275\366\3n\275\366o\275\366o\276\366\202p\276\366"
- "\204q\276\366\205r\277\366\203s\277\366\205r\277\366\204q\276\366\202p\276"
- "\366\3o\276\366o\275\366n\275\366\202m\275\366\6l\275\366l\274\367k\274\367"
- "i\274\367i\273\367h\273\367\202g\273\367\3e\272\367d\272\367d\272\370\202"
- "b\271\370!`\270\370_\270\370^\270\370]\267\370\\\267\371Z\267\371Y\266\371"
- "X\266\371W\265\371U\265\371T\264\372R\264\372Q\263\372P\263\372N\262\372"
- "M\262\372L\262\372J\261\373H\260\373G\260\373F\257\373D\257\373C\256\374"
- "A\256\374@\255\374>\255\374<\254\374;\254\3759\253\3758\253\3756\252\375"
- "4\251\3753\251\376\204\0\0\0\10g\273\367h\273\367i\273\367i\274\367j\274"
- "\367k\274\367l\274\367l\275\366\202m\275\366\1n\275\366\202o\275\366\202"
- "o\276\366\203p\276\366\211q\276\366\203p\276\366\202o\276\366\202o\275\366"
- "\1n\275\366\202m\275\366\7l\275\366l\274\367k\274\367j\274\367i\274\367i"
- "\273\367h\273\367\202g\273\367\6f\272\367d\272\367d\272\370c\271\370b\271"
- "\370a\271\370\202_\270\370\40]\270\370]\267\370[\267\371Z\267\371Y\266\371"
- "X\266\371V\265\371U\265\371T\264\372R\264\372Q\263\372P\263\372N\262\372"
- "M\262\372L\262\372K\261\373I\261\373H\260\373F\257\373D\257\373C\256\374"
- "A\256\374@\255\374>\255\374=\254\374;\254\3759\253\3758\253\3756\252\375"
- "4\251\3753\251\3761\250\376\204\0\0\0\1e\272\367\202g\273\367\2h\273\367"
- "i\273\367\202i\274\367\2j\274\367k\274\367\202l\274\367\1l\275\366\202m\275"
- "\366\203n\275\366\213o\275\366\203n\275\366\202m\275\366\1l\275\366\202l"
- "\274\367\2k\274\367j\274\367\202i\274\367\2i\273\367h\273\367\202g\273\367"
- "\15e\272\367d\272\367d\272\370c\271\370b\271\370a\271\370`\270\370_\270\370"
- "^\270\370]\270\370\\\267\371[\267\371Z\266\371\202X\266\371\10V\265\371U"
- "\265\371T\264\372R\264\372Q\263\372P\263\372N\262\372M\262\372\202K\261\373"
- "\17I\261\373H\260\373F\260\373E\257\373C\256\374A\256\374@\255\374>\255\374"
- "=\254\374;\254\375:\253\3758\253\3756\252\3755\252\3754\251\376\2021\250"
- "\376\204\0\0\0\4d\272\370d\272\367e\272\367f\272\367\202g\273\367\1h\273"
- "\367\202i\273\367\1i\274\367\202j\274\367\1k\274\367\203l\274\367\204l\275"
- "\366\205m\275\366\204l\275\366\203l\274\367\1k\274\367\202j\274\367\1i\274"
- "\367\202i\273\367\1h\273\367\202g\273\367\10f\272\367e\272\367d\272\367d"
- "\272\370c\271\370b\271\370a\271\370`\270\370\202_\270\370\7]\270\370]\267"
- "\370[\267\371Z\267\371Y\266\371X\266\371W\265\371\202U\265\371\30S\264\372"
- "R\264\372Q\263\372P\263\372N\262\372M\262\372K\261\373J\261\373I\261\373"
- "H\260\373F\260\373E\257\373C\257\374B\256\374@\255\374>\255\374=\254\374"
- ";\254\375:\253\3759\253\3757\252\3755\252\3754\251\3762\251\376\2021\250"
- "\376\204\0\0\0\5b\271\370c\271\370d\272\370d\272\367e\272\367\202f\272\367"
- "\202g\273\367\202h\273\367\202i\273\367\202i\274\367\203j\274\367\211k\274"
- "\367\203j\274\367\202i\274\367\202i\273\367\202h\273\367\202g\273\367\202"
- "f\272\367\7e\272\367d\272\367d\272\370c\271\370b\271\370a\271\370`\270\370"
- "\202_\270\370\14^\270\370]\267\370\\\267\371Z\267\371Z\266\371Y\266\371X"
- "\266\371V\265\371U\265\371T\264\372S\264\372R\264\372\202P\263\372\24N\262"
- "\372M\262\372K\261\373J\261\373H\260\373G\260\373F\260\373E\257\373C\257"
- "\374B\256\374A\256\374?\255\374=\254\374;\254\375:\253\3759\253\3757\252"
- "\3756\252\3754\251\3752\251\376\2031\250\376\204\0\0\0\2`\270\370a\271\370"
- "\202b\271\370\3c\271\370d\272\370d\272\367\202e\272\367\1f\272\367\204g\273"
- "\367\202h\273\367\206i\273\367\1i\274\367\206i\273\367\202h\273\367\204g"
- "\273\367\1f\272\367\202e\272\367\3d\272\367d\272\370c\271\370\202b\271\370"
- "\2a\271\370`\270\370\202_\270\370\17^\270\370]\267\370\\\267\371[\267\371"
- "Z\267\371Y\266\371X\266\371W\265\371V\265\371U\265\371T\264\372R\264\372"
- "Q\263\372P\263\372O\263\372\202M\262\372\22K\261\373J\261\373H\260\373G\260"
- "\373F\257\373E\257\373C\257\374B\256\374A\256\374?\255\374>\255\374<\254"
- "\374:\253\3759\253\3757\252\3756\252\3754\251\3753\251\376\2041\250\376\204"
- "\0\0\0\202_\270\370\2`\270\370a\271\370\203b\271\370\2c\271\370d\272\370"
- "\202d\272\367\202e\272\367\202f\272\367\217g\273\367\202f\272\367\202e\272"
- "\367\202d\272\367\2d\272\370c\271\370\203b\271\370\2a\271\370`\270\370\202"
- "_\270\370\6^\270\370]\267\370\\\267\371[\267\371Z\267\371Z\266\371\202X\266"
- "\371\34V\265\371U\265\371T\264\372S\264\372R\264\372Q\263\372P\263\372O\263"
- "\372M\262\372L\262\372K\261\373J\261\373H\260\373G\260\373F\257\373D\257"
- "\373C\256\374B\256\374A\256\374?\255\374>\255\374<\254\374;\254\3759\253"
- "\3757\252\3756\252\3754\251\3753\251\376\2051\250\376\204\0\0\0\3]\267\370"
- "]\270\370^\270\370\202_\270\370\2`\270\370a\271\370\203b\271\370\202c\271"
- "\370\202d\272\370\203d\272\367\213e\272\367\203d\272\367\202d\272\370\202"
- "c\271\370\203b\271\370\2a\271\370`\270\370\202_\270\370\7^\270\370]\270\370"
- "]\267\370\\\267\371[\267\371Z\267\371Z\266\371\202X\266\371\1W\265\371\202"
- "U\265\371\1T\264\372\202R\264\372\202P\263\372\12N\262\372M\262\372L\262"
- "\372K\261\373I\261\373H\260\373G\260\373F\257\373D\257\373C\256\374\202A"
- "\256\374\11?\255\374>\255\374<\254\374;\254\3759\253\3758\253\3756\252\375"
- "4\251\3753\251\376\2061\250\376\204\0\0\0\4[\267\371\\\267\371]\267\370]"
- "\270\370\202^\270\370\202_\270\370\202`\270\370\1a\271\370\205b\271\370\204"
- "c\271\370\205d\272\370\204c\271\370\205b\271\370\1a\271\370\202`\270\370"
- "\202_\270\370\202^\270\370\6]\270\370]\267\370\\\267\371[\267\371Z\267\371"
- "Z\266\371\202X\266\371\11W\265\371V\265\371U\265\371T\264\372S\264\372R\264"
- "\372Q\263\372P\263\372O\263\372\202M\262\372\202K\261\373\10I\261\373H\260"
- "\373F\260\373F\257\373D\257\373C\256\374A\256\374@\255\374\202>\255\374\7"
- "<\254\374;\254\3759\253\3758\253\3756\252\3755\252\3754\251\376\2071\250"
- "\376\204\0\0\0\7Y\266\371Z\266\371Z\267\371[\267\371\\\267\371]\267\370]"
- "\270\370\202^\270\370\203_\270\370\203`\270\370\203a\271\370\211b\271\370"
- "\203a\271\370\203`\270\370\203_\270\370\202^\270\370\7]\270\370]\267\370"
- "\\\267\371[\267\371Z\267\371Z\266\371Y\266\371\202X\266\371\7W\265\371V\265"
- "\371U\265\371T\264\372S\264\372R\264\372Q\263\372\202P\263\372\5N\262\372"
- "M\262\372L\262\372K\261\373J\261\373\202H\260\373\20F\260\373E\257\373D\257"
- "\373C\256\374A\256\374@\255\374>\255\374=\254\374<\254\374;\254\3759\253"
- "\3758\253\3756\252\3755\252\3754\251\3762\251\376\2071\250\376\204\0\0\0"
- "\202X\266\371\2Y\266\371Z\266\371\202Z\267\371\2[\267\371\\\267\371\202]"
- "\267\370\202]\270\370\202^\270\370\221_\270\370\202^\270\370\202]\270\370"
- "\202]\267\370\2\\\267\371[\267\371\202Z\267\371\2Z\266\371Y\266\371\202X"
- "\266\371\5W\265\371V\265\371U\265\371T\264\372S\264\372\202R\264\372\202"
- "P\263\372\1O\263\372\202M\262\372\202K\261\373\13I\261\373H\260\373G\260"
- "\373F\257\373E\257\373C\257\374B\256\374A\256\374@\255\374>\255\374=\254"
- "\374\202;\254\375\6""9\253\3758\253\3756\252\3755\252\3754\251\3762\251\376"
- "\2101\250\376\204\0\0\0\3U\265\371V\265\371W\265\371\202X\266\371\1Y\266"
- "\371\202Z\266\371\1Z\267\371\202[\267\371\202\\\267\371\202]\267\370\204"
- "]\270\370\207^\270\370\204]\270\370\202]\267\370\202\\\267\371\202[\267\371"
- "\1Z\267\371\202Z\266\371\1Y\266\371\202X\266\371\2W\265\371V\265\371\202"
- "U\265\371\2T\264\372S\264\372\202R\264\372\33Q\263\372P\263\372O\263\372"
- "N\262\372M\262\372L\262\372K\261\373J\261\373I\261\373H\260\373G\260\373"
- "F\257\373D\257\373C\257\374B\256\374A\256\374@\255\374>\255\374=\254\374"
- ";\254\375:\253\3759\253\3758\253\3756\252\3755\252\3754\251\3762\251\376"
- "\2111\250\376\204\0\0\0\1T\264\372\202U\265\371\1V\265\371\202W\265\371\202"
- "X\266\371\202Y\266\371\202Z\266\371\202Z\267\371\203[\267\371\213\\\267\371"
- "\203[\267\371\202Z\267\371\202Z\266\371\202Y\266\371\202X\266\371\202W\265"
- "\371\1V\265\371\202U\265\371\2T\264\372S\264\372\202R\264\372\6Q\263\372"
- "P\263\372O\263\372N\262\372M\262\372L\262\372\202K\261\373\7I\261\373H\260"
- "\373G\260\373F\260\373E\257\373D\257\373C\256\374\202A\256\374\13?\255\374"
- ">\255\374=\254\374;\254\375:\253\3759\253\3757\252\3756\252\3755\252\375"
- "4\251\3762\251\376\2121\250\376\204\0\0\0\202R\264\372\2S\264\372T\264\372"
- "\202U\265\371\202V\265\371\1W\265\371\204X\266\371\203Y\266\371\205Z\266"
- "\371\203Z\267\371\205Z\266\371\203Y\266\371\204X\266\371\1W\265\371\202V"
- "\265\371\202U\265\371\2T\264\372S\264\372\202R\264\372\1Q\263\372\202P\263"
- "\372\2O\263\372N\262\372\202M\262\372\202K\261\373\1J\261\373\202H\260\373"
- "\22G\260\373F\257\373E\257\373C\257\374B\256\374A\256\374@\255\374?\255\374"
- ">\255\374<\254\374;\254\375:\253\3759\253\3757\252\3756\252\3754\251\375"
- "4\251\3762\251\376\2131\250\376\204\0\0\0\2P\263\372Q\263\372\202R\264\372"
- "\202S\264\372\1T\264\372\203U\265\371\202V\265\371\203W\265\371\217X\266"
- "\371\203W\265\371\202V\265\371\203U\265\371\1T\264\372\202S\264\372\202R"
- "\264\372\1Q\263\372\202P\263\372\2O\263\372N\262\372\202M\262\372\202K\261"
- "\373\17J\261\373I\261\373H\260\373G\260\373F\260\373E\257\373D\257\373C\256"
- "\374B\256\374A\256\374@\255\374>\255\374=\254\374<\254\374;\254\375\2029"
- "\253\375\5""7\252\3756\252\3754\251\3753\251\3762\251\376\2141\250\376\204"
- "\0\0\0\220B\352B\2=\322\202/|\365\304.p\376\204\0\0\0\221>\350>\1""9\315"
- "z\304*h\376\204\0\0\0\2229\3459\1)s\347\303'`\376\204\0\0\0\2224\3434\304"
- "#W\376\204\0\0\0\221.\340.\1+\272\\\304\40N\376\204\0\0\0\1\37\247\37\217"
- ")\335)\2&\263Q\35M\357\303\34E\376\1\25""4\300\377\0\0\0\377\0\0\0\222\0"
- "\0\0",
-};
-
+/* GIMP RGB C-Source image dump 1-byte-run-length-encoded (rotation_orientation_vert.c) */ + +#include "image.h" + +static const nv_image_t rotation_orientation_vert_image = { + 90, 120, 3, 0, + "\7\345\345\345\334\313\312\336\327\326\345\345\345\342\342\342\345\345\345" + "\340\340\340\202\345\345\345\1\343\343\343\203\345\345\345\3\342\342\342" + "\345\345\345\343\343\343\203\345\345\345\17\320\322\322\254\312\311\271\305" + "\325\334\334\333\276\306\312\331\332\331\327\327\327\311\311\311\340\340" + "\340\310\310\317\251\260\266\320\321\330\325\326\327\316\322\324\341\341" + "\341\243\345\345\345\3\341\341\341\344\344\344\330\330\330\202\345\345\345" + "\1\342\342\342\202\345\345\345\202\337\337\337-\345\345\345\334\334\334\343" + "\343\343\336\336\336\344\344\344\340\340\340\341\341\341\345\345\345\310" + "\310\310\307\307\307\345\345\345\336\332\332\265<6\262US\315\315\315\225" + "\225\225\242\242\242\214\214\214\273\273\273\225\225\225\251\251\251\231" + "\231\231\263\263\263\345\345\345\261\261\261\247\247\247\242\242\242\254" + "\254\254\237\237\237\311\311\311\266\277\305u\232\225\204\214\235\320\301" + "\251\264\247\202\300\276\262\277\276\274\312\312\315\321\321\321\270\270" + "\277\210\235\252\277\301\312\227\265\322\252\242\235\330\330\330\243\345" + "\345\345\10\342\342\342\344\344\344\267\267\267\237\237\237\301\301\301\226" + "\226\226\257\257\257\254\254\254\202\270\270\270\21\342\342\342\274\274\274" + "\275\275\275\213\213\213\265\265\265\213\213\213\204\204\204\343\343\343" + "\234\234\234\265\265\265\345\345\345\340\340\340\330\325\325\322\312\312" + "\335\335\335\316\316\316\305\305\305\202\325\325\325\31\320\320\320\324\324" + "\324\326\326\326\324\324\324\340\340\340\335\335\335\324\324\324\325\325" + "\325\326\326\326\324\324\324\331\331\331\337\337\337\277\303\307\301\301" + "\305\333\332\331\317\305\263\323\317\310\333\332\327\306\304\305\311\312" + "\313\327\327\330\266\303\320\326\326\326\301\306\316\252\254\273\244\340" + "\340\340\3\334\334\334\340\340\340\334\334\334\202\325\325\325\6\331\331" + "\331\323\323\323\277\277\277\320\320\320\317\317\317\327\327\327\202\334" + "\334\334\11\324\324\324\333\333\333\331\331\331\333\333\333\340\340\340\307" + "\307\307\315\315\315\340\340\340%<r\203$<qA%=q%=r&>s'?t'@u(@v)Av*Bw*Cx+D" + "y,Dz,E{-F|.F}/G~/H\1771J\2002K\2023L\2034N\2055O\2076P\2107Q\2117R\2128S" + "\2129S\213:T\214:U\215;V\216<V\217<W\220=X\221>Y\222?Y\222?Z\223@[\224A\\" + "\225A\\\226B]\227C^\230C^\231D_\232E`\233Ea\233Fb\234Gb\235Gc\236Hd\237I" + "d\240Je\241Kf\242Lg\243Mg\244Mh\244Ni\245Oj\246Ok\247Pk\250Ql\251Qm\252R" + "m\253Sn\254To\255Tp\255Up\256\225Vq\257\5\37""7p\37""8q\40""9r!:r!:s\203" + "!:r\34!;r\";s#<t$=u$>v%?w&?x&@y'Az(B{)C|)C}*D}+E~+E\177,E\200-F\200.H\202" + "/J\2041K\2062M\2103O\2114P\2135Q\2146R\2156R\2167S\2178T\220\2029U\221\37" + ":V\222;W\223<X\224<Y\225=Y\226>Z\227>[\230?\\\231@]\232A]\233A^\234B_\235" + "C`\236D`\237Da\240Eb\241Fc\241Gd\242Hd\243Ie\244Jf\245Jg\246Kh\247Lh\250" + "Li\251Mj\252Nk\253Ok\254Ol\255Pm\256Qn\257\225Ro\260\7\36""7o\37""8p\40""9" + "q\40""9r!:s\";t#<u\202#=v\1$=v\202#=u:$=v%>w%?x&@x'Ay(Az(B{)C|*D}*E~+E\177" + ",E\200-F\200-G\201.H\202/H\2030I\2040J\2051K\2062M\2104N\2125P\2136R\215" + "7S\2178T\2209U\221:V\222;W\223;W\224<X\225=Y\226=Z\227>[\230?[\231@\\\232" + "@]\232A^\234B_\234C_\235C`\236Da\237Eb\240Ec\241Gc\242Hd\243Ie\244If\245" + "Jg\246Kg\247Lh\250Li\251Mj\252Nj\253Nk\254Ol\255Pm\255Qn\256Qn\257\224Ro" + "\260\14\36""7o\37""8p\37""8q\40""9r!:s\";t\"<u#<u$=w%>w%?x&?y\204&@y6'@y" + "'Az(B{)C|)C}*D~+E\177,E\200,F\200-F\201.G\201/H\202/I\2030J\2041J\2051K\206" + "2L\2073M\2104N\2114N\2125P\2137Q\2158S\2179U\221:V\223<X\224<Y\226=Z\226" + ">Z\227?[\230?\\\231@]\232A]\233B^\234B_\235C`\236Da\237Ea\240Eb\241Fc\242" + "Hd\243He\244Ie\245Jf\246Kg\246Kh\247Li\250Mi\251Mj\252Nk\253Ol\254Pl\255" + "Pm\256Qn\257\224Ro\260\17\36""7o\36""7p\37""8q\40""9q!:r!:s\";t#<u#=v$>w" + "%>x&?y&@z'A{(A|\202)B}\204)C|2*D}+E~+E\177,E\200-F\200-G\201.H\202/I\203" + "0I\2040J\2051K\2062L\2073L\2103M\2114N\2125O\2126P\2136P\2147Q\2158R\216" + "8S\217:T\221;V\223<X\224=Y\226?[\230@\\\232A]\233A^\234B_\235C`\236D`\237" + "Da\240Eb\240Fc\241Gd\242Hd\243Ie\244Jf\245Jg\246Kg\247Lh\250Li\251Mj\252" + "Nk\253Ok\254Ol\255Pm\256Qn\257Rn\257\223Ro\260\24\35""6n\36""7o\37""8p\40" + """9q\40""9r!:s\";t\"<u#=v$=w%=s,Bu&@z'@{(A{(B|)C}*D~*D\177+E\200\202+F\200" + "1+F\177+E\177,E\200-F\200-G\201.G\202/H\203/I\2040J\2051K\2052K\2062L\207" + "3M\2104N\2115N\2125O\2136P\2147Q\2157R\2168R\2179S\220:T\221:U\222;V\223" + "<V\224=W\225>Y\226?[\231A]\233B_\235C`\236Da\237Eb\240Eb\241Gc\242Hd\243" + "Ie\244If\245Jf\246Kg\247Kh\250Li\250Mi\251Nj\252Nk\253Ol\254Pm\255Qm\256" + "Qn\257\223Ro\260\31\35""6n\36""7o\37""8p\37""8q\40""9r!:s!;t\";uHZ\201\203" + "\223\247\230\260\304\214\232\255'?w'@z'A{(B|)B}*C~*D\177+E\200,F\200,G\201" + "-H\202.I\203.I\202\202.H\202,.G\202/H\202/I\2030I\2041J\2051K\2062L\2073" + "M\2104M\2114N\2125O\2136P\2146Q\2157Q\2168R\2179S\2179T\220:T\221;U\222<" + "V\223<W\224=X\225>X\226>Y\227?Z\230@[\231B]\233C_\236Da\240Fc\241Gd\243H" + "e\244Ie\244Jf\245Jg\246Kh\247Lh\250Mi\251Mj\252Nk\253Ol\254Pl\255Pm\256Q" + "n\257\223Ro\260H\34""6n\36""6o\36""7o\37""8p\40""9q\40:r!:s\";tnz\224\215" + "\301\345\236\310\350\302\314\324\200\210\236&@z'A{(A|(B})C~*D\177+E\177+" + "E\200,G\200-H\201.I\202.J\203/J\2040K\2050L\2061L\2061K\2061K\2051J\2051" + "K\2062L\2073L\2103M\2114N\2115O\2125P\2136P\2147Q\2158R\2168S\2179S\220:" + "T\221;U\222;V\223<W\224=W\225=X\226>Y\227?Z\230@[\230@[\231A\\\232B]\233" + "C^\234D`\236Fa\240Gc\243Ie\245Jg\246Kg\247Lh\250Li\251Mj\252Nk\253Nk\254" + "Ol\255Pm\256Qn\256Qn\257\222Ro\260\40\34""5m\35""6n\36""7o\37""8p\40""8q" + "\40""9r!:s\";t|\204\230\247\304\331\271\302\311\310\313\311\210\215\232&" + "@y'@z(A{(B|)C}*D~*D\177+E\200,F\200-H\201-H\202.I\203/J\204/K\2050L\2061" + "L\2072M\2072N\2113O\211\2033N\211%3M\2104N\2115N\2125O\2136P\2147Q\2157R" + "\2168R\2179S\220:T\221:U\222;V\222<V\223<W\224=X\225>Y\226?Y\227?Z\230@[" + "\231A\\\232B]\233B]\234C^\235D_\236D`\237Ea\240Fb\241Gd\243If\245Kh\247M" + "i\251Nj\252Nk\253Ol\254Pm\255Pm\256Qn\257\222Ro\260#\33""5m\34""6n\36""7" + "o\37""7p\37""8q\40""9r!:s!;tqy\215\234\234\235Zcxgv\224Xj\204&?y&@z'A{(B" + "|)B})C~*D\177+E\200,F\200,G\201-H\202.I\202/J\203/J\2040K\2051L\2061M\207" + "2N\2103N\2114O\2124P\2135Q\214\2026Q\215\1""6Q\214\2026P\214\40""6P\2157" + "Q\2168R\2179S\2179T\220:T\221;U\222;V\223<W\224=X\225>X\226>Y\227?Z\230@" + "[\231A\\\232A\\\233B]\234C^\235D_\235D`\236E`\237Ea\240Eb\241Fc\242Gc\243" + "Hd\244Jf\246Kh\250Mj\252Ol\255Pm\256Qn\257\222Ro\260'\33""5m\34""5n\35""6" + "n\36""7o\37""8p\40""9q\40""9r!:s\";t\"<t#=v$=w%>x&?y&@z'A{(A|(B})C~*D~+D" + "\177+E\200,F\200-H\201-I\202.I\203/J\2040K\2050L\2061M\2072M\2103N\2113O" + "\2124P\2135Q\2145Q\2156R\2157S\2168T\217\2038T\220\2028S\217\36""9S\220:" + "T\221:U\222;V\223<V\224=W\225=X\226>Y\227?Z\227@Z\230@[\231A\\\232B]\233" + "B^\234C^\235D_\236E`\237Ea\240Ea\241Fb\242Gc\243Gd\244He\245Ie\246If\247" + "Jg\250Li\251Nj\253Ol\255Qn\257\220Ro\260+\33""4l\34""5m\35""6n\36""7o\37" + """8p\37""8q\40""9r@R{7LzDW\201AT\200@T\201EW\200?S\200&?y'@z'A{(B|)C}*C~" + "*D\177+E\200,F\200,H\201-H\202.I\203/J\204/K\2050L\2061L\2062M\2072N\210" + "3O\2114O\2125P\2135Q\2146R\2157S\2167S\2178T\2209U\221:V\222:V\223\203;W" + "\223\202;V\223\31<V\223<W\224=X\225>Y\226?Y\227?Z\230@[\231A\\\232B]\233" + "B]\234C^\235D_\236D`\237E`\240Ea\241Eb\241Fc\242Gd\243Hd\244He\245If\246" + "Jg\247Kg\250Kh\251Li\252\202Mj\253\3Nk\254Ol\255Qn\257\214Ro\260(\33""4l" + "\33""5m\34""6n\36""7o\36""7p\37""8q\40""9r:N{;Mx?NqHWzKZ|DTy8Js&?y&@z'A{" + "(B|)B})C~*D\177+E\200,E\200,G\200-H\201.I\202.J\203/J\2040K\2051L\2061M\207" + "2N\2103N\2113O\2124P\2135Q\2146Q\2156R\2167S\2178T\220\2029U\221\5:V\222" + ";W\223<X\224<Y\225=Y\226\202>Z\227\30>Y\227>Y\226>X\226>Y\227?Z\230@[\231" + "A[\232A\\\233B]\234C^\234C_\235D_\236E`\237Ea\240Eb\241Fb\242Gc\243Hd\244" + "He\245If\246Jf\247Jg\250Kh\251Li\252\206Mj\253\4Nk\254Ol\255Pm\256Qn\257" + "\207Ro\2603\32""4l\33""5l\34""5m\35""6n\36""7o\37""8p\40""9q\40""9r!:s\"" + ";t#<u#=v$=w%>x%?y&@z'@{(A{(B})C}*D~+D\177+E\200,F\200-H\201-I\202.I\203/" + "J\2040K\2050L\2061L\2072M\2103N\2113O\2114P\2125P\2145Q\2146R\2157S\2168" + "T\2178T\2209U\221:V\222:W\223;X\224<X\225=Y\226=Z\227>[\230?\\\231@\\\232" + "\202@]\232\1@\\\232\202@[\231\22A\\\232B]\233B^\234C^\235D_\236E`\237Ea\240" + "Ea\241Fb\242Fc\243Gd\244He\245Ie\246If\246Jg\247Kh\250Li\251Li\252\211Mj" + "\253\4Nk\254Ol\255Pm\256Qn\257\203Ro\260:\32""4k\33""4l\33""5m\35""6n\36" + """7o\37""8p\37""8q\40""9r!:s!;t\";u#<v$=w$>w%?x&?y'@z'A{(B|)C})C~*D\177+" + "E\200,F\200,G\201-H\202.I\203/J\204/K\2040K\2051L\2062M\2072N\2103O\2114" + "O\2124P\2135Q\2146R\2157S\2167S\2178T\2209U\2219V\222:V\223;W\224<X\225<" + "Y\225=Z\226>Z\227?[\230?\\\231@]\232A^\233A^\234B_\235C`\236C_\236C_\235" + "\202C^\235\16D_\236D`\237E`\240Ea\240Eb\241Fc\242Gc\243Hd\244He\245If\246" + "Jg\247Kg\250Kh\251Li\252\216Mj\253>Nk\254Ol\255\32""3k\32""4l\33""5m\34""6" + "n\36""6o\36""7p\37""8q\40""9q!:r!:s\";t#<u#=v$=w%>x&?y&@z'A{(A|)B})C~*D\177" + "+E\177+E\200,G\200-H\201.I\202.J\203/J\2040K\2050L\2061M\2072M\2103N\211" + "3O\2124P\2135Q\2146Q\2156R\2167S\2178T\2179U\2209U\221:V\222;W\223;X\224" + "<X\225=Y\226>Z\227>[\230?\\\231@\\\232A]\233A^\234B_\235C`\236C`\237Da\237" + "Eb\240Fc\241\202Fb\241\15Fa\240Ea\240Eb\241Fb\242Gc\243Gd\244He\245If\246" + "Jf\247Jg\250Kh\251Li\252Mi\252\217Mj\253A\31""3j\32""4k\33""5l\34""5m\35" + """6n\36""7o\37""8p\37""9q\40""9r!:s\";t#<u#<v$=w%>x%?y&@z'@z(A{(B|)C}*D~" + "+D\177+E\200,F\200-H\201-H\202.I\203/J\2040K\2050L\2061L\2072M\2102N\211" + "3O\2114P\2125P\2135Q\2146R\2157S\2168S\2178T\2209U\221:V\222:W\223;W\224" + "<X\225=Y\226=Z\227>[\230?[\230?\\\231@]\232A^\233B_\234B_\235C`\236Da\237" + "Eb\240Eb\241Fc\242Hd\243Ie\244Ie\245Ie\244\202Hd\244\10Gd\244Hd\244Ie\245" + "If\246Jg\247Kh\250Lh\251Li\252\217Mj\253F\31""3j\32""4k\33""4l\33""5m\35" + """6n\36""7o\37""7p\37""8q\40""9r!:s!;t\";u#<u$=v$>w%>x&?y'@z'A{(B|)B})C~" + "*D\177+E\200,F\200,G\201-H\202.I\202/J\203/K\2040K\2051L\2061M\2072N\210" + "3N\2114O\2124P\2135Q\2146R\2156R\2167S\2178T\2209U\2219V\222:V\222;W\223" + "<X\224<Y\225=Y\226>Z\227?[\230?\\\231@]\232A]\233A^\234B_\235C`\236D`\237" + "Da\240Eb\241Fc\242Gd\243Hd\243Ie\244Jf\245Jg\246Kh\247Lh\250Kh\250Kg\247" + "\202Jg\247\3Kg\250Kh\251Li\252\217Mj\2538\31""2j\32""3k\32""4l\33""5m\34" + """6n\35""6n\36""7o\37""8p\40""9q\40""9r!:s\";t#<u#=v$=w%>x&?y&@z'A{(A|(B" + "})C~*D~+E\177+E\200,F\200-H\201.I\202.I\203/J\2040K\2050L\2061M\2072M\210" + "3N\2113O\2124P\2135Q\2146Q\2156R\2157S\2168T\2178T\2209U\221:V\222;W\223" + ";X\224<X\225=Y\226>Z\227>[\230?\\\231@\\\232@]\233A^\234B_\235\202C`\236" + "\15Da\237Eb\240Fc\241Gc\242Hd\243Ie\244If\245Jg\246Kg\247Lh\250Li\251Mj\252" + "Nj\253\202Nk\253\3Mj\253Mj\252Li\252\216Mj\253O\31""2i\31""3j\32""4k\33""4" + "l\34""5m\35""6n\36""7o\37""8p\37""8q\40""8p!:s!:r\"<u#<v$=w%>x%?y&@y'@z'" + "A{(B|)C}*C~*D\177+E\200,F\200-H\201-H\202.I\203/J\204/K\2050L\2061L\2072" + "M\2072N\2103O\2114O\2125P\2135Q\2146R\2157S\2168S\2178T\2209U\221:V\222:" + "W\223;W\224<X\225=Y\226=Z\227>Z\227?[\230?\\\231@]\232A^\233B^\234B_\235" + "C`\236Da\237Eb\240Eb\241Fc\242Hd\243He\244If\245Jf\246Kg\246Kh\247Li\250" + "Mi\251Nj\252Nk\253Ol\254Pm\255Pm\256Qn\257Pm\256Ol\255Nk\254\213Mj\253L\30" + """2i\31""3j\32""3k\33""4l\33""5m\34""6n\36""7o\37""7p~{x\315\260{\227\206" + "o\270\232k9Hl#<u$=v$>w%>x&?y&@z'A{(B|)B})C~*D\177+E\200+F\200,G\201-H\201" + ".I\202.J\203/J\2040K\2051L\2061M\2072N\2103N\2114O\2124P\2135Q\2146Q\215" + "6R\2167S\2178T\2209U\2219U\222:V\223;W\223<X\224<Y\225=Y\226>Z\227>[\230" + "?\\\231@\\\232A]\233A^\234B_\235C`\236D`\237Da\240Eb\241Fc\241Gd\242Hd\243" + "Ie\244Jf\245Jg\246Kh\247Lh\250Mi\251Mj\252Nk\253Ol\254Ol\255Pm\256Qn\257" + "\204Ro\260\3Pm\256Ol\255Nk\254\207Mj\253&\30""2i\31""2j\32""3k\32""4l\33" + """5m\34""5m\35""6n\36""7o\202|x\333\271\206\321\264\210\336\300\222\225\211" + "~#<u#=v$=w%>x%?y&@z'A{(A|(B})C}*D~+D\177+E\200,F\200-H\201.I\202.I\203/J" + "\2040K\2050L\2061M\2072M\2103N\2113O\2124P\213\2025Q\214%6R\2157S\2168T\217" + "8T\2209U\221:V\222;W\223;W\224<X\225=Y\226=Z\227>[\230?[\231@\\\232@]\233" + "A^\234B_\234C_\235C`\236Da\237Eb\240Ec\241Gc\242Hd\243Ie\244If\245Jf\246" + "Kg\247Lh\250Li\251Mj\252Nj\253Nk\253Ol\254Pm\255Qn\256Qn\257\207Ro\260\3" + "Pm\256Ol\255Nk\254\203Mj\253M\30""1h\31""2i\31""3j\32""4k\33""4l\33""5m\35" + """6n\36""7olku\361\312\223\177vlle_KKX\";u#<v$=v$>w%?x&?y'@z'A{(B|)C})C~" + "*D\177+E\200,F\200,G\201-H\202.I\203/J\204/K\2040L\2051L\2062M\2072N\210" + "3O\2114O\2124P\2135Q\2146R\2157R\2167S\2178T\2209U\221:V\222:V\223;W\224" + "<X\225<Y\225=Z\226>Z\227?[\230?\\\231@]\232A]\233B^\234B_\235C`\236Da\237" + "Da\240Eb\241Fc\242Hd\243He\244Ie\245Jf\245Kg\246Kh\247Li\250Mi\251Mj\252" + "Nk\253Ol\254Pl\255Pm\256Qn\257\213Ro\260\33Pm\256Ol\255\30""1h\30""2i\31" + """2j\32""3k\33""4l\33""5m\34""6n\36""7odhy\240\205b\217`@\235jEsMA\";t#<" + "u#=v$>w%>x&?y&@z'A{(B|)B})C~*D\177\202+E\2002,G\200-H\202.I\202.J\203/J\204" + "0K\2051L\2061M\2072N\2103N\2113O\2124P\2135Q\2146Q\2156R\2167S\2178T\217" + "9U\2209U\221:V\222;W\223;X\224<Y\225=Y\226>Z\227>[\230?\\\231@\\\232A]\233" + "A^\234B_\235C`\236C`\237Da\240Eb\241Fc\241Gd\242Hd\243Ie\244Jf\245Jg\246" + "Kg\247Lh\250Li\251Mj\252Nk\253Ok\254Ol\255Pm\256Qn\257\215Ro\260N\27""1h" + "\30""1i\31""2i\31""3k\32""4k\33""5l\34""5m\35""6n\36""6n\37""8p,:fHHa&9k" + "\";t\"<u#=v$=w%>x%?y&@z'@{(A|(B|)C}*D~+D\177+E\200,F\200-H\201-H\202.I\203" + "/J\2040K\2050L\2061L\2072M\2102N\2113O\2124P\2125P\2135Q\2146R\2157S\216" + "8T\2178T\2209U\221:V\222:W\223;W\224<X\225=Y\226=Z\227>[\230?[\231@\\\232" + "@]\232A^\233B_\234B_\235C`\236Da\237Eb\240Eb\241Gc\242Hd\243Ie\244If\245" + "Jf\246Kg\247Lh\250Li\251Mi\251Nj\252Nk\253Ol\254Pm\255Qm\256Qn\257\214Ro" + "\260N\27""0g\30""1h\30""2i\31""3j\32""4k\33""4l.Du7Ly?Q|6Ju7LzAT~<P~<P\177" + "3I{#<u$=v$>w%?x&?y'@z'A{(B|)C}*C~*D\177+E\200,F\200,G\201-H\202.I\203/J\203" + "/K\2040K\2051L\2062M\2072N\2103N\2114O\2124P\2135Q\2146R\2157S\2167S\217" + "8T\2209U\2219V\222:V\223;W\223<X\224<Y\225=Z\226>Z\227?[\230?\\\231@]\232" + "A]\233A^\234B_\235C`\236Da\237Da\240Eb\241Fc\242Gd\242He\244Ie\244Jf\245" + "Jg\246Kh\247Lh\250Mi\251Mj\252Nk\253Ol\254Pl\255Pm\256Qn\257\214Ro\260O\27" + """0g\27""1h\30""2i\31""2j\32""3j\32""3k3FrDRr>Mp:Mw,An:Lt@NoCSw:Ks\";t\"" + "<u#=u$=w%>x&@y'A{(A|)B})C~*D\177+E\177+E\200,G\200-H\201.I\202.I\203/J\204" + "0K\2051L\2061M\2072M\2103N\2113O\2124P\2135Q\2146Q\2156R\2157S\2168T\217" + "8U\2209U\221:V\222;W\223;X\224<Y\225=Y\226>Z\227>[\230?\\\231@\\\232@]\233" + "A^\234B_\235C_\236C`\236Da\237Eb\240Fc\241Gc\242Hd\243Ie\244If\245Jg\246" + "Kg\247Lh\250Li\251Mj\252Nj\253Ok\254Ol\255Pm\256Qn\256Qn\257\213Ro\260\1" + "\26/e\202\27/dL\30/d\30""0e\31""1f\32""2g\33""2h\33""3i\33""4j\34""5k\35" + """5l\35""6m\36""7n\37""8o\37""9p\40""9q!:r\";s\"<t#=t$=u%>w&@x'Az(B{)C}+" + "D\177,F\200-H\201-H\202.I\203/J\204/K\2050L\2061L\2072M\2102N\2103O\2114" + "O\2125P\2135Q\2146R\2157S\2167S\2178T\2209U\221:V\222:W\223;W\224<X\225=" + "Y\226=Z\227>[\227?[\230?\\\231@]\232A^\233B^\234B_\235C`\236Da\237Eb\240" + "Eb\241Fc\242Hd\243Ie\244Ie\245Jf\246Kg\247Kh\247Li\250Mi\251Nj\252Nk\253" + "Ol\254Pm\255Qm\256Qn\257\213Ro\260O\25-a\26-b\27.c\27/d\30""0e\31""0f\32" + """1g\32""2h\33""3i\33""4j\34""4k\34""5l\35""6m\36""7n\36""8o\37""8o\40""9" + "p!:q!;r\";s#<t#=u$>v%?w&?x&@y'Az(B{)C|*D~,F\200-H\201.J\203/J\2040K\2051" + "L\2061M\2072N\2103N\2114O\2124P\2135Q\2146R\2156R\2167S\2178T\2209U\2219" + "U\222:V\223;W\223<X\224<Y\225=Y\226>Z\227?[\230?\\\231@]\232A]\233A^\234" + "B_\235C`\236D`\237Da\240Eb\241Fc\242Gd\243Hd\243Ie\244Jf\245Jg\246Kh\247" + "Lh\250Mi\251Mj\252Nk\253Ol\254Pl\255Pm\256Qn\257\211Ro\260FPm\256Ol\255\25" + ",a\26-b\26.c\27/d\30/e\31""0f\31""1g\32""2h\33""2h\33""3i\33""4j\34""5k\35" + """6l\35""7m\36""7n\37""8o\40""9p\40:q!:r\";s\"<t#=u$>v%>w%?x&@x'Ay(Az(B{" + ")C|*D}*E~+E\200-G\201/J\2040L\2061M\2072M\2103N\2113O\2124P\2135P\2146Q\215" + "6R\2157S\2168T\2178T\2209U\221:V\222;W\223;X\224<X\225=Y\226>Z\227>[\230" + "?\\\231@\\\232@]\233A^\233B_\234C_\235C`\236Da\237Eb\240Ec\241Gc\242Hd\243" + "Gc\242\202Fb\242\12Fc\242Gd\243If\246Li\251Nj\253Nk\253Ol\254Pm\255Qm\256" + "Qn\257\205Ro\260\2Pm\256Nk\254\203Mj\253\23\25,a\25-b\26-c\27/d\30""1g\31" + """2j\32""3k\33""4l\33""5m\35""6n\36""7n\36""7o\37""8p\40""9r!:s\";t\";u#" + "<u$=v\202$>w\1%>x\202%?x'&?x&@x'@y'Az(B{)C|*D}*D~+E\177,E\200,F\200.H\202" + "0K\2052M\2072N\2103O\2114O\2124P\2135Q\2146R\2157S\2167S\2178T\2209U\221" + ":V\222:V\223;W\224<X\225<Y\226=Z\227>Z\227?[\230?\\\231@]\232A^\233B^\234" + "B_\235C`\236Da\237\202Eb\240\23Ea\237D_\236D`\237E`\240Ea\241Fb\242Fc\242" + "Gd\243Hd\244Kg\247Nk\253Ol\254Pm\255Pm\256Qn\257Ro\260Qn\257Pm\256Nk\254" + "\206Mj\253\32\24,`\25,a\26/d\30""1h\30""2i\31""3j\32""3k\32""4l\33""5l+@" + "mFY\2000Es\37""8q\40""9q!:r!:s\";t#<u$=v$>w%>x&?y&@z'A{(B|)B}\203)C}\22)" + "C|)C}*D}+E~+E\177,E\200-F\200.G\201/I\2031M\2073N\2113O\2124P\2135Q\2146" + "Q\2156R\2167S\2178T\220\2029U\221\14:V\222;W\223;X\224<Y\225=Y\226>Z\227" + ">[\230?\\\231@\\\232A]\233A^\234B_\235\202C`\236\17C_\235B]\234C^\234C_\235" + "D_\236E`\237Ea\240Eb\241Fb\242Gc\243Hd\244He\245Jf\246Li\252Nk\253\202Nk" + "\254\212Mj\253\36\24+`\25-b\27""0g\27""1h\30""2i\31""2j\32""3k\32""4l;Mr" + "\225\230\234\315\317\321\237\244\252-Ao\40""9q\40""9r!:s\";t\"<u#=v$=w%>" + "x%?y&@z'@{(A|(B|)C}*D~+D\177+E\200\202,F\2001+F\200+E\177,E\200-F\200-G\201" + ".G\202/H\2032M\2073O\2124P\2125P\2145Q\2146R\2157S\2168T\2178T\2209U\221" + ":V\222;W\223;X\224<X\225=Y\226=Z\227>[\230?[\231@\\\232@]\233A^\233B^\234" + "A]\233@\\\232A\\\232B]\233B]\234C^\235D_\236E`\237Ea\240Ea\241Fb\242Gc\243" + "Gd\244He\245Ie\245If\246Jg\247Kh\250Li\251Li\252\211Mj\253#\24+`\25.d\26" + """0f\27""0g\30""1h\31""2i\31""3j\32""4k+Am\241\257\275\226\241\253\214\230" + "\243#9h\37""8q\40""9r!:s\";t\";u#<v$=v$>w%?x&?y'@z'A{(B|)B}*C~*D\177+E\200" + ",F\200,G\201-H\202.I\202-H\201\202-F\200\27.G\201.H\202/I\2043N\2114O\212" + "4P\2135Q\2146R\2157R\2167S\2178T\2209U\2219V\222:V\223;W\224<X\225<Y\226" + "=Y\226>Z\227?[\230?\\\231@]\232@\\\231\202?Z\230\23@[\231A\\\232A\\\233B" + "]\234C^\235D_\236D`\237E`\240Ea\240Fb\241Fc\242Gd\243Hd\244He\245If\246J" + "g\247Kg\250Kh\251Li\252\210Mj\2531Nk\254\24+_\25.d\26/f\27""0g\27""1h\30" + """2i\31""3j\32""3k\33""3g\312\312\313\245\245\246\233\234\236\36""6m\37""8" + "p\40""9q!:r!:s\";t#<u#=v$>w%>x&?y&@z'A{(A|)B})C~*D\177+E\177+E\200,G\200" + "-H\201.I\202.J\203/J\204.H\203.G\201.H\202/H\2031K\2053O\2124P\2135Q\214" + "6Q\2156R\2167S\2178T\217\2029U\221\10:V\222;W\223;X\224<X\225=Y\226>Z\227" + ">[\230>Z\227\202=X\226\26>Y\227?Z\230@[\231@[\232A\\\232B]\233C^\234C^\235" + "D_\236E`\237Ea\240Eb\241Fb\242Gc\243Gd\244He\245If\246Jf\247Jg\250Kh\251" + "Li\252Lj\252\205Mj\253UNk\254Pm\256Ro\260\23+_\25-b\26/f\27""0g\27""1h\30" + """1i\31""2j\31""3j\32""4kku\214\202\205\215U`z\36""7o\37""8p\40""8q\40""9" + "r!:s\";t#<u#<v$=w%>x%?y&@z'@z(A{(B|)C}*D~*D\177+E\200,F\200-H\201-H\202." + "I\203/J\2040K\205/I\203.G\202/H\203/I\2043N\2114P\2125P\2135Q\2146R\2157" + "S\2168T\2178T\2209U\221:V\222:W\223;W\224<X\225=Y\226<Y\225<W\224<V\224=" + "W\224=X\225>Y\226?Y\227?Z\230@[\231A\\\232B]\233B]\234C^\235D_\236E`\237" + "Ea\240Ea\241Fb\242Fc\243Gd\244Hd\244Ie\245If\246Jg\247Kh\250Kh\251Li\252" + "\203Mj\253\2Nk\254Qn\257\203Ro\260U\23*_\24+`\26/e\26""0f\27""0g\30""1h\30" + """2i\31""3j\32""3k\33""4l\33""5m\35""6n\36""7o\37""8p\37""8q\40""9r!:s!;" + "t\";t#<u$=v$>w%?x&?y'@z'A{(B|)B})C~*D\177+E\200,F\200,G\201-H\202.I\203/" + "J\203/J\2040K\205.H\202/H\202/I\2031K\2064O\2124P\2135Q\2146R\2157R\2167" + "S\2178T\2209U\2219U\222:V\223;W\223;W\224:U\222:U\221;U\222;V\223<W\224=" + "X\225>X\226>Y\227?Z\230@[\231A\\\232A\\\233B]\234C^\235C_\236D`\237Fb\241" + "Gc\243Fb\242Fc\242Gc\243Hd\244He\245If\246Jg\247Kg\250Kh\251Li\252Mj\253" + "Nk\254Qn\257\205Ro\260J\23*^\24+_\24,b\26/f\27""0g\27""1h\30""2i\31""2j5" + "JyCRsDV|Q_\2000Es\36""7o\37""8p\40""9q\40:r!:s\";t#<u#=v$=w%>x&?y&@z'A{(" + "A|(B})C~*D~+E\177+E\200,G\200-H\201.I\202.I\203/J\2040K\205/J\205.H\202/" + "H\2030I\2043O\2124P\2135Q\2146Q\2156R\2157S\2168T\2178U\2209U\221:U\2219" + "T\2208S\2179S\220:T\221;U\222;V\223<W\224=W\225=X\226>Y\227?Z\227@Z\231@" + "[\231A\\\232B]\233B^\234D`\237Gc\242Ie\244If\245Jf\246He\244\202Gd\244\7" + "He\245Ie\246Jf\247Jg\250Li\251Nk\254Qn\257\207Ro\260S\23*^\23*_\24+`\25-" + "b\26/f\27""0h\30""1i\31""2i\36""7m#9h3Gr-Am#:m\36""7o\37""8p\37""8q\40""9" + "r!:s\";t\"<u#<v$=w%>x%?x&?z'@z(A{(B|)C}*C~*D\177+E\200,F\200-H\201-H\202" + ".I\203/J\204/K\2050K\206.H\202/H\203/I\2032M\2104O\2125P\2135Q\2146R\215" + "7S\2167S\2178T\2207R\2167Q\2157R\2168R\2179S\220:T\221:U\222;U\222<V\223" + "<W\224=X\225>Y\226?Y\227?Z\230@[\231A\\\232B]\233Da\237Fc\242Hd\243He\244" + "Ie\245Jf\246Kg\247Kh\247Kh\250Lh\250Li\251Mj\252Ok\254Pm\255Pm\256Qn\257" + "\207Ro\260S\22)]\23*^\24+_\24,`\25-b\27/e\30""1h\30""2i\31""3j\32""3k\33" + """4l\33""5m\34""6n\36""7o\37""7p\37""8q\40""9q!:r!;s\";t#<u$=v$>w%>x&?y&" + "@z'A{(B|)B})C~*D\177+E\200,E\200,G\201-H\202.I\203.J\203/J\2040K\205.H\203" + ".H\202/I\2031K\2064O\2124P\2135Q\2146R\2156R\2166Q\2145O\2136P\2146P\215" + "7Q\2158R\2169S\2179T\220:T\221;U\222;V\223<W\224=X\225>X\226>Y\227?Z\230" + "@[\231A]\233Da\237Eb\241Fc\241Gd\242Hd\243Ie\244Jf\245Jg\246Kh\247Lh\250" + "Li\251Mj\252Nk\253Ok\254Ol\255Pm\256Qn\257\207Ro\260T\22)]\23*^\23+_\24+" + "`\25,a\26-b\27.d\30""1g\31""2j\32""3k\32""4l\33""5l\34""5m\35""6n\36""7o" + "\37""8p\40""9q\40""9r!:s\";t#<u#=v$=w%>x%?y&@z'A{(A|(B|)C}*D~+D\177+E\200" + ",F\200-H\201.I\202.I\203/J\2040K\205/I\203.G\202/H\2030I\2043O\2114P\213" + "5P\2134O\2123M\2114N\2115O\2125O\2136P\2147Q\2158R\2168S\2179S\220:T\221" + ":U\222;V\223<V\224=W\225=X\226>Y\226?Z\230A]\233C`\236Da\237Eb\240Ec\241" + "Gc\242Hd\243Ie\244If\245Jf\246Kg\247Kh\250Li\251Mj\252Nj\253Nk\254Ol\255" + "Pm\255Qn\256Qn\257\206Ro\260-\22)]\23*^\23*_\24+`\25,a\25-a\26.b\27.c\30" + "/e\31""1h\32""3k\33""4l\33""5m\35""6n\36""7o\37""8p\37""8q\40""9r!:s\";t" + "\";u#<v$=v$>w%?x&?y'@z'A{(B|)C}*C~*D\177+E\200,F\200,G\201-H\202.I\203/J" + "\204/K\205.I\203.G\201/H\202/I\2032N\2103N\211\2022L\207%3M\2104M\2114N\212" + "5O\2136P\2147Q\2157Q\2168R\2179S\2209T\221:U\221;U\222<V\223<W\224=X\225" + ">Y\227A]\233B_\235C`\236Da\237Da\240Eb\241Fc\242Hd\243He\244Ie\245Jf\245" + "Kg\246Kh\247Lh\250Mi\251Mj\252Nk\253Ol\254Pl\255Pm\256Qn\257\206Ro\260\202" + "\22)]\36\23*^\24+_\24,`\25,a\26-b\27.c\27/d\30""0e\31""0f\32""2h\33""4k\34" + """6m\36""6o\36""7p\37""8p\40""9q!:r!:s\";t#<u#=v$>w%>x&?y&@z'A{(A|)B})C~" + "*D\177\202+E\2001,G\200-H\201.I\202.J\203/J\204.H\202.G\201.H\202/I\2030" + "J\2041J\2051K\2062L\2073L\2103M\2114N\2125O\2126P\2136P\2147Q\2158R\2168" + "S\2179T\220:T\221;U\222;V\223<W\224>Y\226@]\232A^\234B_\235C`\236C`\237D" + "a\237Eb\240Fc\241Gd\242Hd\243Ie\244Jf\245Jg\246Kg\247Lh\250Li\251Mj\252N" + "k\253Ok\254Ol\255Pm\256\203Qn\257\4Pm\256Ol\255Nk\254Mj\253\202\22)]Q\23" + "*^\23+_\24+`\25,a\26-b\26.c\27/d\30/e\30""0e\31""1f\32""2g\33""2i\34""4k" + "\35""6n\37""8p\40""9q\40""9r!:s\";t#<u#=v$=w%>x%?y&@z'@{(A{(B|)C}*D~*D\177" + "+E\200,F\200-H\201-H\202.I\203/J\204.H\202-G\201.G\202/H\203/I\2040J\205" + "1K\2062K\2062L\2073M\2104N\2115O\2125O\2136P\2147Q\2157R\2168R\2179S\220" + ":T\221:U\222;V\223=Y\226@\\\231@]\232A^\233B_\234C_\235C`\236Da\237Eb\240" + "Eb\241Fc\242Hd\243Ie\244If\245Jf\246Kg\247Kh\250Li\251Mi\251Nj\252Nk\253" + "Mj\253Mj\252\202Li\252\205Mj\253'\23+a\22)]\22)^\23*_\24+`\25,`\25-a\26-" + "b\27.c\27/d\30""0e\31""1f\32""1g\32""2h\33""3i\33""4j\34""5k\35""6n\37""8" + "p!:s!;t\";u#<u$=v$>w%?x&?y'@z'A{(B|)B}*C~*D\177+E\200,F\200,G\201-H\202." + "I\203.I\202\202-F\200,.G\201/H\202/I\2030J\2041J\2051K\2062L\2073M\2104M" + "\2114N\2125O\2136P\2147Q\2157Q\2168R\2179S\2179T\220:U\222=Y\226>[\230?\\" + "\231@]\232A]\233A^\234B_\235C`\236Da\237Da\240Eb\241Fc\242Gd\243He\244Ie" + "\245Jf\245Jg\246Kh\247Lh\250Kg\247Jg\247If\246Jg\247Kg\250Kh\251Li\252\205" + "Mj\253V\23,b\23+a\22)^\23*^\24+_\24,`\25,a\26-b\27.c\27/d\30""0e\31""0f\31" + """1g\32""2h\33""3i\33""3j\33""4j\34""5k\35""6l\36""7n\37""8p!:s#<u#=v$=w" + "%>x&?y&@z'A{(A|(B})C~*D\177+E\177+E\200,G\200-H\201,F\200+E\177,E\200-F\200" + ".G\201.H\202/H\2030I\2040J\2051K\2062L\2073L\2103M\2104N\2125O\2125P\213" + "6P\2147Q\2158R\2168S\217:U\222=Y\226=Z\227>[\230?\\\231@\\\232@]\233A^\234" + "B_\235C_\236C`\236Da\237Eb\240Ec\241Gc\242Hd\243Ie\244Jf\245If\245He\244" + "Gd\243Gd\244He\245If\246Jf\247Jg\250Kh\250Li\251Mi\253\204Mj\253\202\23," + "bF\23,a\23*_\23+_\24+`\25,a\26-b\26.c\27.c\30/e\30""0e\31""1f\32""2g\33""2" + "h\33""3i\33""4j\34""5k\35""5l\35""6m\36""7n\37""8o\40""9p!;s#<u%>w%?y&@y" + "'@z'A{(B|)C}*D~*D\177+E\200+E\177*D}*D~+E\177,E\200-F\200-G\201.G\202/H\203" + "/I\2030J\2041J\2052K\2062L\2073M\2104N\2115N\2125O\2136P\2147Q\2158R\217" + ":V\222<X\225=Y\226=Z\227>Z\230?[\230?\\\231@]\232A^\233B^\234B_\235C`\236" + "Da\237Eb\240Eb\241Fc\242\202Hd\243\14Fb\241Ea\241Fb\242Fc\243Gd\243Hd\244" + "Ie\245If\246Jg\247Kh\250Kh\251Li\252\203Mj\253\1Nk\254\204\23,b\36\23+`\24" + "+_\25,`\25-a\26-b\27.c\27/d\30""0e\31""0f\32""1g\32""2h\33""3i\33""4j\33" + """4k\34""5l\35""6m\36""7n\36""8n\37""8o\40""9p!:q!;s#<u%>w&@z'A{(B|)B})C" + "~*C~\202)C|4)C}*D~+E~+E\177,F\200-F\200.G\201.H\202/I\2030I\2041J\2051K\206" + "2L\2073M\2103M\2114N\2125O\2136P\2148S\217:V\222;W\223<X\224<Y\225=Y\226" + ">Z\227>[\230?\\\231@]\232A]\233A^\234B_\235C`\236Da\237Da\240Eb\241Eb\240" + "D`\237D_\236E`\237Ea\240Eb\241Fc\242Gc\243Hd\244He\245If\246Jf\247Jg\250" + "Kh\251Li\252Nl\254Pm\256\202Ro\260\204\23,b\33\24-c\24,b\24+`\25,a\26-b\26" + ".c\27/d\30/e\31""0f\31""1g\32""2h\33""3i\33""3j\33""4j\34""5k\35""6l\35""6" + "m\36""7n\37""8o\40""9p\40:q!:r\";s#<t#=u%>w&@y\202(A{#'Az(Az(B{)C|*D}*E~" + "+E\177,E\200-F\200-G\201.H\202/H\2030I\2040J\2051K\2062K\2072L\2073M\210" + "4N\2115P\2138S\2179U\221:V\222;W\223;X\224<X\225=Y\226=Z\227>[\230?[\231" + "@\\\232@]\233A^\234B_\234C_\235\202C`\236\202C^\234\17C^\235D_\236E`\237" + "Ea\240Ea\241Fb\242Gc\243Gd\244He\245Ie\246Jg\247Li\252Ol\254Qm\256Qn\257" + "\203Ro\260\204\23,b\3\24-c\24-d\25.d\202\25-b9\26.b\27.c\30/d\30""0e\31""1" + "f\32""1g\33""2h\33""3i\33""4j\34""5k\34""5l\35""6m\36""7n\37""8o\37""9p\40" + """9q!:r\";r\"<s#<t$=u$>v%?w&@x'@y'Az(B{)C|)D}*D~+E\177,E\200,F\200-F\201" + ".G\201/H\202/I\2030J\2041J\2052K\2062L\2073M\2105P\2147S\2178T\2209U\221" + ":V\222:V\223;W\224<X\225<Y\225=Z\227>Z\227?[\230?\\\231@]\232A^\233\202B" + "^\234\202A\\\232\21B]\233B]\234C^\235D_\236D`\237E`\240Ea\241Fb\241Fc\242" + "Gd\244Jf\247Li\251Nk\253Ol\254Pl\255Pm\256Qn\257\202Ro\260\1Qn\257\205\23" + ",b1\24-c\25.d\25/e\26.e\26.c\27.c\27/d\30""0e\31""0f\32""1g\32""2h\33""3" + "i\33""3j\33""4k\34""5k\35""6m\36""7m\36""8n\37""8o\40""9p\40:q!;r\";s#<t" + "#=u$>v%?w&?x&@y'Az(B{)B|)C}*D}+E~+E\177,E\200-F\200.G\201.H\202/I\2030I\204" + "1J\2051K\2062L\2075P\2146R\2167S\2178T\220\2029U\221\37:V\222;W\223<X\224" + "<Y\225=Y\226>Z\227>[\230?\\\231@\\\232@]\232?[\230?Z\230@[\231A[\232A\\\233" + "B]\233C^\234C_\235D_\236E`\237Ea\240Fb\242Ie\245Lh\250Mi\251Mj\252Nk\253" + "Ok\254Ol\255Pm\256Qn\257\202Ro\260\1Ol\255\205\23,bU\24-c\24.d\25.e\26/f" + "\27""0g\27""0f\27/e\30/e\31""0f\31""1f\32""2h\33""2h\33""3i\33""4j\34""5" + "k\35""6l\35""6m\36""7n\37""8o\40""9p\40:q!:r\";s\"<t#=u$=v%>v%?x&@x'Ay(A" + "z(B{)C|*D}*E~+E\177,E\200-F\200-G\201.G\202/H\2030I\2040J\2051K\2064P\213" + "5Q\2146R\2157S\2168T\2178T\2209U\221:V\222:W\223;W\224<X\225=Y\226=Z\227" + ">[\230?[\231?[\230>X\226>Y\226?Z\227@Z\230@[\231A\\\232B]\233B^\234C^\235" + "D_\236E`\237Gc\243Jf\246Kg\247Lh\250Li\251Mj\252Nj\252Nk\254Ol\254Pm\255" + "Qn\256Qn\257Ro\260Nk\254\205\23,b\6\23,c\24-d\25.e\26/f\26""0f\27""0g\202" + "\30""1hM\31""1g\31""1f\32""1g\32""2h\33""3i\33""4j\34""5k\34""5l\35""6m\36" + """7n\36""8o\37""8p\40""9q!:q!;r\"<s#<t$=u$>v%?w&@x&@y'Az(B{)C|)D}*D~+E\177" + ",E\200,F\200-F\200.G\201.H\202/I\2030I\2043N\2114P\2135Q\2146R\2157R\216" + "7S\2178T\2209U\221:V\222:V\223;W\224<X\224<Y\225=Z\226>Z\227=X\226<W\224" + "=X\225>X\226>Y\227?Z\230@[\231A\\\232A\\\233B]\234C^\235E`\237Hd\243Ie\245" + "Jf\245Kg\246Kh\247Lh\250Mi\251Mj\252Nk\253Ol\254Pl\255Pm\256Qn\257Pm\256" + "Mj\253\206\23,b\13\24-c\25.d\25/e\26/f\27""0g\30""1h\30""2i\31""2j\32""3" + "k\32""3j\32""3i\202\33""3i+\33""4k\34""5k\35""6l\36""7m\36""7n\37""8o\40" + """9p\40:q!:r\";s#<t#=u$>v%?w&?x&@y'Az(Bz(B{)C|*D}+E~+E\177,E\200-F\200.G" + "\201.H\202/H\2030I\2043N\2114P\2135Q\2146Q\2156R\2167S\2178T\2179U\2209U" + "\221:V\222;W\223;X\224<Y\225=Y\225\202;V\223\5<W\224=W\225>X\226>Y\227?Z" + "\230\202@[\231\23A\\\232B]\233D`\237Gd\242Hd\243Ie\244Jf\245Jg\246Kg\247" + "Lh\250Li\251Mj\252Nk\253Ok\254Ol\255Pm\256Qn\257Nk\254Mj\253\206\23,b\13" + "\24-c\24.d\25.e\26/f\27""0g\27""1h\30""1h\31""2i\31""3j\32""4k\33""5l\202" + "\34""5l(\33""4k\34""5k\35""6l\35""6m\36""7n\37""8o\37""9p\40""9q!:r\";s\"" + "<t#=u$=v%>v%?w&@x'@y'Az(B{)C|*D}*D~+E\177,E\200-F\200-G\201.G\202/H\2030" + "I\2030J\2054O\2125P\2135Q\2146R\2157S\2168T\2178T\2209U\221:V\222:W\223\202" + ";W\224\31:U\221:U\222;V\223<V\223<W\225=X\225>Y\226?Y\227?Z\230@[\231A\\" + "\232C`\236Eb\241Fc\242Hd\243Ie\244If\245Jf\246Kg\247Kh\250Li\250Mj\251Nj" + "\252Nk\253Ol\254\202Pm\255\2Li\252Mj\253\206\23,b\16\23-c\24-c\25.d\25/e" + "\26""0f\27""0g\30""1h\30""2i\31""3j\32""4k\33""4l\33""5m\35""6n\36""7o\202" + "\34""5lD\35""6m\36""7n\36""8o\37""8o\40""9p!:q!;r\"<s#<t$=u$>v%?w&?x&@y'" + "Az(B{)C|)C}*D~+E\177,E\177,E\200-F\200.G\201.H\202/I\2030I\2042L\2074P\213" + "5Q\2146R\2157R\2167S\2178T\2209U\2219V\222:V\223:U\2219S\2209T\220:U\221" + ";U\222;V\223<W\224=X\225>X\226>Y\227?Z\230@[\231B_\235Da\240Eb\241Fc\242" + "Gd\243He\243Ie\244Jf\245Jg\246Kh\247Lh\250Mi\251Mj\252Nk\253Ol\254Ol\255" + "Mj\253Li\252Mj\253\207\23,b\14\24-c\25.d\25/e\26/f\27""0g\27""1h\30""2i\31" + """2j\32""3k\32""4l\33""5m\34""5l\202\33""4jE\34""5k\35""6l\35""6m\36""7n" + "\37""8o\40""9p\40:q!:r\";s#<t#=u$>v%>w&?x&@y'Ay(Bz(B{)C|*D}+E~+E\177,E\200" + "-F\200-G\201.H\202/H\2030I\2040J\2053N\2105Q\2145Q\2156R\2167S\2168T\217" + "8T\2209U\2218S\2178R\2168S\2179S\220:T\221;U\222;V\223<V\224=W\225=X\226" + ">Y\227?Z\230A]\233C`\236Da\237Eb\240Fc\241Gc\242Hd\243Ie\244If\245Jf\246" + "Kg\247Lh\250Li\251Mj\252Nk\253Nk\254Ol\254Kh\251Li\251Li\252\207\23,b2\24" + "-c\24-d\25.e\26/f\26""0g\27""1h\30""1i\31""2i\31""3j\32""3j\32""2i\33""2" + "h\33""3i\33""4j\34""5k\34""5l\35""6m\36""7n\37""8o\37""9p\40""9q!:r!;s\"" + "<t#=t$=u$>v%?w&@x'@y'Az(B{)C|*D}*D~+E\177,E\200,F\200-G\201.G\202/H\202/" + "I\2030J\2041J\2054O\2125Q\2146R\2157S\2168S\2178T\217\2027Q\215\37""7Q\216" + "8R\2179S\220:T\221:U\222;V\222<V\223<W\224=X\225>Y\226@\\\232B_\235C`\236" + "Da\237Eb\240Eb\241Fc\242Hd\243He\244Ie\245Jf\246Kg\247Kh\247Li\250Mi\251" + "Mj\252Nk\253Mj\252Kh\250Kh\251Li\252\210\23,b\5\24-c\25.d\25/e\26/f\27""0" + "g\202\30""1h*\30""1g\31""0f\32""1g\32""2h\33""3i\33""4j\33""4k\34""5l\35" + """6l\36""7m\36""8n\37""8o\40""9p!:q!;r\";s#<t#=u$>v%?w&?x&@y'Az(B{)C|)C}" + "*D}+E~+E\177,E\200-F\200.G\201.H\202/I\2030I\2040J\2052L\2075Q\2146R\215" + "6R\2166R\2155O\213\2026P\214\37""7Q\2158R\2169S\2179T\220:T\221;U\222;V\223" + "<W\224=W\225?Z\230A^\234B_\235C`\236Da\237Da\240Eb\241Fc\241Gd\243Hd\243" + "Ie\244Jf\245Jg\246Kh\247Lh\250Mi\251Mj\252Nk\253Kg\247Kg\250Kh\251Li\252" + "\210\23,bR\24-c\24.d\25.e\26/f\27""0g\27/e\27/d\30/e\31""0f\31""1g\32""2" + "h\33""2h\33""3i\33""4j\34""5k\35""6l\35""6m\36""7n\37""8o\40""9p\40:q!:r" + "\";s\"<t#=u$=v%>w%?w&@x'Ay(Az(B{)C|*D}*E~+E\177,E\200-F\200-G\201.G\202/" + "H\203/I\2040J\2051K\2063N\2115Q\2145P\2134N\2115O\2125O\2136P\2147Q\2157" + "R\2168S\2179S\220:T\221:U\222;V\223<V\224=X\226@]\232A^\233B_\235C_\235C" + "`\236Da\237Eb\240Ec\241Gc\242Hd\243Ie\244If\245Jf\246Kg\247Lh\250Li\251M" + "j\252Li\251If\246Jg\247Kh\250Li\251\210\23,bR\23-c\24-d\25.e\25.c\25-b\26" + ".b\27.c\30/d\30""0e\31""1f\32""1g\32""2h\33""3i\33""4j\34""5k\34""5l\35""6" + "m\36""7n\37""8o\37""8p\40""9q!:r!;r\"<s#<t$=u$>v%?w&@x&@y'Az(B{)C|)C}*D~" + "+E\177,E\200,F\200-F\200.G\201/H\202/I\2030J\2041J\2051K\2063N\2113M\210" + "4M\2114N\2125O\2136P\2147Q\2157Q\2168R\2179S\2209T\220:U\221;U\222<W\224" + "?[\231@]\232A^\233B^\234B_\235C`\236Da\237Da\240Eb\241Fc\242Hd\243He\244" + "Ie\245Jf\246Kg\246Kh\247Li\250Mi\251Jf\246If\246Jg\247Kg\250Kh\251\211\23" + ",b1\24,b\24+`\24,`\25,a\26-b\27.c\27/d\30""0e\31""0f\31""1g\32""2h\33""3" + "i\33""3j\33""4k\34""5l\35""6l\36""7m\36""7n\37""8o\40""9p\40:q!;r\";s#<t" + "#=u$>v%>w&?x&@y'Az(B{(B|)C}*D}+E~+E\177,E\200-F\200-G\201.H\202/I\2030I\204" + "0J\2051K\2062L\2073L\2103M\2114N\2125O\213\2026P\214\27""7Q\2158R\2168S\217" + "9S\220:T\221;U\222=Z\227?\\\231@\\\232A]\233A^\234B_\235C`\236C`\237Da\237" + "Eb\240Fc\241Gd\242Hd\243Ie\244Jf\245Jg\246Kg\247\202Lh\250\5He\245If\246" + "Jf\247Jg\250Kh\251\207\23,bS\23+a\22*^\23*^\23+_\24+`\25,a\26-b\26.c\27." + "d\30/e\31""0f\31""1f\32""2g\33""2h\33""3i\33""4j\34""5k\35""6l\35""6m\36" + """7n\37""8o\37""9p\40""9q!:r\";s\"<t#=u$=v%>v%?w&@x'Ay(Az(B{)C|*D}*E~+E\177" + ",E\200,F\200-G\201.G\202/H\203/I\2030J\2051K\2062K\2062L\2073M\2104N\211" + "4O\2125O\2136P\2147Q\2157R\2168R\2179S\220:T\221<W\224>[\230?[\231@\\\231" + "@]\232A^\233B_\234C_\235C`\236Da\237Eb\240Eb\241Gc\242Hd\243Ie\244If\245" + "Jf\246Kg\247Kh\250If\246Hd\245Ie\245If\246Jg\247Kh\250\205\23,b\2\23+a\22" + "*^\202\22)]Q\22)^\23*_\24+`\25,`\25-a\26-b\27.c\30/d\30""0e\31""1f\32""1" + "g\32""2h\33""3i\33""4j\34""4k\34""5l\35""6m\36""7n\36""8o\37""8p\40""9p!" + ":q!;r\"<s#<t$=u$>v%?w&@x&@y'Az(B{)C|)D}*D~+E\177,E\200,F\200-F\200.G\201" + "/H\202/I\2030I\2041J\2051K\2062L\2073M\2104M\2114N\2125O\2136P\2147Q\215" + "7Q\2168R\2179S\217:U\221=Y\226>Z\227?[\230?\\\231@]\232A]\233A^\234B_\235" + "C`\236Da\237Da\240Eb\241Fc\242Gd\242Hd\243Ie\244Jf\245Jg\246Kg\247Gd\243" + "Hd\244He\245If\246Jg\247Kg\250\203\23,b\2\23,a\22*_\205\22)]\13\23*^\24+" + "_\24,`\25,a\26-b\27.c\27/d\30/e\31""0f\31""1g\32""2h\202\33""3i\14\33""4" + "j\34""5k\35""6l\36""7m\36""7n\37""8o\40""9p\40:q!:r\";s#<t#=u\202%>w$%?x" + "&@y'Az(Bz(B{)C|*D}+E~+E\177,E\200-F\200-G\201.H\202/H\2030I\2040J\2051K\206" + "2L\2073L\2103M\2114N\2115O\2125P\2136P\2147Q\2158R\2168S\217<W\224=Y\226" + ">Z\227>[\230?\\\231@\\\232@]\233A^\234B_\235\202C`\236\17Da\237Eb\240Fc\241" + "Gc\242Hd\243Ie\244If\245Jg\246Ie\245Gc\243Gd\244He\245Ie\246Jf\247Jg\250" + "\202\23,b\1\22*_\207\22)]\31\23*^\23*_\24+`\25,a\26-b\26.c\27.d\30/d\30""0" + "e\31""1f\32""2g\33""2h\33""3i\33""4j\34""5k\34""5l\35""6m\36""7n\37""8o\37" + """9p\40""9q!:r\";s\"<t%>x\202'@z6&?x&@x'@y'Az(B{)C|*D}*D~+E\177,E\200-F\200" + "-G\201.G\202/H\203/I\2030J\2051K\2052K\2062L\2073M\2104N\2115N\2125O\213" + "6P\2147Q\2157R\2169U\221<X\225=Y\226=Z\227>[\230?[\231?\\\231@]\232A^\233" + "B^\234B_\235C`\236Da\237Eb\240Eb\241Fc\242Hd\243Ie\244Ie\245Jf\246Fc\242" + "Fc\243Gd\243Hd\244Ie\245If\246Jg\247\22+`\211\22)]\34\22)^\23*_\24+_\25," + "`\25-a\26-b\27.c\27/d\30""0e\31""0f\32""1g\32""2h\33""3i\33""4j\34""4k\34" + """5l\35""6m\36""7m\36""8n\37""8o\40""9p!:q!;s$>w&?y'@z'A{(A|\202&@y2'Az(" + "B{)C|)C}*D~+E\177,E\177,E\200-F\200.G\201.H\202/I\2030I\2041J\2051K\2062" + "L\2073M\2103M\2114N\2125O\2136P\2146P\2157R\216;W\223<X\224<Y\225=Y\226>" + "Z\227>[\230?\\\231@]\232A]\233A^\234B_\235C`\236D`\237Da\240Eb\241Fc\241" + "Gd\242Hd\243Ie\244Hd\244Eb\241Fc\242Gc\243Hd\244He\245If\246Jf\247\213\22" + ")]O\23*^\23+_\24+`\25,a\26-b\26.c\27/d\30/e\31""0f\31""1g\32""2h\33""3h\33" + """3i\33""4j\34""5k\35""6l\35""6m\36""7n\37""8o\40""9p!:q#=v%>x&?y&@z'A{(" + "A|(B|'@z'Ay(Az(B{)C|*D}+E~+E\177,E\200-F\200-G\201.H\202/H\2030I\2040J\205" + "1K\2062K\2072L\2073M\2104N\2115O\2125O\2136P\2149T\221;W\223;X\224<X\225" + "=Y\226=Z\227>[\230?\\\231@\\\232@]\233A^\234B_\235C_\235C`\236Da\237Eb\240" + "Fc\241Gc\242Hd\243Ie\244Fb\241Eb\241Fb\242Gc\243Gd\244He\245Ie\246Jf\246" + "\213\22)]\35\23*^\23*_\24+`\25,a\25-b\26.c\27.c\30/d\30""0e\31""1f\32""1" + "g\32""2h\33""3i\33""4j\34""5k\34""5l\35""6m\36""7n\37""8o\40""9p#<u$=w%>" + "w%?x&?y'@z(A{(B|)B}\202'Az&(B{)C|)D}*D~+E\177,E\200,F\200-G\200.G\201/H\203" + "/I\2030J\2041J\2052K\2062L\2073M\2104N\2115N\2125O\2137Q\215:V\222:V\223" + ";W\224<X\225<Y\226=Z\226>Z\227?[\230?\\\231@]\232A^\233B^\234B_\235C`\236" + "Da\237Da\240Eb\241Fc\242\202Hd\243\10E`\240Ea\241Fb\241Fc\242Gd\243Hd\244" + "Ie\245If\246\214\22)]N\23*^\24+_\24,`\25,a\26-b\27.c\27/d\30""0e\31""0f\32" + """1g\32""2h\33""3i\33""4j\33""4k\34""5l\35""6m\36""7m\37""8o\";t#<u$=v$>" + "w%>x&?y&@z'A{(B|)B}(B|'Az(B{(B|)C|*D}+E~+E\177,E\200-F\200.G\201.H\202/I" + "\2030I\2041J\2051K\2062L\2073L\2103M\2114N\2125O\2128T\2179U\221:V\222;W" + "\223;X\224<Y\225=Y\226>Z\227>[\230?\\\231@]\232A]\233A^\234B_\235C`\236C" + "`\237Da\240Eb\240Fc\241Gd\242Fa\240E`\237Ea\240Eb\241Fb\242Gc\243Hd\244H" + "e\245If\246\214\22)]N\23*^\23*_\24+`\25,a\26-b\26.c\27/d\30/e\30""0f\31""1" + "g\32""2g\33""2h\33""3i\33""4j\34""5k\35""5l\36""7n!:s\";t#<u#=v$=w%>x%?y" + "&@z'@{(A|(B|)C}'Az(Az(B{)C|*D}*D~+E\177,E\200-F\200-G\201.G\202/H\203/I\204" + "0J\2051K\2062K\2062L\2073M\2104N\2116P\2148T\2209U\221:V\222:W\223;W\224" + "<X\225=Y\226=Z\227>[\230?[\231@\\\231@]\233A^\233B_\234C_\235C`\236Da\237" + "Eb\240Ec\241Fc\242D_\236E`\237Ea\240Ea\241Fb\242Fc\243Gd\244He\245Ie\245" + "\214\22)]N\22*^\23*_\24+`\25,a\25-a\26-b\27.c\30/d\30""0e\31""1f\32""1g\32" + """2h\33""3i\33""4j\34""4k\35""6n\40""9r!:s\";t\";u#<v$=v$>w%?x&?y'@z'A{(" + "B|&@y'@y'Az(B{)C|)C}*D~+E\177,E\200,F\200-F\200.G\201/H\202/I\2030J\2041" + "J\2051K\2062L\2073M\2104M\2117R\2168T\2209U\221:V\222:V\223;W\224<X\225<" + "Y\225=Z\226>Z\227?[\230?\\\231@]\232A]\233A^\234B_\235C`\236Da\237Da\240" + "Eb\241Da\237D_\236D`\237E`\240Ea\240Eb\241Fc\242Gc\243Hd\244He\245\215\22" + ")]\30\23*^\24+_\24+`\25,a\26-b\27.c\27/d\30/e\31""0f\31""1g\32""2h\33""3" + "i\33""3j\35""5m\37""8p\40""9q\40:r!:s\";t#<u#=v$=w%>x&?y\202&@z)%?w%?x&@" + "y'Az(Bz(B{)C|*D}+E~+E\177,E\200-F\200.G\201.H\202/H\2030I\2040J\2051K\206" + "2L\2073L\2104N\2127S\2178T\2179U\2209U\221:V\222;W\223;X\224<X\225=Y\226" + ">Z\227>[\230?\\\231@\\\232A]\233A^\234B_\235C`\236C`\237Da\237Eb\240\202" + "C^\235\10D_\236E`\237Ea\240Eb\241Fb\242Gc\243Gd\244He\245\215\22)]M\23*^" + "\23*_\24+`\25,a\26-b\26.c\27.c\30/e\30""0e\31""1f\32""2g\33""2h\34""5l\36" + """7o\37""8p\40""9q\40""9r!:s\";t\"<u#<v$=w%>x%?y%?x$>v%>v%?w&@x'Ay'Az(B{" + ")C|*D}*D~+E\177,E\200-F\200-G\201.G\202/H\203/I\2040J\2041K\2052K\2062L\207" + "5Q\2147S\2168S\2178T\2209U\221:V\222:W\223;W\224<X\225=Y\226=Z\227>[\230" + "?[\230@\\\231@]\233A^\233B_\234B_\235C`\236Da\237C`\236B]\234C^\235D_\236" + "E`\237Ea\240Ea\241Fb\242Fc\243Gd\243Hd\245\215\22)]B\22)^\23*_\24+_\25,`" + "\25-a\26-b\27.c\27/d\30""0e\31""1f\32""1g\33""4k\35""6n\36""7o\37""7p\37" + """8q\40""9r!:s!;t\";t#<u$=v$>w$=v#<t$=u$>v%?w&?x&@y'Az(B{)C|)C}*D~+E\177" + ",E\177,F\200-F\200.G\201.H\202/I\2030I\2041J\2051K\2062L\2075P\2136R\216" + "7S\2178T\2209U\2219V\222:V\223;W\224;X\224<Y\225=Y\226>Z\227>[\230?\\\231" + "@]\232A]\233A^\234B_\235C`\236Da\237\202B]\234\11C^\235C_\235D_\236E`\237" + "Ea\240Eb\241Fc\242Gc\243Hd\244\216\22)]L\23*^\24+_\24+`\25,a\26-b\26.c\27" + "/d\30/e\31""0f\32""3j\33""5m\34""6n\36""6n\36""7o\37""8p\40""9q\40:r!:s\"" + ";t#<u#=v\"<t\";s#<t#=u$>v%>w%?x&@y'Ay(Bz(B{)C|*D}+E~+E\177,E\200-F\200-G" + "\201.H\202/H\2030I\2040J\2051K\2062L\2073M\2116R\2167S\2168T\2178T\2209U" + "\221:V\222;W\223;X\224<X\225=Y\226>Z\227>[\230?\\\231@\\\232@]\233A^\234" + "B_\235C_\236C_\235A\\\232B]\233C^\234C^\235D_\236E`\237Ea\240Eb\241Fb\242" + "Gc\243Gd\244\216\22)]L\23*^\23*_\24+`\25,a\25-b\26.b\27.d\30/e\31""2i\32" + """4k\33""4l\34""5m\35""6n\36""7o\37""8p\37""8q\40""9r!:s\";t\"<u!;s!:r\"" + ";s\"<t#=t$=u%>v%?w&@x'@y'Az(B{)C|*D}*D~+E\177,E\200,F\200-G\201.G\202/H\202" + "/I\2030J\2041J\2052K\2062L\2075Q\2147S\2167S\2178T\2209U\221:V\222:V\223" + ";W\224<X\225=Y\226=Z\227>Z\227?[\230?\\\231@]\232A^\233B^\234B_\235A]\233" + "A\\\232B]\233B]\234C^\235D_\236D`\237E`\240Ea\241Fb\242Fc\242Gd\243\217\22" + ")]1\23*^\24+_\25,`\25,a\26-b\27.d\30""1h\31""3j\32""3k\33""4l\33""5m\34""6" + "n\36""7o\36""7p\37""8q\40""9q!:s!;s\40:r\40""9p!:q!;r\";s#<t#=u$>v%?w&?x" + "&@y'Az(B{)C|)C}*D~+E~+E\177,E\200-F\200.G\201.H\202/I\2030I\2041J\2051K\206" + "2L\2074N\2116R\2167S\2178T\220\2029U\221\30:V\222;W\223;X\224<Y\225=Y\226" + ">Z\227>[\230?\\\231@]\232A]\233A^\234B^\234@[\231A[\232A\\\233B]\234C^\234" + "C_\235D_\236E`\237Ea\240Eb\241Fc\242Gc\243\217\22)]K\23*^\23+_\24+`\25,a" + "\26-c\27""0g\30""2i\31""2j\32""3k\32""4l\33""5m\34""5m\35""6n\36""7o\37""8" + "p\40""9q\40:r\40""9q\37""8o\40""9p\40:q!:r\";s\"<t#=u$=v%>w%?x&@x'Ay(Az(" + "B{)C|*D}*E~+E\177,E\200-F\200-G\201.H\202/H\2030I\2040J\2051K\2062K\2062" + "L\2075Q\2147S\2168T\2178T\2209U\221:V\222;W\223;X\224<X\225=Y\226=Z\227>" + "[\230?[\231@\\\232@]\232A^\234@\\\232@Z\230@[\231A\\\232B]\233B^\234C^\235" + "D_\236E`\237Ea\240Ea\241Fb\242Gc\243\217\22)]K\22*^\23*_\24+`\25-b\26/f\27" + """0g\30""1h\31""2i\31""3j\32""4k\33""5l\34""5m\35""6n\36""7o\37""8p\37""8" + "q\37""8o\36""7n\37""8o\37""8p\40""9q!:q!;r\"<s#<t$=u$>v%?w&@x'@y'Az(B{)C" + "|)C}*D~+E\177,E\200,F\200-F\200.G\201/H\202/I\2030J\2041J\2052K\2062L\207" + "4N\2117S\2167S\2178T\2209U\221:V\222:V\223;W\224<X\225<Y\226=Z\226>Z\227" + "?[\230?\\\231@]\232A]\233?Z\227?Z\230@[\231A\\\232A\\\233B]\234C^\235D_\236" + "D`\237E`\240Ea\241Fb\241Fc\242\220\22)]\36\23*^\24,a\25/e\26/f\27""0g\30" + """1h\30""2i\31""3j\32""3k\33""4l\33""5m\34""6n\36""6o\36""7p\36""7n\35""6" + "l\36""7m\36""7n\37""8o\40""9p\40:q!;r\";s#<t#=u$>v%?w&?x&@y'Az\202(B{\21" + ")C|*D}+E~+E\177,E\200-F\200.G\201.H\202/I\2030I\2040J\2051K\2062L\2073L\210" + "6Q\2147S\2178T\217\2029U\221\27:V\222;W\223;X\224<Y\225=Y\226>Z\227>[\230" + "?\\\231@\\\232?[\231>Y\227?Z\230@[\231A[\232A\\\232B]\233C^\234C_\235D_\236" + "E`\237Ea\240Eb\241Fc\242\220\22)]<\23+`\24-d\25.e\26/f\27""0g\27""1h\30""2" + "i\31""2j\31""3k\32""4k\33""5l\34""5m\35""6n\35""6m\34""5k\35""6l\35""6m\36" + """7n\37""8o\40""9p\40:q!:r\";s\"<t#=u$=v%>v%?w&@x'Ay'Az(B{)C|*D}*D~+E\177" + ",E\200-F\200-G\201.G\202/H\2030I\2040J\2041K\2052K\2062L\2074N\2117S\216" + "8S\2178T\2209U\221:V\222;W\223;W\224<X\225=Y\226=Z\227>[\230?[\231?\\\231" + "\202>Y\226\14?Z\227?Z\230@[\231A\\\232B]\233B]\234C^\235D_\236E`\237Ea\240" + "Ea\241Fb\242\217\22)]K\22*_\23,c\24-d\25.e\26/e\26""0f\27""0g\30""1h\30""2" + "i\31""3j\32""4k\33""4l\33""5m\34""5l\33""4j\34""4k\34""5l\35""6m\36""7n\37" + """8o\37""9p\40""9p!:q!;r\"<s#<t$=u$>v%?w&?x&@y'Az(B{)C|)C}*D~+E\177,E\200" + ",F\200-F\200.G\201.H\202/I\2030J\2041J\2051K\2062L\2073M\2105P\2147S\217" + "8T\2209U\2219V\222:V\223;W\224<X\224<Y\225=Z\226>Z\227?[\230>[\230=X\225" + ">X\226>Y\227?Z\230@[\231A\\\232A\\\233B]\234C^\235D_\236D`\237E`\240Ea\240" + "Eb\241\216\22)]\1\22+`\202\23,bI\24-c\25.d\25.e\26/f\27""0g\27""1h\30""2" + "i\31""2j\32""3k\32""4l\33""4k\33""3i\33""3j\33""4k\34""5k\35""6l\35""7m\36" + """7n\37""8o\40""9p\40:q!:r\";s#<t#=u$>v%>w%?x&@y'Ay(Bz(B{)C|*D}+E~+E\177" + ",E\200-F\200.G\201.H\202/H\2030I\2040J\2051K\2062L\2073L\2103M\2117R\216" + "8T\2178U\2209U\221:V\222;W\223;X\224<X\225=Y\226>Z\227>[\230=X\225=W\225" + "=X\226>Y\227?Z\230@Z\231@[\231A\\\232B]\233C^\234C^\235D_\236E`\237Ea\240" + "Eb\241\215\22)]\1\23+`\203\23,bI\24-c\24-d\25.e\26/f\26""0g\27""1h\30""1" + "i\31""2j\31""3j\32""3i\32""2g\33""2h\33""3i\33""4j\34""5k\34""6l\35""6m\36" + """7n\37""8o\37""9p\40""9q!:r\";s\"<t#=t$=u$>v%?w&@x'@y'Az(B{)C|*D}*D~+E\177" + ",E\200,F\200-F\201.G\202/H\202/I\2030J\2051J\2052K\2062L\2073M\2105O\212" + "7S\2178T\2209U\221:V\222:W\223;W\224<X\225=Y\226=Z\227>Z\227<V\223=W\224" + "=X\225>Y\226?Y\227?Z\230@[\231A\\\232B]\233B]\234C^\235D_\236D`\237E`\240" + "Ea\241\214\22)]\1\23+a\204\23,bI\23,c\24-c\25.d\25/e\26""0f\27""0g\30""1" + "h\30""2i\31""2h\31""0f\32""1g\32""2h\33""3i\33""4j\34""4k\34""5l\35""6m\36" + """7n\36""8o\37""8o\40""9p!:q!;r\";s#<t$=u$>v%?w&?x&@y'Az(B{)C|)C}*D}+E~+" + "E\177,E\200-F\200.G\201.H\202/I\2030I\2041J\2051K\2062L\2073M\2103M\2116" + "Q\2148T\2209U\2219U\222:V\222;W\224<X\224<Y\225=Y\226<W\224;V\223<W\224=" + "X\225>X\226>Y\227?Z\230@[\231A\\\232A\\\233B]\234C^\235C_\236D_\236E`\237" + "Ea\240\213\22)]\1\23+a\206\23,bH\24-c\24.d\25.e\26/f\27""0g\27""1h\30""1" + "g\30/e\31""0f\31""1g\32""2h\33""3h\33""3i\33""4j\34""5k\35""6l\35""6m\36" + """7n\37""8o\40""9p\40:q!:r\";s\"<t#=u$>v%>w%?w&@x'Ay(Az(B{)C|*D}+E~+E\177" + ",E\200-F\200-G\201.H\202/H\2030I\2040J\2051K\2062K\2073L\2103M\2104N\211" + "7R\2168T\2209U\221:V\222;W\223;X\224<X\225=Y\226;U\222;V\223<W\224=W\225" + "=X\226>Y\227?Z\227@Z\230@[\231A\\\232B]\233B^\234C^\235D_\236E`\237Ea\240" + "\211\22)]\2\22)^\23+a\207\23,bH\23-c\24-d\25.e\26/f\26""0f\27""0f\27.d\30" + "/d\30""0e\31""1f\32""1g\32""2h\33""3i\33""4j\34""5k\34""5l\35""6m\36""7n" + "\37""8o\37""9p\40""9q!:r!;r\"<s#<t$=u$>v%?w&@x'@y'Az(B{)C|)D}*D~+E\177,E" + "\200,F\200-G\201.G\201/H\202/I\2030J\2041J\2051K\2062L\2073M\2104N\2114O" + "\2127S\2179U\221:V\222:W\223;W\224<X\225;W\223:U\222;U\222<V\223<W\224=X" + "\225>Y\226?Y\227?Z\230@[\231A\\\232A\\\233B]\234C^\235D_\236D`\237E`\240" + "\210\22)]\2\22*^\23,a\211\23,b\20\24-c\25.d\25/e\26/e\26-b\27.c\27/d\30""0" + "e\31""0f\32""1g\32""2h\33""3i\33""4j\33""4k\34""5l\35""6l\202\36""7n$\37" + """8o\40""9p!:q!;r\";s#<t#=u$>v%?w&?x&@y'Az(B{(B|)C}*D}+E~+E\177,E\200-F\200" + ".G\201.H\202/I\2030I\2041J\2051K\2062L\2073L\2103M\2114N\2125O\2138S\217" + "9U\221:V\222;W\223;X\224\202:T\221\17;U\222;V\223<W\224=W\225>X\226>Y\227" + "?Z\230@[\231A[\232A\\\233B]\233C^\234C_\235D_\236E`\237\207\22)]\1\22*^\213" + "\23,bG\24-c\24.d\25-c\25,a\26-b\26.c\27.d\30/e\31""0f\31""1g\32""2g\33""2" + "h\33""3i\33""4j\34""5k\35""6l\35""6m\36""7n\37""8o\40""9p\40:q!:r\";s\"<" + "t#=u$=v%>v%?w&@x'Ay(Az(B{)C|*D}*E~+E\177,E\200-F\200-G\201.G\202/H\2030I" + "\2040J\2051K\2062K\2062L\2073M\2104N\2115N\2125O\2138S\217:V\222;W\223:V" + "\2229S\220:T\221:U\222;V\223<V\224=W\225=X\225>Y\226?Y\227@Z\230@[\231A\\" + "\232B]\233B]\234C^\235D_\236E`\237\206\22)]\1\22*_\214\23,bG\23,c\24,b\24" + "+`\25,`\25-a\26-b\27.c\30/d\30""0e\31""1f\32""1g\32""2h\33""3i\33""4j\34" + """4k\34""5l\35""6m\36""7n\37""8o\37""8p\40""9p!:q!;r\"<s#<t$=u$>v%?w&@x'" + "@y'Az(B{)C|)C}*D~+E\177,E\200,F\200-F\200.G\201/H\202/I\2030J\2041J\2051" + "K\2062L\2073M\2104N\2114N\2125O\2136P\2148S\216:V\2229T\2209S\2209T\220:" + "U\221;U\222;V\223<W\224=X\225>X\226>Y\227?Z\230@[\231A\\\232A\\\233B]\234" + "C^\235D_\236D`\237\205\22)]\1\22*_\215\23,b\37\23+a\23*_\24+_\24,`\25,a\26" + "-b\27.c\27/d\30/e\31""0f\31""1g\32""2h\33""3i\33""3j\33""4k\34""5k\35""6" + "l\36""7m\36""7n\37""8o\40""9p\40:q!;r\";s#<t#=u$>v%>w&?x&@y'Az\202(B{&)C" + "|*D}+E~+E\177,E\200-F\200.G\201.H\202/H\2030I\2040J\2051K\2062L\2073L\210" + "3M\2114N\2125O\2136P\2136P\2147Q\2168R\2168S\2179S\220:T\221;U\222;V\223" + "<W\224=W\225>X\226>Y\227?Z\230@[\231@[\232A\\\232B]\233C^\234C^\235D_\236" + "\204\22)]\1\22*_\215\23,b\40\23+a\22)]\23*^\23+_\24+`\25,a\26-b\26.c\27." + "d\30/e\30""0f\31""1f\32""2g\33""2h\33""3i\33""4j\34""5k\34""6l\35""6m\36" + """7n\37""8o\37""9p\40""9q!:r\";s\"<t#=t$=u%>v%?w&@x'Ay\202(B{&)C|*D}*D~+" + "E\177,E\200-F\200-G\201.G\202/H\203/I\2030J\2041K\2052K\2062L\2073M\2104" + "N\2115N\2125O\2136P\2147Q\2157R\2168R\2179S\220:T\221:U\222;V\223<V\223=" + "W\224=X\225>Y\226?Y\227?Z\230@[\231A\\\232B]\233B]\234C^\235D_\236\203\22" + ")]\1\22+`\215\23,b\1\23+a\202\22)]F\22)^\23*_\24+_\25,`\25-a\26-b\27.c\27" + "/d\30""0e\31""1f\32""1g\32""2h\33""3i\33""4j\34""5k\34""5l\35""6m\36""7n" + "\36""8o\37""8o\40""9p!:q!;r\"<s#<t#=u$>v%?w&@x'@y)C~(B{)C|)C}*D~+E\177,E" + "\177,E\200-F\200.G\201.H\202/I\2030I\2041J\2051K\2062L\2073M\2104M\2114N" + "\2125O\2136P\2146Q\2157Q\2158R\2179S\2179T\220:T\221;U\222;V\223<W\224=X" + "\225>X\226?Y\227?Z\230@[\231A\\\232A\\\233B]\234C^\235C_\236\202\22)]\1\23" + "+`\215\23,b\1\23+a\204\22)]\13\23*^\24+_\24+`\25,a\26-b\26.c\27/d\30/e\31" + """0f\31""1g\32""2h\202\33""3i:\33""4j\34""5k\35""6l\35""6m\36""7n\37""8o" + "\40""9p\40:q!;r\";s#<t#=u$>v%>w%?x'A{*D~)B|(B{)C|*D}+E~+E\177,E\200-F\200" + "-G\201.G\202/H\2030I\2040J\2051K\2062L\2073L\2103M\2104N\2115O\2125O\213" + "6P\2147Q\2158R\2168S\2179S\220:T\221;U\222;V\223<V\224=W\225=X\226>Y\227" + "?Z\230@Z\230@[\231A\\\232B]\233C^\234C^\235\22)]\23+a\215\23,b\1\23+a\205" + "\22)]F\23*^\23*_\24+`\25,a\25-b\26.c\27.c\30/d\30""0e\31""1f\32""1g\33""2" + "h\33""3i\33""4j\34""5k\34""5l\35""6m\36""7n\37""8o\37""9p\40""9q!:r\";s\"" + "<t#=t$=u$>v%?w)B|*C~*D~(B{)C|*D}*D~+E\177,E\200,F\200-F\201.G\201/H\202/" + "I\2030J\2041J\2052K\2062L\2073M\2104N\2114N\2125O\2136P\2147Q\2157Q\2168" + "R\2179S\2209T\221:U\222;U\222<V\223<W\224=X\225>Y\226?Y\227?Z\230@[\231A" + "\\\232B]\233B]\234C^\235\23+a\215\23,b\1\23+a\206\22)]\37\22)^\23*^\24+_" + "\24,`\25-a\26-b\27.c\27/d\30""0e\31""0f\32""1g\32""2h\33""3i\33""4j\33""4" + "k\34""5l\35""6m\36""7m\36""8n\37""8o\40""9p!:q!;r\";s#<t#=u$>v&@y)B})C~*" + "D\177\202)B|$)C}*D}+E~+E\177,E\200-F\200.G\201.H\202/I\2030I\2041J\2051K" + "\2062L\2073L\2103M\2114N\2125O\2136P\2146P\2157Q\2158R\2169S\2179T\220:T" + "\221;U\222;V\223<W\224=X\225>X\226>Y\227?Z\230@[\231@[\232A\\\233B]\234C" + "^\235\215\23,b\1\23+a\210\22)]\35\23*^\24+_\24+`\25,a\26-b\26.c\27/d\30/" + "e\31""0f\31""1g\32""2g\33""2h\33""3i\33""4j\34""5k\35""6l\36""6m\36""7n\37" + """8o\40""9p\40:q!:r\";s\"<t#=u$=v'A{(B})C}\202*D~%(B{)C|*D}*E~+E\177,E\200" + "-F\200-G\201.H\202/H\2030I\2040J\2051K\2052K\2072L\2073M\2104N\2115O\212" + "5O\2136P\2147Q\2158R\2168S\2179S\220:T\221:U\222;V\223<W\224=W\225=X\226" + ">Y\226?Z\227@Z\230@[\231A\\\232B]\233B^\234\214\23,b\1\23+a\211\22)]\37\22" + "*^\23*_\24+`\25,a\25-b\26-b\27.c\30/d\30""0e\31""1f\32""1g\33""2h\33""3i" + "\33""4j\34""5k\34""5l\35""6m\36""7n\37""8o\37""8p\40""9q!:q!;r\"<s#<t$>w" + "'A{(B|)C}*C~*D\177\202)C|#)D}*D~+E\177,E\200,F\200-F\201.G\201/H\202/I\203" + "0J\2041J\2051K\2062L\2073M\2104N\2114N\2125O\2136P\2147Q\2157Q\2168R\217" + "9S\2209T\220:U\221;U\222<V\223<W\224=X\225>Y\226>Y\227?Z\230@[\231A\\\232" + "A\\\233B]\234\213\23,b\2\23,a\22)^\212\22)]C\23*^\24+_\24,`\25,a\26-b\27" + ".c\27/d\30""0e\31""0f\32""1g\32""2h\33""3i\33""4j\33""4k\34""5l\35""6l\36" + """7m\36""7n\37""8o\40""9p!:q!;r\";s#<t&?y'A{(A|)B})C~*D\177*D~(B{)C|*D}+" + "E~+E\177,E\200-F\200-G\201.H\202/I\2030I\2040J\2051K\2062L\2073L\2103M\211" + "4N\2125O\2136P\2136P\2147Q\2158R\2168S\2179T\220:T\221;U\222;V\223<W\224" + "=W\225>X\226>Y\227?Z\230@[\231@[\232A\\\233B]\233\212\23,b\2\23,a\22)^\213" + "\22)]\37\23*^\23*_\24+`\25,a\26-b\26.c\27.d\30/e\30""0f\31""1f\32""2g\33" + """2h\33""3i\33""4j\34""5k\35""6l\35""6m\36""7n\37""8o\37""9p\40:q!:r\";s" + "#=u&@y'@{(A{(B|)C}*D~*D\177\202)C|\"*D}*D~+E\177,E\200,F\200-G\201.G\202" + "/H\203/I\2040J\2041K\2052K\2062L\2073M\2104N\2114O\2125O\2136P\2147Q\215" + "7R\2168R\2179S\220:T\221:U\222;V\223<V\224=W\224=X\226>Y\226?Y\227?Z\230" + "@[\231A\\\232B]\233\211\23,b\2\23,a\22)^\214\22)]\36\22)^\23*_\24+`\25,`" + "\25-a\26-b\27.c\27/d\30""0e\31""1f\32""1g\32""2h\33""3i\33""4j\34""5k\34" + """5l\35""6m\36""7n\37""8o\37""8p\40""9p!:q!;r$>w&?y'@z'A{(B|)B})C~\202*D" + "\177#)C|)C}*D~+E\177,E\200,F\200-F\200.G\201.H\202/I\2030J\2041J\2051K\206" + "2L\2073M\2104M\2114N\2125O\2136P\2146Q\2157Q\2158R\2179S\2179T\220:T\221" + ";U\222<V\223<W\224=X\225>X\226>Y\227?Z\230@[\231A\\\232A\\\233\210\23,b\2" + "\23,a\22)^\216\22)]B\23*^\24+_\24,`\25,a\26-b\27.c\27/d\30/e\31""0f\31""1" + "g\32""2h\33""3i\33""3j\33""4j\34""5k\35""6l\35""6m\36""7n\37""8o\40""9p\40" + ":q\";s%>x&?y&@z'A{(A|)B})C~*D\177+E\177)C})C|*D}+E~+E\177,E\200-F\200.G\201" + ".H\202/H\2030I\2040J\2051K\2062L\2073L\2103M\2104N\2115O\2125O\2136P\214" + "7Q\2158R\2168S\2179S\220:T\221;U\222;V\223<W\224=W\225=X\226>Y\227?Z\230" + "@Z\230@[\231A\\\232\207\23,b\2\23,a\22)^\217\22)]B\23*^\23*_\24+`\25,a\26" + "-b\26.c\27.c\30/d\30""0e\31""1f\32""2g\33""2h\33""3i\33""4j\34""5k\34""5" + "l\35""6m\36""7n\37""8o\37""9p\40""9q#<u%>x%?x&@z'@z'A{(B|)C}*C~*D\177+E\200" + ")C}*D}*D~+E\177,E\200,F\200-G\201.G\202/H\202/I\2030J\2041J\2052K\2062L\207" + "3M\2104N\2114N\2125O\2136P\2147Q\2157R\2168R\2179S\220:T\221:U\222;V\223" + "<V\224<W\224=X\225>Y\226?Y\227?Z\230@[\231A\\\232\206\23,b\2\23,a\22)^\220" + "\22)]\37\22)^\23*^\24+_\25,`\25-a\26-b\27.c\27/d\30""0e\31""1f\32""1g\32" + """2h\33""3i\33""4j\34""4k\34""5l\35""6m\36""7m\36""7n\37""8o\40""9q$=v$>" + "w%>x&?y'@z'A{(B|)B})C~*D\177\202+E\200!)C}*D~+E~,E\177,E\200-F\200.G\201" + ".H\202/I\2030I\2041J\2051K\2062L\2073M\2103M\2114N\2125O\2136P\2146Q\215" + "7Q\2158R\2168S\2179T\220:T\221;U\222;V\223<W\224=X\225>X\226>Y\227?Z\230" + "@[\231A\\\232\206\23,b\1\22)^\222\22)]A\23*^\23+_\24+`\25,a\26-b\26.c\27" + "/d\30/e\31""0f\31""1g\32""2h\33""2h\33""3i\33""4j\34""5k\35""6l\35""6m\36" + """7n\37""8o!:s#=v$=w%>x%?y&@z'A{(A|(B})C}*D~+D\177+E\200+E\177*D}*E~+E\177" + ",E\200-F\200-G\201.H\202/H\2030I\2040J\2051K\2062K\2072L\2103M\2104N\211" + "5O\2125O\2136P\2147Q\2158R\2168S\2179S\220:T\221:U\222;V\223<V\224=W\225" + "=X\226>Y\227?Z\230@Z\230@[\231\205\23,b\1\22*^\223\22)]A\22*^\23*_\24+`\25" + ",a\25-b\26.b\27.c\30/d\30""0e\31""1f\32""1g\32""2h\33""3i\33""4j\34""5k\34" + """5l\35""6m\36""7n\37""8o\";t#<v$=w%>x%?y&?y'@z'A{(B|)C}*C~*D\177+E\200," + "F\200+F\177*D~+E\177,E\200-F\200-F\201.G\201/H\202/I\2030J\2041J\2051K\206" + "2L\2073M\2104N\2114N\2125O\2136P\2147Q\2157R\2168R\2179S\2209T\221:U\221" + ";U\222<V\223<W\224=X\225>X\226?Y\227?Z\230@[\231\204\23,b\1\22*^\225\22)" + "]\36\23*^\24+_\24,`\25-a\26-b\27.c\27/d\30""0e\31""0f\32""1g\32""2h\33""3" + "i\33""4j\33""4k\34""5l\35""6l\36""7m\40""9q\";t#<u#=v$>w%>x&?y&@z'A{(B|)" + "B})C~*D\177\202+E\200\40,G\200+F\200+E~+E\177,E\200-F\200.G\201.H\202/I\203" + "0I\2041J\2051K\2062L\2073L\2103M\2114N\2125O\2136P\2136P\2147Q\2158R\216" + "9S\2179T\220:T\221;U\222;V\223<W\224=W\225>X\226>Y\227?Z\230@[\231\203\23" + ",b\1\22*^\226\22)]@\23*^\23+_\24+`\25,a\26-b\26.c\27/d\30/e\31""0f\31""1" + "g\32""2g\33""2h\33""3i\33""4j\34""5k\35""6l\35""6m!:r\";t\"<u#=v$=w%>x%?" + "y&@z'A{(A|(B|)C}*D~+D\177+E\200,F\200-H\201,F\200+E\177,E\200-F\200-G\201" + ".G\202/H\203/I\2040J\2051K\2052K\2062L\2073M\2104N\2115N\2125O\2136P\214" + "7Q\2157R\2168R\2179S\220:T\221:U\222;V\223<V\224=W\225=X\226>Y\226?Z\227" + "?Z\230\202\23,b\1\22*^\227\22)]B\22*^\23*_\24+`\25,`\25-a\26-b\27.c\30/d" + "\30""0e\31""1f\32""1g\32""2h\33""3i\33""4j\34""4k\34""5l\36""7o!:s\";t\"" + ";u#<v$=v$>w%?x&?y'@z'A{(B|)C})C~*D\177+E\200,F\200,G\201-H\202,G\200,E\200" + ",F\200-F\200.G\201/H\202/I\2030I\2041J\2051K\2062L\2073M\2104N\2114N\212" + "5O\2136P\2147Q\2157Q\2168R\2179S\2209T\220:U\221;U\222<V\223<W\224=X\225" + ">X\226>Y\227?Z\230\23,b\22*^\231\22)]\36\23*^\24+_\24,`\25,a\26-b\27.c\27" + "/d\30/e\31""0f\31""1g\32""2h\33""3i\33""3j\33""4k\34""5k\37""8q\40:r!:s\"" + ";t#<u#=v$>w%>x&?y&@z'A{(A|)B})C~*D\177\202+E\200\40,G\200-H\201.I\202-G\200" + ",E\200-F\200-G\201.H\202/H\2030I\2040J\2051K\2062L\2073L\2103M\2114N\211" + "5O\2126P\2136P\2147Q\2158R\2168S\2179T\220:T\221;U\222;V\223<W\224=W\225" + ">X\226>Y\227?Z\230\22*^\232\22)]?\23*^\23*_\24+`\25,a\26-b\26.c\27.d\30/" + "d\30""0e\31""1f\32""2g\33""2h\33""3i\33""4j\35""6m\40""9q\40""9r!:s\";t\"" + "<u#<v$=w%>x%?y&@z'@z(A{(B|)C}*D~*D\177+E\200,F\200-H\201-H\202.I\203-G\200" + ",F\200-G\201.G\202/H\203/I\2030J\2051K\2052K\2062L\2073M\2104N\2115N\212" + "5O\2136P\2147Q\2157R\2168R\2179S\220:T\221:U\222;V\223<V\224<W\225=X\225" + ">Y\226?Y\227\233\22)]$\22)^\23*_\24+_\25,`\25-a\26-b\27.c\27/d\30""0e\31" + """0f\32""1g\32""2h\33""3i\33""4j\36""7o\37""8q\40""9r!:s!;t\";u#<u$=v$>w" + "%>x&?y&@z'A{(B|)B})C~*D\177+E\200,F\200,G\201-H\202.I\202\202,E\200\31-F" + "\200.G\201.H\202/I\2030I\2041J\2051K\2062L\2073M\2104M\2114N\2125O\2136P" + "\2146P\2157Q\2168R\2169S\2179T\220:T\221;U\222<V\223<W\224=X\225>X\226>Y" + "\227\234\22)]C\23*^\24+_\24+`\25,a\26-b\26.c\27/d\30/e\31""0f\31""1g\32""2" + "h\33""3i\34""4k\36""7o\37""8p\40""9q\40""9r!:s\";t#<u#=v$=w%>x&?y&@z'A{(" + "A|(B})C~*D~+D\177+E\200,F\200-H\201-G\201+E\177,E\200-F\200-G\201.H\202/" + "H\2030I\2040J\2051K\2062L\2073L\2103M\2104N\2115O\2125O\2136P\2147Q\2158" + "R\2168S\2179S\220:T\221:U\222;V\223<W\224=W\225=X\226>Y\227\302\303\307\314" + "\315\321\307\311\314\303\305\311\325\327\333\232\331\333\336\206\331\333" + "\337\204\332\333\337\215\332\334\340\1\333\334\340\202\333\334\341\223\333" + "\335\341\202\333\335\342\202\334\335\342\202\334\336\342\15\223\232\253p" + "{\223\247\252\262\253\255\261\260\262\266\257\261\266\253\255\262\260\262" + "\267\317\316\314\231\236\232\215\244\223\322\322\322\340\340\340\315\345" + "\345\345\4s}\221:Jm\232\234\241\240\240\240\202\250\250\250\7\241\241\241" + "\247\247\247\306\306\306\302\302\301\300\276\273\311\311\311\342\342\342" + "\315\345\345\345\4\206\216\236Yf\200\242\244\250\247\247\247\202\255\255" + "\255\2\250\250\250\256\256\256", +}; + diff --git a/src/image_data/rotation_orientation_vert_flipped.h b/src/image_data/rotation_orientation_vert_flipped.h index 5586d04..bc8bbf2 100644 --- a/src/image_data/rotation_orientation_vert_flipped.h +++ b/src/image_data/rotation_orientation_vert_flipped.h @@ -4,1252 +4,733 @@ static const nv_image_t rotation_orientation_vert_flipped_image = { 90, 120, 3, 0, - "\377\0\0\0\377\0\0\0\222\0\0\0\1\37\246\37\217)\334)\2&\262Q\35M\356\303" - "\34E\375\1\25""4\277\204\0\0\0\221.\337.\1+\271\\\304\40N\375\204\0\0\0\222" - "4\3424\304#W\375\204\0\0\0\2229\3449\1)s\346\303'`\375\204\0\0\0\221>\347" - ">\1""9\314z\304*h\375\204\0\0\0\220B\351B\2=\321\201/|\364\304.p\375\204" - "\0\0\0\2P\262\371Q\262\371\202R\263\371\202S\263\371\1T\263\371\203U\264" - "\370\202V\264\370\203W\264\370\217X\265\370\203W\264\370\202V\264\370\203" - "U\264\370\1T\263\371\202S\263\371\202R\263\371\1Q\262\371\202P\262\371\2" - "O\262\371N\261\371\202M\261\371\202K\260\372\17J\260\372I\260\372H\257\372" - "G\257\372F\257\372E\256\372D\256\372C\255\373B\255\373A\255\373@\254\373" - ">\254\373=\253\373<\253\373;\253\374\2029\252\374\5""7\251\3746\251\3744" - "\250\3743\250\3752\250\375\2141\247\375\204\0\0\0\202R\263\371\2S\263\371" - "T\263\371\202U\264\370\202V\264\370\1W\264\370\204X\265\370\203Y\265\370" - "\205Z\265\370\203Z\266\370\205Z\265\370\203Y\265\370\204X\265\370\1W\264" - "\370\202V\264\370\202U\264\370\2T\263\371S\263\371\202R\263\371\1Q\262\371" - "\202P\262\371\2O\262\371N\261\371\202M\261\371\202K\260\372\1J\260\372\202" - "H\257\372\22G\257\372F\256\372E\256\372C\256\373B\255\373A\255\373@\254\373" - "?\254\373>\254\373<\253\373;\253\374:\252\3749\252\3747\251\3746\251\374" - "4\250\3744\250\3752\250\375\2131\247\375\204\0\0\0\1T\263\371\202U\264\370" - "\1V\264\370\202W\264\370\202X\265\370\202Y\265\370\202Z\265\370\202Z\266" - "\370\203[\266\370\213\\\266\370\203[\266\370\202Z\266\370\202Z\265\370\202" - "Y\265\370\202X\265\370\202W\264\370\1V\264\370\202U\264\370\2T\263\371S\263" - "\371\202R\263\371\6Q\262\371P\262\371O\262\371N\261\371M\261\371L\261\371" - "\202K\260\372\7I\260\372H\257\372G\257\372F\257\372E\256\372D\256\372C\255" - "\373\202A\255\373\13?\254\373>\254\373=\253\373;\253\374:\252\3749\252\374" - "7\251\3746\251\3745\251\3744\250\3752\250\375\2121\247\375\204\0\0\0\3U\264" - "\370V\264\370W\264\370\202X\265\370\1Y\265\370\202Z\265\370\1Z\266\370\202" - "[\266\370\202\\\266\370\202]\266\367\204]\267\367\207^\267\367\204]\267\367" - "\202]\266\367\202\\\266\370\202[\266\370\1Z\266\370\202Z\265\370\1Y\265\370" - "\202X\265\370\2W\264\370V\264\370\202U\264\370\2T\263\371S\263\371\202R\263" - "\371\33Q\262\371P\262\371O\262\371N\261\371M\261\371L\261\371K\260\372J\260" - "\372I\260\372H\257\372G\257\372F\256\372D\256\372C\256\373B\255\373A\255" - "\373@\254\373>\254\373=\253\373;\253\374:\252\3749\252\3748\252\3746\251" - "\3745\251\3744\250\3752\250\375\2111\247\375\204\0\0\0\202X\265\370\2Y\265" - "\370Z\265\370\202Z\266\370\2[\266\370\\\266\370\202]\266\367\202]\267\367" - "\202^\267\367\221_\267\367\202^\267\367\202]\267\367\202]\266\367\2\\\266" - "\370[\266\370\202Z\266\370\2Z\265\370Y\265\370\202X\265\370\5W\264\370V\264" - "\370U\264\370T\263\371S\263\371\202R\263\371\202P\262\371\1O\262\371\202" - "M\261\371\202K\260\372\13I\260\372H\257\372G\257\372F\256\372E\256\372C\256" - "\373B\255\373A\255\373@\254\373>\254\373=\253\373\202;\253\374\6""9\252\374" - "8\252\3746\251\3745\251\3744\250\3752\250\375\2101\247\375\204\0\0\0\7Y\265" - "\370Z\265\370Z\266\370[\266\370\\\266\370]\266\367]\267\367\202^\267\367" - "\203_\267\367\203`\267\367\203a\270\367\211b\270\367\203a\270\367\203`\267" - "\367\203_\267\367\202^\267\367\7]\267\367]\266\367\\\266\370[\266\370Z\266" - "\370Z\265\370Y\265\370\202X\265\370\7W\264\370V\264\370U\264\370T\263\371" - "S\263\371R\263\371Q\262\371\202P\262\371\5N\261\371M\261\371L\261\371K\260" - "\372J\260\372\202H\257\372\20F\257\372E\256\372D\256\372C\255\373A\255\373" - "@\254\373>\254\373=\253\373<\253\373;\253\3749\252\3748\252\3746\251\374" - "5\251\3744\250\3752\250\375\2071\247\375\204\0\0\0\4[\266\370\\\266\370]" - "\266\367]\267\367\202^\267\367\202_\267\367\202`\267\367\1a\270\367\205b" - "\270\367\204c\270\367\205d\271\367\204c\270\367\205b\270\367\1a\270\367\202" - "`\267\367\202_\267\367\202^\267\367\6]\267\367]\266\367\\\266\370[\266\370" - "Z\266\370Z\265\370\202X\265\370\11W\264\370V\264\370U\264\370T\263\371S\263" - "\371R\263\371Q\262\371P\262\371O\262\371\202M\261\371\202K\260\372\10I\260" - "\372H\257\372F\257\372F\256\372D\256\372C\255\373A\255\373@\254\373\202>" - "\254\373\7<\253\373;\253\3749\252\3748\252\3746\251\3745\251\3744\250\375" - "\2071\247\375\204\0\0\0\3]\266\367]\267\367^\267\367\202_\267\367\2`\267" - "\367a\270\367\203b\270\367\202c\270\367\202d\271\367\203d\271\366\213e\271" - "\366\203d\271\366\202d\271\367\202c\270\367\203b\270\367\2a\270\367`\267" - "\367\202_\267\367\7^\267\367]\267\367]\266\367\\\266\370[\266\370Z\266\370" - "Z\265\370\202X\265\370\1W\264\370\202U\264\370\1T\263\371\202R\263\371\202" - "P\262\371\12N\261\371M\261\371L\261\371K\260\372I\260\372H\257\372G\257\372" - "F\256\372D\256\372C\255\373\202A\255\373\11?\254\373>\254\373<\253\373;\253" - "\3749\252\3748\252\3746\251\3744\250\3743\250\375\2061\247\375\204\0\0\0" - "\202_\267\367\2`\267\367a\270\367\203b\270\367\2c\270\367d\271\367\202d\271" - "\366\202e\271\366\202f\271\366\217g\272\366\202f\271\366\202e\271\366\202" - "d\271\366\2d\271\367c\270\367\203b\270\367\2a\270\367`\267\367\202_\267\367" - "\6^\267\367]\266\367\\\266\370[\266\370Z\266\370Z\265\370\202X\265\370\34" - "V\264\370U\264\370T\263\371S\263\371R\263\371Q\262\371P\262\371O\262\371" - "M\261\371L\261\371K\260\372J\260\372H\257\372G\257\372F\256\372D\256\372" - "C\255\373B\255\373A\255\373?\254\373>\254\373<\253\373;\253\3749\252\374" - "7\251\3746\251\3744\250\3743\250\375\2051\247\375\204\0\0\0\2`\267\367a\270" - "\367\202b\270\367\3c\270\367d\271\367d\271\366\202e\271\366\1f\271\366\204" - "g\272\366\202h\272\366\206i\272\366\1i\273\366\206i\272\366\202h\272\366" - "\204g\272\366\1f\271\366\202e\271\366\3d\271\366d\271\367c\270\367\202b\270" - "\367\2a\270\367`\267\367\202_\267\367\17^\267\367]\266\367\\\266\370[\266" - "\370Z\266\370Y\265\370X\265\370W\264\370V\264\370U\264\370T\263\371R\263" - "\371Q\262\371P\262\371O\262\371\202M\261\371\22K\260\372J\260\372H\257\372" - "G\257\372F\256\372E\256\372C\256\373B\255\373A\255\373?\254\373>\254\373" - "<\253\373:\252\3749\252\3747\251\3746\251\3744\250\3743\250\375\2041\247" - "\375\204\0\0\0\5b\270\367c\270\367d\271\367d\271\366e\271\366\202f\271\366" - "\202g\272\366\202h\272\366\202i\272\366\202i\273\366\203j\273\366\211k\273" - "\366\203j\273\366\202i\273\366\202i\272\366\202h\272\366\202g\272\366\202" - "f\271\366\7e\271\366d\271\366d\271\367c\270\367b\270\367a\270\367`\267\367" - "\202_\267\367\14^\267\367]\266\367\\\266\370Z\266\370Z\265\370Y\265\370X" - "\265\370V\264\370U\264\370T\263\371S\263\371R\263\371\202P\262\371\24N\261" - "\371M\261\371K\260\372J\260\372H\257\372G\257\372F\257\372E\256\372C\256" - "\373B\255\373A\255\373?\254\373=\253\373;\253\374:\252\3749\252\3747\251" - "\3746\251\3744\250\3742\250\375\2031\247\375\204\0\0\0\4d\271\367d\271\366" - "e\271\366f\271\366\202g\272\366\1h\272\366\202i\272\366\1i\273\366\202j\273" - "\366\1k\273\366\203l\273\366\204l\274\365\205m\274\365\204l\274\365\203l" - "\273\366\1k\273\366\202j\273\366\1i\273\366\202i\272\366\1h\272\366\202g" - "\272\366\10f\271\366e\271\366d\271\366d\271\367c\270\367b\270\367a\270\367" - "`\267\367\202_\267\367\7]\267\367]\266\367[\266\370Z\266\370Y\265\370X\265" - "\370W\264\370\202U\264\370\30S\263\371R\263\371Q\262\371P\262\371N\261\371" - "M\261\371K\260\372J\260\372I\260\372H\257\372F\257\372E\256\372C\256\373" - "B\255\373@\254\373>\254\373=\253\373;\253\374:\252\3749\252\3747\251\374" - "5\251\3744\250\3752\250\375\2021\247\375\204\0\0\0\1e\271\366\202g\272\366" - "\2h\272\366i\272\366\202i\273\366\2j\273\366k\273\366\202l\273\366\1l\274" - "\365\202m\274\365\203n\274\365\213o\274\365\203n\274\365\202m\274\365\1l" - "\274\365\202l\273\366\2k\273\366j\273\366\202i\273\366\2i\272\366h\272\366" - "\202g\272\366\15e\271\366d\271\366d\271\367c\270\367b\270\367a\270\367`\267" - "\367_\267\367^\267\367]\267\367\\\266\370[\266\370Z\265\370\202X\265\370" - "\10V\264\370U\264\370T\263\371R\263\371Q\262\371P\262\371N\261\371M\261\371" - "\202K\260\372\17I\260\372H\257\372F\257\372E\256\372C\255\373A\255\373@\254" - "\373>\254\373=\253\373;\253\374:\252\3748\252\3746\251\3745\251\3744\250" - "\375\2021\247\375\204\0\0\0\10g\272\366h\272\366i\272\366i\273\366j\273\366" - "k\273\366l\273\366l\274\365\202m\274\365\1n\274\365\202o\274\365\202o\275" - "\365\203p\275\365\211q\275\365\203p\275\365\202o\275\365\202o\274\365\1n" - "\274\365\202m\274\365\7l\274\365l\273\366k\273\366j\273\366i\273\366i\272" - "\366h\272\366\202g\272\366\6f\271\366d\271\366d\271\367c\270\367b\270\367" - "a\270\367\202_\267\367\40]\267\367]\266\367[\266\370Z\266\370Y\265\370X\265" - "\370V\264\370U\264\370T\263\371R\263\371Q\262\371P\262\371N\261\371M\261" - "\371L\261\371K\260\372I\260\372H\257\372F\256\372D\256\372C\255\373A\255" - "\373@\254\373>\254\373=\253\373;\253\3749\252\3748\252\3746\251\3744\250" - "\3743\250\3751\247\375\204\0\0\0\5i\272\366i\273\366k\273\366l\273\366l\274" - "\365\202m\274\365\3n\274\365o\274\365o\275\365\202p\275\365\204q\275\365" - "\205r\276\365\203s\276\365\205r\276\365\204q\275\365\202p\275\365\3o\275" - "\365o\274\365n\274\365\202m\274\365\6l\274\365l\273\366k\273\366i\273\366" - "i\272\366h\272\366\202g\272\366\3e\271\366d\271\366d\271\367\202b\270\367" - "!`\267\367_\267\367^\267\367]\266\367\\\266\370Z\266\370Y\265\370X\265\370" - "W\264\370U\264\370T\263\371R\263\371Q\262\371P\262\371N\261\371M\261\371" - "L\261\371J\260\372H\257\372G\257\372F\256\372D\256\372C\255\373A\255\373" - "@\254\373>\254\373<\253\373;\253\3749\252\3748\252\3746\251\3744\250\374" - "3\250\375\204\0\0\0\10k\273\366l\273\366l\274\365m\274\365n\274\365o\274" - "\365o\275\365p\275\365\203q\275\365\202r\276\365\202s\276\365\203t\276\365" - "\211t\276\364\203t\276\365\202s\276\365\202r\276\365\203q\275\365\22p\275" - "\365o\275\365o\274\365n\274\365m\274\365l\274\365l\273\366k\273\366j\273" - "\366i\272\366h\272\366g\272\366f\271\366e\271\366d\271\367c\270\367b\270" - "\367a\270\367\202_\267\367\35]\267\367\\\266\370Z\266\370Z\265\370X\265\370" - "W\264\370U\264\370T\263\371R\263\371Q\262\371P\262\371N\261\371M\261\371" - "K\260\372J\260\372H\257\372G\257\372F\256\372D\256\372C\255\373A\255\373" - "?\254\373>\254\373<\253\373;\253\3749\252\3747\251\3746\251\3744\250\375" - "\204\0\0\0\5l\274\365m\274\365n\274\365o\275\365p\275\365\203q\275\365\2" - "r\276\365s\276\365\202t\276\365\202t\276\364\202u\277\364\215v\277\364\202" - "u\277\364\202t\276\364\202t\276\365\2s\276\365r\276\365\203q\275\365.p\275" - "\365o\275\365n\274\365m\274\365l\274\365l\273\366k\273\366i\273\366i\272" - "\366h\272\366g\272\366f\271\366d\271\366d\271\367b\270\367a\270\367`\267" - "\367_\267\367]\267\367]\266\367[\266\370Z\265\370X\265\370W\264\370U\264" - "\370T\263\371R\263\371Q\262\371P\262\371N\261\371M\261\371K\260\372J\260" - "\372H\257\372G\257\372F\256\372D\256\372B\255\373A\255\373?\254\373>\254" - "\373;\253\374:\252\3749\252\3746\251\3745\251\374\204\0\0\0\3o\274\365o\275" - "\365p\275\365\202q\275\365\3r\276\365s\276\365t\276\365\202t\276\364\1u\277" - "\364\203v\277\364\203w\277\364\213x\300\364\203w\277\364\203v\277\364\1u" - "\277\364\202t\276\364\3t\276\365s\276\365r\276\365\202q\275\365,p\275\365" - "o\275\365o\274\365m\274\365l\274\365l\273\366j\273\366i\273\366h\272\366" - "g\272\366f\271\366e\271\366d\271\367c\270\367b\270\367`\267\367_\267\367" - "^\267\367]\266\367[\266\370Z\265\370X\265\370W\264\370U\264\370T\263\371" - "R\263\371Q\262\371P\262\371N\261\371M\261\371K\260\372J\260\372H\257\372" - "G\257\372E\256\372C\256\373B\255\373A\255\373>\254\373=\253\373;\253\374" - "9\252\3748\252\3746\251\374\204\0\0\0\1p\275\365\202q\275\365\5r\276\365" - "s\276\365t\276\365t\276\364u\277\364\202v\277\364\202w\277\364\1x\300\364" - "\205y\300\364\211z\300\364\205y\300\364\1x\300\364\202w\277\364\202v\277" - "\364\5u\277\364t\276\364t\276\365s\276\365r\276\365\202q\275\365*p\275\365" - "o\275\365n\274\365m\274\365l\274\365k\273\366j\273\366i\272\366h\272\366" - "g\272\366e\271\366d\271\366c\270\367b\270\367a\270\367_\267\367^\267\367" - "]\266\367[\266\370Z\265\370X\265\370W\264\370U\264\370T\263\371R\263\371" - "Q\262\371P\262\371N\261\371M\261\371K\260\372J\260\372H\257\372F\257\372" - "E\256\372C\256\373A\255\373@\254\373>\254\373<\253\373;\253\3749\252\374" - "7\251\374\204\0\0\0\5q\275\365s\276\365t\276\365t\276\364u\277\364\202v\277" - "\364\2w\277\364x\300\364\203y\300\364\202z\300\364\206{\301\364\205|\301" - "\363\206{\301\364\202z\300\364\203y\300\364\2x\300\364w\277\364\202v\277" - "\364\4u\277\364t\276\364t\276\365s\276\365\202q\275\365(p\275\365o\274\365" - "n\274\365m\274\365l\273\366k\273\366i\273\366h\272\366g\272\366f\271\366" - "d\271\366d\271\367b\270\367a\270\367_\267\367^\267\367]\266\367[\266\370" - "Z\265\370X\265\370W\264\370U\264\370T\263\371R\263\371Q\262\371P\262\371" - "N\261\371M\261\371K\260\372I\260\372H\257\372F\257\372D\256\372C\255\373" - "A\255\373?\254\373>\254\373<\253\373:\252\3749\252\374\204\0\0\0\3t\276\365" - "t\276\364u\277\364\202v\277\364\2w\277\364x\300\364\202y\300\364\1z\300\364" - "\203{\301\364\202|\301\363\203}\301\363\211~\302\363\203}\301\363\202|\301" - "\363\203{\301\364\1z\300\364\202y\300\364\2x\300\364w\277\364\202v\277\364" - "\4u\277\364t\276\364t\276\365r\276\365\202q\275\365&o\275\365o\274\365m\274" - "\365l\274\365k\273\366j\273\366i\272\366g\272\366f\271\366e\271\366d\271" - "\367b\270\367a\270\367_\267\367^\267\367]\266\367[\266\370Z\265\370X\265" - "\370W\264\370U\264\370T\263\371R\263\371Q\262\371P\262\371M\261\371L\261" - "\371K\260\372I\260\372G\257\372F\256\372D\256\372B\255\373A\255\373?\254" - "\373=\253\373;\253\3749\252\374\204\0\0\0\4u\277\364v\277\364w\277\364x\300" - "\364\202y\300\364\1z\300\364\202{\301\364\202|\301\363\1}\301\363\204~\302" - "\363\203\177\302\363\207\200\302\363\203\177\302\363\204~\302\363\1}\301" - "\363\202|\301\363\202{\301\364\1z\300\364\202y\300\364-x\300\364w\277\364" - "v\277\364u\277\364t\276\364s\276\365r\276\365q\275\365p\275\365o\275\365" - "n\274\365l\274\365l\273\366j\273\366i\272\366h\272\366g\272\366e\271\366" - "d\271\367b\270\367a\270\367_\267\367^\267\367]\266\367[\266\370Z\265\370" - "X\265\370W\264\370U\264\370T\263\371R\263\371P\262\371O\262\371M\261\371" - "L\261\371J\260\372H\257\372G\257\372E\256\372C\256\373B\255\373@\254\373" - ">\254\373<\253\373;\253\374\204\0\0\0\2v\277\364x\300\364\202y\300\364\1" - "z\300\364\202{\301\364\2|\301\363}\301\363\202~\302\363\202\177\302\363\202" - "\200\302\363\217\200\303\363\202\200\302\363\202\177\302\363\202~\302\363" - "\2}\301\363|\301\363\202{\301\364\1z\300\364\202y\300\364\1x\300\364\202" - "v\277\364\3u\277\364t\276\365s\276\365\202q\275\365#o\275\365o\274\365m\274" - "\365l\273\366j\273\366i\273\366h\272\366g\272\366e\271\366d\271\367b\270" - "\367a\270\367_\267\367^\267\367]\266\367[\266\370Z\265\370X\265\370W\264" - "\370U\264\370S\263\371R\263\371P\262\371O\262\371M\261\371K\260\372J\260" - "\372H\257\372F\257\372E\256\372C\255\373A\255\373?\254\373>\254\373<\253" - "\373\204\0\0\0\202y\300\364\4z\300\364{\301\364|\301\363}\301\363\202~\302" - "\363\1\177\302\363\202\200\302\363\205\200\303\363\202\201\303\363\211\201" - "\304\363\202\201\303\363\205\200\303\363\202\200\302\363\1\177\302\363\202" - "~\302\363\4}\301\363|\301\363{\301\364z\300\364\202y\300\364\1w\277\364\202" - "v\277\364&t\276\364t\276\365r\276\365q\275\365p\275\365o\274\365m\274\365" - "l\274\365k\273\366i\273\366h\272\366g\272\366e\271\366d\271\367b\270\367" - "a\270\367_\267\367^\267\367]\266\367[\266\370Z\265\370X\265\370V\264\370" - "U\264\370S\263\371R\263\371P\262\371N\261\371M\261\371K\260\372I\260\372" - "H\257\372F\256\372D\256\372B\255\373A\255\373?\254\373=\253\373\204\0\0\0" - "\4z\300\364{\301\364|\301\363}\301\363\202~\302\363\2\177\302\363\200\302" - "\363\203\200\303\363\202\201\303\363\1\201\304\363\202\202\304\362\204\203" - "\304\362\205\204\304\362\204\203\304\362\202\202\304\362\1\201\304\363\202" - "\201\303\363\203\200\303\363\2\200\302\363\177\302\363\202~\302\363-}\301" - "\363|\301\363{\301\364z\300\364y\300\364x\300\364w\277\364v\277\364u\277" - "\364t\276\365s\276\365q\275\365p\275\365o\275\365n\274\365l\274\365k\273" - "\366i\273\366h\272\366g\272\366e\271\366d\271\367b\270\367a\270\367_\267" - "\367^\267\367]\266\367[\266\370Y\265\370X\265\370V\264\370U\264\370R\263" - "\371Q\262\371P\262\371M\261\371L\261\371K\260\372H\257\372G\257\372F\256" - "\372C\256\373B\255\373@\254\373>\254\373\204\0\0\0\2|\301\363}\301\363\202" - "~\302\363\1\200\302\363\203\200\303\363\1\201\303\363\202\201\304\363\2\202" - "\304\362\203\304\362\202\204\304\362\203\204\305\362\211\205\305\362\203" - "\204\305\362\202\204\304\362\2\203\304\362\202\304\362\202\201\304\363\1" - "\201\303\363\203\200\303\363\1\200\302\363\202~\302\363\12}\301\363|\301" - "\363{\301\364z\300\364y\300\364x\300\364v\277\364u\277\364t\276\364s\276" - "\365\202q\275\365\37o\275\365n\274\365l\274\365k\273\366i\273\366h\272\366" - "g\272\366e\271\366d\271\367b\270\367a\270\367_\267\367^\267\367\\\266\370" - "Z\266\370Y\265\370X\265\370U\264\370T\263\371R\263\371P\262\371O\262\371" - "M\261\371K\260\372J\260\372H\257\372F\257\372E\256\372C\255\373A\255\373" - "?\254\373\204\0\0\0\202~\302\363\1\200\302\363\203\200\303\363\5\201\303" - "\363\201\304\363\202\304\362\203\304\362\204\304\362\202\204\305\362\1\205" - "\305\362\205\206\305\362\207\207\306\362\205\206\305\362\1\205\305\362\202" - "\204\305\362\5\204\304\362\203\304\362\202\304\362\201\304\363\201\303\363" - "\203\200\303\363\1\200\302\363\202~\302\363)|\301\363{\301\364z\300\364y" - "\300\364x\300\364w\277\364v\277\364t\276\364t\276\365r\276\365q\275\365o" - "\275\365n\274\365l\274\365k\273\366i\273\366h\272\366g\272\366e\271\366d" - "\271\367b\270\367a\270\367_\267\367]\267\367\\\266\370Z\266\370X\265\370" - "W\264\370U\264\370S\263\371R\263\371P\262\371N\261\371M\261\371K\260\372" - "I\260\372H\257\372F\256\372D\256\372B\255\373A\255\373\204\0\0\0\1\177\302" - "\363\203\200\303\363\5\201\303\363\202\304\362\203\304\362\204\304\362\204" - "\305\362\202\205\305\362\202\206\305\362\202\207\306\362\202\210\306\362" - "\213\211\306\362\202\210\306\362\202\207\306\362\202\206\305\362\202\205" - "\305\362\5\204\305\362\204\304\362\203\304\362\202\304\362\201\303\363\203" - "\200\303\363*\177\302\363~\302\363}\301\363|\301\363{\301\364z\300\364y\300" - "\364w\277\364v\277\364u\277\364t\276\365r\276\365q\275\365o\275\365n\274" - "\365l\274\365k\273\366i\273\366h\272\366g\272\366e\271\366d\271\367b\270" - "\367`\267\367_\267\367]\267\367[\266\370Z\265\370X\265\370W\264\370U\264" - "\370S\263\371Q\262\371P\262\371N\261\371L\261\371K\260\372H\257\372G\257" - "\372E\256\372C\256\373A\255\373\204\0\0\0\202\200\303\363\6\201\303\363\202" - "\304\362\203\304\362\204\304\362\204\305\362\205\305\362\202\206\305\362" - "\2\207\306\362\210\306\362\204\211\306\362\202\212\306\361\211\213\307\361" - "\202\212\306\361\204\211\306\362\2\210\306\362\207\306\362\202\206\305\362" - "\6\205\305\362\204\305\362\204\304\362\203\304\362\202\304\362\201\303\363" - "\202\200\303\363)\200\302\363\177\302\363~\302\363|\301\363{\301\364z\300" - "\364y\300\364x\300\364v\277\364u\277\364t\276\365r\276\365q\275\365o\275" - "\365n\274\365l\274\365k\273\366i\273\366h\272\366g\272\366d\271\366c\270" - "\367b\270\367`\267\367^\267\367]\266\367[\266\370Z\265\370X\265\370V\264" - "\370T\263\371R\263\371Q\262\371O\262\371M\261\371K\260\372J\260\372H\257" - "\372F\257\372D\256\372C\255\373\204\0\0\0\11\201\303\363\201\304\363\203" - "\304\362\204\304\362\204\305\362\205\305\362\206\305\362\207\306\362\210" - "\306\362\203\211\306\362\1\212\306\361\204\213\307\361\203\214\307\361\205" - "\215\307\361\203\214\307\361\204\213\307\361\1\212\306\361\203\211\306\362" - "\11\210\306\362\207\306\362\206\305\362\205\305\362\204\305\362\204\304\362" - "\203\304\362\201\304\363\201\303\363\202\200\303\363'\177\302\363~\302\363" - "}\301\363{\301\364z\300\364y\300\364x\300\364v\277\364u\277\364t\276\365" - "r\276\365q\275\365o\275\365n\274\365l\274\365k\273\366i\273\366g\272\366" - "f\271\366d\271\366c\270\367b\270\367_\267\367^\267\367]\266\367Z\266\370" - "Y\265\370W\264\370U\264\370T\263\371R\263\371P\262\371N\261\371M\261\371" - "K\260\372I\260\372G\257\372F\256\372C\256\373\204\0\0\0\7\202\304\362\204" - "\304\362\204\305\362\205\305\362\206\305\362\207\306\362\210\306\362\202" - "\211\306\362\1\212\306\361\202\213\307\361\202\214\307\361\1\215\307\361" - "\217\216\310\361\1\215\307\361\202\214\307\361\202\213\307\361\1\212\306" - "\361\202\211\306\362\10\210\306\362\207\306\362\206\305\362\205\305\362\204" - "\305\362\204\304\362\202\304\362\201\304\363\202\200\303\363&\200\302\363" - "~\302\363}\301\363|\301\363{\301\364y\300\364x\300\364v\277\364u\277\364" - "t\276\365r\276\365q\275\365o\275\365n\274\365l\274\365j\273\366i\272\366" - "g\272\366f\271\366d\271\366b\270\367a\270\367_\267\367]\267\367\\\266\370" - "Z\265\370X\265\370W\264\370U\264\370S\263\371Q\262\371P\262\371M\261\371" - "L\261\371J\260\372H\257\372F\257\372D\256\372\204\0\0\0\5\204\304\362\205" - "\305\362\206\305\362\207\306\362\210\306\362\202\211\306\362\202\213\307" - "\361\1\214\307\361\202\215\307\361\202\216\310\361\202\217\310\361\203\220" - "\310\361\207\220\311\361\203\220\310\361\202\217\310\361\202\216\310\361" - "\202\215\307\361\1\214\307\361\202\213\307\361\202\211\306\362\12\210\306" - "\362\207\306\362\206\305\362\205\305\362\204\304\362\203\304\362\201\304" - "\363\201\303\363\200\303\363\200\302\363\202~\302\363\"|\301\363{\301\364" - "y\300\364x\300\364v\277\364u\277\364t\276\365r\276\365q\275\365o\275\365" - "m\274\365l\273\366j\273\366i\272\366g\272\366e\271\366d\271\367b\270\367" - "`\267\367_\267\367]\266\367[\266\370Z\265\370X\265\370V\264\370T\263\371" - "R\263\371P\262\371O\262\371M\261\371K\260\372I\260\372G\257\372F\256\372" - "\204\0\0\0\202\206\305\362\1\210\306\362\202\211\306\362\202\213\307\361" - "\2\214\307\361\215\307\361\202\216\310\361\1\217\310\361\202\220\310\361" - "\1\220\311\361\202\221\311\361\204\222\311\361\203\223\311\360\204\222\311" - "\361\202\221\311\361\1\220\311\361\202\220\310\361\1\217\310\361\202\216" - "\310\361\2\215\307\361\214\307\361\202\213\307\361\202\211\306\362\1\210" - "\306\362\202\206\305\362\4\204\305\362\203\304\362\202\304\362\201\303\363" - "\202\200\303\363#\177\302\363~\302\363|\301\363{\301\364y\300\364x\300\364" - "v\277\364u\277\364t\276\365r\276\365q\275\365o\274\365m\274\365l\273\366" - "j\273\366h\272\366g\272\366e\271\366c\270\367b\270\367_\267\367^\267\367" - "]\266\367Z\266\370Y\265\370W\264\370U\264\370S\263\371R\263\371P\262\371" - "N\261\371L\261\371J\260\372H\257\372F\257\372\204\0\0\0\7\207\306\362\210" - "\306\362\211\306\362\212\306\361\213\307\361\214\307\361\215\307\361\202" - "\216\310\361\1\220\310\361\202\220\311\361\2\221\311\361\222\311\361\202" - "\223\311\360\202\223\312\360\211\224\312\360\202\223\312\360\202\223\311" - "\360\2\222\311\361\221\311\361\202\220\311\361\1\220\310\361\202\216\310" - "\361\14\215\307\361\214\307\361\213\307\361\212\306\361\211\306\362\210\306" - "\362\207\306\362\206\305\362\205\305\362\204\304\362\202\304\362\201\304" - "\363\202\200\303\363\"\177\302\363~\302\363|\301\363{\301\364y\300\364x\300" - "\364v\277\364u\277\364t\276\365q\275\365p\275\365o\274\365m\274\365k\273" - "\366i\273\366h\272\366f\271\366d\271\366b\270\367a\270\367_\267\367]\267" - "\367\\\266\370Z\265\370X\265\370V\264\370U\264\370R\263\371Q\262\371O\262" - "\371M\261\371K\260\372I\260\372H\257\372\204\0\0\0\15\211\306\362\212\306" - "\361\213\307\361\214\307\361\215\307\361\216\310\361\217\310\361\220\310" - "\361\220\311\361\221\311\361\222\311\361\223\311\360\223\312\360\202\224" - "\312\360\205\225\312\360\205\226\313\360\205\225\312\360\202\224\312\360" - "\23\223\312\360\223\311\360\222\311\361\221\311\361\220\311\361\220\310\361" - "\217\310\361\216\310\361\215\307\361\214\307\361\213\307\361\212\306\361" - "\211\306\362\210\306\362\206\305\362\205\305\362\204\304\362\203\304\362" - "\201\304\363\202\200\303\363!\177\302\363~\302\363|\301\363{\301\364y\300" - "\364x\300\364v\277\364t\276\364s\276\365q\275\365p\275\365n\274\365l\274" - "\365k\273\366i\272\366g\272\366e\271\366d\271\367b\270\367`\267\367_\267" - "\367]\266\367[\266\370Y\265\370X\265\370U\264\370T\263\371R\263\371P\262" - "\371N\261\371L\261\371J\260\372H\257\372\204\0\0\0\3\212\306\361\213\307" - "\361\214\307\361\202\216\310\361\7\220\310\361\220\311\361\221\311\361\222" - "\311\361\223\311\360\223\312\360\224\312\360\202\225\312\360\202\226\313" - "\360\202\227\313\360\211\230\313\360\202\227\313\360\202\226\313\360\202" - "\225\312\360\7\224\312\360\223\312\360\223\311\360\222\311\361\221\311\361" - "\220\311\361\220\310\361\202\216\310\361\5\214\307\361\213\307\361\212\306" - "\361\211\306\362\210\306\362\202\206\305\362\3\204\305\362\203\304\362\201" - "\304\363\202\200\303\363\40\177\302\363~\302\363|\301\363{\301\364y\300\364" - "w\277\364v\277\364t\276\364s\276\365q\275\365o\275\365n\274\365l\273\366" - "j\273\366i\272\366g\272\366e\271\366c\270\367b\270\367_\267\367^\267\367" - "\\\266\370Z\266\370X\265\370V\264\370U\264\370R\263\371Q\262\371O\262\371" - "M\261\371K\260\372I\260\372\204\0\0\0\11\214\307\361\215\307\361\216\310" - "\361\217\310\361\220\311\361\221\311\361\222\311\361\223\312\360\224\312" - "\360\202\225\312\360\2\226\313\360\227\313\360\203\230\313\360\203\231\314" - "\360\207\232\314\360\203\231\314\360\203\230\313\360\2\227\313\360\226\313" - "\360\202\225\312\360\21\224\312\360\223\312\360\222\311\361\221\311\361\220" - "\311\361\217\310\361\216\310\361\215\307\361\214\307\361\213\307\361\211" - "\306\362\210\306\362\207\306\362\206\305\362\204\305\362\203\304\362\201" - "\304\363\202\200\303\363\37\177\302\363~\302\363|\301\363z\300\364y\300\364" - "w\277\364v\277\364t\276\365r\276\365q\275\365o\274\365m\274\365l\273\366" - "i\273\366h\272\366f\271\366d\271\366b\270\367a\270\367_\267\367]\267\367" - "[\266\370Y\265\370X\265\370U\264\370T\263\371R\263\371P\262\371N\261\371" - "L\261\371J\260\372\204\0\0\0\202\216\310\361\5\220\310\361\221\311\361\222" - "\311\361\223\311\360\224\312\360\202\225\312\360\2\226\313\360\227\313\360" - "\202\230\313\360\2\231\314\360\232\314\360\205\233\314\357\205\234\315\357" - "\205\233\314\357\2\232\314\360\231\314\360\202\230\313\360\2\227\313\360" - "\226\313\360\202\225\312\360\5\224\312\360\223\311\360\222\311\361\221\311" - "\361\220\310\361\202\216\310\361\11\214\307\361\213\307\361\212\306\361\211" - "\306\362\207\306\362\206\305\362\204\305\362\203\304\362\201\304\363\202" - "\200\303\363\36\177\302\363}\301\363{\301\364z\300\364y\300\364v\277\364" - "u\277\364t\276\365q\275\365p\275\365o\274\365l\274\365k\273\366i\272\366" - "g\272\366e\271\366d\271\367b\270\367`\267\367^\267\367\\\266\370Z\266\370" - "X\265\370W\264\370U\264\370R\263\371Q\262\371O\262\371M\261\371K\260\372" - "\204\0\0\0\5\217\310\361\220\311\361\221\311\361\223\311\360\223\312\360" - "\202\225\312\360\1\226\313\360\202\230\313\360\2\231\314\360\232\314\360" - "\203\233\314\357\1\234\315\357\215\235\315\357\1\234\315\357\203\233\314" - "\357\2\232\314\360\231\314\360\202\230\313\360\1\226\313\360\202\225\312" - "\360.\223\312\360\223\311\360\221\311\361\220\311\361\217\310\361\216\310" - "\361\214\307\361\213\307\361\212\306\361\211\306\362\207\306\362\206\305" - "\362\204\305\362\203\304\362\201\304\363\200\303\363\200\302\363~\302\363" - "}\301\363{\301\364y\300\364x\300\364v\277\364t\276\364s\276\365q\275\365" - "o\275\365n\274\365l\273\366j\273\366h\272\366g\272\366d\271\366c\270\367" - "a\270\367_\267\367]\267\367[\266\370Z\265\370X\265\370U\264\370T\263\371" - "R\263\371P\262\371N\261\371L\261\371\204\0\0\0\12\220\311\361\222\311\361" - "\223\311\360\224\312\360\225\312\360\226\313\360\227\313\360\230\313\360" - "\231\314\360\232\314\360\202\233\314\357\1\234\315\357\202\235\315\357\202" - "\236\315\357\202\237\316\357\207\240\316\357\202\237\316\357\202\236\315" - "\357\202\235\315\357\1\234\315\357\202\233\314\3573\232\314\360\231\314\360" - "\230\313\360\227\313\360\226\313\360\225\312\360\224\312\360\223\311\360" - "\222\311\361\220\311\361\217\310\361\216\310\361\215\307\361\213\307\361" - "\212\306\361\211\306\362\207\306\362\206\305\362\204\305\362\203\304\362" - "\201\303\363\200\303\363\200\302\363~\302\363|\301\363{\301\364y\300\364" - "w\277\364v\277\364t\276\364r\276\365q\275\365o\274\365m\274\365k\273\366" - "i\273\366g\272\366f\271\366d\271\367b\270\367`\267\367^\267\367]\266\367" - "Z\266\370X\265\370W\264\370U\264\370R\263\371Q\262\371O\262\371M\261\371" - "\204\0\0\0\2\222\311\361\223\312\360\202\225\312\360\6\227\313\360\230\313" - "\360\231\314\360\232\314\360\233\314\357\234\315\357\202\235\315\357\1\236" - "\315\357\202\237\316\357\203\240\316\357\203\241\316\357\203\242\317\357" - "\203\241\316\357\203\240\316\357\202\237\316\357\1\236\315\357\202\235\315" - "\357\6\234\315\357\233\314\357\232\314\360\231\314\360\230\313\360\227\313" - "\360\202\225\312\360+\223\312\360\222\311\361\221\311\361\220\310\361\216" - "\310\361\215\307\361\213\307\361\212\306\361\211\306\362\207\306\362\206" - "\305\362\204\304\362\202\304\362\201\303\363\200\303\363\177\302\363~\302" - "\363|\301\363z\300\364y\300\364w\277\364u\277\364t\276\365q\275\365p\275" - "\365n\274\365l\274\365j\273\366i\272\366g\272\366d\271\366c\270\367a\270" - "\367_\267\367]\267\367[\266\370Z\265\370X\265\370U\264\370S\263\371R\263" - "\371P\262\371M\261\371\204\0\0\0\3\223\312\360\225\312\360\226\313\360\202" - "\230\313\360\1\232\314\360\202\233\314\357\202\235\315\357\2\236\315\357" - "\237\316\357\202\240\316\357\1\241\316\357\202\242\317\357\202\242\317\356" - "\207\243\317\356\202\242\317\356\202\242\317\357\1\241\316\357\202\240\316" - "\357\2\237\316\357\236\315\357\202\235\315\357\202\233\314\357\1\232\314" - "\360\202\230\313\360\17\226\313\360\225\312\360\223\312\360\223\311\360\221" - "\311\361\220\310\361\216\310\361\215\307\361\213\307\361\212\306\361\211" - "\306\362\206\305\362\205\305\362\204\304\362\202\304\362\202\200\303\363" - "\33\177\302\363}\301\363{\301\364z\300\364x\300\364v\277\364t\276\364s\276" - "\365q\275\365o\275\365m\274\365l\273\366i\273\366g\272\366f\271\366d\271" - "\367b\270\367`\267\367^\267\367\\\266\370Z\266\370X\265\370V\264\370U\264" - "\370R\263\371P\262\371N\261\371\204\0\0\0\16\225\312\360\226\313\360\230" - "\313\360\231\314\360\232\314\360\233\314\357\234\315\357\235\315\357\236" - "\315\357\237\316\357\240\316\357\241\316\357\242\317\357\242\317\356\202" - "\243\317\356\1\244\317\356\213\245\320\356\1\244\317\356\202\243\317\356" - "7\242\317\356\242\317\357\241\316\357\240\316\357\237\316\357\236\315\357" - "\235\315\357\234\315\357\233\314\357\232\314\360\231\314\360\230\313\360" - "\226\313\360\225\312\360\224\312\360\223\311\360\221\311\361\220\310\361" - "\216\310\361\215\307\361\213\307\361\211\306\362\210\306\362\206\305\362" - "\205\305\362\203\304\362\201\304\363\200\303\363\200\302\363~\302\363}\301" - "\363{\301\364y\300\364w\277\364v\277\364t\276\365r\276\365p\275\365n\274" - "\365l\274\365j\273\366i\272\366g\272\366d\271\366c\270\367a\270\367_\267" - "\367]\267\367[\266\370Y\265\370X\265\370U\264\370S\263\371Q\262\371P\262" - "\371\204\0\0\0\16\227\313\360\230\313\360\231\314\360\233\314\357\234\315" - "\357\235\315\357\236\315\357\237\316\357\240\316\357\241\316\357\242\317" - "\357\242\317\356\243\317\356\244\317\356\202\245\320\356\202\246\320\356" - "\211\247\320\356\202\246\320\356\202\245\320\3567\244\317\356\243\317\356" - "\242\317\356\242\317\357\241\316\357\240\316\357\237\316\357\236\315\357" - "\235\315\357\234\315\357\233\314\357\231\314\360\230\313\360\227\313\360" - "\225\312\360\224\312\360\223\311\360\221\311\361\220\310\361\216\310\361" - "\214\307\361\213\307\361\211\306\362\210\306\362\206\305\362\204\305\362" - "\203\304\362\201\303\363\200\303\363\200\302\363~\302\363|\301\363z\300\364" - "y\300\364v\277\364u\277\364s\276\365q\275\365o\275\365m\274\365l\273\366" - "i\273\366g\272\366f\271\366d\271\367b\270\367`\267\367^\267\367\\\266\370" - "Z\265\370X\265\370V\264\370T\263\371R\263\371P\262\371\204\0\0\0\6\230\313" - "\360\232\314\360\233\314\357\234\315\357\235\315\357\236\315\357\202\240" - "\316\357\3\242\317\357\242\317\356\243\317\356\202\245\320\356\1\246\320" - "\356\202\247\320\356\1\247\321\356\202\250\321\356\207\251\321\356\202\250" - "\321\356\1\247\321\356\202\247\320\356\1\246\320\356\202\245\320\356\3\243" - "\317\356\242\317\356\242\317\357\202\240\316\357/\236\315\357\235\315\357" - "\234\315\357\233\314\357\232\314\360\230\313\360\227\313\360\225\312\360" - "\224\312\360\223\311\360\221\311\361\217\310\361\216\310\361\214\307\361" - "\213\307\361\211\306\362\207\306\362\206\305\362\204\304\362\202\304\362" - "\201\303\363\200\303\363\177\302\363}\301\363{\301\364y\300\364x\300\364" - "v\277\364t\276\365r\276\365p\275\365o\274\365l\274\365j\273\366i\272\366" - "g\272\366d\271\366c\270\367a\270\367_\267\367]\266\367[\266\370Y\265\370" - "W\264\370U\264\370R\263\371Q\262\371\204\0\0\0\11\232\314\360\233\314\357" - "\234\315\357\235\315\357\237\316\357\240\316\357\241\316\357\242\317\356" - "\243\317\356\202\245\320\356\5\246\320\356\247\320\356\247\321\356\250\321" - "\356\251\321\356\202\252\321\356\203\252\322\355\203\253\322\355\203\252" - "\322\355\202\252\321\356\5\251\321\356\250\321\356\247\321\356\247\320\356" - "\246\320\356\202\245\320\3562\243\317\356\242\317\356\241\316\357\240\316" - "\357\237\316\357\235\315\357\234\315\357\233\314\357\232\314\360\230\313" - "\360\227\313\360\225\312\360\224\312\360\222\311\361\220\311\361\217\310" - "\361\216\310\361\214\307\361\212\306\361\211\306\362\206\305\362\205\305" - "\362\204\304\362\201\304\363\200\303\363\200\302\363~\302\363|\301\363{\301" - "\364y\300\364v\277\364u\277\364s\276\365q\275\365o\275\365m\274\365l\273" - "\366i\273\366g\272\366e\271\366d\271\367b\270\367_\267\367]\267\367\\\266" - "\370Z\265\370X\265\370U\264\370T\263\371R\263\371\204\0\0\0\16\233\314\357" - "\235\315\357\236\315\357\237\316\357\240\316\357\242\317\357\242\317\356" - "\244\317\356\245\320\356\246\320\356\247\320\356\247\321\356\251\321\356" - "\252\321\356\202\252\322\355\1\253\322\355\213\254\322\355\1\253\322\355" - "\202\252\322\3557\252\321\356\251\321\356\247\321\356\247\320\356\246\320" - "\356\245\320\356\244\317\356\242\317\356\242\317\357\240\316\357\237\316" - "\357\236\315\357\235\315\357\233\314\357\232\314\360\230\313\360\227\313" - "\360\225\312\360\223\312\360\222\311\361\220\311\361\217\310\361\215\307" - "\361\213\307\361\211\306\362\210\306\362\206\305\362\204\305\362\203\304" - "\362\201\303\363\200\303\363\177\302\363~\302\363{\301\364y\300\364x\300" - "\364v\277\364t\276\365r\276\365p\275\365n\274\365l\274\365j\273\366h\272" - "\366g\272\366d\271\366b\270\367`\267\367_\267\367]\266\367Z\266\370X\265" - "\370V\264\370U\264\370R\263\371\204\0\0\0\2\235\315\357\236\315\357\202\240" - "\316\357\2\242\317\357\243\317\356\202\245\320\356\6\247\320\356\247\321" - "\356\251\321\356\252\321\356\252\322\355\253\322\355\202\254\322\355\202" - "\255\323\355\202\256\323\355\205\257\323\355\202\256\323\355\202\255\323" - "\355\202\254\322\355\6\253\322\355\252\322\355\252\321\356\251\321\356\247" - "\321\356\247\320\356\202\245\320\356\2\243\317\356\242\317\357\202\240\316" - "\357\22\236\315\357\235\315\357\233\314\357\232\314\360\230\313\360\226\313" - "\360\225\312\360\223\312\360\222\311\361\220\310\361\216\310\361\215\307" - "\361\213\307\361\211\306\362\207\306\362\206\305\362\204\304\362\202\304" - "\362\202\200\303\363\27~\302\363|\301\363{\301\364y\300\364v\277\364u\277" - "\364s\276\365q\275\365o\275\365m\274\365k\273\366i\272\366g\272\366e\271" - "\366c\270\367a\270\367_\267\367]\267\367[\266\370Y\265\370W\264\370U\264" - "\370S\263\371\204\0\0\0\16\236\315\357\240\316\357\241\316\357\242\317\356" - "\243\317\356\245\320\356\246\320\356\247\321\356\250\321\356\252\321\356" - "\252\322\355\253\322\355\254\322\355\255\323\355\202\256\323\355\203\257" - "\323\355\207\260\324\355\203\257\323\355\202\256\323\3557\255\323\355\254" - "\322\355\253\322\355\252\322\355\252\321\356\250\321\356\247\321\356\246" - "\320\356\245\320\356\243\317\356\242\317\356\241\316\357\240\316\357\236" - "\315\357\235\315\357\233\314\357\231\314\360\230\313\360\226\313\360\225" - "\312\360\223\311\360\221\311\361\220\310\361\216\310\361\214\307\361\212" - "\306\361\211\306\362\206\305\362\205\305\362\203\304\362\201\304\363\200" - "\303\363\177\302\363~\302\363{\301\364y\300\364x\300\364v\277\364t\276\365" - "r\276\365p\275\365n\274\365l\273\366j\273\366h\272\366f\271\366d\271\367" - "b\270\367`\267\367^\267\367\\\266\370Z\265\370X\265\370V\264\370T\263\371" - "\204\0\0\0\15\240\316\357\241\316\357\242\317\356\244\317\356\245\320\356" - "\246\320\356\247\321\356\251\321\356\252\321\356\253\322\355\254\322\355" - "\255\323\355\256\323\355\202\257\323\355\1\260\324\355\202\261\324\355\1" - "\262\324\355\207\262\324\354\1\262\324\355\202\261\324\355\1\260\324\355" - "\202\257\323\355\36\256\323\355\255\323\355\254\322\355\253\322\355\252\321" - "\356\251\321\356\247\321\356\246\320\356\245\320\356\244\317\356\242\317" - "\356\241\316\357\240\316\357\235\315\357\234\315\357\233\314\357\231\314" - "\360\230\313\360\225\312\360\224\312\360\223\311\360\220\311\361\217\310" - "\361\215\307\361\213\307\361\211\306\362\210\306\362\206\305\362\204\304" - "\362\202\304\362\202\200\303\363\26~\302\363|\301\363{\301\364y\300\364v" - "\277\364t\276\364s\276\365q\275\365o\274\365l\274\365k\273\366i\272\366g" - "\272\366d\271\366c\270\367a\270\367_\267\367]\266\367Z\266\370X\265\370V" - "\264\370U\264\370\204\0\0\0\10\240\316\357\242\317\356\244\317\356\245\320" - "\356\247\320\356\247\321\356\251\321\356\252\322\355\202\254\322\355\1\256" - "\323\355\202\257\323\355\1\260\324\355\202\262\324\355\2\262\324\354\263" - "\325\354\211\264\325\354\2\263\325\354\262\324\354\202\262\324\355\1\260" - "\324\355\202\257\323\355\1\256\323\355\202\254\322\3551\252\322\355\251\321" - "\356\247\321\356\247\320\356\245\320\356\244\317\356\242\317\356\240\316" - "\357\237\316\357\235\315\357\234\315\357\233\314\357\230\313\360\227\313" - "\360\225\312\360\223\312\360\222\311\361\220\310\361\216\310\361\214\307" - "\361\213\307\361\211\306\362\206\305\362\205\305\362\203\304\362\201\304" - "\363\200\303\363\177\302\363~\302\363{\301\364y\300\364w\277\364v\277\364" - "t\276\365q\275\365o\275\365n\274\365l\273\366i\273\366g\272\366e\271\366" - "d\271\367b\270\367_\267\367]\267\367[\266\370Y\265\370W\264\370U\264\370" - "\204\0\0\0\17\242\317\357\243\317\356\245\320\356\247\320\356\250\321\356" - "\252\321\356\252\322\355\254\322\355\255\323\355\256\323\355\257\323\355" - "\260\324\355\262\324\355\262\324\354\263\325\354\202\264\325\354\202\265" - "\325\354\207\266\326\354\202\265\325\354\202\264\325\3548\263\325\354\262" - "\324\354\262\324\355\260\324\355\257\323\355\256\323\355\255\323\355\254" - "\322\355\252\322\355\252\321\356\250\321\356\247\320\356\245\320\356\243" - "\317\356\242\317\357\240\316\357\237\316\357\235\315\357\233\314\357\232" - "\314\360\230\313\360\226\313\360\225\312\360\223\311\360\221\311\361\217" - "\310\361\216\310\361\213\307\361\211\306\362\210\306\362\206\305\362\204" - "\305\362\202\304\362\200\303\363\200\302\363~\302\363|\301\363z\300\364y" - "\300\364v\277\364t\276\364r\276\365p\275\365o\274\365l\274\365j\273\366h" - "\272\366f\271\366d\271\367b\270\367`\267\367^\267\367\\\266\370Z\265\370" - "X\265\370U\264\370\204\0\0\0\15\243\317\356\245\320\356\246\320\356\250\321" - "\356\252\321\356\253\322\355\254\322\355\255\323\355\257\323\355\260\324" - "\355\261\324\355\262\324\354\263\325\354\202\264\325\354\2\265\325\354\266" - "\326\354\203\267\326\354\205\270\326\354\203\267\326\354\2\266\326\354\265" - "\325\354\202\264\325\3546\263\325\354\262\324\354\261\324\355\260\324\355" - "\257\323\355\255\323\355\254\322\355\253\322\355\252\321\356\250\321\356" - "\246\320\356\245\320\356\243\317\356\242\317\357\240\316\357\236\315\357" - "\235\315\357\233\314\357\231\314\360\230\313\360\225\312\360\224\312\360" - "\222\311\361\220\311\361\216\310\361\214\307\361\213\307\361\211\306\362" - "\206\305\362\205\305\362\203\304\362\201\303\363\200\303\363\177\302\363" - "}\301\363{\301\364y\300\364w\277\364u\277\364s\276\365q\275\365o\275\365" - "m\274\365k\273\366i\272\366g\272\366d\271\366c\270\367a\270\367_\267\367" - "]\266\367Z\266\370X\265\370V\264\370\204\0\0\0\13\245\320\356\246\320\356" - "\247\321\356\251\321\356\253\322\355\254\322\355\255\323\355\257\323\355" - "\260\324\355\262\324\355\262\324\354\202\264\325\354\1\266\326\354\202\267" - "\326\354\1\270\326\354\202\271\326\354\203\271\327\354\1\272\327\353\203" - "\271\327\354\202\271\326\354\1\270\326\354\202\267\326\354\1\266\326\354" - "\202\264\325\3544\262\324\354\262\324\355\260\324\355\257\323\355\256\323" - "\355\254\322\355\253\322\355\251\321\356\247\321\356\246\320\356\245\320" - "\356\243\317\356\241\316\357\240\316\357\236\315\357\234\315\357\233\314" - "\357\230\313\360\227\313\360\225\312\360\223\312\360\221\311\361\217\310" - "\361\216\310\361\213\307\361\211\306\362\210\306\362\206\305\362\204\304" - "\362\202\304\362\200\303\363\200\302\363~\302\363{\301\364z\300\364x\300" - "\364v\277\364t\276\365q\275\365p\275\365n\274\365l\273\366i\273\366g\272" - "\366e\271\366c\270\367b\270\367_\267\367]\267\367[\266\370Y\265\370W\264" - "\370\204\0\0\0\14\246\320\356\247\321\356\251\321\356\252\322\355\254\322" - "\355\256\323\355\257\323\355\260\324\355\262\324\355\263\325\354\264\325" - "\354\265\325\354\202\267\326\354\4\270\326\354\271\326\354\271\327\354\272" - "\327\353\202\273\327\353\205\274\327\353\202\273\327\353\4\272\327\353\271" - "\327\354\271\326\354\270\326\354\202\267\326\3545\265\325\354\264\325\354" - "\263\325\354\262\324\355\260\324\355\257\323\355\256\323\355\254\322\355" - "\252\322\355\251\321\356\247\321\356\246\320\356\244\317\356\242\317\356" - "\241\316\357\237\316\357\235\315\357\233\314\357\232\314\360\230\313\360" - "\226\313\360\224\312\360\222\311\361\220\311\361\216\310\361\214\307\361" - "\213\307\361\211\306\362\206\305\362\204\305\362\203\304\362\201\303\363" - "\200\303\363~\302\363}\301\363{\301\364y\300\364v\277\364t\276\364r\276\365" - "q\275\365o\274\365l\274\365j\273\366h\272\366f\271\366d\271\367b\270\367" - "_\267\367^\267\367\\\266\370Z\265\370X\265\370\204\0\0\0\21\247\320\356\251" - "\321\356\252\322\355\254\322\355\255\323\355\257\323\355\261\324\355\262" - "\324\355\263\325\354\264\325\354\266\326\354\267\326\354\270\326\354\271" - "\326\354\272\327\353\273\327\353\274\327\353\202\274\330\353\202\275\330" - "\353\203\276\330\353\202\275\330\353\202\274\330\353:\274\327\353\273\327" - "\353\272\327\353\271\326\354\270\326\354\267\326\354\266\326\354\264\325" - "\354\263\325\354\262\324\355\261\324\355\257\323\355\255\323\355\254\322" - "\355\252\322\355\251\321\356\247\320\356\245\320\356\244\317\356\242\317" - "\357\240\316\357\236\315\357\235\315\357\233\314\357\231\314\360\227\313" - "\360\225\312\360\223\312\360\221\311\361\217\310\361\216\310\361\213\307" - "\361\211\306\362\207\306\362\206\305\362\204\304\362\201\304\363\200\303" - "\363\177\302\363~\302\363{\301\364y\300\364w\277\364u\277\364s\276\365q\275" - "\365o\275\365m\274\365k\273\366i\272\366g\272\366d\271\366b\270\367`\267" - "\367^\267\367\\\266\370Z\266\370X\265\370\204\0\0\0\21\250\321\356\252\321" - "\356\254\322\355\255\323\355\257\323\355\260\324\355\262\324\355\263\325" - "\354\264\325\354\266\326\354\267\326\354\271\326\354\271\327\354\273\327" - "\353\274\327\353\274\330\353\275\330\353\202\276\330\353\207\277\331\353" - "\202\276\330\353:\275\330\353\274\330\353\274\327\353\273\327\353\271\327" - "\354\271\326\354\267\326\354\266\326\354\264\325\354\263\325\354\262\324" - "\355\260\324\355\257\323\355\255\323\355\254\322\355\252\321\356\250\321" - "\356\247\320\356\245\320\356\243\317\356\241\316\357\240\316\357\235\315" - "\357\233\314\357\232\314\360\230\313\360\226\313\360\224\312\360\222\311" - "\361\220\310\361\216\310\361\214\307\361\212\306\361\210\306\362\206\305" - "\362\204\305\362\202\304\362\200\303\363\200\302\363~\302\363|\301\363z\300" - "\364x\300\364v\277\364t\276\365q\275\365o\275\365n\274\365l\273\366i\273" - "\366g\272\366e\271\366c\270\367a\270\367_\267\367]\266\367Z\266\370X\265" - "\370\204\0\0\0\22\252\321\356\253\322\355\254\322\355\257\323\355\260\324" - "\355\262\324\355\263\325\354\264\325\354\266\326\354\267\326\354\271\326" - "\354\272\327\353\274\327\353\274\330\353\275\330\353\276\330\353\277\331" - "\353\300\331\353\211\301\331\353;\300\331\353\277\331\353\276\330\353\275" - "\330\353\274\330\353\274\327\353\272\327\353\271\326\354\267\326\354\266" - "\326\354\264\325\354\263\325\354\262\324\355\260\324\355\257\323\355\254" - "\322\355\253\322\355\252\321\356\247\321\356\246\320\356\244\317\356\242" - "\317\356\240\316\357\236\315\357\235\315\357\233\314\357\230\313\360\227" - "\313\360\225\312\360\223\311\360\221\311\361\217\310\361\215\307\361\213" - "\307\361\211\306\362\207\306\362\205\305\362\203\304\362\201\303\363\200" - "\303\363~\302\363}\301\363{\301\364y\300\364v\277\364t\276\364r\276\365p" - "\275\365n\274\365l\273\366i\273\366h\272\366f\271\366d\271\367b\270\367_" - "\267\367]\267\367[\266\370Y\265\370\204\0\0\0\20\252\322\355\254\322\355" - "\256\323\355\257\323\355\262\324\355\263\325\354\264\325\354\266\326\354" - "\267\326\354\271\326\354\272\327\353\274\327\353\275\330\353\276\330\353" - "\277\331\353\300\331\353\202\301\331\353\1\302\332\352\207\303\332\352\1" - "\302\332\352\202\301\331\3539\300\331\353\277\331\353\276\330\353\275\330" - "\353\274\327\353\272\327\353\271\326\354\267\326\354\266\326\354\264\325" - "\354\263\325\354\262\324\355\257\323\355\256\323\355\254\322\355\252\322" - "\355\251\321\356\247\320\356\245\320\356\243\317\356\241\316\357\240\316" - "\357\235\315\357\233\314\357\232\314\360\230\313\360\225\312\360\223\312" - "\360\222\311\361\220\310\361\216\310\361\213\307\361\211\306\362\210\306" - "\362\206\305\362\204\304\362\201\304\363\200\303\363\177\302\363}\301\363" - "{\301\364y\300\364w\277\364u\277\364s\276\365q\275\365o\274\365l\274\365" - "j\273\366h\272\366f\271\366d\271\367b\270\367`\267\367^\267\367\\\266\370" - "Z\265\370\204\0\0\0\16\254\322\355\255\323\355\257\323\355\261\324\355\262" - "\324\354\264\325\354\266\326\354\267\326\354\271\326\354\272\327\353\274" - "\327\353\275\330\353\276\330\353\300\331\353\202\301\331\353\202\303\332" - "\352\202\304\332\352\205\305\333\352\202\304\332\352\202\303\332\352\202" - "\301\331\3537\300\331\353\276\330\353\275\330\353\274\327\353\272\327\353" - "\271\326\354\267\326\354\266\326\354\264\325\354\262\324\354\261\324\355" - "\257\323\355\255\323\355\254\322\355\252\321\356\250\321\356\246\320\356" - "\244\317\356\242\317\356\240\316\357\236\315\357\235\315\357\233\314\357" - "\230\313\360\226\313\360\225\312\360\223\311\360\220\311\361\216\310\361" - "\214\307\361\212\306\361\211\306\362\206\305\362\204\305\362\202\304\362" - "\200\303\363\200\302\363~\302\363{\301\364y\300\364x\300\364v\277\364t\276" - "\365q\275\365o\275\365m\274\365k\273\366i\272\366g\272\366d\271\366b\270" - "\367`\267\367^\267\367\\\266\370Z\265\370\204\0\0\0\22\254\322\355\257\323" - "\355\260\324\355\262\324\354\264\325\354\266\326\354\267\326\354\271\326" - "\354\272\327\353\274\327\353\275\330\353\276\330\353\300\331\353\301\331" - "\353\302\332\352\303\332\352\304\332\352\305\333\352\203\306\333\352\203" - "\307\333\352\203\306\333\352;\305\333\352\304\332\352\303\332\352\302\332" - "\352\301\331\353\300\331\353\276\330\353\275\330\353\274\327\353\272\327" - "\353\271\326\354\267\326\354\266\326\354\264\325\354\262\324\354\260\324" - "\355\257\323\355\254\322\355\253\322\355\251\321\356\247\320\356\245\320" - "\356\243\317\356\241\316\357\240\316\357\235\315\357\233\314\357\231\314" - "\360\227\313\360\225\312\360\223\312\360\221\311\361\217\310\361\215\307" - "\361\213\307\361\211\306\362\207\306\362\205\305\362\203\304\362\201\303" - "\363\200\303\363~\302\363|\301\363z\300\364x\300\364v\277\364t\276\365q\275" - "\365p\275\365n\274\365l\273\366i\273\366g\272\366e\271\366c\270\367a\270" - "\367_\267\367]\266\367Z\266\370\204\0\0\0\22\256\323\355\257\323\355\262" - "\324\355\263\325\354\265\325\354\267\326\354\271\326\354\272\327\353\274" - "\327\353\275\330\353\276\330\353\300\331\353\301\331\353\303\332\352\304" - "\332\352\305\333\352\306\333\352\307\333\352\202\310\334\352\205\311\334" - "\352\202\310\334\352;\307\333\352\306\333\352\305\333\352\304\332\352\303" - "\332\352\301\331\353\300\331\353\276\330\353\275\330\353\274\327\353\272" - "\327\353\271\326\354\267\326\354\265\325\354\263\325\354\262\324\355\257" - "\323\355\256\323\355\254\322\355\252\321\356\250\321\356\246\320\356\244" - "\317\356\242\317\357\240\316\357\236\315\357\234\315\357\232\314\360\230" - "\313\360\226\313\360\224\312\360\222\311\361\220\310\361\216\310\361\213" - "\307\361\211\306\362\207\306\362\206\305\362\204\304\362\201\304\363\200" - "\303\363\177\302\363}\301\363{\301\364y\300\364v\277\364t\276\364r\276\365" - "p\275\365n\274\365l\273\366i\273\366g\272\366e\271\366c\270\367a\270\367" - "_\267\367]\266\367Z\266\370\204\0\0\0\16\257\323\355\261\324\355\262\324" - "\354\264\325\354\266\326\354\270\326\354\271\327\354\274\327\353\275\330" - "\353\276\330\353\300\331\353\301\331\353\303\332\352\304\332\352\202\306" - "\333\352\1\310\334\352\202\311\334\352\1\312\334\352\205\313\335\351\1\312" - "\334\352\202\311\334\352\1\310\334\352\202\306\333\3527\304\332\352\303\332" - "\352\301\331\353\300\331\353\276\330\353\275\330\353\274\327\353\271\327" - "\354\270\326\354\266\326\354\264\325\354\262\324\354\261\324\355\257\323" - "\355\254\322\355\252\322\355\251\321\356\247\320\356\245\320\356\242\317" - "\356\241\316\357\237\316\357\235\315\357\233\314\357\230\313\360\226\313" - "\360\225\312\360\223\311\360\220\311\361\216\310\361\214\307\361\212\306" - "\361\210\306\362\206\305\362\204\304\362\201\304\363\200\303\363\200\302" - "\363~\302\363{\301\364y\300\364w\277\364u\277\364s\276\365q\275\365o\274" - "\365l\274\365j\273\366h\272\366f\271\366d\271\367b\270\367_\267\367]\267" - "\367[\266\370\204\0\0\0\17\257\323\355\262\324\355\263\325\354\265\325\354" - "\267\326\354\271\326\354\273\327\353\274\330\353\276\330\353\300\331\353" - "\301\331\353\303\332\352\304\332\352\306\333\352\307\333\352\202\311\334" - "\352\202\313\335\351\202\314\335\351\203\315\335\351\202\314\335\351\202" - "\313\335\351\202\311\334\3528\307\333\352\306\333\352\304\332\352\303\332" - "\352\301\331\353\300\331\353\276\330\353\274\330\353\273\327\353\271\326" - "\354\267\326\354\265\325\354\263\325\354\262\324\355\257\323\355\255\323" - "\355\254\322\355\252\321\356\247\321\356\245\320\356\244\317\356\242\317" - "\357\240\316\357\235\315\357\233\314\357\231\314\360\227\313\360\225\312" - "\360\223\312\360\221\311\361\217\310\361\215\307\361\213\307\361\211\306" - "\362\206\305\362\204\305\362\202\304\362\200\303\363\200\302\363~\302\363" - "{\301\364y\300\364w\277\364u\277\364s\276\365q\275\365o\274\365l\274\365" - "j\273\366h\272\366f\271\366d\271\367b\270\367_\267\367]\267\367[\266\370" - "\204\0\0\0\23\260\324\355\262\324\354\264\325\354\266\326\354\270\326\354" - "\272\327\353\274\327\353\276\330\353\277\331\353\301\331\353\303\332\352" - "\304\332\352\306\333\352\307\333\352\311\334\352\312\334\352\313\335\351" - "\314\335\351\315\335\351\207\316\336\351<\315\335\351\314\335\351\313\335" - "\351\312\334\352\311\334\352\307\333\352\306\333\352\304\332\352\303\332" - "\352\301\331\353\277\331\353\276\330\353\274\327\353\272\327\353\270\326" - "\354\266\326\354\264\325\354\262\324\354\260\324\355\257\323\355\254\322" - "\355\252\322\355\250\321\356\246\320\356\244\317\356\242\317\356\240\316" - "\357\236\315\357\234\315\357\232\314\360\230\313\360\225\312\360\223\312" - "\360\221\311\361\217\310\361\216\310\361\213\307\361\211\306\362\207\306" - "\362\205\305\362\203\304\362\201\303\363\200\303\363~\302\363|\301\363z\300" - "\364x\300\364v\277\364t\276\365q\275\365o\275\365m\274\365k\273\366i\272" - "\366g\272\366d\271\366b\270\367`\267\367^\267\367\\\266\370\204\0\0\0\23" - "\261\324\355\263\325\354\265\325\354\267\326\354\271\326\354\273\327\353" - "\275\330\353\276\330\353\301\331\353\302\332\352\304\332\352\306\333\352" - "\307\333\352\311\334\352\312\334\352\313\335\351\315\335\351\316\336\351" - "\317\336\351\202\320\336\351\203\320\337\351\202\320\336\351<\317\336\351" - "\316\336\351\315\335\351\313\335\351\312\334\352\311\334\352\307\333\352" - "\306\333\352\304\332\352\302\332\352\301\331\353\276\330\353\275\330\353" - "\273\327\353\271\326\354\267\326\354\265\325\354\263\325\354\261\324\355" - "\257\323\355\255\323\355\253\322\355\251\321\356\247\320\356\245\320\356" - "\242\317\356\241\316\357\237\316\357\235\315\357\233\314\357\230\313\360" - "\226\313\360\224\312\360\222\311\361\220\310\361\216\310\361\213\307\361" - "\211\306\362\207\306\362\205\305\362\203\304\362\201\303\363\200\303\363" - "~\302\363|\301\363z\300\364x\300\364v\277\364t\276\365q\275\365o\275\365" - "m\274\365k\273\366i\272\366g\272\366d\271\366b\270\367`\267\367^\267\367" - "\\\266\370\204\0\0\0\24\262\324\355\264\325\354\266\326\354\270\326\354\272" - "\327\353\274\327\353\276\330\353\300\331\353\301\331\353\303\332\352\305" - "\333\352\307\333\352\311\334\352\312\334\352\313\335\351\315\335\351\316" - "\336\351\320\336\351\320\337\351\321\337\351\202\322\337\351\1\323\337\350" - "\202\322\337\351=\321\337\351\320\337\351\320\336\351\316\336\351\315\335" - "\351\313\335\351\312\334\352\311\334\352\307\333\352\305\333\352\303\332" - "\352\301\331\353\300\331\353\276\330\353\274\327\353\272\327\353\270\326" - "\354\266\326\354\264\325\354\262\324\355\260\324\355\256\323\355\254\322" - "\355\252\321\356\247\321\356\245\320\356\243\317\356\241\316\357\237\316" - "\357\235\315\357\233\314\357\231\314\360\227\313\360\225\312\360\223\311" - "\360\220\311\361\216\310\361\214\307\361\212\306\361\210\306\362\206\305" - "\362\204\304\362\201\304\363\200\303\363\177\302\363}\301\363{\301\364y\300" - "\364v\277\364t\276\364r\276\365p\275\365n\274\365l\273\366i\273\366g\272" - "\366e\271\366c\270\367a\270\367_\267\367]\266\367\204\0\0\0\23\262\324\354" - "\264\325\354\267\326\354\271\326\354\273\327\353\274\330\353\276\330\353" - "\301\331\353\303\332\352\304\332\352\306\333\352\310\334\352\312\334\352" - "\313\335\351\315\335\351\316\336\351\320\336\351\321\337\351\322\337\351" - "\202\323\340\350\203\324\340\350\202\323\340\350<\322\337\351\321\337\351" - "\320\336\351\316\336\351\315\335\351\313\335\351\312\334\352\310\334\352" - "\306\333\352\304\332\352\303\332\352\301\331\353\276\330\353\274\330\353" - "\273\327\353\271\326\354\267\326\354\264\325\354\262\324\354\261\324\355" - "\257\323\355\254\322\355\252\322\355\250\321\356\246\320\356\244\317\356" - "\242\317\357\240\316\357\235\315\357\233\314\357\231\314\360\227\313\360" - "\225\312\360\223\311\360\220\311\361\216\310\361\214\307\361\212\306\361" - "\210\306\362\206\305\362\204\304\362\201\304\363\200\303\363\177\302\363" - "}\301\363{\301\364y\300\364v\277\364t\276\364r\276\365p\275\365n\274\365" - "l\273\366i\273\366g\272\366e\271\366c\270\367a\270\367_\267\367]\266\367" - "\204\0\0\0\23\263\325\354\265\325\354\267\326\354\271\327\354\274\327\353" - "\276\330\353\277\331\353\301\331\353\303\332\352\306\333\352\307\333\352" - "\311\334\352\313\335\351\315\335\351\316\336\351\320\336\351\321\337\351" - "\323\337\350\324\340\350\202\325\340\350\203\326\341\350\202\325\340\350" - "<\324\340\350\323\337\350\321\337\351\320\336\351\316\336\351\315\335\351" - "\313\335\351\311\334\352\307\333\352\306\333\352\303\332\352\301\331\353" - "\277\331\353\276\330\353\274\327\353\271\327\354\267\326\354\265\325\354" - "\263\325\354\261\324\355\257\323\355\254\322\355\253\322\355\251\321\356" - "\247\320\356\245\320\356\242\317\356\240\316\357\236\315\357\234\315\357" - "\232\314\360\230\313\360\225\312\360\223\312\360\221\311\361\217\310\361" - "\215\307\361\213\307\361\211\306\362\206\305\362\204\305\362\202\304\362" - "\200\303\363\200\302\363~\302\363{\301\364y\300\364w\277\364u\277\364s\276" - "\365q\275\365o\274\365l\274\365j\273\366h\272\366e\271\366c\270\367a\270" - "\367_\267\367]\266\367\204\0\0\0\25\264\325\354\266\326\354\270\326\354\272" - "\327\353\274\330\353\276\330\353\300\331\353\302\332\352\304\332\352\306" - "\333\352\310\334\352\312\334\352\314\335\351\316\336\351\320\336\351\321" - "\337\351\323\337\350\324\340\350\325\340\350\326\341\350\327\341\350\203" - "\330\341\350>\327\341\350\326\341\350\325\340\350\324\340\350\323\337\350" - "\321\337\351\320\336\351\316\336\351\314\335\351\312\334\352\310\334\352" - "\306\333\352\304\332\352\302\332\352\300\331\353\276\330\353\274\330\353" - "\272\327\353\270\326\354\266\326\354\264\325\354\262\324\355\257\323\355" - "\255\323\355\253\322\355\251\321\356\247\320\356\245\320\356\242\317\356" - "\240\316\357\236\315\357\234\315\357\232\314\360\230\313\360\225\312\360" - "\223\312\360\221\311\361\217\310\361\215\307\361\213\307\361\211\306\362" - "\206\305\362\204\305\362\202\304\362\200\303\363\200\302\363~\302\363{\301" - "\364y\300\364w\277\364u\277\364s\276\365q\275\365o\274\365l\274\365j\273" - "\366h\272\366f\271\366d\271\367b\270\367_\267\367]\267\367\204\0\0\0\25\264" - "\325\354\267\326\354\271\326\354\273\327\353\274\330\353\276\330\353\301" - "\331\353\303\332\352\305\333\352\307\333\352\311\334\352\313\335\351\315" - "\335\351\317\336\351\320\337\351\323\337\350\324\340\350\325\340\350\327" - "\341\350\330\341\350\331\342\350\203\332\342\350>\331\342\350\330\341\350" - "\327\341\350\325\340\350\324\340\350\323\337\350\320\337\351\317\336\351" - "\315\335\351\313\335\351\311\334\352\307\333\352\305\333\352\303\332\352" - "\301\331\353\276\330\353\274\330\353\273\327\353\271\326\354\267\326\354" - "\264\325\354\262\324\354\260\324\355\256\323\355\254\322\355\252\321\356" - "\247\321\356\245\320\356\243\317\356\241\316\357\237\316\357\235\315\357" - "\233\314\357\230\313\360\226\313\360\224\312\360\222\311\361\220\310\361" - "\216\310\361\213\307\361\211\306\362\207\306\362\205\305\362\203\304\362" - "\201\303\363\200\302\363~\302\363{\301\364y\300\364w\277\364u\277\364s\276" - "\365q\275\365o\274\365l\274\365j\273\366h\272\366f\271\366d\271\367b\270" - "\367_\267\367]\267\367\204\0\0\0V\264\325\354\267\326\354\271\326\354\273" - "\327\353\275\330\353\277\331\353\301\331\353\303\332\352\306\333\352\310" - "\334\352\312\334\352\313\335\351\316\336\351\320\336\351\322\337\351\323" - "\340\350\325\340\350\327\341\350\330\341\350\332\342\350\332\342\347\333" - "\342\347\334\343\347\333\342\347\332\342\347\332\342\350\330\341\350\327" - "\341\350\325\340\350\323\340\350\322\337\351\320\336\351\316\336\351\313" - "\335\351\312\334\352\310\334\352\306\333\352\303\332\352\301\331\353\277" - "\331\353\275\330\353\273\327\353\271\326\354\267\326\354\264\325\354\262" - "\324\354\260\324\355\256\323\355\254\322\355\252\321\356\247\321\356\245" - "\320\356\243\317\356\241\316\357\237\316\357\235\315\357\233\314\357\230" - "\313\360\226\313\360\224\312\360\222\311\361\220\310\361\216\310\361\213" - "\307\361\211\306\362\207\306\362\205\305\362\203\304\362\201\303\363\200" - "\303\363~\302\363|\301\363z\300\364x\300\364v\277\364t\276\365q\275\365o" - "\274\365l\274\365j\273\366h\272\366f\271\366d\271\367b\270\367_\267\367]" - "\267\367\204\0\0\0\24\265\325\354\267\326\354\271\327\354\274\327\353\276" - "\330\353\300\331\353\302\332\352\304\332\352\306\333\352\311\334\352\313" - "\335\351\314\335\351\316\336\351\320\337\351\323\337\350\325\340\350\326" - "\341\350\330\341\350\332\342\350\333\342\347\205\335\343\347=\333\342\347" - "\332\342\350\330\341\350\326\341\350\325\340\350\323\337\350\320\337\351" - "\316\336\351\314\335\351\313\335\351\311\334\352\306\333\352\304\332\352" - "\302\332\352\300\331\353\276\330\353\274\327\353\271\327\354\267\326\354" - "\265\325\354\263\325\354\261\324\355\257\323\355\254\322\355\252\322\355" - "\250\321\356\246\320\356\244\317\356\242\317\357\240\316\357\235\315\357" - "\233\314\357\230\313\360\226\313\360\224\312\360\222\311\361\220\310\361" - "\216\310\361\213\307\361\211\306\362\207\306\362\205\305\362\203\304\362" - "\201\303\363\200\303\363~\302\363|\301\363z\300\364x\300\364v\277\364t\276" - "\365q\275\365o\275\365m\274\365k\273\366i\272\366f\271\366d\271\367b\270" - "\367_\267\367]\267\367\204\0\0\0V\265\325\354\267\326\354\271\327\354\274" - "\327\353\276\330\353\300\331\353\302\332\352\304\332\352\306\333\352\311" - "\334\352\313\335\351\315\335\351\317\336\351\321\337\351\323\340\350\325" - "\340\350\330\341\350\331\342\350\333\342\347\335\343\347\336\343\347\337" - "\344\347\340\344\347\337\344\347\336\343\347\335\343\347\333\342\347\331" - "\342\350\330\341\350\325\340\350\323\340\350\321\337\351\317\336\351\315" - "\335\351\313\335\351\311\334\352\306\333\352\304\332\352\302\332\352\300" - "\331\353\276\330\353\274\327\353\271\327\354\267\326\354\265\325\354\263" - "\325\354\261\324\355\257\323\355\254\322\355\252\322\355\250\321\356\246" - "\320\356\244\317\356\242\317\357\240\316\357\235\315\357\233\314\357\231" - "\314\360\227\313\360\225\312\360\223\311\360\220\311\361\216\310\361\213" - "\307\361\211\306\362\207\306\362\205\305\362\203\304\362\201\303\363\200" - "\303\363~\302\363|\301\363z\300\364x\300\364v\277\364t\276\365q\275\365o" - "\275\365m\274\365k\273\366i\272\366g\272\366d\271\366b\270\367_\267\367]" - "\267\367\204\0\0\0\25\266\326\354\270\326\354\272\327\353\274\330\353\276" - "\330\353\301\331\353\303\332\352\305\333\352\307\333\352\311\334\352\313" - "\335\351\316\336\351\320\336\351\322\337\351\324\340\350\326\341\350\330" - "\341\350\332\342\350\334\343\347\336\343\347\340\344\347\203\341\344\347" - ">\340\344\347\336\343\347\334\343\347\332\342\350\330\341\350\326\341\350" - "\324\340\350\322\337\351\320\336\351\316\336\351\313\335\351\311\334\352" - "\307\333\352\305\333\352\303\332\352\301\331\353\276\330\353\274\330\353" - "\272\327\353\270\326\354\266\326\354\263\325\354\261\324\355\257\323\355" - "\254\322\355\252\322\355\250\321\356\246\320\356\244\317\356\242\317\357" - "\240\316\357\235\315\357\233\314\357\231\314\360\227\313\360\225\312\360" - "\223\311\360\220\311\361\216\310\361\214\307\361\212\306\361\210\306\362" - "\205\305\362\203\304\362\201\303\363\200\303\363~\302\363|\301\363z\300\364" - "x\300\364v\277\364t\276\365q\275\365o\275\365m\274\365k\273\366i\272\366" - "g\272\366d\271\366b\270\367`\267\367^\267\367\204\0\0\0V\266\326\354\270" - "\326\354\272\327\353\274\330\353\276\330\353\301\331\353\303\332\352\305" - "\333\352\307\333\352\311\334\352\313\335\351\316\336\351\320\336\351\322" - "\337\351\324\340\350\326\341\350\330\341\350\332\342\347\335\343\347\337" - "\344\347\341\344\347\342\345\346\343\345\346\342\345\346\341\344\347\337" - "\344\347\335\343\347\332\342\347\330\341\350\326\341\350\324\340\350\322" - "\337\351\320\336\351\316\336\351\313\335\351\311\334\352\307\333\352\305" - "\333\352\303\332\352\301\331\353\276\330\353\274\330\353\272\327\353\270" - "\326\354\266\326\354\264\325\354\262\324\355\257\323\355\255\323\355\252" - "\322\355\250\321\356\246\320\356\244\317\356\242\317\357\240\316\357\235" - "\315\357\233\314\357\231\314\360\227\313\360\225\312\360\223\311\360\220" - "\311\361\216\310\361\214\307\361\212\306\361\210\306\362\206\305\362\204" - "\304\362\201\303\363\200\303\363~\302\363|\301\363z\300\364x\300\364v\277" - "\364t\276\365q\275\365o\275\365m\274\365k\273\366i\272\366g\272\366d\271" - "\366b\270\367`\267\367^\267\367\204\0\0\0V\266\326\354\270\326\354\272\327" - "\353\274\330\353\276\330\353\301\331\353\303\332\352\305\333\352\307\333" - "\352\311\334\352\313\335\351\316\336\351\320\336\351\322\337\351\325\340" - "\350\327\341\350\331\342\350\333\342\347\335\343\347\340\344\347\342\345" - "\347\344\345\346\345\346\346\344\345\346\342\345\347\340\344\347\335\343" - "\347\333\342\347\331\342\350\327\341\350\325\340\350\322\337\351\320\336" - "\351\316\336\351\313\335\351\311\334\352\307\333\352\305\333\352\303\332" - "\352\301\331\353\276\330\353\274\330\353\272\327\353\270\326\354\266\326" - "\354\264\325\354\262\324\355\257\323\355\255\323\355\253\322\355\250\321" - "\356\246\320\356\244\317\356\242\317\357\240\316\357\235\315\357\233\314" - "\357\231\314\360\227\313\360\225\312\360\223\311\360\220\311\361\216\310" - "\361\214\307\361\212\306\361\210\306\362\206\305\362\204\304\362\201\304" - "\363\200\303\363~\302\363|\301\363z\300\364x\300\364v\277\364t\276\365q\275" - "\365o\275\365m\274\365k\273\366i\272\366g\272\366d\271\366b\270\367`\267" - "\367^\267\367\204\0\0\0V\266\326\354\270\326\354\272\327\353\274\330\353" - "\276\330\353\301\331\353\303\332\352\305\333\352\307\333\352\311\334\352" - "\313\335\351\316\336\351\320\336\351\322\337\351\325\340\350\327\341\350" - "\331\342\350\333\342\347\335\343\347\340\344\347\342\345\347\344\345\346" - "\345\346\346\344\345\346\342\345\347\340\344\347\335\343\347\333\342\347" - "\331\342\350\327\341\350\325\340\350\322\337\351\320\336\351\316\336\351" - "\313\335\351\311\334\352\307\333\352\305\333\352\303\332\352\301\331\353" - "\276\330\353\274\330\353\272\327\353\270\326\354\266\326\354\264\325\354" - "\262\324\355\257\323\355\255\323\355\253\322\355\250\321\356\246\320\356" - "\244\317\356\242\317\357\240\316\357\235\315\357\233\314\357\231\314\360" - "\227\313\360\225\312\360\223\311\360\220\311\361\216\310\361\214\307\361" - "\212\306\361\210\306\362\206\305\362\204\304\362\201\304\363\200\303\363" - "~\302\363|\301\363z\300\364x\300\364v\277\364t\276\365q\275\365o\275\365" - "m\274\365k\273\366i\272\366g\272\366d\271\366b\270\367`\267\367^\267\367" - "\204\0\0\0V\266\326\354\270\326\354\272\327\353\274\330\353\276\330\353\301" - "\331\353\303\332\352\305\333\352\307\333\352\311\334\352\313\335\351\316" - "\336\351\320\336\351\322\337\351\324\340\350\326\341\350\330\341\350\332" - "\342\347\335\343\347\337\344\347\341\344\347\342\345\346\343\345\346\342" - "\345\346\341\344\347\337\344\347\335\343\347\332\342\347\330\341\350\326" - "\341\350\324\340\350\322\337\351\320\336\351\316\336\351\313\335\351\311" - "\334\352\307\333\352\305\333\352\303\332\352\301\331\353\276\330\353\274" - "\330\353\272\327\353\270\326\354\266\326\354\264\325\354\262\324\355\257" - "\323\355\255\323\355\252\322\355\250\321\356\246\320\356\244\317\356\242" - "\317\357\240\316\357\235\315\357\233\314\357\231\314\360\227\313\360\225" - "\312\360\223\311\360\220\311\361\216\310\361\214\307\361\212\306\361\210" - "\306\362\206\305\362\204\304\362\201\303\363\200\303\363~\302\363|\301\363" - "z\300\364x\300\364v\277\364t\276\365q\275\365o\275\365m\274\365k\273\366" - "i\272\366g\272\366d\271\366b\270\367`\267\367^\267\367\204\0\0\0\25\266\326" - "\354\270\326\354\272\327\353\274\330\353\276\330\353\301\331\353\303\332" - "\352\305\333\352\307\333\352\311\334\352\313\335\351\316\336\351\320\336" - "\351\322\337\351\324\340\350\326\341\350\330\341\350\332\342\350\334\343" - "\347\336\343\347\340\344\347\203\341\344\347>\340\344\347\336\343\347\334" - "\343\347\332\342\350\330\341\350\326\341\350\324\340\350\322\337\351\320" - "\336\351\316\336\351\313\335\351\311\334\352\307\333\352\305\333\352\303" - "\332\352\301\331\353\276\330\353\274\330\353\272\327\353\270\326\354\266" - "\326\354\263\325\354\261\324\355\257\323\355\254\322\355\252\322\355\250" - "\321\356\246\320\356\244\317\356\242\317\357\240\316\357\235\315\357\233" - "\314\357\231\314\360\227\313\360\225\312\360\223\311\360\220\311\361\216" - "\310\361\214\307\361\212\306\361\210\306\362\205\305\362\203\304\362\201" - "\303\363\200\303\363~\302\363|\301\363z\300\364x\300\364v\277\364t\276\365" - "q\275\365o\275\365m\274\365k\273\366i\272\366g\272\366d\271\366b\270\367" - "`\267\367^\267\367\204\0\0\0V\265\325\354\267\326\354\271\327\354\274\327" - "\353\276\330\353\300\331\353\302\332\352\304\332\352\306\333\352\311\334" - "\352\313\335\351\315\335\351\317\336\351\321\337\351\323\340\350\325\340" - "\350\330\341\350\331\342\350\333\342\347\335\343\347\336\343\347\337\344" - "\347\340\344\347\337\344\347\336\343\347\335\343\347\333\342\347\331\342" - "\350\330\341\350\325\340\350\323\340\350\321\337\351\317\336\351\315\335" - "\351\313\335\351\311\334\352\306\333\352\304\332\352\302\332\352\300\331" - "\353\276\330\353\274\327\353\271\327\354\267\326\354\265\325\354\263\325" - "\354\261\324\355\257\323\355\254\322\355\252\322\355\250\321\356\246\320" - "\356\244\317\356\242\317\357\240\316\357\235\315\357\233\314\357\231\314" - "\360\227\313\360\225\312\360\223\311\360\220\311\361\216\310\361\213\307" - "\361\211\306\362\207\306\362\205\305\362\203\304\362\201\303\363\200\303" - "\363~\302\363|\301\363z\300\364x\300\364v\277\364t\276\365q\275\365o\275" - "\365m\274\365k\273\366i\272\366g\272\366d\271\366b\270\367_\267\367]\267" - "\367\204\0\0\0\24\265\325\354\267\326\354\271\327\354\274\327\353\276\330" - "\353\300\331\353\302\332\352\304\332\352\306\333\352\311\334\352\313\335" - "\351\314\335\351\316\336\351\320\337\351\323\337\350\325\340\350\326\341" - "\350\330\341\350\332\342\350\333\342\347\205\335\343\347=\333\342\347\332" - "\342\350\330\341\350\326\341\350\325\340\350\323\337\350\320\337\351\316" - "\336\351\314\335\351\313\335\351\311\334\352\306\333\352\304\332\352\302" - "\332\352\300\331\353\276\330\353\274\327\353\271\327\354\267\326\354\265" - "\325\354\263\325\354\261\324\355\257\323\355\254\322\355\252\322\355\250" - "\321\356\246\320\356\244\317\356\242\317\357\240\316\357\235\315\357\233" - "\314\357\230\313\360\226\313\360\224\312\360\222\311\361\220\310\361\216" - "\310\361\213\307\361\211\306\362\207\306\362\205\305\362\203\304\362\201" - "\303\363\200\303\363~\302\363|\301\363z\300\364x\300\364v\277\364t\276\365" - "q\275\365o\275\365m\274\365k\273\366i\272\366f\271\366d\271\367b\270\367" - "_\267\367]\267\367\204\0\0\0V\264\325\354\267\326\354\271\326\354\273\327" - "\353\275\330\353\277\331\353\301\331\353\303\332\352\306\333\352\310\334" - "\352\312\334\352\313\335\351\316\336\351\320\336\351\322\337\351\323\340" - "\350\325\340\350\327\341\350\330\341\350\332\342\350\332\342\347\333\342" - "\347\334\343\347\333\342\347\332\342\347\332\342\350\330\341\350\327\341" - "\350\325\340\350\323\340\350\322\337\351\320\336\351\316\336\351\313\335" - "\351\312\334\352\310\334\352\306\333\352\303\332\352\301\331\353\277\331" - "\353\275\330\353\273\327\353\271\326\354\267\326\354\264\325\354\262\324" - "\354\260\324\355\256\323\355\254\322\355\252\321\356\247\321\356\245\320" - "\356\243\317\356\241\316\357\237\316\357\235\315\357\233\314\357\230\313" - "\360\226\313\360\224\312\360\222\311\361\220\310\361\216\310\361\213\307" - "\361\211\306\362\207\306\362\205\305\362\203\304\362\201\303\363\200\303" - "\363~\302\363|\301\363z\300\364x\300\364v\277\364t\276\365q\275\365o\274" - "\365l\274\365j\273\366h\272\366f\271\366d\271\367b\270\367_\267\367]\267" - "\367\204\0\0\0\25\264\325\354\267\326\354\271\326\354\273\327\353\274\330" - "\353\276\330\353\301\331\353\303\332\352\305\333\352\307\333\352\311\334" - "\352\313\335\351\315\335\351\317\336\351\320\337\351\323\337\350\324\340" - "\350\325\340\350\327\341\350\330\341\350\331\342\350\203\332\342\350>\331" - "\342\350\330\341\350\327\341\350\325\340\350\324\340\350\323\337\350\320" - "\337\351\317\336\351\315\335\351\313\335\351\311\334\352\307\333\352\305" - "\333\352\303\332\352\301\331\353\276\330\353\274\330\353\273\327\353\271" - "\326\354\267\326\354\264\325\354\262\324\354\260\324\355\256\323\355\254" - "\322\355\252\321\356\247\321\356\245\320\356\243\317\356\241\316\357\237" - "\316\357\235\315\357\233\314\357\230\313\360\226\313\360\224\312\360\222" - "\311\361\220\310\361\216\310\361\213\307\361\211\306\362\207\306\362\205" - "\305\362\203\304\362\201\303\363\200\302\363~\302\363{\301\364y\300\364w" - "\277\364u\277\364s\276\365q\275\365o\274\365l\274\365j\273\366h\272\366f" - "\271\366d\271\367b\270\367_\267\367]\267\367\204\0\0\0\25\264\325\354\266" - "\326\354\270\326\354\272\327\353\274\330\353\276\330\353\300\331\353\302" - "\332\352\304\332\352\306\333\352\310\334\352\312\334\352\314\335\351\316" - "\336\351\320\336\351\321\337\351\323\337\350\324\340\350\325\340\350\326" - "\341\350\327\341\350\203\330\341\350>\327\341\350\326\341\350\325\340\350" - "\324\340\350\323\337\350\321\337\351\320\336\351\316\336\351\314\335\351" - "\312\334\352\310\334\352\306\333\352\304\332\352\302\332\352\300\331\353" - "\276\330\353\274\330\353\272\327\353\270\326\354\266\326\354\264\325\354" - "\262\324\355\257\323\355\255\323\355\253\322\355\251\321\356\247\320\356" - "\245\320\356\242\317\356\240\316\357\236\315\357\234\315\357\232\314\360" - "\230\313\360\225\312\360\223\312\360\221\311\361\217\310\361\215\307\361" - "\213\307\361\211\306\362\206\305\362\204\305\362\202\304\362\200\303\363" - "\200\302\363~\302\363{\301\364y\300\364w\277\364u\277\364s\276\365q\275\365" - "o\274\365l\274\365j\273\366h\272\366f\271\366d\271\367b\270\367_\267\367" - "]\267\367\204\0\0\0\23\263\325\354\265\325\354\267\326\354\271\327\354\274" - "\327\353\276\330\353\277\331\353\301\331\353\303\332\352\306\333\352\307" - "\333\352\311\334\352\313\335\351\315\335\351\316\336\351\320\336\351\321" - "\337\351\323\337\350\324\340\350\202\325\340\350\203\326\341\350\202\325" - "\340\350<\324\340\350\323\337\350\321\337\351\320\336\351\316\336\351\315" - "\335\351\313\335\351\311\334\352\307\333\352\306\333\352\303\332\352\301" - "\331\353\277\331\353\276\330\353\274\327\353\271\327\354\267\326\354\265" - "\325\354\263\325\354\261\324\355\257\323\355\254\322\355\253\322\355\251" - "\321\356\247\320\356\245\320\356\242\317\356\240\316\357\236\315\357\234" - "\315\357\232\314\360\230\313\360\225\312\360\223\312\360\221\311\361\217" - "\310\361\215\307\361\213\307\361\211\306\362\206\305\362\204\305\362\202" - "\304\362\200\303\363\200\302\363~\302\363{\301\364y\300\364w\277\364u\277" - "\364s\276\365q\275\365o\274\365l\274\365j\273\366h\272\366e\271\366c\270" - "\367a\270\367_\267\367]\266\367\204\0\0\0\23\262\324\354\264\325\354\267" - "\326\354\271\326\354\273\327\353\274\330\353\276\330\353\301\331\353\303" - "\332\352\304\332\352\306\333\352\310\334\352\312\334\352\313\335\351\315" - "\335\351\316\336\351\320\336\351\321\337\351\322\337\351\202\323\340\350" - "\203\324\340\350\202\323\340\350<\322\337\351\321\337\351\320\336\351\316" - "\336\351\315\335\351\313\335\351\312\334\352\310\334\352\306\333\352\304" - "\332\352\303\332\352\301\331\353\276\330\353\274\330\353\273\327\353\271" - "\326\354\267\326\354\264\325\354\262\324\354\261\324\355\257\323\355\254" - "\322\355\252\322\355\250\321\356\246\320\356\244\317\356\242\317\357\240" - "\316\357\235\315\357\233\314\357\231\314\360\227\313\360\225\312\360\223" - "\311\360\220\311\361\216\310\361\214\307\361\212\306\361\210\306\362\206" - "\305\362\204\304\362\201\304\363\200\303\363\177\302\363}\301\363{\301\364" - "y\300\364v\277\364t\276\364r\276\365p\275\365n\274\365l\273\366i\273\366" - "g\272\366e\271\366c\270\367a\270\367_\267\367]\266\367\204\0\0\0\24\262\324" - "\355\264\325\354\266\326\354\270\326\354\272\327\353\274\327\353\276\330" - "\353\300\331\353\301\331\353\303\332\352\305\333\352\307\333\352\311\334" - "\352\312\334\352\313\335\351\315\335\351\316\336\351\320\336\351\320\337" - "\351\321\337\351\202\322\337\351\1\323\337\350\202\322\337\351=\321\337\351" - "\320\337\351\320\336\351\316\336\351\315\335\351\313\335\351\312\334\352" - "\311\334\352\307\333\352\305\333\352\303\332\352\301\331\353\300\331\353" - "\276\330\353\274\327\353\272\327\353\270\326\354\266\326\354\264\325\354" - "\262\324\355\260\324\355\256\323\355\254\322\355\252\321\356\247\321\356" - "\245\320\356\243\317\356\241\316\357\237\316\357\235\315\357\233\314\357" - "\231\314\360\227\313\360\225\312\360\223\311\360\220\311\361\216\310\361" - "\214\307\361\212\306\361\210\306\362\206\305\362\204\304\362\201\304\363" - "\200\303\363\177\302\363}\301\363{\301\364y\300\364v\277\364t\276\364r\276" - "\365p\275\365n\274\365l\273\366i\273\366g\272\366e\271\366c\270\367a\270" - "\367_\267\367]\266\367\204\0\0\0\23\261\324\355\263\325\354\265\325\354\267" - "\326\354\271\326\354\273\327\353\275\330\353\276\330\353\301\331\353\302" - "\332\352\304\332\352\306\333\352\307\333\352\311\334\352\312\334\352\313" - "\335\351\315\335\351\316\336\351\317\336\351\202\320\336\351\203\320\337" - "\351\202\320\336\351<\317\336\351\316\336\351\315\335\351\313\335\351\312" - "\334\352\311\334\352\307\333\352\306\333\352\304\332\352\302\332\352\301" - "\331\353\276\330\353\275\330\353\273\327\353\271\326\354\267\326\354\265" - "\325\354\263\325\354\261\324\355\257\323\355\255\323\355\253\322\355\251" - "\321\356\247\320\356\245\320\356\242\317\356\241\316\357\237\316\357\235" - "\315\357\233\314\357\230\313\360\226\313\360\224\312\360\222\311\361\220" - "\310\361\216\310\361\213\307\361\211\306\362\207\306\362\205\305\362\203" - "\304\362\201\303\363\200\303\363~\302\363|\301\363z\300\364x\300\364v\277" - "\364t\276\365q\275\365o\275\365m\274\365k\273\366i\272\366g\272\366d\271" - "\366b\270\367`\267\367^\267\367\\\266\370\204\0\0\0\23\260\324\355\262\324" - "\354\264\325\354\266\326\354\270\326\354\272\327\353\274\327\353\276\330" - "\353\277\331\353\301\331\353\303\332\352\304\332\352\306\333\352\307\333" - "\352\311\334\352\312\334\352\313\335\351\314\335\351\315\335\351\207\316" - "\336\351<\315\335\351\314\335\351\313\335\351\312\334\352\311\334\352\307" - "\333\352\306\333\352\304\332\352\303\332\352\301\331\353\277\331\353\276" - "\330\353\274\327\353\272\327\353\270\326\354\266\326\354\264\325\354\262" - "\324\354\260\324\355\257\323\355\254\322\355\252\322\355\250\321\356\246" - "\320\356\244\317\356\242\317\356\240\316\357\236\315\357\234\315\357\232" - "\314\360\230\313\360\225\312\360\223\312\360\221\311\361\217\310\361\216" - "\310\361\213\307\361\211\306\362\207\306\362\205\305\362\203\304\362\201" - "\303\363\200\303\363~\302\363|\301\363z\300\364x\300\364v\277\364t\276\365" - "q\275\365o\275\365m\274\365k\273\366i\272\366g\272\366d\271\366b\270\367" - "`\267\367^\267\367\\\266\370\204\0\0\0\17\257\323\355\262\324\355\263\325" - "\354\265\325\354\267\326\354\271\326\354\273\327\353\274\330\353\276\330" - "\353\300\331\353\301\331\353\303\332\352\304\332\352\306\333\352\307\333" - "\352\202\311\334\352\202\313\335\351\202\314\335\351\203\315\335\351\202" - "\314\335\351\202\313\335\351\202\311\334\3528\307\333\352\306\333\352\304" - "\332\352\303\332\352\301\331\353\300\331\353\276\330\353\274\330\353\273" - "\327\353\271\326\354\267\326\354\265\325\354\263\325\354\262\324\355\257" - "\323\355\255\323\355\254\322\355\252\321\356\247\321\356\245\320\356\244" - "\317\356\242\317\357\240\316\357\235\315\357\233\314\357\231\314\360\227" - "\313\360\225\312\360\223\312\360\221\311\361\217\310\361\215\307\361\213" - "\307\361\211\306\362\206\305\362\204\305\362\202\304\362\200\303\363\200" - "\302\363~\302\363{\301\364y\300\364w\277\364u\277\364s\276\365q\275\365o" - "\274\365l\274\365j\273\366h\272\366f\271\366d\271\367b\270\367_\267\367]" - "\267\367[\266\370\204\0\0\0\16\257\323\355\261\324\355\262\324\354\264\325" - "\354\266\326\354\270\326\354\271\327\354\274\327\353\275\330\353\276\330" - "\353\300\331\353\301\331\353\303\332\352\304\332\352\202\306\333\352\1\310" - "\334\352\202\311\334\352\1\312\334\352\205\313\335\351\1\312\334\352\202" - "\311\334\352\1\310\334\352\202\306\333\3527\304\332\352\303\332\352\301\331" - "\353\300\331\353\276\330\353\275\330\353\274\327\353\271\327\354\270\326" - "\354\266\326\354\264\325\354\262\324\354\261\324\355\257\323\355\254\322" - "\355\252\322\355\251\321\356\247\320\356\245\320\356\242\317\356\241\316" - "\357\237\316\357\235\315\357\233\314\357\230\313\360\226\313\360\225\312" - "\360\223\311\360\220\311\361\216\310\361\214\307\361\212\306\361\210\306" - "\362\206\305\362\204\304\362\201\304\363\200\303\363\200\302\363~\302\363" - "{\301\364y\300\364w\277\364u\277\364s\276\365q\275\365o\274\365l\274\365" - "j\273\366h\272\366f\271\366d\271\367b\270\367_\267\367]\267\367[\266\370" - "\204\0\0\0\22\256\323\355\257\323\355\262\324\355\263\325\354\265\325\354" - "\267\326\354\271\326\354\272\327\353\274\327\353\275\330\353\276\330\353" - "\300\331\353\301\331\353\303\332\352\304\332\352\305\333\352\306\333\352" - "\307\333\352\202\310\334\352\205\311\334\352\202\310\334\352;\307\333\352" - "\306\333\352\305\333\352\304\332\352\303\332\352\301\331\353\300\331\353" - "\276\330\353\275\330\353\274\327\353\272\327\353\271\326\354\267\326\354" - "\265\325\354\263\325\354\262\324\355\257\323\355\256\323\355\254\322\355" - "\252\321\356\250\321\356\246\320\356\244\317\356\242\317\357\240\316\357" - "\236\315\357\234\315\357\232\314\360\230\313\360\226\313\360\224\312\360" - "\222\311\361\220\310\361\216\310\361\213\307\361\211\306\362\207\306\362" - "\206\305\362\204\304\362\201\304\363\200\303\363\177\302\363}\301\363{\301" - "\364y\300\364v\277\364t\276\364r\276\365p\275\365n\274\365l\273\366i\273" - "\366g\272\366e\271\366c\270\367a\270\367_\267\367]\266\367Z\266\370\204\0" - "\0\0\22\254\322\355\257\323\355\260\324\355\262\324\354\264\325\354\266\326" - "\354\267\326\354\271\326\354\272\327\353\274\327\353\275\330\353\276\330" - "\353\300\331\353\301\331\353\302\332\352\303\332\352\304\332\352\305\333" - "\352\203\306\333\352\203\307\333\352\203\306\333\352;\305\333\352\304\332" - "\352\303\332\352\302\332\352\301\331\353\300\331\353\276\330\353\275\330" - "\353\274\327\353\272\327\353\271\326\354\267\326\354\266\326\354\264\325" - "\354\262\324\354\260\324\355\257\323\355\254\322\355\253\322\355\251\321" - "\356\247\320\356\245\320\356\243\317\356\241\316\357\240\316\357\235\315" - "\357\233\314\357\231\314\360\227\313\360\225\312\360\223\312\360\221\311" - "\361\217\310\361\215\307\361\213\307\361\211\306\362\207\306\362\205\305" - "\362\203\304\362\201\303\363\200\303\363~\302\363|\301\363z\300\364x\300" - "\364v\277\364t\276\365q\275\365p\275\365n\274\365l\273\366i\273\366g\272" - "\366e\271\366c\270\367a\270\367_\267\367]\266\367Z\266\370\204\0\0\0\16\254" - "\322\355\255\323\355\257\323\355\261\324\355\262\324\354\264\325\354\266" - "\326\354\267\326\354\271\326\354\272\327\353\274\327\353\275\330\353\276" - "\330\353\300\331\353\202\301\331\353\202\303\332\352\202\304\332\352\205" - "\305\333\352\202\304\332\352\202\303\332\352\202\301\331\3537\300\331\353" - "\276\330\353\275\330\353\274\327\353\272\327\353\271\326\354\267\326\354" - "\266\326\354\264\325\354\262\324\354\261\324\355\257\323\355\255\323\355" - "\254\322\355\252\321\356\250\321\356\246\320\356\244\317\356\242\317\356" - "\240\316\357\236\315\357\235\315\357\233\314\357\230\313\360\226\313\360" - "\225\312\360\223\311\360\220\311\361\216\310\361\214\307\361\212\306\361" - "\211\306\362\206\305\362\204\305\362\202\304\362\200\303\363\200\302\363" - "~\302\363{\301\364y\300\364x\300\364v\277\364t\276\365q\275\365o\275\365" - "m\274\365k\273\366i\272\366g\272\366d\271\366b\270\367`\267\367^\267\367" - "\\\266\370Z\265\370\204\0\0\0\20\252\322\355\254\322\355\256\323\355\257" - "\323\355\262\324\355\263\325\354\264\325\354\266\326\354\267\326\354\271" - "\326\354\272\327\353\274\327\353\275\330\353\276\330\353\277\331\353\300" - "\331\353\202\301\331\353\1\302\332\352\207\303\332\352\1\302\332\352\202" - "\301\331\3539\300\331\353\277\331\353\276\330\353\275\330\353\274\327\353" - "\272\327\353\271\326\354\267\326\354\266\326\354\264\325\354\263\325\354" - "\262\324\355\257\323\355\256\323\355\254\322\355\252\322\355\251\321\356" - "\247\320\356\245\320\356\243\317\356\241\316\357\240\316\357\235\315\357" - "\233\314\357\232\314\360\230\313\360\225\312\360\223\312\360\222\311\361" - "\220\310\361\216\310\361\213\307\361\211\306\362\210\306\362\206\305\362" - "\204\304\362\201\304\363\200\303\363\177\302\363}\301\363{\301\364y\300\364" - "w\277\364u\277\364s\276\365q\275\365o\274\365l\274\365j\273\366h\272\366" - "f\271\366d\271\367b\270\367`\267\367^\267\367\\\266\370Z\265\370\204\0\0" - "\0\22\252\321\356\253\322\355\254\322\355\257\323\355\260\324\355\262\324" - "\355\263\325\354\264\325\354\266\326\354\267\326\354\271\326\354\272\327" - "\353\274\327\353\274\330\353\275\330\353\276\330\353\277\331\353\300\331" - "\353\211\301\331\353;\300\331\353\277\331\353\276\330\353\275\330\353\274" - "\330\353\274\327\353\272\327\353\271\326\354\267\326\354\266\326\354\264" - "\325\354\263\325\354\262\324\355\260\324\355\257\323\355\254\322\355\253" - "\322\355\252\321\356\247\321\356\246\320\356\244\317\356\242\317\356\240" - "\316\357\236\315\357\235\315\357\233\314\357\230\313\360\227\313\360\225" - "\312\360\223\311\360\221\311\361\217\310\361\215\307\361\213\307\361\211" - "\306\362\207\306\362\205\305\362\203\304\362\201\303\363\200\303\363~\302" - "\363}\301\363{\301\364y\300\364v\277\364t\276\364r\276\365p\275\365n\274" - "\365l\273\366i\273\366h\272\366f\271\366d\271\367b\270\367_\267\367]\267" - "\367[\266\370Y\265\370\204\0\0\0\21\250\321\356\252\321\356\254\322\355\255" - "\323\355\257\323\355\260\324\355\262\324\355\263\325\354\264\325\354\266" - "\326\354\267\326\354\271\326\354\271\327\354\273\327\353\274\327\353\274" - "\330\353\275\330\353\202\276\330\353\207\277\331\353\202\276\330\353:\275" - "\330\353\274\330\353\274\327\353\273\327\353\271\327\354\271\326\354\267" - "\326\354\266\326\354\264\325\354\263\325\354\262\324\355\260\324\355\257" - "\323\355\255\323\355\254\322\355\252\321\356\250\321\356\247\320\356\245" - "\320\356\243\317\356\241\316\357\240\316\357\235\315\357\233\314\357\232" - "\314\360\230\313\360\226\313\360\224\312\360\222\311\361\220\310\361\216" - "\310\361\214\307\361\212\306\361\210\306\362\206\305\362\204\305\362\202" - "\304\362\200\303\363\200\302\363~\302\363|\301\363z\300\364x\300\364v\277" - "\364t\276\365q\275\365o\275\365n\274\365l\273\366i\273\366g\272\366e\271" - "\366c\270\367a\270\367_\267\367]\266\367Z\266\370X\265\370\204\0\0\0\21\247" - "\320\356\251\321\356\252\322\355\254\322\355\255\323\355\257\323\355\261" - "\324\355\262\324\355\263\325\354\264\325\354\266\326\354\267\326\354\270" - "\326\354\271\326\354\272\327\353\273\327\353\274\327\353\202\274\330\353" - "\202\275\330\353\203\276\330\353\202\275\330\353\202\274\330\353:\274\327" - "\353\273\327\353\272\327\353\271\326\354\270\326\354\267\326\354\266\326" - "\354\264\325\354\263\325\354\262\324\355\261\324\355\257\323\355\255\323" - "\355\254\322\355\252\322\355\251\321\356\247\320\356\245\320\356\244\317" - "\356\242\317\357\240\316\357\236\315\357\235\315\357\233\314\357\231\314" - "\360\227\313\360\225\312\360\223\312\360\221\311\361\217\310\361\216\310" - "\361\213\307\361\211\306\362\207\306\362\206\305\362\204\304\362\201\304" - "\363\200\303\363\177\302\363~\302\363{\301\364y\300\364w\277\364u\277\364" - "s\276\365q\275\365o\275\365m\274\365k\273\366i\272\366g\272\366d\271\366" - "b\270\367`\267\367^\267\367\\\266\370Z\266\370X\265\370\204\0\0\0\14\246" - "\320\356\247\321\356\251\321\356\252\322\355\254\322\355\256\323\355\257" - "\323\355\260\324\355\262\324\355\263\325\354\264\325\354\265\325\354\202" - "\267\326\354\4\270\326\354\271\326\354\271\327\354\272\327\353\202\273\327" - "\353\205\274\327\353\202\273\327\353\4\272\327\353\271\327\354\271\326\354" - "\270\326\354\202\267\326\3545\265\325\354\264\325\354\263\325\354\262\324" - "\355\260\324\355\257\323\355\256\323\355\254\322\355\252\322\355\251\321" - "\356\247\321\356\246\320\356\244\317\356\242\317\356\241\316\357\237\316" - "\357\235\315\357\233\314\357\232\314\360\230\313\360\226\313\360\224\312" - "\360\222\311\361\220\311\361\216\310\361\214\307\361\213\307\361\211\306" - "\362\206\305\362\204\305\362\203\304\362\201\303\363\200\303\363~\302\363" - "}\301\363{\301\364y\300\364v\277\364t\276\364r\276\365q\275\365o\274\365" - "l\274\365j\273\366h\272\366f\271\366d\271\367b\270\367_\267\367^\267\367" - "\\\266\370Z\265\370X\265\370\204\0\0\0\13\245\320\356\246\320\356\247\321" - "\356\251\321\356\253\322\355\254\322\355\255\323\355\257\323\355\260\324" - "\355\262\324\355\262\324\354\202\264\325\354\1\266\326\354\202\267\326\354" - "\1\270\326\354\202\271\326\354\203\271\327\354\1\272\327\353\203\271\327" - "\354\202\271\326\354\1\270\326\354\202\267\326\354\1\266\326\354\202\264" - "\325\3544\262\324\354\262\324\355\260\324\355\257\323\355\255\323\355\254" - "\322\355\253\322\355\251\321\356\247\321\356\246\320\356\245\320\356\243" - "\317\356\241\316\357\240\316\357\236\315\357\234\315\357\233\314\357\230" - "\313\360\227\313\360\225\312\360\223\312\360\221\311\361\217\310\361\216" - "\310\361\213\307\361\211\306\362\210\306\362\206\305\362\204\304\362\202" - "\304\362\200\303\363\200\302\363~\302\363{\301\364z\300\364x\300\364v\277" - "\364t\276\365q\275\365p\275\365n\274\365l\273\366i\273\366g\272\366e\271" - "\366c\270\367b\270\367_\267\367]\267\367[\266\370Y\265\370W\264\370\204\0" - "\0\0\15\243\317\356\245\320\356\246\320\356\250\321\356\252\321\356\253\322" - "\355\254\322\355\255\323\355\257\323\355\260\324\355\261\324\355\262\324" - "\354\263\325\354\202\264\325\354\2\265\325\354\266\326\354\203\267\326\354" - "\205\270\326\354\203\267\326\354\2\266\326\354\265\325\354\202\264\325\354" - "6\263\325\354\262\324\354\261\324\355\260\324\355\257\323\355\255\323\355" - "\254\322\355\253\322\355\252\321\356\250\321\356\246\320\356\245\320\356" - "\243\317\356\242\317\357\240\316\357\236\315\357\235\315\357\233\314\357" - "\231\314\360\230\313\360\225\312\360\224\312\360\222\311\361\220\311\361" - "\216\310\361\214\307\361\213\307\361\211\306\362\206\305\362\205\305\362" - "\203\304\362\201\303\363\200\303\363\177\302\363}\301\363{\301\364y\300\364" - "w\277\364u\277\364s\276\365q\275\365o\275\365m\274\365k\273\366i\272\366" - "g\272\366d\271\366c\270\367a\270\367_\267\367]\266\367Z\266\370X\265\370" - "V\264\370\204\0\0\0\17\242\317\357\243\317\356\245\320\356\247\320\356\250" - "\321\356\251\321\356\252\322\355\254\322\355\255\323\355\256\323\355\257" - "\323\355\260\324\355\262\324\355\262\324\354\263\325\354\202\264\325\354" - "\202\265\325\354\207\266\326\354\202\265\325\354\202\264\325\3548\263\325" - "\354\262\324\354\262\324\355\260\324\355\257\323\355\256\323\355\255\323" - "\355\254\322\355\252\322\355\252\321\356\250\321\356\247\320\356\245\320" - "\356\243\317\356\242\317\357\240\316\357\237\316\357\235\315\357\233\314" - "\357\232\314\360\230\313\360\226\313\360\225\312\360\223\311\360\221\311" - "\361\217\310\361\216\310\361\213\307\361\211\306\362\210\306\362\206\305" - "\362\204\305\362\202\304\362\200\303\363\200\302\363~\302\363|\301\363z\300" - "\364y\300\364v\277\364t\276\364r\276\365p\275\365o\274\365l\274\365j\273" - "\366h\272\366f\271\366d\271\367b\270\367`\267\367^\267\367\\\266\370Z\265" - "\370X\265\370U\264\370\204\0\0\0\10\240\316\357\242\317\356\244\317\356\245" - "\320\356\247\320\356\247\321\356\251\321\356\252\322\355\202\254\322\355" - "\1\256\323\355\202\257\323\355\1\260\324\355\202\262\324\355\2\262\324\354" - "\263\325\354\211\264\325\354\2\263\325\354\262\324\354\202\262\324\355\1" - "\260\324\355\202\257\323\355\1\256\323\355\202\254\322\3551\252\322\355\251" - "\321\356\247\321\356\247\320\356\245\320\356\244\317\356\242\317\356\240" - "\316\357\237\316\357\235\315\357\234\315\357\233\314\357\230\313\360\227" - "\313\360\225\312\360\223\312\360\222\311\361\220\310\361\216\310\361\214" - "\307\361\213\307\361\211\306\362\206\305\362\205\305\362\203\304\362\201" - "\304\363\200\303\363\177\302\363~\302\363{\301\364y\300\364w\277\364v\277" - "\364t\276\365q\275\365o\275\365n\274\365l\273\366i\273\366g\272\366e\271" - "\366d\271\367b\270\367_\267\367]\267\367[\266\370Y\265\370W\264\370U\264" - "\370\204\0\0\0\15\240\316\357\241\316\357\242\317\356\244\317\356\245\320" - "\356\246\320\356\247\321\356\251\321\356\252\321\356\253\322\355\254\322" - "\355\255\323\355\256\323\355\202\257\323\355\1\260\324\355\202\261\324\355" - "\1\262\324\355\207\262\324\354\1\262\324\355\202\261\324\355\1\260\324\355" - "\202\257\323\355\36\256\323\355\255\323\355\254\322\355\253\322\355\252\321" - "\356\251\321\356\247\321\356\246\320\356\245\320\356\244\317\356\242\317" - "\356\241\316\357\240\316\357\235\315\357\234\315\357\233\314\357\231\314" - "\360\230\313\360\225\312\360\224\312\360\223\311\360\220\311\361\217\310" - "\361\215\307\361\213\307\361\211\306\362\210\306\362\206\305\362\204\304" - "\362\202\304\362\202\200\303\363\26~\302\363|\301\363{\301\364y\300\364v" - "\277\364t\276\364s\276\365q\275\365o\274\365l\274\365k\273\366i\272\366g" - "\272\366d\271\366c\270\367a\270\367_\267\367]\266\367Z\266\370X\265\370V" - "\264\370U\264\370\204\0\0\0\16\236\315\357\240\316\357\241\316\357\242\317" - "\356\243\317\356\245\320\356\246\320\356\247\321\356\250\321\356\252\321" - "\356\252\322\355\253\322\355\254\322\355\255\323\355\202\256\323\355\203" - "\257\323\355\207\260\324\355\203\257\323\355\202\256\323\3557\255\323\355" - "\254\322\355\253\322\355\252\322\355\252\321\356\250\321\356\247\321\356" - "\246\320\356\245\320\356\243\317\356\242\317\356\241\316\357\240\316\357" - "\236\315\357\235\315\357\233\314\357\231\314\360\230\313\360\226\313\360" - "\225\312\360\223\311\360\221\311\361\220\310\361\216\310\361\214\307\361" - "\212\306\361\211\306\362\206\305\362\205\305\362\203\304\362\201\304\363" - "\200\303\363\177\302\363~\302\363{\301\364y\300\364x\300\364v\277\364t\276" - "\365r\276\365p\275\365n\274\365l\273\366j\273\366h\272\366f\271\366d\271" - "\367b\270\367`\267\367^\267\367\\\266\370Z\265\370X\265\370V\264\370T\263" - "\371\204\0\0\0\2\235\315\357\236\315\357\202\240\316\357\2\242\317\357\243" - "\317\356\202\245\320\356\6\247\320\356\247\321\356\251\321\356\252\321\356" - "\252\322\355\253\322\355\202\254\322\355\202\255\323\355\202\256\323\355" - "\205\257\323\355\202\256\323\355\202\255\323\355\202\254\322\355\6\253\322" - "\355\252\322\355\252\321\356\251\321\356\247\321\356\247\320\356\202\245" - "\320\356\2\243\317\356\242\317\357\202\240\316\357\22\236\315\357\235\315" - "\357\233\314\357\232\314\360\230\313\360\226\313\360\225\312\360\223\312" - "\360\222\311\361\220\310\361\216\310\361\215\307\361\213\307\361\211\306" - "\362\207\306\362\206\305\362\204\304\362\202\304\362\202\200\303\363\27~" - "\302\363|\301\363{\301\364y\300\364v\277\364u\277\364s\276\365q\275\365o" - "\275\365m\274\365k\273\366i\272\366g\272\366e\271\366c\270\367a\270\367_" - "\267\367]\267\367[\266\370Y\265\370W\264\370U\264\370S\263\371\204\0\0\0" - "\16w\232\264\235\315\357\236\315\357\237\316\357\240\316\357\242\317\357" - "\242\317\356\244\317\356\245\320\356\246\320\356\247\320\356\247\321\356" - "\251\321\356\252\321\356\202\252\322\355\1\253\322\355\213\254\322\355\1" - "\253\322\355\202\252\322\3557\252\321\356\251\321\356\247\321\356\247\320" - "\356\246\320\356\245\320\356\244\317\356\242\317\356\242\317\357\240\316" - "\357\237\316\357\236\315\357\235\315\357\233\314\357\232\314\360\230\313" - "\360\227\313\360\225\312\360\223\312\360\222\311\361\220\311\361\217\310" - "\361\215\307\361\213\307\361\211\306\362\210\306\362\206\305\362\204\305" - "\362\203\304\362\201\303\363\200\303\363\177\302\363~\302\363{\301\364y\300" - "\364x\300\364v\277\364t\276\365r\276\365p\275\365n\274\365l\274\365j\273" - "\366h\272\366g\272\366d\271\366b\270\367`\267\367_\267\367]\266\367Z\266" - "\370X\265\370V\264\370U\264\370>\207\274\204\0\0\0\11\12\16\20w\232\264\234" - "\315\357\235\315\357\237\316\357\240\316\357\241\316\357\242\317\356\243" - "\317\356\202\245\320\356\5\246\320\356\247\320\356\247\321\356\250\321\356" - "\251\321\356\202\252\321\356\203\252\322\355\203\253\322\355\203\252\322" - "\355\202\252\321\356\5\251\321\356\250\321\356\247\321\356\247\320\356\246" - "\320\356\202\245\320\3562\243\317\356\242\317\356\241\316\357\240\316\357" - "\237\316\357\235\315\357\234\315\357\233\314\357\232\314\360\230\313\360" - "\227\313\360\225\312\360\224\312\360\222\311\361\220\311\361\217\310\361" - "\216\310\361\214\307\361\212\306\361\211\306\362\206\305\362\205\305\362" - "\204\304\362\201\304\363\200\303\363\200\302\363~\302\363|\301\363{\301\364" - "y\300\364v\277\364u\277\364s\276\365q\275\365o\275\365m\274\365l\273\366" - "i\273\366g\272\366e\271\366d\271\367b\270\367_\267\367]\267\367\\\266\370" - "Z\265\370X\265\370U\264\370@\207\274\5\14\21\377\0\0\0\267\0\0\0", + "\5\306\306\306\302\302\301\300\276\273\311\311\311\342\342\342\315\345\345" + "\345\4\206\216\236Yf\200\242\244\250\247\247\247\202\255\255\255\7\250\250" + "\250\256\256\256\317\316\314\231\236\232\215\244\223\322\322\322\340\340" + "\340\315\345\345\345\4s}\221:Jm\232\234\241\240\240\240\202\250\250\250\7" + "\241\241\241\247\247\247\302\303\307\314\315\321\307\311\314\303\305\311" + "\325\327\333\232\331\333\336\206\331\333\337\204\332\333\337\215\332\334" + "\340\1\333\334\340\202\333\334\341\223\333\335\341\202\333\335\342\202\334" + "\335\342\202\334\336\342\10\223\232\253p{\223\247\252\262\253\255\261\260" + "\262\266\257\261\266\253\255\262\260\262\267\234\22)]>\23*^\24+_\24+`\25" + ",a\26-b\26.c\27/d\30/e\31""0f\31""1g\32""2h\33""3i\34""4k\36""7o\37""8p\40" + """9q\40""9r!:s\";t#<u#=v$=w%>x&?y&@z'A{(A|(B})C~*D~+D\177+E\200,F\200-H\201" + "-G\201+E\177,E\200-F\200-G\201.H\202/H\2030I\2040J\2051K\2062L\2073L\210" + "3M\2104N\2115O\2125O\2136P\2147Q\2158R\2168S\2179S\220:T\221:U\222;V\223" + "<W\224=W\225=X\226>Y\227\233\22)]$\22)^\23*_\24+_\25,`\25-a\26-b\27.c\27" + "/d\30""0e\31""0f\32""1g\32""2h\33""3i\33""4j\36""7o\37""8q\40""9r!:s!;t\"" + ";u#<u$=v$>w%>x&?y&@z'A{(B|)B})C~*D\177+E\200,F\200,G\201-H\202.I\202\202" + ",E\200\32-F\200.G\201.H\202/I\2030I\2041J\2051K\2062L\2073M\2104M\2114N\212" + "5O\2136P\2146P\2157Q\2168R\2169S\2179T\220:T\221;U\222<V\223<W\224=X\225" + ">X\226>Y\227\22*^\232\22)]A\23*^\23*_\24+`\25,a\26-b\26.c\27.d\30/d\30""0" + "e\31""1f\32""2g\33""2h\33""3i\33""4j\35""6m\40""9q\40""9r!:s\";t\"<u#<v$" + "=w%>x%?y&@z'@z(A{(B|)C}*D~*D\177+E\200,F\200-H\201-H\202.I\203-G\200,F\200" + "-G\201.G\202/H\203/I\2030J\2051K\2052K\2062L\2073M\2104N\2115N\2125O\213" + "6P\2147Q\2157R\2168R\2179S\220:T\221:U\222;V\223<V\224<W\225=X\225>Y\226" + "?Y\227\23,b\22*^\231\22)]\36\23*^\24+_\24,`\25,a\26-b\27.c\27/d\30/e\31""0" + "f\31""1g\32""2h\33""3i\33""3j\33""4k\34""5k\37""8q\40:r!:s\";t#<u#=v$>w%" + ">x&?y&@z'A{(A|)B})C~*D\177\202+E\200\37,G\200-H\201.I\202-G\200,E\200-F\200" + "-G\201.H\202/H\2030I\2040J\2051K\2062L\2073L\2103M\2114N\2115O\2126P\213" + "6P\2147Q\2158R\2168S\2179T\220:T\221;U\222;V\223<W\224=W\225>X\226>Y\227" + "?Z\230\202\23,b\1\22*^\227\22)]@\22*^\23*_\24+`\25,`\25-a\26-b\27.c\30/d" + "\30""0e\31""1f\32""1g\32""2h\33""3i\33""4j\34""4k\34""5l\36""7o!:s\";t\"" + ";u#<v$=v$>w%?x&?y'@z'A{(B|)C})C~*D\177+E\200,F\200,G\201-H\202,G\200,E\200" + ",F\200-F\200.G\201/H\202/I\2030I\2041J\2051K\2062L\2073M\2104N\2114N\212" + "5O\2136P\2147Q\2157Q\2168R\2179S\2209T\220:U\221;U\222<V\223<W\224=X\225" + ">X\226>Y\227?Z\230\203\23,b\1\22*^\226\22)]@\23*^\23+_\24+`\25,a\26-b\26" + ".c\27/d\30/e\31""0f\31""1g\32""2g\33""2h\33""3i\33""4j\34""5k\35""6l\35""6" + "m!:r\";t\"<u#=v$=w%>x%?y&@z'A{(A|(B|)C}*D~+D\177+E\200,F\200-H\201,F\200" + "+E\177,E\200-F\200-G\201.G\202/H\203/I\2040J\2051K\2052K\2062L\2073M\210" + "4N\2115N\2125O\2136P\2147Q\2157R\2168R\2179S\220:T\221:U\222;V\223<V\224" + "=W\225=X\226>Y\226?Z\227?Z\230\204\23,b\1\22*^\225\22)]\36\23*^\24+_\24," + "`\25-a\26-b\27.c\27/d\30""0e\31""0f\32""1g\32""2h\33""3i\33""4j\33""4k\34" + """5l\35""6l\36""7m\40""9q\";t#<u#=v$>w%>x&?y&@z'A{(B|)B})C~*D\177\202+E\200" + "\40,G\200+F\200+E~+E\177,E\200-F\200.G\201.H\202/I\2030I\2041J\2051K\206" + "2L\2073L\2103M\2114N\2125O\2136P\2136P\2147Q\2158R\2169S\2179T\220:T\221" + ";U\222;V\223<W\224=W\225>X\226>Y\227?Z\230@[\231\205\23,b\1\22*^\223\22)" + "]A\22*^\23*_\24+`\25,a\25-b\26.b\27.c\30/d\30""0e\31""1f\32""1g\32""2h\33" + """3i\33""4j\34""5k\34""5l\35""6m\36""7n\37""8o\";t#<v$=w%>x%?y&?y'@z'A{(" + "B|)C}*C~*D\177+E\200,F\200+F\177*D~+E\177,E\200-F\200-F\201.G\201/H\202/" + "I\2030J\2041J\2051K\2062L\2073M\2104N\2114N\2125O\2136P\2147Q\2157R\2168" + "R\2179S\2209T\221:U\221;U\222<V\223<W\224=X\225>X\226?Y\227?Z\230@[\231\206" + "\23,b\1\22)^\222\22)]A\23*^\23+_\24+`\25,a\26-b\26.c\27/d\30/e\31""0f\31" + """1g\32""2h\33""2h\33""3i\33""4j\34""5k\35""6l\35""6m\36""7n\37""8o!:s#=" + "v$=w%>x%?y&@z'A{(A|(B})C}*D~+D\177+E\200+E\177*D}*E~+E\177,E\200-F\200-G" + "\201.H\202/H\2030I\2040J\2051K\2062K\2072L\2103M\2104N\2115O\2125O\2136P" + "\2147Q\2158R\2168S\2179S\220:T\221:U\222;V\223<V\224=W\225=X\226>Y\227?Z" + "\230@Z\230@[\231\206\23,b\2\23,a\22)^\220\22)]\37\22)^\23*^\24+_\25,`\25" + "-a\26-b\27.c\27/d\30""0e\31""1f\32""1g\32""2h\33""3i\33""4j\34""4k\34""5" + "l\35""6m\36""7m\36""7n\37""8o\40""9q$=v$>w%>x&?y'@z'A{(B|)B})C~*D\177\202" + "+E\200!)C}*D~+E~,E\177,E\200-F\200.G\201.H\202/I\2030I\2041J\2051K\2062L" + "\2073M\2103M\2114N\2125O\2136P\2146Q\2157Q\2158R\2168S\2179T\220:T\221;U" + "\222;V\223<W\224=X\225>X\226>Y\227?Z\230@[\231A\\\232\207\23,b\2\23,a\22" + ")^\217\22)]B\23*^\23*_\24+`\25,a\26-b\26.c\27.c\30/d\30""0e\31""1f\32""2" + "g\33""2h\33""3i\33""4j\34""5k\34""5l\35""6m\36""7n\37""8o\37""9p\40""9q#" + "<u%>x%?x&@z'@z'A{(B|)C}*C~*D\177+E\200)C}*D}*D~+E\177,E\200,F\200-G\201." + "G\202/H\202/I\2030J\2041J\2052K\2062L\2073M\2104N\2114N\2125O\2136P\2147" + "Q\2157R\2168R\2179S\220:T\221:U\222;V\223<V\224<W\224=X\225>Y\226?Y\227?" + "Z\230@[\231A\\\232\210\23,b\2\23,a\22)^\216\22)]B\23*^\24+_\24,`\25,a\26" + "-b\27.c\27/d\30/e\31""0f\31""1g\32""2h\33""3i\33""3j\33""4j\34""5k\35""6" + "l\35""6m\36""7n\37""8o\40""9p\40:q\";s%>x&?y&@z'A{(A|)B})C~*D\177+E\177)" + "C})C|*D}+E~+E\177,E\200-F\200.G\201.H\202/H\2030I\2040J\2051K\2062L\2073" + "L\2103M\2104N\2115O\2125O\2136P\2147Q\2158R\2168S\2179S\220:T\221;U\222;" + "V\223<W\224=W\225=X\226>Y\227?Z\230@Z\230@[\231A\\\232\211\23,b\2\23,a\22" + ")^\214\22)]\36\22)^\23*_\24+`\25,`\25-a\26-b\27.c\27/d\30""0e\31""1f\32""1" + "g\32""2h\33""3i\33""4j\34""5k\34""5l\35""6m\36""7n\37""8o\37""8p\40""9p!" + ":q!;r$>w&?y'@z'A{(B|)B})C~\202*D\177#)C|)C}*D~+E\177,E\200,F\200-F\200.G" + "\201.H\202/I\2030J\2041J\2051K\2062L\2073M\2104M\2114N\2125O\2136P\2146Q" + "\2157Q\2158R\2179S\2179T\220:T\221;U\222<V\223<W\224=X\225>X\226>Y\227?Z" + "\230@[\231A\\\232A\\\233\212\23,b\2\23,a\22)^\213\22)]\37\23*^\23*_\24+`" + "\25,a\26-b\26.c\27.d\30/e\30""0f\31""1f\32""2g\33""2h\33""3i\33""4j\34""5" + "k\35""6l\35""6m\36""7n\37""8o\37""9p\40:q!:r\";s#=u&@y'@{(A{(B|)C}*D~*D\177" + "\202)C|\"*D}*D~+E\177,E\200,F\200-G\201.G\202/H\203/I\2040J\2041K\2052K\206" + "2L\2073M\2104N\2114O\2125O\2136P\2147Q\2157R\2168R\2179S\220:T\221:U\222" + ";V\223<V\224=W\224=X\226>Y\226?Y\227?Z\230@[\231A\\\232B]\233\213\23,b\2" + "\23,a\22)^\212\22)]C\23*^\24+_\24,`\25,a\26-b\27.c\27/d\30""0e\31""0f\32" + """1g\32""2h\33""3i\33""4j\33""4k\34""5l\35""6l\36""7m\36""7n\37""8o\40""9" + "p!:q!;r\";s#<t&?y'A{(A|)B})C~*D\177*D~(B{)C|*D}+E~+E\177,E\200-F\200-G\201" + ".H\202/I\2030I\2040J\2051K\2062L\2073L\2103M\2114N\2125O\2136P\2136P\214" + "7Q\2158R\2168S\2179T\220:T\221;U\222;V\223<W\224=W\225>X\226>Y\227?Z\230" + "@[\231@[\232A\\\233B]\233\214\23,b\1\23+a\211\22)]\37\22*^\23*_\24+`\25," + "a\25-b\26-b\27.c\30/d\30""0e\31""1f\32""1g\33""2h\33""3i\33""4j\34""5k\34" + """5l\35""6m\36""7n\37""8o\37""8p\40""9q!:q!;r\"<s#<t$>w'A{(B|)C}*C~*D\177" + "\202)C|#)D}*D~+E\177,E\200,F\200-F\201.G\201/H\202/I\2030J\2041J\2051K\206" + "2L\2073M\2104N\2114N\2125O\2136P\2147Q\2157Q\2168R\2179S\2209T\220:U\221" + ";U\222<V\223<W\224=X\225>Y\226>Y\227?Z\230@[\231A\\\232A\\\233B]\234\215" + "\23,b\1\23+a\210\22)]\35\23*^\24+_\24+`\25,a\26-b\26.c\27/d\30/e\31""0f\31" + """1g\32""2g\33""2h\33""3i\33""4j\34""5k\35""6l\36""6m\36""7n\37""8o\40""9" + "p\40:q!:r\";s\"<t#=u$=v'A{(B})C}\202*D~&(B{)C|*D}*E~+E\177,E\200-F\200-G" + "\201.H\202/H\2030I\2040J\2051K\2052K\2072L\2073M\2104N\2115O\2125O\2136P" + "\2147Q\2158R\2168S\2179S\220:T\221:U\222;V\223<W\224=W\225=X\226>Y\226?Z" + "\227@Z\230@[\231A\\\232B]\233B^\234\23+a\215\23,b\1\23+a\206\22)]\37\22)" + "^\23*^\24+_\24,`\25-a\26-b\27.c\27/d\30""0e\31""0f\32""1g\32""2h\33""3i\33" + """4j\33""4k\34""5l\35""6m\36""7m\36""8n\37""8o\40""9p!:q!;r\";s#<t#=u$>v" + "&@y)B})C~*D\177\202)B|&)C}*D}+E~+E\177,E\200-F\200.G\201.H\202/I\2030I\204" + "1J\2051K\2062L\2073L\2103M\2114N\2125O\2136P\2146P\2157Q\2158R\2169S\217" + "9T\220:T\221;U\222;V\223<W\224=X\225>X\226>Y\227?Z\230@[\231@[\232A\\\233" + "B]\234C^\235\22)]\23+a\215\23,b\1\23+a\205\22)]E\23*^\23*_\24+`\25,a\25-" + "b\26.c\27.c\30/d\30""0e\31""1f\32""1g\33""2h\33""3i\33""4j\34""5k\34""5l" + "\35""6m\36""7n\37""8o\37""9p\40""9q!:r\";s\"<t#=t$=u$>v%?w)B|*C~*D~(B{)C" + "|*D}*D~+E\177,E\200,F\200-F\201.G\201/H\202/I\2030J\2041J\2052K\2062L\207" + "3M\2104N\2114N\2125O\2136P\2147Q\2157Q\2168R\2179S\2209T\221:U\222;U\222" + "<V\223<W\224=X\225>Y\226?Y\227?Z\230@[\231A\\\232B]\233B]\234C^\235\202\22" + ")]\1\23+`\215\23,b\1\23+a\204\22)]\13\23*^\24+_\24+`\25,a\26-b\26.c\27/d" + "\30/e\31""0f\31""1g\32""2h\202\33""3i8\33""4j\34""5k\35""6l\35""6m\36""7" + "n\37""8o\40""9p\40:q!;r\";s#<t#=u$>v%>w%?x'A{*D~)B|(B{)C|*D}+E~+E\177,E\200" + "-F\200-G\201.G\202/H\2030I\2040J\2051K\2062L\2073L\2103M\2104N\2115O\212" + "5O\2136P\2147Q\2158R\2168S\2179S\220:T\221;U\222;V\223<V\224=W\225=X\226" + ">Y\227?Z\230@Z\230@[\231A\\\232B]\233C^\234C^\235\203\22)]\1\22+`\215\23" + ",b\1\23+a\202\22)]F\22)^\23*_\24+_\25,`\25-a\26-b\27.c\27/d\30""0e\31""1" + "f\32""1g\32""2h\33""3i\33""4j\34""5k\34""5l\35""6m\36""7n\36""8o\37""8o\40" + """9p!:q!;r\"<s#<t#=u$>v%?w&@x'@y)C~(B{)C|)C}*D~+E\177,E\177,E\200-F\200." + "G\201.H\202/I\2030I\2041J\2051K\2062L\2073M\2104M\2114N\2125O\2136P\2146" + "Q\2157Q\2158R\2179S\2179T\220:T\221;U\222;V\223<W\224=X\225>X\226?Y\227?" + "Z\230@[\231A\\\232A\\\233B]\234C^\235C_\236\204\22)]\1\22*_\215\23,b\40\23" + "+a\22)]\23*^\23+_\24+`\25,a\26-b\26.c\27.d\30/e\30""0f\31""1f\32""2g\33""2" + "h\33""3i\33""4j\34""5k\34""6l\35""6m\36""7n\37""8o\37""9p\40""9q!:r\";s\"" + "<t#=t$=u%>v%?w&@x'Ay\202(B{&)C|*D}*D~+E\177,E\200-F\200-G\201.G\202/H\203" + "/I\2030J\2041K\2052K\2062L\2073M\2104N\2115N\2125O\2136P\2147Q\2157R\216" + "8R\2179S\220:T\221:U\222;V\223<V\223=W\224=X\225>Y\226?Y\227?Z\230@[\231" + "A\\\232B]\233B]\234C^\235D_\236\205\22)]\1\22*_\215\23,b\37\23+a\23*_\24" + "+_\24,`\25,a\26-b\27.c\27/d\30/e\31""0f\31""1g\32""2h\33""3i\33""3j\33""4" + "k\34""5k\35""6l\36""7m\36""7n\37""8o\40""9p\40:q!;r\";s#<t#=u$>v%>w&?x&@" + "y'Az\202(B{&)C|*D}+E~+E\177,E\200-F\200.G\201.H\202/H\2030I\2040J\2051K\206" + "2L\2073L\2103M\2114N\2125O\2136P\2136P\2147Q\2168R\2168S\2179S\220:T\221" + ";U\222;V\223<W\224=W\225>X\226>Y\227?Z\230@[\231@[\232A\\\232B]\233C^\234" + "C^\235D_\236\206\22)]\1\22*_\214\23,bG\23,c\24,b\24+`\25,`\25-a\26-b\27." + "c\30/d\30""0e\31""1f\32""1g\32""2h\33""3i\33""4j\34""4k\34""5l\35""6m\36" + """7n\37""8o\37""8p\40""9p!:q!;r\"<s#<t$=u$>v%?w&@x'@y'Az(B{)C|)C}*D~+E\177" + ",E\200,F\200-F\200.G\201/H\202/I\2030J\2041J\2051K\2062L\2073M\2104N\211" + "4N\2125O\2136P\2148S\216:V\2229T\2209S\2209T\220:U\221;U\222;V\223<W\224" + "=X\225>X\226>Y\227?Z\230@[\231A\\\232A\\\233B]\234C^\235D_\236D`\237\207" + "\22)]\1\22*^\213\23,bG\24-c\24.d\25-c\25,a\26-b\26.c\27.d\30/e\31""0f\31" + """1g\32""2g\33""2h\33""3i\33""4j\34""5k\35""6l\35""6m\36""7n\37""8o\40""9" + "p\40:q!:r\";s\"<t#=u$=v%>v%?w&@x'Ay(Az(B{)C|*D}*E~+E\177,E\200-F\200-G\201" + ".G\202/H\2030I\2040J\2051K\2062K\2062L\2073M\2104N\2115N\2125O\2138S\217" + ":V\222;W\223:V\2229S\220:T\221:U\222;V\223<V\224=W\225=X\225>Y\226?Y\227" + "@Z\230@[\231A\\\232B]\233B]\234C^\235D_\236E`\237\210\22)]\2\22*^\23,a\211" + "\23,b\20\24-c\25.d\25/e\26/e\26-b\27.c\27/d\30""0e\31""0f\32""1g\32""2h\33" + """3i\33""4j\33""4k\34""5l\35""6l\202\36""7n$\37""8o\40""9p!:q!;r\";s#<t#" + "=u$>v%?w&?x&@y'Az(B{(B|)C}*D}+E~+E\177,E\200-F\200.G\201.H\202/I\2030I\204" + "1J\2051K\2062L\2073L\2103M\2114N\2125O\2138S\2179U\221:V\222;W\223;X\224" + "\202:T\221\17;U\222;V\223<W\224=W\225>X\226>Y\227?Z\230@[\231A[\232A\\\233" + "B]\233C^\234C_\235D_\236E`\237\211\22)]\2\22)^\23+a\207\23,bH\23-c\24-d\25" + ".e\26/f\26""0f\27""0f\27.d\30/d\30""0e\31""1f\32""1g\32""2h\33""3i\33""4" + "j\34""5k\34""5l\35""6m\36""7n\37""8o\37""9p\40""9q!:r!;r\"<s#<t$=u$>v%?w" + "&@x'@y'Az(B{)C|)D}*D~+E\177,E\200,F\200-G\201.G\201/H\202/I\2030J\2041J\205" + "1K\2062L\2073M\2104N\2114O\2127S\2179U\221:V\222:W\223;W\224<X\225;W\223" + ":U\222;U\222<V\223<W\224=X\225>Y\226?Y\227?Z\230@[\231A\\\232A\\\233B]\234" + "C^\235D_\236D`\237E`\240\213\22)]\1\23+a\206\23,bH\24-c\24.d\25.e\26/f\27" + """0g\27""1h\30""1g\30/e\31""0f\31""1g\32""2h\33""3h\33""3i\33""4j\34""5k" + "\35""6l\35""6m\36""7n\37""8o\40""9p\40:q!:r\";s\"<t#=u$>v%>w%?w&@x'Ay(Az" + "(B{)C|*D}+E~+E\177,E\200-F\200-G\201.H\202/H\2030I\2040J\2051K\2062K\207" + "3L\2103M\2104N\2117R\2168T\2209U\221:V\222;W\223;X\224<X\225=Y\226;U\222" + ";V\223<W\224=W\225=X\226>Y\227?Z\227@Z\230@[\231A\\\232B]\233B^\234C^\235" + "D_\236E`\237Ea\240\214\22)]\1\23+a\204\23,bI\23,c\24-c\25.d\25/e\26""0f\27" + """0g\30""1h\30""2i\31""2h\31""0f\32""1g\32""2h\33""3i\33""4j\34""4k\34""5" + "l\35""6m\36""7n\36""8o\37""8o\40""9p!:q!;r\";s#<t$=u$>v%?w&?x&@y'Az(B{)C" + "|)C}*D}+E~+E\177,E\200-F\200.G\201.H\202/I\2030I\2041J\2051K\2062L\2073M" + "\2103M\2116Q\2148T\2209U\2219U\222:V\222;W\224<X\224<Y\225=Y\226<W\224;V" + "\223<W\224=X\225>X\226>Y\227?Z\230@[\231A\\\232A\\\233B]\234C^\235C_\236" + "D_\236E`\237Ea\240\215\22)]\1\23+`\203\23,bI\24-c\24-d\25.e\26/f\26""0g\27" + """1h\30""1i\31""2j\31""3j\32""3i\32""2g\33""2h\33""3i\33""4j\34""5k\34""6" + "l\35""6m\36""7n\37""8o\37""9p\40""9q!:r\";s\"<t#=t$=u$>v%?w&@x'@y'Az(B{)" + "C|*D}*D~+E\177,E\200,F\200-F\201.G\202/H\202/I\2030J\2051J\2052K\2062L\207" + "3M\2105O\2127S\2178T\2209U\221:V\222:W\223;W\224<X\225=Y\226=Z\227>Z\227" + "<V\223=W\224=X\225>Y\226?Y\227?Z\230@[\231A\\\232B]\233B]\234C^\235D_\236" + "D`\237E`\240Ea\241\216\22)]\1\22+`\202\23,bI\24-c\25.d\25.e\26/f\27""0g\27" + """1h\30""2i\31""2j\32""3k\32""4l\33""4k\33""3i\33""3j\33""4k\34""5k\35""6" + "l\35""7m\36""7n\37""8o\40""9p\40:q!:r\";s#<t#=u$>v%>w%?x&@y'Ay(Bz(B{)C|*" + "D}+E~+E\177,E\200-F\200.G\201.H\202/H\2030I\2040J\2051K\2062L\2073L\2103" + "M\2117R\2168T\2178U\2209U\221:V\222;W\223;X\224<X\225=Y\226>Z\227>[\230=" + "X\225=W\225=X\226>Y\227?Z\230@Z\231@[\231A\\\232B]\233C^\234C^\235D_\236" + "E`\237Ea\240Eb\241\217\22)]K\22*_\23,c\24-d\25.e\26/e\26""0f\27""0g\30""1" + "h\30""2i\31""3j\32""4k\33""4l\33""5m\34""5l\33""4j\34""4k\34""5l\35""6m\36" + """7n\37""8o\37""9p\40""9p!:q!;r\"<s#<t$=u$>v%?w&?x&@y'Az(B{)C|)C}*D~+E\177" + ",E\200,F\200-F\200.G\201.H\202/I\2030J\2041J\2051K\2062L\2073M\2105P\214" + "7S\2178T\2209U\2219V\222:V\223;W\224<X\224<Y\225=Z\226>Z\227?[\230>[\230" + "=X\225>X\226>Y\227?Z\230@[\231A\\\232A\\\233B]\234C^\235D_\236D`\237E`\240" + "Ea\240Eb\241\220\22)]<\23+`\24-d\25.e\26/f\27""0g\27""1h\30""2i\31""2j\31" + """3k\32""4k\33""5l\34""5m\35""6n\35""6m\34""5k\35""6l\35""6m\36""7n\37""8" + "o\40""9p\40:q!:r\";s\"<t#=u$=v%>v%?w&@x'Ay'Az(B{)C|*D}*D~+E\177,E\200-F\200" + "-G\201.G\202/H\2030I\2040J\2041K\2052K\2062L\2074N\2117S\2168S\2178T\220" + "9U\221:V\222;W\223;W\224<X\225=Y\226=Z\227>[\230?[\231?\\\231\202>Y\226\14" + "?Z\227?Z\230@[\231A\\\232B]\233B]\234C^\235D_\236E`\237Ea\240Ea\241Fb\242" + "\220\22)]\36\23*^\24,a\25/e\26/f\27""0g\30""1h\30""2i\31""3j\32""3k\33""4" + "l\33""5m\34""6n\36""6o\36""7p\36""7n\35""6l\36""7m\36""7n\37""8o\40""9p\40" + ":q!;r\";s#<t#=u$>v%?w&?x&@y'Az\202(B{\21)C|*D}+E~+E\177,E\200-F\200.G\201" + ".H\202/I\2030I\2040J\2051K\2062L\2073L\2106Q\2147S\2178T\217\2029U\221\27" + ":V\222;W\223;X\224<Y\225=Y\226>Z\227>[\230?\\\231@\\\232?[\231>Y\227?Z\230" + "@[\231A[\232A\\\232B]\233C^\234C_\235D_\236E`\237Ea\240Eb\241Fc\242\217\22" + ")]K\22*^\23*_\24+`\25-b\26/f\27""0g\30""1h\31""2i\31""3j\32""4k\33""5l\34" + """5m\35""6n\36""7o\37""8p\37""8q\37""8o\36""7n\37""8o\37""8p\40""9q!:q!;" + "r\"<s#<t$=u$>v%?w&@x'@y'Az(B{)C|)C}*D~+E\177,E\200,F\200-F\200.G\201/H\202" + "/I\2030J\2041J\2052K\2062L\2074N\2117S\2167S\2178T\2209U\221:V\222:V\223" + ";W\224<X\225<Y\226=Z\226>Z\227?[\230?\\\231@]\232A]\233?Z\227?Z\230@[\231" + "A\\\232A\\\233B]\234C^\235D_\236D`\237E`\240Ea\241Fb\241Fc\242\217\22)]K" + "\23*^\23+_\24+`\25,a\26-c\27""0g\30""2i\31""2j\32""3k\32""4l\33""5m\34""5" + "m\35""6n\36""7o\37""8p\40""9q\40:r\40""9q\37""8o\40""9p\40:q!:r\";s\"<t#" + "=u$=v%>w%?x&@x'Ay(Az(B{)C|*D}*E~+E\177,E\200-F\200-G\201.H\202/H\2030I\204" + "0J\2051K\2062K\2062L\2075Q\2147S\2168T\2178T\2209U\221:V\222;W\223;X\224" + "<X\225=Y\226=Z\227>[\230?[\231@\\\232@]\232A^\234@\\\232@Z\230@[\231A\\\232" + "B]\233B^\234C^\235D_\236E`\237Ea\240Ea\241Fb\242Gc\243\217\22)]1\23*^\24" + "+_\25,`\25,a\26-b\27.d\30""1h\31""3j\32""3k\33""4l\33""5m\34""6n\36""7o\36" + """7p\37""8q\40""9q!:s!;s\40:r\40""9p!:q!;r\";s#<t#=u$>v%?w&?x&@y'Az(B{)C" + "|)C}*D~+E~+E\177,E\200-F\200.G\201.H\202/I\2030I\2041J\2051K\2062L\2074N" + "\2116R\2167S\2178T\220\2029U\221\30:V\222;W\223;X\224<Y\225=Y\226>Z\227>" + "[\230?\\\231@]\232A]\233A^\234B^\234@[\231A[\232A\\\233B]\234C^\234C_\235" + "D_\236E`\237Ea\240Eb\241Fc\242Gc\243\216\22)]L\23*^\23*_\24+`\25,a\25-b\26" + ".b\27.d\30/e\31""2i\32""4k\33""4l\34""5m\35""6n\36""7o\37""8p\37""8q\40""9" + "r!:s\";t\"<u!;s!:r\";s\"<t#=t$=u%>v%?w&@x'@y'Az(B{)C|*D}*D~+E\177,E\200," + "F\200-G\201.G\202/H\202/I\2030J\2041J\2052K\2062L\2075Q\2147S\2167S\2178" + "T\2209U\221:V\222:V\223;W\224<X\225=Y\226=Z\227>Z\227?[\230?\\\231@]\232" + "A^\233B^\234B_\235A]\233A\\\232B]\233B]\234C^\235D_\236D`\237E`\240Ea\241" + "Fb\242Fc\242Gd\243\216\22)]L\23*^\24+_\24+`\25,a\26-b\26.c\27/d\30/e\31""0" + "f\32""3j\33""5m\34""6n\36""6n\36""7o\37""8p\40""9q\40:r!:s\";t#<u#=v\"<t" + "\";s#<t#=u$>v%>w%?x&@y'Ay(Bz(B{)C|*D}+E~+E\177,E\200-F\200-G\201.H\202/H" + "\2030I\2040J\2051K\2062L\2073M\2116R\2167S\2168T\2178T\2209U\221:V\222;W" + "\223;X\224<X\225=Y\226>Z\227>[\230?\\\231@\\\232@]\233A^\234B_\235C_\236" + "C_\235A\\\232B]\233C^\234C^\235D_\236E`\237Ea\240Eb\241Fb\242Gc\243Gd\244" + "\215\22)]B\22)^\23*_\24+_\25,`\25-a\26-b\27.c\27/d\30""0e\31""1f\32""1g\33" + """4k\35""6n\36""7o\37""7p\37""8q\40""9r!:s!;t\";t#<u$=v$>w$=v#<t$=u$>v%?" + "w&?x&@y'Az(B{)C|)C}*D~+E\177,E\177,F\200-F\200.G\201.H\202/I\2030I\2041J" + "\2051K\2062L\2075P\2136R\2167S\2178T\2209U\2219V\222:V\223;W\224;X\224<Y" + "\225=Y\226>Z\227>[\230?\\\231@]\232A]\233A^\234B_\235C`\236Da\237\202B]\234" + "\11C^\235C_\235D_\236E`\237Ea\240Eb\241Fc\242Gc\243Hd\244\215\22)]M\23*^" + "\23*_\24+`\25,a\26-b\26.c\27.c\30/e\30""0e\31""1f\32""2g\33""2h\34""5l\36" + """7o\37""8p\40""9q\40""9r!:s\";t\"<u#<v$=w%>x%?y%?x$>v%>v%?w&@x'Ay'Az(B{" + ")C|*D}*D~+E\177,E\200-F\200-G\201.G\202/H\203/I\2040J\2041K\2052K\2062L\207" + "5Q\2147S\2168S\2178T\2209U\221:V\222:W\223;W\224<X\225=Y\226=Z\227>[\230" + "?[\230@\\\231@]\233A^\233B_\234B_\235C`\236Da\237C`\236B]\234C^\235D_\236" + "E`\237Ea\240Ea\241Fb\242Fc\243Gd\243Hd\245\215\22)]\30\23*^\24+_\24+`\25" + ",a\26-b\27.c\27/d\30/e\31""0f\31""1g\32""2h\33""3i\33""3j\35""5m\37""8p\40" + """9q\40:r!:s\";t#<u#=v$=w%>x&?y\202&@z)%?w%?x&@y'Az(Bz(B{)C|*D}+E~+E\177" + ",E\200-F\200.G\201.H\202/H\2030I\2040J\2051K\2062L\2073L\2104N\2127S\217" + "8T\2179U\2209U\221:V\222;W\223;X\224<X\225=Y\226>Z\227>[\230?\\\231@\\\232" + "A]\233A^\234B_\235C`\236C`\237Da\237Eb\240\202C^\235\10D_\236E`\237Ea\240" + "Eb\241Fb\242Gc\243Gd\244He\245\214\22)]N\22*^\23*_\24+`\25,a\25-a\26-b\27" + ".c\30/d\30""0e\31""1f\32""1g\32""2h\33""3i\33""4j\34""4k\35""6n\40""9r!:" + "s\";t\";u#<v$=v$>w%?x&?y'@z'A{(B|&@y'@y'Az(B{)C|)C}*D~+E\177,E\200,F\200" + "-F\200.G\201/H\202/I\2030J\2041J\2051K\2062L\2073M\2104M\2117R\2168T\220" + "9U\221:V\222:V\223;W\224<X\225<Y\225=Z\226>Z\227?[\230?\\\231@]\232A]\233" + "A^\234B_\235C`\236Da\237Da\240Eb\241Da\237D_\236D`\237E`\240Ea\240Eb\241" + "Fc\242Gc\243Hd\244He\245\214\22)]N\23*^\23*_\24+`\25,a\26-b\26.c\27/d\30" + "/e\30""0f\31""1g\32""2g\33""2h\33""3i\33""4j\34""5k\35""5l\36""7n!:s\";t" + "#<u#=v$=w%>x%?y&@z'@{(A|(B|)C}'Az(Az(B{)C|*D}*D~+E\177,E\200-F\200-G\201" + ".G\202/H\203/I\2040J\2051K\2062K\2062L\2073M\2104N\2116P\2148T\2209U\221" + ":V\222:W\223;W\224<X\225=Y\226=Z\227>[\230?[\231@\\\231@]\233A^\233B_\234" + "C_\235C`\236Da\237Eb\240Ec\241Fc\242D_\236E`\237Ea\240Ea\241Fb\242Fc\243" + "Gd\244He\245Ie\245\214\22)]N\23*^\24+_\24,`\25,a\26-b\27.c\27/d\30""0e\31" + """0f\32""1g\32""2h\33""3i\33""4j\33""4k\34""5l\35""6m\36""7m\37""8o\";t#" + "<u$=v$>w%>x&?y&@z'A{(B|)B}(B|'Az(B{(B|)C|*D}+E~+E\177,E\200-F\200.G\201." + "H\202/I\2030I\2041J\2051K\2062L\2073L\2103M\2114N\2125O\2128T\2179U\221:" + "V\222;W\223;X\224<Y\225=Y\226>Z\227>[\230?\\\231@]\232A]\233A^\234B_\235" + "C`\236C`\237Da\240Eb\240Fc\241Gd\242Fa\240E`\237Ea\240Eb\241Fb\242Gc\243" + "Hd\244He\245If\246\213\22)]\35\23*^\23*_\24+`\25,a\25-b\26.c\27.c\30/d\30" + """0e\31""1f\32""1g\32""2h\33""3i\33""4j\34""5k\34""5l\35""6m\36""7n\37""8" + "o\40""9p#<u$=w%>w%?x&?y'@z(A{(B|)B}\202'Az&(B{)C|)D}*D~+E\177,E\200,F\200" + "-G\200.G\201/H\203/I\2030J\2041J\2052K\2062L\2073M\2104N\2115N\2125O\213" + "7Q\215:V\222:V\223;W\224<X\225<Y\226=Z\226>Z\227?[\230?\\\231@]\232A^\233" + "B^\234B_\235C`\236Da\237Da\240Eb\241Fc\242\202Hd\243\10E`\240Ea\241Fb\241" + "Fc\242Gd\243Hd\244Ie\245If\246\213\22)]P\23*^\23+_\24+`\25,a\26-b\26.c\27" + "/d\30/e\31""0f\31""1g\32""2h\33""3h\33""3i\33""4j\34""5k\35""6l\35""6m\36" + """7n\37""8o\40""9p!:q#=v%>x&?y&@z'A{(A|(B|'@z'Ay(Az(B{)C|*D}+E~+E\177,E\200" + "-F\200-G\201.H\202/H\2030I\2040J\2051K\2062K\2072L\2073M\2104N\2115O\212" + "5O\2136P\2149T\221;W\223;X\224<X\225=Y\226=Z\227>[\230?\\\231@\\\232@]\233" + "A^\234B_\235C_\235C`\236Da\237Eb\240Fc\241Gc\242Hd\243Ie\244Fb\241Eb\241" + "Fb\242Gc\243Gd\244He\245Ie\246Jf\246\22+`\211\22)]\34\22)^\23*_\24+_\25," + "`\25-a\26-b\27.c\27/d\30""0e\31""0f\32""1g\32""2h\33""3i\33""4j\34""4k\34" + """5l\35""6m\36""7m\36""8n\37""8o\40""9p!:q!;s$>w&?y'@z'A{(A|\202&@y2'Az(" + "B{)C|)C}*D~+E\177,E\177,E\200-F\200.G\201.H\202/I\2030I\2041J\2051K\2062" + "L\2073M\2103M\2114N\2125O\2136P\2146P\2157R\216;W\223<X\224<Y\225=Y\226>" + "Z\227>[\230?\\\231@]\232A]\233A^\234B_\235C`\236D`\237Da\240Eb\241Fc\241" + "Gd\242Hd\243Ie\244Hd\244Eb\241Fc\242Gc\243Hd\244He\245If\246Jf\247\202\23" + ",b\1\22*_\207\22)]\31\23*^\23*_\24+`\25,a\26-b\26.c\27.d\30/d\30""0e\31""1" + "f\32""2g\33""2h\33""3i\33""4j\34""5k\34""5l\35""6m\36""7n\37""8o\37""9p\40" + """9q!:r\";s\"<t%>x\202'@z5&?x&@x'@y'Az(B{)C|*D}*D~+E\177,E\200-F\200-G\201" + ".G\202/H\203/I\2030J\2051K\2052K\2062L\2073M\2104N\2115N\2125O\2136P\214" + "7Q\2157R\2169U\221<X\225=Y\226=Z\227>[\230?[\231?\\\231@]\232A^\233B^\234" + "B_\235C`\236Da\237Eb\240Eb\241Fc\242Hd\243Ie\244Ie\245Jf\246Fc\242Fc\243" + "Gd\243Hd\244Ie\245If\246Jg\247\203\23,b\2\23,a\22*_\205\22)]\13\23*^\24+" + "_\24,`\25,a\26-b\27.c\27/d\30/e\31""0f\31""1g\32""2h\202\33""3i\14\33""4" + "j\34""5k\35""6l\36""7m\36""7n\37""8o\40""9p\40:q!:r\";s#<t#=u\202%>w$%?x" + "&@y'Az(Bz(B{)C|*D}+E~+E\177,E\200-F\200-G\201.H\202/H\2030I\2040J\2051K\206" + "2L\2073L\2103M\2114N\2115O\2125P\2136P\2147Q\2158R\2168S\217<W\224=Y\226" + ">Z\227>[\230?\\\231@\\\232@]\233A^\234B_\235\202C`\236\17Da\237Eb\240Fc\241" + "Gc\242Hd\243Ie\244If\245Jg\246Ie\245Gc\243Gd\244He\245Ie\246Jf\247Jg\250" + "\205\23,b\2\23+a\22*^\202\22)]Q\22)^\23*_\24+`\25,`\25-a\26-b\27.c\30/d\30" + """0e\31""1f\32""1g\32""2h\33""3i\33""4j\34""4k\34""5l\35""6m\36""7n\36""8" + "o\37""8p\40""9p!:q!;r\"<s#<t$=u$>v%?w&@x&@y'Az(B{)C|)D}*D~+E\177,E\200,F" + "\200-F\200.G\201/H\202/I\2030I\2041J\2051K\2062L\2073M\2104M\2114N\2125O" + "\2136P\2147Q\2157Q\2168R\2179S\217:U\221=Y\226>Z\227?[\230?\\\231@]\232A" + "]\233A^\234B_\235C`\236Da\237Da\240Eb\241Fc\242Gd\242Hd\243Ie\244Jf\245J" + "g\246Kg\247Gd\243Hd\244He\245If\246Jg\247Kg\250\207\23,bS\23+a\22*^\23*^" + "\23+_\24+`\25,a\26-b\26.c\27.d\30/e\31""0f\31""1f\32""2g\33""2h\33""3i\33" + """4j\34""5k\35""6l\35""6m\36""7n\37""8o\37""9p\40""9q!:r\";s\"<t#=u$=v%>" + "v%?w&@x'Ay(Az(B{)C|*D}*E~+E\177,E\200,F\200-G\201.G\202/H\203/I\2030J\205" + "1K\2062K\2062L\2073M\2104N\2114O\2125O\2136P\2147Q\2157R\2168R\2179S\220" + ":T\221<W\224>[\230?[\231@\\\231@]\232A^\233B_\234C_\235C`\236Da\237Eb\240" + "Eb\241Gc\242Hd\243Ie\244If\245Jf\246Kg\247Kh\250If\246Hd\245Ie\245If\246" + "Jg\247Kh\250\211\23,b1\24,b\24+`\24,`\25,a\26-b\27.c\27/d\30""0e\31""0f\31" + """1g\32""2h\33""3i\33""3j\33""4k\34""5l\35""6l\36""7m\36""7n\37""8o\40""9" + "p\40:q!;r\";s#<t#=u$>v%>w&?x&@y'Az(B{(B|)C}*D}+E~+E\177,E\200-F\200-G\201" + ".H\202/I\2030I\2040J\2051K\2062L\2073L\2103M\2114N\2125O\213\2026P\214\27" + """7Q\2158R\2168S\2179S\220:T\221;U\222=Z\227?\\\231@\\\232A]\233A^\234B_" + "\235C`\236C`\237Da\237Eb\240Fc\241Gd\242Hd\243Ie\244Jf\245Jg\246Kg\247\202" + "Lh\250\5He\245If\246Jf\247Jg\250Kh\251\210\23,bR\23-c\24-d\25.e\25.c\25-" + "b\26.b\27.c\30/d\30""0e\31""1f\32""1g\32""2h\33""3i\33""4j\34""5k\34""5l" + "\35""6m\36""7n\37""8o\37""8p\40""9q!:r!;r\"<s#<t$=u$>v%?w&@x&@y'Az(B{)C|" + ")C}*D~+E\177,E\200,F\200-F\200.G\201/H\202/I\2030J\2041J\2051K\2063N\211" + "3M\2104M\2114N\2125O\2136P\2147Q\2157Q\2168R\2179S\2209T\220:U\221;U\222" + "<W\224?[\231@]\232A^\233B^\234B_\235C`\236Da\237Da\240Eb\241Fc\242Hd\243" + "He\244Ie\245Jf\246Kg\246Kh\247Li\250Mi\251Jf\246If\246Jg\247Kg\250Kh\251" + "\210\23,bR\24-c\24.d\25.e\26/f\27""0g\27/e\27/d\30/e\31""0f\31""1g\32""2" + "h\33""2h\33""3i\33""4j\34""5k\35""6l\35""6m\36""7n\37""8o\40""9p\40:q!:r" + "\";s\"<t#=u$=v%>w%?w&@x'Ay(Az(B{)C|*D}*E~+E\177,E\200-F\200-G\201.G\202/" + "H\203/I\2040J\2051K\2063N\2115Q\2145P\2134N\2115O\2125O\2136P\2147Q\2157" + "R\2168S\2179S\220:T\221:U\222;V\223<V\224=X\226@]\232A^\233B_\235C_\235C" + "`\236Da\237Eb\240Ec\241Gc\242Hd\243Ie\244If\245Jf\246Kg\247Lh\250Li\251M" + "j\252Li\251If\246Jg\247Kh\250Li\251\210\23,b\5\24-c\25.d\25/e\26/f\27""0" + "g\202\30""1h*\30""1g\31""0f\32""1g\32""2h\33""3i\33""4j\33""4k\34""5l\35" + """6l\36""7m\36""8n\37""8o\40""9p!:q!;r\";s#<t#=u$>v%?w&?x&@y'Az(B{)C|)C}" + "*D}+E~+E\177,E\200-F\200.G\201.H\202/I\2030I\2040J\2052L\2075Q\2146R\215" + "6R\2166R\2155O\213\2026P\214\37""7Q\2158R\2169S\2179T\220:T\221;U\222;V\223" + "<W\224=W\225?Z\230A^\234B_\235C`\236Da\237Da\240Eb\241Fc\241Gd\243Hd\243" + "Ie\244Jf\245Jg\246Kh\247Lh\250Mi\251Mj\252Nk\253Kg\247Kg\250Kh\251Li\252" + "\207\23,b2\24-c\24-d\25.e\26/f\26""0g\27""1h\30""1i\31""2i\31""3j\32""3j" + "\32""2i\33""2h\33""3i\33""4j\34""5k\34""5l\35""6m\36""7n\37""8o\37""9p\40" + """9q!:r!;s\"<t#=t$=u$>v%?w&@x'@y'Az(B{)C|*D}*D~+E\177,E\200,F\200-G\201." + "G\202/H\202/I\2030J\2041J\2054O\2125Q\2146R\2157S\2168S\2178T\217\2027Q\215" + "\37""7Q\2168R\2179S\220:T\221:U\222;V\222<V\223<W\224=X\225>Y\226@\\\232" + "B_\235C`\236Da\237Eb\240Eb\241Fc\242Hd\243He\244Ie\245Jf\246Kg\247Kh\247" + "Li\250Mi\251Mj\252Nk\253Mj\252Kh\250Kh\251Li\252\207\23,b\14\24-c\25.d\25" + "/e\26/f\27""0g\27""1h\30""2i\31""2j\32""3k\32""4l\33""5m\34""5l\202\33""4" + "jE\34""5k\35""6l\35""6m\36""7n\37""8o\40""9p\40:q!:r\";s#<t#=u$>v%>w&?x&" + "@y'Ay(Bz(B{)C|*D}+E~+E\177,E\200-F\200-G\201.H\202/H\2030I\2040J\2053N\210" + "5Q\2145Q\2156R\2167S\2168T\2178T\2209U\2218S\2178R\2168S\2179S\220:T\221" + ";U\222;V\223<V\224=W\225=X\226>Y\227?Z\230A]\233C`\236Da\237Eb\240Fc\241" + "Gc\242Hd\243Ie\244If\245Jf\246Kg\247Lh\250Li\251Mj\252Nk\253Nk\254Ol\254" + "Kh\251Li\251Li\252\206\23,b\16\23-c\24-c\25.d\25/e\26""0f\27""0g\30""1h\30" + """2i\31""3j\32""4k\33""4l\33""5m\35""6n\36""7o\202\34""5lD\35""6m\36""7n" + "\36""8o\37""8o\40""9p!:q!;r\"<s#<t$=u$>v%?w&?x&@y'Az(B{)C|)C}*D~+E\177,E" + "\177,E\200-F\200.G\201.H\202/I\2030I\2042L\2074P\2135Q\2146R\2157R\2167S" + "\2178T\2209U\2219V\222:V\223:U\2219S\2209T\220:U\221;U\222;V\223<W\224=X" + "\225>X\226>Y\227?Z\230@[\231B_\235Da\240Eb\241Fc\242Gd\243He\243Ie\244Jf" + "\245Jg\246Kh\247Lh\250Mi\251Mj\252Nk\253Ol\254Ol\255Mj\253Li\252Mj\253\206" + "\23,b\13\24-c\24.d\25.e\26/f\27""0g\27""1h\30""1h\31""2i\31""3j\32""4k\33" + """5l\202\34""5l(\33""4k\34""5k\35""6l\35""6m\36""7n\37""8o\37""9p\40""9q" + "!:r\";s\"<t#=u$=v%>v%?w&@x'@y'Az(B{)C|*D}*D~+E\177,E\200-F\200-G\201.G\202" + "/H\2030I\2030J\2054O\2125P\2135Q\2146R\2157S\2168T\2178T\2209U\221:V\222" + ":W\223\202;W\224\31:U\221:U\222;V\223<V\223<W\225=X\225>Y\226?Y\227?Z\230" + "@[\231A\\\232C`\236Eb\241Fc\242Hd\243Ie\244If\245Jf\246Kg\247Kh\250Li\250" + "Mj\251Nj\252Nk\253Ol\254\202Pm\255\2Li\252Mj\253\206\23,b\13\24-c\25.d\25" + "/e\26/f\27""0g\30""1h\30""2i\31""2j\32""3k\32""3j\32""3i\202\33""3i+\33""4" + "k\34""5k\35""6l\36""7m\36""7n\37""8o\40""9p\40:q!:r\";s#<t#=u$>v%?w&?x&@" + "y'Az(Bz(B{)C|*D}+E~+E\177,E\200-F\200.G\201.H\202/H\2030I\2043N\2114P\213" + "5Q\2146Q\2156R\2167S\2178T\2179U\2209U\221:V\222;W\223;X\224<Y\225=Y\225" + "\202;V\223\5<W\224=W\225>X\226>Y\227?Z\230\202@[\231\23A\\\232B]\233D`\237" + "Gd\242Hd\243Ie\244Jf\245Jg\246Kg\247Lh\250Li\251Mj\252Nk\253Ok\254Ol\255" + "Pm\256Qn\257Nk\254Mj\253\205\23,b\6\23,c\24-d\25.e\26/f\26""0f\27""0g\202" + "\30""1hM\31""1g\31""1f\32""1g\32""2h\33""3i\33""4j\34""5k\34""5l\35""6m\36" + """7n\36""8o\37""8p\40""9q!:q!;r\"<s#<t$=u$>v%?w&@x&@y'Az(B{)C|)D}*D~+E\177" + ",E\200,F\200-F\200.G\201.H\202/I\2030I\2043N\2114P\2135Q\2146R\2157R\216" + "7S\2178T\2209U\221:V\222:V\223;W\224<X\224<Y\225=Z\226>Z\227=X\226<W\224" + "=X\225>X\226>Y\227?Z\230@[\231A\\\232A\\\233B]\234C^\235E`\237Hd\243Ie\245" + "Jf\245Kg\246Kh\247Lh\250Mi\251Mj\252Nk\253Ol\254Pl\255Pm\256Qn\257Pm\256" + "Mj\253\205\23,bU\24-c\24.d\25.e\26/f\27""0g\27""0f\27/e\30/e\31""0f\31""1" + "f\32""2h\33""2h\33""3i\33""4j\34""5k\35""6l\35""6m\36""7n\37""8o\40""9p\40" + ":q!:r\";s\"<t#=u$=v%>v%?x&@x'Ay(Az(B{)C|*D}*E~+E\177,E\200-F\200-G\201.G" + "\202/H\2030I\2040J\2051K\2064P\2135Q\2146R\2157S\2168T\2178T\2209U\221:V" + "\222:W\223;W\224<X\225=Y\226=Z\227>[\230?[\231?[\230>X\226>Y\226?Z\227@Z" + "\230@[\231A\\\232B]\233B^\234C^\235D_\236E`\237Gc\243Jf\246Kg\247Lh\250L" + "i\251Mj\252Nj\252Nk\254Ol\254Pm\255Qn\256Qn\257Ro\260Nk\254\205\23,b1\24" + "-c\25.d\25/e\26.e\26.c\27.c\27/d\30""0e\31""0f\32""1g\32""2h\33""3i\33""3" + "j\33""4k\34""5k\35""6m\36""7m\36""8n\37""8o\40""9p\40:q!;r\";s#<t#=u$>v%" + "?w&?x&@y'Az(B{)B|)C}*D}+E~+E\177,E\200-F\200.G\201.H\202/I\2030I\2041J\205" + "1K\2062L\2075P\2146R\2167S\2178T\220\2029U\221\37:V\222;W\223<X\224<Y\225" + "=Y\226>Z\227>[\230?\\\231@\\\232@]\232?[\230?Z\230@[\231A[\232A\\\233B]\233" + "C^\234C_\235D_\236E`\237Ea\240Fb\242Ie\245Lh\250Mi\251Mj\252Nk\253Ok\254" + "Ol\255Pm\256Qn\257\202Ro\260\1Ol\255\204\23,b\3\24-c\24-d\25.d\202\25-b9" + "\26.b\27.c\30/d\30""0e\31""1f\32""1g\33""2h\33""3i\33""4j\34""5k\34""5l\35" + """6m\36""7n\37""8o\37""9p\40""9q!:r\";r\"<s#<t$=u$>v%?w&@x'@y'Az(B{)C|)D" + "}*D~+E\177,E\200,F\200-F\201.G\201/H\202/I\2030J\2041J\2052K\2062L\2073M" + "\2105P\2147S\2178T\2209U\221:V\222:V\223;W\224<X\225<Y\225=Z\227>Z\227?[" + "\230?\\\231@]\232A^\233\202B^\234\202A\\\232\21B]\233B]\234C^\235D_\236D" + "`\237E`\240Ea\241Fb\241Fc\242Gd\244Jf\247Li\251Nk\253Ol\254Pl\255Pm\256Q" + "n\257\202Ro\260\1Qn\257\204\23,b\33\24-c\24,b\24+`\25,a\26-b\26.c\27/d\30" + "/e\31""0f\31""1g\32""2h\33""3i\33""3j\33""4j\34""5k\35""6l\35""6m\36""7n" + "\37""8o\40""9p\40:q!:r\";s#<t#=u%>w&@y\202(A{#'Az(Az(B{)C|*D}*E~+E\177,E" + "\200-F\200-G\201.H\202/H\2030I\2040J\2051K\2062K\2072L\2073M\2104N\2115P" + "\2138S\2179U\221:V\222;W\223;X\224<X\225=Y\226=Z\227>[\230?[\231@\\\232@" + "]\233A^\234B_\234C_\235\202C`\236\202C^\234\17C^\235D_\236E`\237Ea\240Ea" + "\241Fb\242Gc\243Gd\244He\245Ie\246Jg\247Li\252Ol\254Qm\256Qn\257\203Ro\260" + "\204\23,b\36\23+`\24+_\25,`\25-a\26-b\27.c\27/d\30""0e\31""0f\32""1g\32""2" + "h\33""3i\33""4j\33""4k\34""5l\35""6m\36""7n\36""8n\37""8o\40""9p!:q!;s#<" + "u%>w&@z'A{(B|)B})C~*C~\202)C|4)C}*D~+E~+E\177,F\200-F\200.G\201.H\202/I\203" + "0I\2041J\2051K\2062L\2073M\2103M\2114N\2125O\2136P\2148S\217:V\222;W\223" + "<X\224<Y\225=Y\226>Z\227>[\230?\\\231@]\232A]\233A^\234B_\235C`\236Da\237" + "Da\240Eb\241Eb\240D`\237D_\236E`\237Ea\240Eb\241Fc\242Gc\243Hd\244He\245" + "If\246Jf\247Jg\250Kh\251Li\252Nl\254Pm\256\202Ro\260\202\23,bF\23,a\23*_" + "\23+_\24+`\25,a\26-b\26.c\27.c\30/e\30""0e\31""1f\32""2g\33""2h\33""3i\33" + """4j\34""5k\35""5l\35""6m\36""7n\37""8o\40""9p!;s#<u%>w%?y&@y'@z'A{(B|)C" + "}*D~*D\177+E\200+E\177*D}*D~+E\177,E\200-F\200-G\201.G\202/H\203/I\2030J" + "\2041J\2052K\2062L\2073M\2104N\2115N\2125O\2136P\2147Q\2158R\217:V\222<X" + "\225=Y\226=Z\227>Z\230?[\230?\\\231@]\232A^\233B^\234B_\235C`\236Da\237E" + "b\240Eb\241Fc\242\202Hd\243\14Fb\241Ea\241Fb\242Fc\243Gd\243Hd\244Ie\245" + "If\246Jg\247Kh\250Kh\251Li\252\203Mj\253WNk\254\23,b\23+a\22)^\23*^\24+_" + "\24,`\25,a\26-b\27.c\27/d\30""0e\31""0f\31""1g\32""2h\33""3i\33""3j\33""4" + "j\34""5k\35""6l\36""7n\37""8p!:s#<u#=v$=w%>x&?y&@z'A{(A|(B})C~*D\177+E\177" + "+E\200,G\200-H\201,F\200+E\177,E\200-F\200.G\201.H\202/H\2030I\2040J\205" + "1K\2062L\2073L\2103M\2104N\2125O\2125P\2136P\2147Q\2158R\2168S\217:U\222" + "=Y\226=Z\227>[\230?\\\231@\\\232@]\233A^\234B_\235C_\236C`\236Da\237Eb\240" + "Ec\241Gc\242Hd\243Ie\244Jf\245If\245He\244Gd\243Gd\244He\245If\246Jf\247" + "Jg\250Kh\250Li\251Mi\253\204Mj\253'\23+a\22)]\22)^\23*_\24+`\25,`\25-a\26" + "-b\27.c\27/d\30""0e\31""1f\32""1g\32""2h\33""3i\33""4j\34""5k\35""6n\37""8" + "p!:s!;t\";u#<u$=v$>w%?x&?y'@z'A{(B|)B}*C~*D\177+E\200,F\200,G\201-H\202." + "I\203.I\202\202-F\200,.G\201/H\202/I\2030J\2041J\2051K\2062L\2073M\2104M" + "\2114N\2125O\2136P\2147Q\2157Q\2168R\2179S\2179T\220:U\222=Y\226>[\230?\\" + "\231@]\232A]\233A^\234B_\235C`\236Da\237Da\240Eb\241Fc\242Gd\243He\244Ie" + "\245Jf\245Jg\246Kh\247Lh\250Kg\247Jg\247If\246Jg\247Kg\250Kh\251Li\252\205" + "Mj\253\202\22)]Q\23*^\23+_\24+`\25,a\26-b\26.c\27/d\30/e\30""0e\31""1f\32" + """2g\33""2i\34""4k\35""6n\37""8p\40""9q\40""9r!:s\";t#<u#=v$=w%>x%?y&@z'" + "@{(A{(B|)C}*D~*D\177+E\200,F\200-H\201-H\202.I\203/J\204.H\202-G\201.G\202" + "/H\203/I\2040J\2051K\2062K\2062L\2073M\2104N\2115O\2125O\2136P\2147Q\215" + "7R\2168R\2179S\220:T\221:U\222;V\223=Y\226@\\\231@]\232A^\233B_\234C_\235" + "C`\236Da\237Eb\240Eb\241Fc\242Hd\243Ie\244If\245Jf\246Kg\247Kh\250Li\251" + "Mi\251Nj\252Nk\253Mj\253Mj\252\202Li\252\205Mj\253\202\22)]\36\23*^\24+_" + "\24,`\25,a\26-b\27.c\27/d\30""0e\31""0f\32""2h\33""4k\34""6m\36""6o\36""7" + "p\37""8p\40""9q!:r!:s\";t#<u#=v$>w%>x&?y&@z'A{(A|)B})C~*D\177\202+E\2001" + ",G\200-H\201.I\202.J\203/J\204.H\202.G\201.H\202/I\2030J\2041J\2051K\206" + "2L\2073L\2103M\2114N\2125O\2126P\2136P\2147Q\2158R\2168S\2179T\220:T\221" + ";U\222;V\223<W\224>Y\226@]\232A^\234B_\235C`\236C`\237Da\237Eb\240Fc\241" + "Gd\242Hd\243Ie\244Jf\245Jg\246Kg\247Lh\250Li\251Mj\252Nk\253Ok\254Ol\255" + "Pm\256\203Qn\2571Pm\256Ol\255Nk\254Mj\253\22)]\23*^\23*_\24+`\25,a\25-a\26" + ".b\27.c\30/e\31""1h\32""3k\33""4l\33""5m\35""6n\36""7o\37""8p\37""8q\40""9" + "r!:s\";t\";u#<v$=v$>w%?x&?y'@z'A{(B|)C}*C~*D\177+E\200,F\200,G\201-H\202" + ".I\203/J\204/K\205.I\203.G\201/H\202/I\2032N\2103N\211\2022L\207%3M\2104" + "M\2114N\2125O\2136P\2147Q\2157Q\2168R\2179S\2209T\221:U\221;U\222<V\223<" + "W\224=X\225>Y\227A]\233B_\235C`\236Da\237Da\240Eb\241Fc\242Hd\243He\244I" + "e\245Jf\245Kg\246Kh\247Lh\250Mi\251Mj\252Nk\253Ol\254Pl\255Pm\256Qn\257\206" + "Ro\260T\22)]\23*^\23+_\24+`\25,a\26-b\27.d\30""1g\31""2j\32""3k\32""4l\33" + """5l\34""5m\35""6n\36""7o\37""8p\40""9q\40""9r!:s\";t#<u#=v$=w%>x%?y&@z'" + "A{(A|(B|)C}*D~+D\177+E\200,F\200-H\201.I\202.I\203/J\2040K\205/I\203.G\202" + "/H\2030I\2043O\2114P\2135P\2134O\2123M\2114N\2115O\2125O\2136P\2147Q\215" + "8R\2168S\2179S\220:T\221:U\222;V\223<V\224=W\225=X\226>Y\226?Z\230A]\233" + "C`\236Da\237Eb\240Ec\241Gc\242Hd\243Ie\244If\245Jf\246Kg\247Kh\250Li\251" + "Mj\252Nj\253Nk\254Ol\255Pm\255Qn\256Qn\257\206Ro\260S\22)]\23*^\24+_\24," + "`\25-b\27/e\30""1h\30""2i\31""3j\32""3k\33""4l\33""5m\34""6n\36""7o\37""7" + "p\37""8q\40""9q!:r!;s\";t#<u$=v$>w%>x&?y&@z'A{(B|)B})C~*D\177+E\200,E\200" + ",G\201-H\202.I\203.J\203/J\2040K\205.H\203.H\202/I\2031K\2064O\2124P\213" + "5Q\2146R\2156R\2166Q\2145O\2136P\2146P\2157Q\2158R\2169S\2179T\220:T\221" + ";U\222;V\223<W\224=X\225>X\226>Y\227?Z\230@[\231A]\233Da\237Eb\241Fc\241" + "Gd\242Hd\243Ie\244Jf\245Jg\246Kh\247Lh\250Li\251Mj\252Nk\253Ok\254Ol\255" + "Pm\256Qn\257\207Ro\260S\23*^\23*_\24+`\25-b\26/f\27""0h\30""1i\31""2i\36" + """7m#9h3Gr-Am#:m\36""7o\37""8p\37""8q\40""9r!:s\";t\"<u#<v$=w%>x%?x&?z'@" + "z(A{(B|)C}*C~*D\177+E\200,F\200-H\201-H\202.I\203/J\204/K\2050K\206.H\202" + "/H\203/I\2032M\2104O\2125P\2135Q\2146R\2157S\2167S\2178T\2207R\2167Q\215" + "7R\2168R\2179S\220:T\221:U\222;U\222<V\223<W\224=X\225>Y\226?Y\227?Z\230" + "@[\231A\\\232B]\233Da\237Fc\242Hd\243He\244Ie\245Jf\246Kg\247Kh\247Kh\250" + "Lh\250Li\251Mj\252Ok\254Pm\255Pm\256Qn\257\207Ro\260J\23*^\24+_\24,b\26/" + "f\27""0g\27""1h\30""2i\31""2j5JyCRsDV|Q_\2000Es\36""7o\37""8p\40""9q\40:" + "r!:s\";t#<u#=v$=w%>x&?y&@z'A{(A|(B})C~*D~+E\177+E\200,G\200-H\201.I\202." + "I\203/J\2040K\205/J\205.H\202/H\2030I\2043O\2124P\2135Q\2146Q\2156R\2157" + "S\2168T\2178U\2209U\221:U\2219T\2208S\2179S\220:T\221;U\222;V\223<W\224=" + "W\225=X\226>Y\227?Z\227@Z\231@[\231A\\\232B]\233B^\234D`\237Gc\242Ie\244" + "If\245Jf\246He\244\202Gd\244\7He\245Ie\246Jf\247Jg\250Li\251Nk\254Qn\257" + "\207Ro\260U\23*_\24+`\26/e\26""0f\27""0g\30""1h\30""2i\31""3j\32""3k\33""4" + "l\33""5m\35""6n\36""7o\37""8p\37""8q\40""9r!:s!;t\";t#<u$=v$>w%?x&?y'@z'" + "A{(B|)B})C~*D\177+E\200,F\200,G\201-H\202.I\203/J\203/J\2040K\205.H\202/" + "H\202/I\2031K\2064O\2124P\2135Q\2146R\2157R\2167S\2178T\2209U\2219U\222:" + "V\223;W\223;W\224:U\222:U\221;U\222;V\223<W\224=X\225>X\226>Y\227?Z\230@" + "[\231A\\\232A\\\233B]\234C^\235C_\236D`\237Fb\241Gc\243Fb\242Fc\242Gc\243" + "Hd\244He\245If\246Jg\247Kg\250Kh\251Li\252Mj\253Nk\254Qn\257\205Ro\260R\23" + "+_\25-b\26/f\27""0g\27""1h\30""1i\31""2j\31""3j\32""4kku\214\202\205\215" + "U`z\36""7o\37""8p\40""8q\40""9r!:s\";t#<u#<v$=w%>x%?y&@z'@z(A{(B|)C}*D~*" + "D\177+E\200,F\200-H\201-H\202.I\203/J\2040K\205/I\203.G\202/H\203/I\2043" + "N\2114P\2125P\2135Q\2146R\2157S\2168T\2178T\2209U\221:V\222:W\223;W\224<" + "X\225=Y\226<Y\225<W\224<V\224=W\224=X\225>Y\226?Y\227?Z\230@[\231A\\\232" + "B]\233B]\234C^\235D_\236E`\237Ea\240Ea\241Fb\242Fc\243Gd\244Hd\244Ie\245" + "If\246Jg\247Kh\250Kh\251Li\252\203Mj\253\2Nk\254Qn\257\203Ro\2600\24+_\25" + ".d\26/f\27""0g\27""1h\30""2i\31""3j\32""3k\33""3g\312\312\313\245\245\246" + "\233\234\236\36""6m\37""8p\40""9q!:r!:s\";t#<u#=v$>w%>x&?y&@z'A{(A|)B})C" + "~*D\177+E\177+E\200,G\200-H\201.I\202.J\203/J\204.H\203.G\201.H\202/H\203" + "1K\2053O\2124P\2135Q\2146Q\2156R\2167S\2178T\217\2029U\221\10:V\222;W\223" + ";X\224<X\225=Y\226>Z\227>[\230>Z\227\202=X\226\26>Y\227?Z\230@[\231@[\232" + "A\\\232B]\233C^\234C^\235D_\236E`\237Ea\240Eb\241Fb\242Gc\243Gd\244He\245" + "If\246Jf\247Jg\250Kh\251Li\252Lj\252\205Mj\253&Nk\254Pm\256Ro\260\24+`\25" + ".d\26""0f\27""0g\30""1h\31""2i\31""3j\32""4k+Am\241\257\275\226\241\253\214" + "\230\243#9h\37""8q\40""9r!:s\";t\";u#<v$=v$>w%?x&?y'@z'A{(B|)B}*C~*D\177" + "+E\200,F\200,G\201-H\202.I\202-H\201\202-F\200\27.G\201.H\202/I\2043N\211" + "4O\2124P\2135Q\2146R\2157R\2167S\2178T\2209U\2219V\222:V\223;W\224<X\225" + "<Y\226=Y\226>Z\227?[\230?\\\231@]\232@\\\231\202?Z\230\23@[\231A\\\232A\\" + "\233B]\234C^\235D_\236D`\237E`\240Ea\240Fb\241Fc\242Gd\243Hd\244He\245If" + "\246Jg\247Kg\250Kh\251Li\252\210Mj\253\37Nk\254\24+`\25-b\27""0g\27""1h\30" + """2i\31""2j\32""3k\32""4l;Mr\225\230\234\315\317\321\237\244\252-Ao\40""9" + "q\40""9r!:s\";t\"<u#=v$=w%>x%?y&@z'@{(A|(B|)C}*D~+D\177+E\200\202,F\2001" + "+F\200+E\177,E\200-F\200-G\201.G\202/H\2032M\2073O\2124P\2125P\2145Q\214" + "6R\2157S\2168T\2178T\2209U\221:V\222;W\223;X\224<X\225=Y\226=Z\227>[\230" + "?[\231@\\\232@]\233A^\233B^\234A]\233@\\\232A\\\232B]\233B]\234C^\235D_\236" + "E`\237Ea\240Ea\241Fb\242Gc\243Gd\244He\245Ie\245If\246Jg\247Kh\250Li\251" + "Li\252\211Mj\253\32\24,`\25,a\26/d\30""1h\30""2i\31""3j\32""3k\32""4l\33" + """5l+@mFY\2000Es\37""8q\40""9q!:r!:s\";t#<u$=v$>w%>x&?y&@z'A{(B|)B}\203)" + "C}\22)C|)C}*D}+E~+E\177,E\200-F\200.G\201/I\2031M\2073N\2113O\2124P\2135" + "Q\2146Q\2156R\2167S\2178T\220\2029U\221\14:V\222;W\223;X\224<Y\225=Y\226" + ">Z\227>[\230?\\\231@\\\232A]\233A^\234B_\235\202C`\236\17C_\235B]\234C^\234" + "C_\235D_\236E`\237Ea\240Eb\241Fb\242Gc\243Hd\244He\245Jf\246Li\252Nk\253" + "\202Nk\254\212Mj\253\23\25,a\25-b\26-c\27/d\30""1g\31""2j\32""3k\33""4l\33" + """5m\35""6n\36""7n\36""7o\37""8p\40""9r!:s\";t\";u#<u$=v\202$>w\1%>x\202" + "%?x'&?x&@x'@y'Az(B{)C|*D}*D~+E\177,E\200,F\200.H\2020K\2052M\2072N\2103O" + "\2114O\2124P\2135Q\2146R\2157S\2167S\2178T\2209U\221:V\222:V\223;W\224<X" + "\225<Y\226=Z\227>Z\227?[\230?\\\231@]\232A^\233B^\234B_\235C`\236Da\237\202" + "Eb\240\23Ea\237D_\236D`\237E`\240Ea\241Fb\242Fc\242Gd\243Hd\244Kg\247Nk\253" + "Ol\254Pm\255Pm\256Qn\257Ro\260Qn\257Pm\256Nk\254\206Mj\253D\25,a\26-b\26" + ".c\27/d\30/e\31""0f\31""1g\32""2h\33""2h\33""3i\33""4j\34""5k\35""6l\35""7" + "m\36""7n\37""8o\40""9p\40:q!:r\";s\"<t#=u$>v%>w%?x&@x'Ay(Az(B{)C|*D}*E~+" + "E\200-G\201/J\2040L\2061M\2072M\2103N\2113O\2124P\2135P\2146Q\2156R\2157" + "S\2168T\2178T\2209U\221:V\222;W\223;X\224<X\225=Y\226>Z\227>[\230?\\\231" + "@\\\232@]\233A^\233B_\234C_\235C`\236Da\237Eb\240Ec\241Gc\242Hd\243Gc\242" + "\202Fb\242\12Fc\242Gd\243If\246Li\251Nj\253Nk\253Ol\254Pm\255Qm\256Qn\257" + "\205Ro\260\2Pm\256Nk\254\203Mj\253O\25-a\26-b\27.c\27/d\30""0e\31""0f\32" + """1g\32""2h\33""3i\33""4j\34""4k\34""5l\35""6m\36""7n\36""8o\37""8o\40""9" + "p!:q!;r\";s#<t#=u$>v%?w&?x&@y'Az(B{)C|*D~,F\200-H\201.J\203/J\2040K\2051" + "L\2061M\2072N\2103N\2114O\2124P\2135Q\2146R\2156R\2167S\2178T\2209U\2219" + "U\222:V\223;W\223<X\224<Y\225=Y\226>Z\227?[\230?\\\231@]\232A]\233A^\234" + "B_\235C`\236D`\237Da\240Eb\241Fc\242Gd\243Hd\243Ie\244Jf\245Jg\246Kh\247" + "Lh\250Mi\251Mj\252Nk\253Ol\254Pl\255Pm\256Qn\257\211Ro\260\3Pm\256Ol\255" + "\26/e\202\27/dL\30/d\30""0e\31""1f\32""2g\33""2h\33""3i\33""4j\34""5k\35" + """5l\35""6m\36""7n\37""8o\37""9p\40""9q!:r\";s\"<t#=t$=u%>w&@x'Az(B{)C}+" + "D\177,F\200-H\201-H\202.I\203/J\204/K\2050L\2061L\2072M\2102N\2103O\2114" + "O\2125P\2135Q\2146R\2157S\2167S\2178T\2209U\221:V\222:W\223;W\224<X\225=" + "Y\226=Z\227>[\227?[\230?\\\231@]\232A^\233B^\234B_\235C`\236Da\237Eb\240" + "Eb\241Fc\242Hd\243Ie\244Ie\245Jf\246Kg\247Kh\247Li\250Mi\251Nj\252Nk\253" + "Ol\254Pm\255Qm\256Qn\257\213Ro\260O\27""0g\27""1h\30""2i\31""2j\32""3j\32" + """3k3FrDRr>Mp:Mw,An:Lt@NoCSw:Ks\";t\"<u#=u$=w%>x&@y'A{(A|)B})C~*D\177+E\177" + "+E\200,G\200-H\201.I\202.I\203/J\2040K\2051L\2061M\2072M\2103N\2113O\212" + "4P\2135Q\2146Q\2156R\2157S\2168T\2178U\2209U\221:V\222;W\223;X\224<Y\225" + "=Y\226>Z\227>[\230?\\\231@\\\232@]\233A^\234B_\235C_\236C`\236Da\237Eb\240" + "Fc\241Gc\242Hd\243Ie\244If\245Jg\246Kg\247Lh\250Li\251Mj\252Nj\253Ok\254" + "Ol\255Pm\256Qn\256Qn\257\213Ro\260N\27""0g\30""1h\30""2i\31""3j\32""4k\33" + """4l.Du7Ly?Q|6Ju7LzAT~<P~<P\1773I{#<u$=v$>w%?x&?y'@z'A{(B|)C}*C~*D\177+E" + "\200,F\200,G\201-H\202.I\203/J\203/K\2040K\2051L\2062M\2072N\2103N\2114O" + "\2124P\2135Q\2146R\2157S\2167S\2178T\2209U\2219V\222:V\223;W\223<X\224<Y" + "\225=Z\226>Z\227?[\230?\\\231@]\232A]\233A^\234B_\235C`\236Da\237Da\240E" + "b\241Fc\242Gd\242He\244Ie\244Jf\245Jg\246Kh\247Lh\250Mi\251Mj\252Nk\253O" + "l\254Pl\255Pm\256Qn\257\214Ro\260N\27""1h\30""1i\31""2i\31""3k\32""4k\33" + """5l\34""5m\35""6n\36""6n\37""8p,:fHHa&9k\";t\"<u#=v$=w%>x%?y&@z'@{(A|(B" + "|)C}*D~+D\177+E\200,F\200-H\201-H\202.I\203/J\2040K\2050L\2061L\2072M\210" + "2N\2113O\2124P\2125P\2135Q\2146R\2157S\2168T\2178T\2209U\221:V\222:W\223" + ";W\224<X\225=Y\226=Z\227>[\230?[\231@\\\232@]\232A^\233B_\234B_\235C`\236" + "Da\237Eb\240Eb\241Gc\242Hd\243Ie\244If\245Jf\246Kg\247Lh\250Li\251Mi\251" + "Nj\252Nk\253Ol\254Pm\255Qm\256Qn\257\214Ro\260\31\30""1h\30""2i\31""2j\32" + """3k\33""4l\33""5m\34""6n\36""7odhy\240\205b\217`@\235jEsMA\";t#<u#=v$>w" + "%>x&?y&@z'A{(B|)B})C~*D\177\202+E\2002,G\200-H\202.I\202.J\203/J\2040K\205" + "1L\2061M\2072N\2103N\2113O\2124P\2135Q\2146Q\2156R\2167S\2178T\2179U\220" + "9U\221:V\222;W\223;X\224<Y\225=Y\226>Z\227>[\230?\\\231@\\\232A]\233A^\234" + "B_\235C`\236C`\237Da\240Eb\241Fc\241Gd\242Hd\243Ie\244Jf\245Jg\246Kg\247" + "Lh\250Li\251Mj\252Nk\253Ok\254Ol\255Pm\256Qn\257\215Ro\260M\30""1h\31""2" + "i\31""3j\32""4k\33""4l\33""5m\35""6n\36""7olku\361\312\223\177vlle_KKX\"" + ";u#<v$=v$>w%?x&?y'@z'A{(B|)C})C~*D\177+E\200,F\200,G\201-H\202.I\203/J\204" + "/K\2040L\2051L\2062M\2072N\2103O\2114O\2124P\2135Q\2146R\2157R\2167S\217" + "8T\2209U\221:V\222:V\223;W\224<X\225<Y\225=Z\226>Z\227?[\230?\\\231@]\232" + "A]\233B^\234B_\235C`\236Da\237Da\240Eb\241Fc\242Hd\243He\244Ie\245Jf\245" + "Kg\246Kh\247Li\250Mi\251Mj\252Nk\253Ol\254Pl\255Pm\256Qn\257\213Ro\260(P" + "m\256Ol\255\30""2i\31""2j\32""3k\32""4l\33""5m\34""5m\35""6n\36""7o\202|" + "x\333\271\206\321\264\210\336\300\222\225\211~#<u#=v$=w%>x%?y&@z'A{(A|(B" + "})C}*D~+D\177+E\200,F\200-H\201.I\202.I\203/J\2040K\2050L\2061M\2072M\210" + "3N\2113O\2124P\213\2025Q\214%6R\2157S\2168T\2178T\2209U\221:V\222;W\223;" + "W\224<X\225=Y\226=Z\227>[\230?[\231@\\\232@]\233A^\234B_\234C_\235C`\236" + "Da\237Eb\240Ec\241Gc\242Hd\243Ie\244If\245Jf\246Kg\247Lh\250Li\251Mj\252" + "Nj\253Nk\253Ol\254Pm\255Qn\256Qn\257\207Ro\260\3Pm\256Ol\255Nk\254\203Mj" + "\253L\30""2i\31""3j\32""3k\33""4l\33""5m\34""6n\36""7o\37""7p~{x\315\260" + "{\227\206o\270\232k9Hl#<u$=v$>w%>x&?y&@z'A{(B|)B})C~*D\177+E\200+F\200,G" + "\201-H\201.I\202.J\203/J\2040K\2051L\2061M\2072N\2103N\2114O\2124P\2135Q" + "\2146Q\2156R\2167S\2178T\2209U\2219U\222:V\223;W\223<X\224<Y\225=Y\226>Z" + "\227>[\230?\\\231@\\\232A]\233A^\234B_\235C`\236D`\237Da\240Eb\241Fc\241" + "Gd\242Hd\243Ie\244Jf\245Jg\246Kh\247Lh\250Mi\251Mj\252Nk\253Ol\254Ol\255" + "Pm\256Qn\257\204Ro\260\3Pm\256Ol\255Nk\254\207Mj\253O\31""2i\31""3j\32""4" + "k\33""4l\34""5m\35""6n\36""7o\37""8p\37""8q\40""8p!:s!:r\"<u#<v$=w%>x%?y" + "&@y'@z'A{(B|)C}*C~*D\177+E\200,F\200-H\201-H\202.I\203/J\204/K\2050L\206" + "1L\2072M\2072N\2103O\2114O\2125P\2135Q\2146R\2157S\2168S\2178T\2209U\221" + ":V\222:W\223;W\224<X\225=Y\226=Z\227>Z\227?[\230?\\\231@]\232A^\233B^\234" + "B_\235C`\236Da\237Eb\240Eb\241Fc\242Hd\243He\244If\245Jf\246Kg\246Kh\247" + "Li\250Mi\251Nj\252Nk\253Ol\254Pm\255Pm\256Qn\257Pm\256Ol\255Nk\254\213Mj" + "\2538\31""2j\32""3k\32""4l\33""5m\34""6n\35""6n\36""7o\37""8p\40""9q\40""9" + "r!:s\";t#<u#=v$=w%>x&?y&@z'A{(A|(B})C~*D~+E\177+E\200,F\200-H\201.I\202." + "I\203/J\2040K\2050L\2061M\2072M\2103N\2113O\2124P\2135Q\2146Q\2156R\2157" + "S\2168T\2178T\2209U\221:V\222;W\223;X\224<X\225=Y\226>Z\227>[\230?\\\231" + "@\\\232@]\233A^\234B_\235\202C`\236\15Da\237Eb\240Fc\241Gc\242Hd\243Ie\244" + "If\245Jg\246Kg\247Lh\250Li\251Mj\252Nj\253\202Nk\253\3Mj\253Mj\252Li\252" + "\216Mj\253F\31""3j\32""4k\33""4l\33""5m\35""6n\36""7o\37""7p\37""8q\40""9" + "r!:s!;t\";u#<u$=v$>w%>x&?y'@z'A{(B|)B})C~*D\177+E\200,F\200,G\201-H\202." + "I\202/J\203/K\2040K\2051L\2061M\2072N\2103N\2114O\2124P\2135Q\2146R\2156" + "R\2167S\2178T\2209U\2219V\222:V\222;W\223<X\224<Y\225=Y\226>Z\227?[\230?" + "\\\231@]\232A]\233A^\234B_\235C`\236D`\237Da\240Eb\241Fc\242Gd\243Hd\243" + "Ie\244Jf\245Jg\246Kh\247Lh\250Kh\250Kg\247\202Jg\247\3Kg\250Kh\251Li\252" + "\217Mj\253A\31""3j\32""4k\33""5l\34""5m\35""6n\36""7o\37""8p\37""9q\40""9" + "r!:s\";t#<u#<v$=w%>x%?y&@z'@z(A{(B|)C}*D~+D\177+E\200,F\200-H\201-H\202." + "I\203/J\2040K\2050L\2061L\2072M\2102N\2113O\2114P\2125P\2135Q\2146R\2157" + "S\2168S\2178T\2209U\221:V\222:W\223;W\224<X\225=Y\226=Z\227>[\230?[\230?" + "\\\231@]\232A^\233B_\234B_\235C`\236Da\237Eb\240Eb\241Fc\242Hd\243Ie\244" + "Ie\245Ie\244\202Hd\244\10Gd\244Hd\244Ie\245If\246Jg\247Kh\250Lh\251Li\252" + "\217Mj\253<\32""3k\32""4l\33""5m\34""6n\36""6o\36""7p\37""8q\40""9q!:r!:" + "s\";t#<u#=v$=w%>x&?y&@z'A{(A|)B})C~*D\177+E\177+E\200,G\200-H\201.I\202." + "J\203/J\2040K\2050L\2061M\2072M\2103N\2113O\2124P\2135Q\2146Q\2156R\2167" + "S\2178T\2179U\2209U\221:V\222;W\223;X\224<X\225=Y\226>Z\227>[\230?\\\231" + "@\\\232A]\233A^\234B_\235C`\236C`\237Da\237Eb\240Fc\241\202Fb\241\15Fa\240" + "Ea\240Eb\241Fb\242Gc\243Gd\244He\245If\246Jf\247Jg\250Kh\251Li\252Mi\252" + "\217Mj\253:\32""4k\33""4l\33""5m\35""6n\36""7o\37""8p\37""8q\40""9r!:s!;" + "t\";u#<v$=w$>w%?x&?y'@z'A{(B|)C})C~*D\177+E\200,F\200,G\201-H\202.I\203/" + "J\204/K\2040K\2051L\2062M\2072N\2103O\2114O\2124P\2135Q\2146R\2157S\2167" + "S\2178T\2209U\2219V\222:V\223;W\224<X\225<Y\225=Z\226>Z\227?[\230?\\\231" + "@]\232A^\233A^\234B_\235C`\236C_\236C_\235\202C^\235\16D_\236D`\237E`\240" + "Ea\240Eb\241Fc\242Gc\243Hd\244He\245If\246Jg\247Kg\250Kh\251Li\252\216Mj" + "\2535Nk\254Ol\255\32""4l\33""5l\34""5m\35""6n\36""7o\37""8p\40""9q\40""9" + "r!:s\";t#<u#=v$=w%>x%?y&@z'@{(A{(B})C}*D~+D\177+E\200,F\200-H\201-I\202." + "I\203/J\2040K\2050L\2061L\2072M\2103N\2113O\2114P\2125P\2145Q\2146R\2157" + "S\2168T\2178T\2209U\221:V\222:W\223;X\224<X\225=Y\226=Z\227>[\230?\\\231" + "@\\\232\202@]\232\1@\\\232\202@[\231\22A\\\232B]\233B^\234C^\235D_\236E`" + "\237Ea\240Ea\241Fb\242Fc\243Gd\244He\245Ie\246If\246Jg\247Kh\250Li\251Li" + "\252\211Mj\253\4Nk\254Ol\255Pm\256Qn\257\203Ro\260(\33""4l\33""5m\34""6n" + "\36""7o\36""7p\37""8q\40""9r:N{;Mx?NqHWzKZ|DTy8Js&?y&@z'A{(B|)B})C~*D\177" + "+E\200,E\200,G\200-H\201.I\202.J\203/J\2040K\2051L\2061M\2072N\2103N\211" + "3O\2124P\2135Q\2146Q\2156R\2167S\2178T\220\2029U\221\5:V\222;W\223<X\224" + "<Y\225=Y\226\202>Z\227\30>Y\227>Y\226>X\226>Y\227?Z\230@[\231A[\232A\\\233" + "B]\234C^\234C_\235D_\236E`\237Ea\240Eb\241Fb\242Gc\243Hd\244He\245If\246" + "Jf\247Jg\250Kh\251Li\252\206Mj\253\4Nk\254Ol\255Pm\256Qn\257\207Ro\260+\33" + """4l\34""5m\35""6n\36""7o\37""8p\37""8q\40""9r@R{7LzDW\201AT\200@T\201EW" + "\200?S\200&?y'@z'A{(B|)C}*C~*D\177+E\200,F\200,H\201-H\202.I\203/J\204/K" + "\2050L\2061L\2062M\2072N\2103O\2114O\2125P\2135Q\2146R\2157S\2167S\2178T" + "\2209U\221:V\222:V\223\203;W\223\202;V\223\31<V\223<W\224=X\225>Y\226?Y\227" + "?Z\230@[\231A\\\232B]\233B]\234C^\235D_\236D`\237E`\240Ea\241Eb\241Fc\242" + "Gd\243Hd\244He\245If\246Jg\247Kg\250Kh\251Li\252\202Mj\253\3Nk\254Ol\255" + "Qn\257\214Ro\260'\33""5m\34""5n\35""6n\36""7o\37""8p\40""9q\40""9r!:s\";" + "t\"<t#=v$=w%>x&?y&@z'A{(A|(B})C~*D~+D\177+E\200,F\200-H\201-I\202.I\203/" + "J\2040K\2050L\2061M\2072M\2103N\2113O\2124P\2135Q\2145Q\2156R\2157S\2168" + "T\217\2038T\220\2028S\217\36""9S\220:T\221:U\222;V\223<V\224=W\225=X\226" + ">Y\227?Z\227@Z\230@[\231A\\\232B]\233B^\234C^\235D_\236E`\237Ea\240Ea\241" + "Fb\242Gc\243Gd\244He\245Ie\246If\247Jg\250Li\251Nj\253Ol\255Qn\257\220Ro" + "\260#\33""5m\34""6n\36""7o\37""7p\37""8q\40""9r!:s!;tqy\215\234\234\235Z" + "cxgv\224Xj\204&?y&@z'A{(B|)B})C~*D\177+E\200,F\200,G\201-H\202.I\202/J\203" + "/J\2040K\2051L\2061M\2072N\2103N\2114O\2124P\2135Q\214\2026Q\215\1""6Q\214" + "\2026P\214\40""6P\2157Q\2168R\2179S\2179T\220:T\221;U\222;V\223<W\224=X\225" + ">X\226>Y\227?Z\230@[\231A\\\232A\\\233B]\234C^\235D_\235D`\236E`\237Ea\240" + "Eb\241Fc\242Gc\243Hd\244Jf\246Kh\250Mj\252Ol\255Pm\256Qn\257\222Ro\260\40" + "\34""5m\35""6n\36""7o\37""8p\40""8q\40""9r!:s\";t|\204\230\247\304\331\271" + "\302\311\310\313\311\210\215\232&@y'@z(A{(B|)C}*D~*D\177+E\200,F\200-H\201" + "-H\202.I\203/J\204/K\2050L\2061L\2072M\2072N\2113O\211\2033N\211%3M\2104" + "N\2115N\2125O\2136P\2147Q\2157R\2168R\2179S\220:T\221:U\222;V\222<V\223<" + "W\224=X\225>Y\226?Y\227?Z\230@[\231A\\\232B]\233B]\234C^\235D_\236D`\237" + "Ea\240Fb\241Gd\243If\245Kh\247Mi\251Nj\252Nk\253Ol\254Pm\255Pm\256Qn\257" + "\222Ro\260H\34""6n\36""6o\36""7o\37""8p\40""9q\40:r!:s\";tnz\224\215\301" + "\345\236\310\350\302\314\324\200\210\236&@z'A{(A|(B})C~*D\177+E\177+E\200" + ",G\200-H\201.I\202.J\203/J\2040K\2050L\2061L\2061K\2061K\2051J\2051K\206" + "2L\2073L\2103M\2114N\2115O\2125P\2136P\2147Q\2158R\2168S\2179S\220:T\221" + ";U\222;V\223<W\224=W\225=X\226>Y\227?Z\230@[\230@[\231A\\\232B]\233C^\234" + "D`\236Fa\240Gc\243Ie\245Jg\246Kg\247Lh\250Li\251Mj\252Nk\253Nk\254Ol\255" + "Pm\256Qn\256Qn\257\222Ro\260\31\35""6n\36""7o\37""8p\37""8q\40""9r!:s!;t" + "\";uHZ\201\203\223\247\230\260\304\214\232\255'?w'@z'A{(B|)B}*C~*D\177+E" + "\200,F\200,G\201-H\202.I\203.I\202\202.H\202,.G\202/H\202/I\2030I\2041J\205" + "1K\2062L\2073M\2104M\2114N\2125O\2136P\2146Q\2157Q\2168R\2179S\2179T\220" + ":T\221;U\222<V\223<W\224=X\225>X\226>Y\227?Z\230@[\231B]\233C_\236Da\240" + "Fc\241Gd\243He\244Ie\244Jf\245Jg\246Kh\247Lh\250Mi\251Mj\252Nk\253Ol\254" + "Pl\255Pm\256Qn\257\223Ro\260\24\35""6n\36""7o\37""8p\40""9q\40""9r!:s\";" + "t\"<u#=v$=w%=s,Bu&@z'@{(A{(B|)C}*D~*D\177+E\200\202+F\2001+F\177+E\177,E" + "\200-F\200-G\201.G\202/H\203/I\2040J\2051K\2052K\2062L\2073M\2104N\2115N" + "\2125O\2136P\2147Q\2157R\2168R\2179S\220:T\221:U\222;V\223<V\224=W\225>Y" + "\226?[\231A]\233B_\235C`\236Da\237Eb\240Eb\241Gc\242Hd\243Ie\244If\245Jf" + "\246Kg\247Kh\250Li\250Mi\251Nj\252Nk\253Ol\254Pm\255Qm\256Qn\257\223Ro\260" + "\17\36""7o\36""7p\37""8q\40""9q!:r!:s\";t#<u#=v$>w%>x&?y&@z'A{(A|\202)B}" + "\204)C|2*D}+E~+E\177,E\200-F\200-G\201.H\202/I\2030I\2040J\2051K\2062L\207" + "3L\2103M\2114N\2125O\2126P\2136P\2147Q\2158R\2168S\217:T\221;V\223<X\224" + "=Y\226?[\230@\\\232A]\233A^\234B_\235C`\236D`\237Da\240Eb\240Fc\241Gd\242" + "Hd\243Ie\244Jf\245Jg\246Kg\247Lh\250Li\251Mj\252Nk\253Ok\254Ol\255Pm\256" + "Qn\257Rn\257\223Ro\260\14\36""7o\37""8p\37""8q\40""9r!:s\";t\"<u#<u$=w%>" + "w%?x&?y\204&@y6'@y'Az(B{)C|)C}*D~+E\177,E\200,F\200-F\201.G\201/H\202/I\203" + "0J\2041J\2051K\2062L\2073M\2104N\2114N\2125P\2137Q\2158S\2179U\221:V\223" + "<X\224<Y\226=Z\226>Z\227?[\230?\\\231@]\232A]\233B^\234B_\235C`\236Da\237" + "Ea\240Eb\241Fc\242Hd\243He\244Ie\245Jf\246Kg\246Kh\247Li\250Mi\251Mj\252" + "Nk\253Ol\254Pl\255Pm\256Qn\257\224Ro\260\7\36""7o\37""8p\40""9q\40""9r!:" + "s\";t#<u\202#=v\1$=v\202#=u:$=v%>w%?x&@x'Ay(Az(B{)C|*D}*E~+E\177,E\200-F" + "\200-G\201.H\202/H\2030I\2040J\2051K\2062M\2104N\2125P\2136R\2157S\2178T" + "\2209U\221:V\222;W\223;W\224<X\225=Y\226=Z\227>[\230?[\231@\\\232@]\232A" + "^\234B_\234C_\235C`\236Da\237Eb\240Ec\241Gc\242Hd\243Ie\244If\245Jg\246K" + "g\247Lh\250Li\251Mj\252Nj\253Nk\254Ol\255Pm\255Qn\256Qn\257\224Ro\260\5\37" + """7p\37""8q\40""9r!:r!:s\203!:r\34!;r\";s#<t$=u$>v%?w&?x&@y'Az(B{)C|)C}*" + "D}+E~+E\177,E\200-F\200.H\202/J\2041K\2062M\2103O\2114P\2135Q\2146R\2156" + "R\2167S\2178T\220\2029U\221\37:V\222;W\223<X\224<Y\225=Y\226>Z\227>[\230" + "?\\\231@]\232A]\233A^\234B_\235C`\236D`\237Da\240Eb\241Fc\241Gd\242Hd\243" + "Ie\244Jf\245Jg\246Kh\247Lh\250Li\251Mj\252Nk\253Ok\254Ol\255Pm\256Qn\257" + "\225Ro\260\1%<r\203$<qA%=q%=r&>s'?t'@u(@v)Av*Bw*Cx+Dy,Dz,E{-F|.F}/G~/H\177" + "1J\2002K\2023L\2034N\2055O\2076P\2107Q\2117R\2128S\2129S\213:T\214:U\215" + ";V\216<V\217<W\220=X\221>Y\222?Y\222?Z\223@[\224A\\\225A\\\226B]\227C^\230" + "C^\231D_\232E`\233Ea\233Fb\234Gb\235Gc\236Hd\237Id\240Je\241Kf\242Lg\243" + "Mg\244Mh\244Ni\245Oj\246Ok\247Pk\250Ql\251Qm\252Rm\253Sn\254To\255Tp\255" + "Up\256\225Vq\257\6\340\340\340\330\325\325\322\312\312\335\335\335\316\316" + "\316\305\305\305\202\325\325\325\31\320\320\320\324\324\324\326\326\326\324" + "\324\324\340\340\340\335\335\335\324\324\324\325\325\325\326\326\326\324" + "\324\324\331\331\331\337\337\337\277\303\307\301\301\305\333\332\331\317" + "\305\263\323\317\310\333\332\327\306\304\305\311\312\313\327\327\330\266" + "\303\320\326\326\326\301\306\316\252\254\273\244\340\340\340\3\334\334\334" + "\340\340\340\334\334\334\202\325\325\325\6\331\331\331\323\323\323\277\277" + "\277\320\320\320\317\317\317\327\327\327\202\334\334\334*\324\324\324\333" + "\333\333\331\331\331\333\333\333\340\340\340\307\307\307\315\315\315\340" + "\340\340\336\332\332\265<6\262US\315\315\315\225\225\225\242\242\242\214" + "\214\214\273\273\273\225\225\225\251\251\251\231\231\231\263\263\263\345" + "\345\345\261\261\261\247\247\247\242\242\242\254\254\254\237\237\237\311" + "\311\311\266\277\305u\232\225\204\214\235\320\301\251\264\247\202\300\276" + "\262\277\276\274\312\312\315\321\321\321\270\270\277\210\235\252\277\301" + "\312\227\265\322\252\242\235\330\330\330\243\345\345\345\10\342\342\342\344" + "\344\344\267\267\267\237\237\237\301\301\301\226\226\226\257\257\257\254" + "\254\254\202\270\270\270\12\342\342\342\274\274\274\275\275\275\213\213\213" + "\265\265\265\213\213\213\204\204\204\343\343\343\234\234\234\265\265\265" + "\202\345\345\345\6\334\313\312\336\327\326\345\345\345\342\342\342\345\345" + "\345\340\340\340\202\345\345\345\1\343\343\343\203\345\345\345\3\342\342" + "\342\345\345\345\343\343\343\203\345\345\345\17\320\322\322\254\312\311\271" + "\305\325\334\334\333\276\306\312\331\332\331\327\327\327\311\311\311\340" + "\340\340\310\310\317\251\260\266\320\321\330\325\326\327\316\322\324\341" + "\341\341\243\345\345\345\3\341\341\341\344\344\344\330\330\330\202\345\345" + "\345\1\342\342\342\202\345\345\345\202\337\337\337\13\345\345\345\334\334" + "\334\343\343\343\336\336\336\344\344\344\340\340\340\341\341\341\345\345" + "\345\310\310\310\307\307\307\345\345\345", }; diff --git a/src/image_data/sdi_shared_sync_bnc_pixdata.h b/src/image_data/sdi_shared_sync_bnc_pixdata.h new file mode 100644 index 0000000..c09abde --- /dev/null +++ b/src/image_data/sdi_shared_sync_bnc_pixdata.h @@ -0,0 +1,1088 @@ +/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ + +static guint8 sdi_shared_sync_bnc_pixdata_pixel_data[] = { + "\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0" + "\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\377" + "\0\0\0\0\377\0\0\0\0\377\0\0\0\0\323\0\0\0\0\10\357\357\362#\357\357" + "\363a\357\357\363\223\357\357\363\275\357\357\363\334\360\360\363\361" + "\360\360\363\375\360\360\364\377\204\361\361\364\377\1\361\361\365\377" + "\204\362\362\365\377\1\363\363\365\377\204\363\363\366\377\1\364\364" + "\366\377\202\364\364\367\377\204\365\365\367\377\1\365\365\370\377\204" + "\366\366\370\377\205\367\367\371\377\1\370\370\371\377\202\370\370\372" + "\377\203\371\371\372\377\202\371\371\373\377\203\372\372\373\377\1\373" + "\373\373\377\204\373\373\374\377\1\374\374\374\377\203\374\374\375\377" + "\203\375\375\375\377\202\375\375\376\377\203\376\376\376\377\213\377" + "\377\377\377\202\376\376\377\377\204\376\376\376\377\202\375\375\376" + "\377\210\375\375\375\377\14\375\375\375\375\375\375\375\370\375\375\375" + "\357\375\375\375\343\375\375\375\324\375\375\375\301\375\375\375\252" + "\375\375\375\220\375\375\375s\375\375\375R\375\375\375.\375\375\375\10" + "\272\0\0\0\0\11\315\315\333#\315\315\334a\322\322\337\234\327\327\342" + "\325\317\317\335\334\317\317\335\361\317\317\335\375\320\320\335\377" + "\320\320\336\377\202\321\321\336\377\202\322\322\337\377\2\323\323\337" + "\377\323\323\340\377\202\324\324\340\377\2\325\325\340\377\325\325\341" + "\377\202\326\326\341\377\203\327\327\342\377\202\330\330\343\377\202" + "\331\331\343\377\202\332\332\344\377\2\333\333\344\377\333\333\345\377" + "\202\334\334\345\377\202\335\335\346\377\202\336\336\346\377\203\337" + "\337\347\377\202\340\340\350\377\2\341\341\350\377\341\341\351\377\202" + "\342\342\351\377\2\343\343\351\377\343\343\352\377\202\344\344\352\377" + "\202\345\345\353\377\202\346\346\353\377\203\347\347\354\377\202\350" + "\350\355\377\2\351\351\355\377\351\351\356\377\202\352\352\356\377\202" + "\353\353\357\377\202\354\354\357\377\202\355\355\360\377\2\356\356\360" + "\377\356\356\361\377\203\357\357\361\377\202\360\360\362\377\2\361\361" + "\362\377\361\361\363\377\202\362\362\363\377\202\363\363\364\377\202" + "\364\364\364\377\204\365\365\365\377\205\364\364\364\377\14\364\364\364" + "\375\364\364\364\370\364\364\364\357\364\364\364\343\364\364\364\324" + "\364\364\364\301\364\364\364\252\364\364\364\220\364\364\364s\364\364" + "\364R\364\364\364.\346\346\351\10\272\0\0\0\0\7\357\357\364e\356\356" + "\363\333\354\354\362\375\346\346\356\376\336\336\350\375\324\324\340" + "\370\320\320\336\375\203\321\321\336\377\202\322\322\337\377\202\323" + "\323\337\377\203\324\324\340\377\202\325\325\341\377\202\326\326\341" + "\377\202\327\327\342\377\2\330\330\342\377\330\330\343\377\202\331\331" + "\343\377\202\332\332\344\377\202\333\333\344\377\203\334\334\345\377" + "\202\335\335\346\377\2\336\336\346\377\336\336\347\377\202\337\337\347" + "\377\2\340\340\347\377\340\340\350\377\202\341\341\350\377\202\342\342" + "\351\377\2\343\343\351\377\343\343\352\377\203\344\344\352\377\202\345" + "\345\353\377\2\346\346\353\377\346\346\354\377\202\347\347\354\377\202" + "\350\350\355\377\202\351\351\355\377\202\352\352\356\377\2\353\353\356" + "\377\353\353\357\377\202\354\354\357\377\1\354\354\360\377\202\355\355" + "\360\377\2\356\356\360\377\356\356\361\377\202\357\357\361\377\202\360" + "\360\362\377\2\361\361\362\377\361\361\363\377\202\362\362\363\377\2" + "\363\363\363\377\363\363\364\377\202\364\364\364\377\205\365\365\365" + "\377\205\364\364\364\377\14\364\364\364\375\364\364\364\370\364\364\364" + "\357\364\364\364\343\364\364\364\324\364\364\364\301\364\364\364\252" + "\364\364\364\220\364\364\364s\364\364\364R\364\364\364.\364\364\364\10" + "\267\0\0\0\0\12\377\377\377\16\377\377\377\210\377\377\377\345\373\373" + "\374\373\364\364\367\375\355\355\362\376\347\347\356\376\341\341\352" + "\377\330\330\343\375\321\321\336\375\202\322\322\336\377\202\322\322" + "\337\377\2\323\323\337\377\323\323\340\377\202\324\324\340\377\202\325" + "\325\341\377\202\326\326\341\377\202\327\327\342\377\2\330\330\342\377" + "\330\330\343\377\202\331\331\343\377\203\332\332\344\377\2\333\333\344" + "\377\333\333\345\377\202\334\334\345\377\202\335\335\346\377\2\336\336" + "\346\377\336\336\347\377\202\337\337\347\377\2\340\340\347\377\340\340" + "\350\377\202\341\341\350\377\203\342\342\351\377\202\343\343\352\377" + "\202\344\344\352\377\202\345\345\353\377\2\346\346\353\377\346\346\354" + "\377\202\347\347\354\377\202\350\350\355\377\202\351\351\355\377\203" + "\352\352\356\377\202\353\353\357\377\202\354\354\357\377\206\355\355" + "\360\377\5\356\356\360\377\357\357\361\377\360\360\361\377\360\360\362" + "\377\361\361\362\377\202\362\362\363\377\202\363\363\364\377\2\364\364" + "\364\377\364\364\365\377\206\365\365\365\377\205\364\364\364\377\14\364" + "\364\364\375\364\364\364\370\364\364\364\357\364\364\364\343\364\364" + "\364\324\364\364\364\301\364\364\364\252\364\364\364\220\364\364\364" + "s\364\364\364R\364\364\364.\364\364\364\10\212\0\0\0\0\31\377\377\377" + "\14\302\332\302\207\264\321\264\223\261\317\261\223\255\315\255\223\252" + "\314\252\223\250\312\250\223\244\310\244\223\241\306\241\223\236\304" + "\236\223\233\302\233\223\230\301\230\223\225\277\225\223\222\275\222" + "\223\217\273\217\223\214\271\214\223b\240b\265U\230U\300n\247n\326k\245" + "k\326g\243g\326d\241d\326`\237`\326]\235]\326Z\233Z\262\222\0\0\0\0\14" + "\377\377\377:\377\377\377\264\377\377\377\362\377\377\377\371\377\377" + "\377\372\373\373\374\373\364\364\367\375\355\355\362\376\347\347\356" + "\376\341\341\352\377\331\331\343\375\322\322\337\375\202\322\322\337" + "\377\2\323\323\337\377\323\323\340\377\202\324\324\340\377\2\325\325" + "\340\377\325\325\341\377\202\326\326\341\377\202\327\327\342\377\1\330" + "\330\342\377\202\330\330\343\377\202\331\331\343\377\202\332\332\344" + "\377\2\333\333\344\377\333\333\345\377\202\334\334\345\377\202\335\335" + "\346\377\202\336\336\346\377\202\337\337\347\377\1\340\340\347\377\202" + "\340\340\350\377\2\341\341\350\377\341\341\351\377\202\342\342\351\377" + "\2\343\343\351\377\343\343\352\377\202\344\344\352\377\202\345\345\353" + "\377\2\346\346\353\377\346\346\354\377\202\347\347\354\377\1\350\350" + "\354\377\202\350\350\355\377\2\351\351\355\377\351\351\356\377\202\352" + "\352\356\377\202\353\353\357\377\202\354\354\357\377\202\355\355\360" + "\377\207\356\356\360\377\2\357\357\361\377\360\360\362\377\202\361\361" + "\362\377\202\363\363\364\377\2\364\364\364\377\364\364\365\377\207\365" + "\365\365\377\1\364\364\365\377\205\364\364\364\377\14\364\364\364\375" + "\364\364\364\370\364\364\364\357\364\364\364\343\364\364\364\324\364" + "\364\364\301\364\364\364\252\364\364\364\220\364\364\364s\364\364\364" + "R\364\364\364.\364\364\364\10\212\0\0\0\0\31\377\377\377<\241\306\241" + "\374\225\277\225\377o\250o\377n\253n\377d\241d\377b\245b\377Y\232Y\377" + "Y\237Y\377V\233V\377Z\232Z\377n\247n\377j\244j\377f\242f\377\201\263" + "\201\377q\225q\377o\224o\377m\222m\377j\221j\377h\217h\377f\216f\377" + "=\177=\377@\213@\377<\210<\377v\254v\377\202\377\377\377\357\1\377\377" + "\377\234\214\0\0\0\0\17\377\377\377\12\377\377\377t\377\377\377\325\377" + "\377\377\365\377\377\377\366\377\377\377\370\377\377\377\371\377\377" + "\377\372\373\373\374\373\364\364\367\375\356\356\363\376\347\347\356" + "\376\342\342\352\377\331\331\344\375\323\323\337\375\202\323\323\337" + "\377\3\324\324\340\377\0\0\0\377\252\252\263\377\202\325\325\341\377" + "\6ddi\37799<\377\16\16\17\377\327\327\342\377\330\330\342\377\330\330" + "\343\377\202\331\331\343\377\4\0\0\0\377\332\332\344\377\333\333\344" + "\377\333\333\345\377\202\334\334\345\377\2XX\\\377\0\0\0\377\202\336" + "\336\346\377\1\336\336\347\377\202\337\337\347\377\202\340\340\350\377" + "\10\341\341\350\377\0\0\0\377\265\265\272\377\342\342\351\377\343\343" + "\351\377jjm\377==>\377\17\17\20\377\202\345\345\353\377\202\346\346\353" + "\377\3\346\346\354\377\0\0\0\377\347\347\354\377\202\350\350\355\377" + "\6\351\351\355\377\351\351\356\377mmo\377\0\0\0\377nno\377\353\353\357" + "\377\202\354\354\357\377\202\355\355\360\377\1\356\356\360\377\210\356" + "\356\361\377\4\357\357\361\377\360\360\361\377\360\360\362\377\361\361" + "\362\377\202\362\362\363\377\202\363\363\364\377\2\364\364\364\377\364" + "\364\365\377\203\365\365\365\377\1\364\364\365\377\207\364\364\364\377" + "\14\364\364\364\375\364\364\364\370\364\364\364\357\364\364\364\343\364" + "\364\364\324\364\364\364\301\364\364\364\252\364\364\364\220\364\364" + "\364s\364\364\364R\364\364\364.\364\364\364\10\212\0\0\0\0\17\347\360" + "\347t\230\300\230\377\221\275\221\377L\223L\377N\235N\377\77\212\77\377" + "\77\225\77\3773\2013\3777\2157\3775\2115\377A\211A\377m\246m\377i\244" + "i\377e\241e\377\240\305\240\377\206,/,\377\4\"=\"\377\77\212\77\377:" + "\210:\377i\244i\377\202\377\377\377\377\1\377\377\377\346\212\0\0\0\0" + "\21\377\377\377*\377\377\377\241\377\377\377\347\377\377\377\361\377" + "\377\377\363\377\377\377\365\377\377\377\366\377\377\377\370\377\377" + "\377\371\377\377\377\372\373\373\374\373\364\364\367\375\356\356\363" + "\376\350\350\357\376\343\343\352\377\332\332\344\375\324\324\340\375" + "\203\324\324\340\377\10""99<\377fff\377\336\336\347\377\326\326\341\377" + "\35\35\36\377\235\235\241\377\365\365\367\377\374\374\375\377\202\331" + "\331\343\377\202\332\332\344\377\3\0\0\0\377\377\377\377\377\333\333" + "\345\377\202\334\334\345\377\4vv{\377;;=\377\0\0\0\377\377\377\377\377" + "\202\337\337\347\377\2\340\340\347\377\340\340\350\377\202\341\341\350" + "\377\13\342\342\351\377<<>\377fff\377\351\351\356\377\343\343\352\377" + "\36\36\37\377\241\241\243\377\370\370\372\377\375\375\376\377\346\346" + "\353\377\346\346\354\377\202\347\347\354\377\2\0\0\0\377\377\377\377" + "\377\202\351\351\355\377\202\352\352\356\377\5\0\0\0\377\366\366\370" + "\377\0\0\0\377\366\366\370\377\354\354\360\377\202\355\355\360\377\2" + "\356\356\360\377\356\356\361\377\211\357\357\361\377\2\360\360\361\377" + "\360\360\362\377\202\361\361\362\377\1\362\362\363\377\202\363\363\364" + "\377\2\364\364\364\377\364\364\365\377\202\365\365\365\377\211\364\364" + "\364\377\14\364\364\364\375\364\364\364\370\364\364\364\357\364\364\364" + "\343\364\364\364\324\364\364\364\301\364\364\364\252\364\364\364\220" + "\364\364\364s\364\364\364R\364\364\364.\364\364\364\10\212\0\0\0\0\17" + "\301\331\301\303\227\300\227\377\207\272\207\377J\222J\377L\233L\377" + "=\211=\377=\224=\3772\2012\3776\2146\3774\2104\377G\213G\377l\246l\377" + "h\243h\377c\240c\377\240\305\240\377\206,/,\377\4\40""7\40\377=\211=" + "\3779\2079\3775\2045\377\203\377\377\377\377\210\0\0\0\0\35\377\377\377" + "d\377\377\377\300\377\377\377\353\377\377\377\355\377\377\377\357\377" + "\377\377\361\377\377\377\363\377\377\377\365\377\377\377\366\377\377" + "\377\370\377\377\377\371\377\377\377\372\373\373\374\373\365\365\370" + "\375\356\356\363\376\350\350\357\376\343\343\353\377\334\334\345\376" + "\324\324\340\375\325\325\341\377\325\325\340\377\325\325\341\377\217" + "\217\226\377\0\0\0\377\357\357\363\377\272\272\304\377\0\0\0\377\372" + "\372\373\377\0\0\0\377\202\331\331\343\377\6\221\221\230\377\17\17\17" + "\377,,.\377\0\0\0\377\377\377\377\377\334\334\345\377\202\335\335\346" + "\377\6\336\336\346\377\355\355\362\377\0\0\0\377\377\377\377\377\340" + "\340\347\377\340\340\350\377\202\341\341\350\377\1\341\341\351\377\202" + "\342\342\351\377\17\227\227\233\377\0\0\0\377\364\364\367\377\306\306" + "\313\377\0\0\0\377\374\374\374\377\0\0\0\377\346\346\354\377\347\347" + "\354\377\232\232\235\377\17\17\20\377../\377\0\0\0\377\377\377\377\377" + "\351\351\356\377\202\352\352\356\377\202\353\353\357\377\6\377\377\377" + "\377\0\0\0\377\377\377\377\377\355\355\360\377\356\356\360\377\356\356" + "\361\377\202\357\357\361\377\213\360\360\362\377\203\361\361\362\377" + "\202\362\362\363\377\1\364\364\364\377\202\364\364\365\377\212\364\364" + "\364\377\14\364\364\364\375\364\364\364\370\364\364\364\357\364\364\364" + "\343\364\364\364\324\364\364\364\301\364\364\364\252\364\364\364\220" + "\364\364\364s\364\364\364R\364\364\364.\364\364\364\10\211\0\0\0\0\20" + "\377\377\377\14\261\317\261\355\226\277\226\377z\266z\377H\220H\377J" + "\232J\377;\210;\377;\223;\3772\2002\3776\2136\3774\2064\377M\215M\377" + "k\245k\377f\242f\377b\240b\377\237\304\237\377\205,/,\377\6,.,\377\34" + "%\34\377<\211<\3778\2068\3774\2034\377\234\260\234\377\202\277\277\277" + "\377\1\277\277\277p\204\0\0\0\0\26\377\377\377\35\377\377\377\212\377" + "\377\377\330\377\377\377\346\377\377\377\350\377\377\377\353\377\377" + "\377\355\377\377\377\357\377\377\377\361\377\377\377\363\377\377\377" + "\365\377\377\377\366\377\377\377\370\377\377\377\371\377\377\377\372" + "\373\373\374\373\365\365\370\375\357\357\363\376\351\351\357\376\343" + "\343\353\377\334\334\345\376\325\325\341\375\203\326\326\341\377\17\327" + "\327\342\377\0\0\0\377\335\335\335\377eej\377JJM\377\377\377\377\377" + "\0\0\0\377\377\377\377\377\332\332\344\377\0\0\0\377\271\271\276\377" + "\333\333\333\377\0\0\0\377\377\377\377\377\335\335\346\377\202\336\336" + "\346\377\202\337\337\347\377\5\0\0\0\377\377\377\377\377\340\340\350" + "\377\341\341\350\377\341\341\351\377\202\342\342\351\377\21\343\343\351" + "\377\343\343\352\377\344\344\352\377\0\0\0\377\335\335\335\377kkn\377" + "NNO\377\377\377\377\377\0\0\0\377\377\377\377\377\347\347\354\377\0\0" + "\0\377\300\300\302\377\334\334\334\377\0\0\0\377\377\377\377\377\352" + "\352\356\377\202\353\353\357\377\202\354\354\357\377\4oop\377__`\377" + "\377\377\377\377\356\356\361\377\203\357\357\361\377\203\360\360\362" + "\377\205\361\361\362\377\202\360\360\362\377\205\361\361\362\377\202" + "\362\362\363\377\2\363\363\363\377\363\363\364\377\204\364\364\364\377" + "\2\363\363\364\377\363\363\363\377\205\364\364\364\377\14\364\364\364" + "\375\364\364\364\370\364\364\364\357\364\364\364\343\364\364\364\324" + "\364\364\364\301\364\364\364\252\364\364\364\220\364\364\364s\364\364" + "\364R\364\364\364.\364\364\364\10\211\0\0\0\0\20\377\377\377<\241\306" + "\241\374\224\276\224\377o\263o\377F\217F\377H\231H\3779\2079\377:\222" + ":\3772\1772\3775\2125\3774\2054\377M\215M\377j\244j\377e\242e\377a\237" + "a\377\236\304\236\377\205,/,\377\6,.,\377\40'\40\3772s2\3777\2057\377" + "3\2033\377\244\310\244\377\202\377\377\377\377\1\377\377\377\316\202" + "\0\0\0\0\30\377\377\377O\377\377\377\251\377\377\377\335\377\377\377" + "\340\377\377\377\343\377\377\377\346\377\377\377\350\377\377\377\353" + "\377\377\377\355\377\377\377\357\377\377\377\361\377\377\377\363\377" + "\377\377\365\377\377\377\366\377\377\377\370\377\377\377\371\377\377" + "\377\372\374\374\374\373\365\365\370\375\357\357\363\376\351\351\357" + "\376\344\344\354\377\335\335\346\376\326\326\341\375\202\326\326\342" + "\377\202\327\327\342\377\17::<\377www\377,,.\377\276\276\302\377\363" + "\363\366\377\0\0\0\377\377\377\377\377\333\333\345\377\0\0\0\377\377" + "\377\377\377\344\344\352\377\0\0\0\377\377\377\377\377\336\336\346\377" + "\336\336\347\377\202\337\337\347\377\4\340\340\350\377\0\0\0\377\377" + "\377\377\377\341\341\350\377\202\342\342\351\377\2\343\343\351\377\343" + "\343\352\377\202\344\344\352\377\17\345\345\353\377==\77\377www\377/" + "/0\377\302\302\305\377\367\367\371\377\0\0\0\377\377\377\377\377\350" + "\350\355\377\0\0\0\377\377\377\377\377\356\356\361\377\0\0\0\377\377" + "\377\377\377\353\353\357\377\202\354\354\357\377\5\355\355\360\377\315" + "\315\320\377\20\20\20\377\367\367\370\377\370\370\371\377\202\357\357" + "\361\377\204\360\360\362\377\202\361\361\362\377\205\362\362\363\377" + "\202\361\361\362\377\1\361\361\363\377\205\362\362\363\377\2\363\363" + "\363\377\363\363\364\377\202\364\364\364\377\202\363\363\364\377\202" + "\363\363\363\377\205\362\362\363\377\14\362\362\363\375\362\362\363\370" + "\362\362\363\357\362\362\363\343\362\362\363\324\362\362\363\301\362" + "\362\363\252\362\362\363\220\362\362\363s\362\362\363R\362\362\363.\362" + "\362\363\10\211\0\0\0\0\20\347\360\347t\227\300\227\377\223\276\223\377" + "Z\244Z\377E\216E\377F\231F\3777\2067\3779\2219\3771}1\3775\2115\3773" + "\2033\377L\214L\377h\244h\377d\241d\377`\236`\377\235\304\235\377\205" + ",/,\377\6+.+\377#)#\377.l.\3776\2056\3771\2021\377o\250o\377\202\377" + "\377\377\377\33\377\377\377\360\377\377\377s\377\377\377\301\377\377" + "\377\326\377\377\377\331\377\377\377\335\377\377\377\340\377\377\377" + "\343\377\377\377\346\377\377\377\350\377\377\377\353\377\377\377\355" + "\377\377\377\357\377\377\377\361\377\377\377\363\377\377\377\365\377" + "\377\377\366\377\377\377\370\377\377\377\371\377\377\377\372\374\374" + "\375\373\365\365\370\375\357\357\364\376\351\351\360\376\344\344\354" + "\377\336\336\347\376\327\327\342\375\202\327\327\342\377\17\330\330\342" + "\377\330\330\343\377\221\221\227\377!!!\377\20\20\20\377\370\370\372" + "\377\342\342\351\377\0\0\0\377\377\377\377\377\334\334\345\377\0\0\0" + "\377\377\377\377\377\300\300\307\377\0\0\0\377\377\377\377\377\202\337" + "\337\347\377\7\340\340\347\377\340\340\350\377\341\341\350\377\0\0\0" + "\377\377\377\377\377\342\342\351\377\343\343\351\377\202\343\343\352" + "\377\202\344\344\352\377\202\345\345\353\377\17\231\231\235\377!!!\377" + "\20\20\20\377\372\372\373\377\355\355\361\377\0\0\0\377\377\377\377\377" + "\351\351\355\377\0\0\0\377\377\377\377\377\314\314\316\377\0\0\0\377" + "\377\377\377\377\354\354\357\377\354\354\360\377\202\355\355\360\377" + "\4""000\377\200\200\202\377\376\376\376\377\357\357\361\377\202\360\360" + "\362\377\2\361\361\362\377\360\360\362\377\204\361\361\362\377\202\362" + "\362\362\377\204\363\363\363\377\1\362\362\362\377\202\362\362\363\377" + "\1\361\361\362\377\202\362\362\363\377\202\363\363\363\377\202\363\363" + "\364\377\202\363\363\363\377\210\362\362\363\377\14\362\362\363\375\362" + "\362\363\370\362\362\363\357\362\362\363\343\362\362\363\324\362\362" + "\363\301\362\362\363\252\362\362\363\220\362\362\363s\362\362\363R\362" + "\362\363.\362\362\363\10\211\0\0\0\0\20\304\333\304\310\226\277\226\377" + "\214\273\214\377S\237S\377C\215C\377D\230D\3776\2046\3778\2208\3770|" + "0\3774\2074\3772\2022\377R\216R\377l\250l\377w\263w\377r\261r\377\250" + "\317\250\377\204-0-\377$-/-\377,/,\377*.*\377(_(\377\77\235\77\377:\232" + ":\377.\205.\377W\231W\243\377\377\377\222\377\377\377\307\377\377\377" + "\317\377\377\377\322\377\377\377\326\377\377\377\331\377\377\377\335" + "\377\377\377\340\377\377\377\343\377\377\377\346\377\377\377\350\377" + "\377\377\353\377\377\377\355\377\377\377\357\377\377\377\361\377\377" + "\377\363\377\377\377\365\377\377\377\366\377\377\377\370\377\377\377" + "\371\377\377\377\372\374\374\375\373\365\365\370\375\360\360\364\376" + "\352\352\360\376\345\345\354\377\337\337\347\376\330\330\342\375\202" + "\330\330\343\377\203\331\331\343\377\16\0\0\0\377ddd\377\375\375\375" + "\377\333\333\345\377\0\0\0\377\377\377\377\377\335\335\346\377ggk\377" + "333\377JJM\377\0\0\0\377\377\377\377\377\340\340\347\377\0\0\0\377\202" + "\341\341\350\377\5\341\341\351\377\0\0\0\377\377\377\377\377\343\343" + "\351\377\343\343\352\377\202\344\344\352\377\202\345\345\353\377\27\346" + "\346\353\377\346\346\354\377\347\347\354\377\0\0\0\377eee\377\375\375" + "\376\377\351\351\355\377\0\0\0\377\377\377\377\377\352\352\356\377mm" + "o\377333\377NNP\377\0\0\0\377\377\377\377\377\355\355\360\377\0\0\0\377" + "\356\356\360\377\356\356\361\377\0\0\0\377\21\21\21\377\20\20\21\377" + "\360\360\362\377\202\361\361\362\377\1\360\360\362\377\204\361\361\362" + "\377\3\360\360\362\377\360\360\361\377\361\361\362\377\203\362\362\363" + "\377\202\363\363\364\377\205\362\362\363\377\1\363\363\363\377\202\363" + "\363\364\377\202\363\363\363\377\203\362\362\363\377\202\362\362\362" + "\377\204\362\362\363\377\14\362\362\363\375\362\362\363\370\362\362\363" + "\357\364\364\364\343\362\362\363\324\362\362\363\301\362\362\363\252" + "\362\362\363\220\362\362\363s\362\362\363R\362\362\363.\362\362\363\10" + "\210\0\0\0\0\35\377\377\377\31\261\317\261\355\225\277\225\377\202\270" + "\202\377Q\236Q\377A\213A\377B\227B\3774\2034\3778\2178\3770{0\3774\206" + "4\3772\2012\377W\220W\377p\254p\377\211\306\211\377\214\310\214\377\245" + "\321\245\377\206\245\207\377\200\240\201\377y\233z\377r\226t\377k\220" + "m\377d\213f\377\\\205^\377S\221V\377M\253N\377B\263B\3773\2243\377\362" + "\367\362\377\202\377\377\377\377\32\377\377\377\350\377\377\377\322\377" + "\377\377\326\377\377\377\331\377\377\377\335\377\377\377\340\377\377" + "\377\343\377\377\377\346\377\377\377\350\377\377\377\353\377\377\377" + "\355\377\377\377\357\377\377\377\361\377\377\377\363\377\377\377\365" + "\377\377\377\366\377\377\377\370\377\377\377\371\377\377\377\372\374" + "\374\375\373\366\366\370\375\360\360\364\376\352\352\360\376\345\345" + "\354\377\337\337\350\376\330\330\343\375\203\331\331\343\377\202\332" + "\332\344\377\6\333\333\344\377\377\377\377\377\361\361\365\377\334\334" + "\345\377\335\335\345\377\377\377\377\377\202\336\336\346\377\7\360\360" + "\364\377\371\371\372\377\364\364\367\377\377\377\377\377\340\340\350" + "\377\341\341\350\377\377\377\377\377\202\342\342\351\377\2\343\343\351" + "\377\377\377\377\377\202\344\344\352\377\202\345\345\353\377\202\346" + "\346\353\377\203\347\347\354\377\17\350\350\355\377\377\377\377\377\366" + "\366\370\377\351\351\356\377\352\352\356\377\377\377\377\377\353\353" + "\356\377\353\353\357\377\366\366\370\377\373\373\374\377\371\371\372" + "\377\377\377\377\377\356\356\360\377\356\356\361\377\377\377\377\377" + "\202\357\357\361\377\1\377\377\377\377\202\376\376\376\377\5\361\361" + "\363\377\362\362\363\377\361\361\362\377\360\360\362\377\360\360\361" + "\377\202\361\361\362\377\204\362\362\362\377\2\362\362\363\377\363\363" + "\363\377\206\362\362\363\377\202\363\363\363\377\2\363\363\364\377\363" + "\363\363\377\202\362\362\363\377\203\362\362\362\377\206\361\361\362" + "\377\14\361\361\362\375\361\361\362\370\361\361\362\357\361\361\362\343" + "\361\361\362\324\361\361\362\301\361\361\362\252\361\361\362\220\361" + "\361\362s\361\361\362R\361\361\362.\361\361\362\10\210\0\0\0\0\35\377" + "\377\377F\241\306\241\374\224\276\224\377x\265x\377O\235O\377\77\213" + "\77\377@\226@\3773\2023\3777\2167\377/z/\3774\2044\3771\2001\377W\220" + "W\377o\253o\377\243\317\243\377\275\307\275\377\262\267\263\377\307\307" + "\307\377\344\344\344\377\360\360\360\377\367\367\370\377\321\321\324" + "\377\263\263\266\377\205\205\211\377\\\\a\377TXZ\377ItN\3775\2265\377" + "\214\246\214\377\202\277\277\277\377\32\306\306\306\370\377\377\377\322" + "\377\377\377\326\377\377\377\331\377\377\377\335\377\377\377\340\377" + "\377\377\343\377\377\377\346\377\377\377\350\377\377\377\353\377\377" + "\377\355\377\377\377\357\377\377\377\361\377\377\377\363\377\377\377" + "\365\377\377\377\366\377\377\377\370\377\377\377\371\377\377\377\372" + "\374\374\375\373\366\366\370\375\360\360\364\376\353\353\360\376\346" + "\346\355\377\340\340\350\377\331\331\343\375\203\332\332\344\377\2\333" + "\333\344\377\333\333\345\377\202\334\334\345\377\1\300\300\306\377\203" + "\17\17\17\377\1\300\300\310\377\202\337\337\347\377\202\340\340\350\377" + "\202\341\341\350\377\202\342\342\351\377\2\305\305\312\377\343\343\352" + "\377\202\344\344\352\377\203\345\345\353\377\2\346\346\353\377\346\346" + "\354\377\202\347\347\354\377\202\350\350\355\377\202\351\351\355\377" + "\6>>\77\377\20\20\20\377\0\0\0\377//0\377\315\315\317\377\354\354\357" + "\377\203\355\355\360\377\202\356\356\361\377\202\357\357\361\377\4\320" + "\320\322\377\360\360\362\377\361\361\362\377\361\361\363\377\202\362" + "\362\363\377\2\363\363\363\377\361\361\362\377\202\360\360\361\377\4" + "\0\0\0\377\360\360\361\377\361\361\362\377\362\362\362\377\202\362\362" + "\363\377\2\363\363\364\377\363\363\363\377\207\362\362\363\377\1\363" + "\363\363\377\202\362\362\363\377\202\362\362\362\377\1\320\320\322\377" + "\203\361\361\362\377\1\360\360\361\377\204\361\361\362\377\14\361\361" + "\362\375\361\361\362\370\361\361\362\357\361\361\362\343\361\361\362" + "\324\361\361\362\301\361\361\362\252\361\361\362\220\361\361\362s\361" + "\361\362R\361\361\362.\361\361\362\10\210\0\0\0\0\21\351\362\351}\227" + "\300\227\377\223\275\223\377\\\234\\\377D\215D\377>\211>\377A\213A\377" + "[\232[\377Z\227Z\377X\224X\377B\202B\377,q,\377X\226X\377x\257x\377\271" + "\275\271\377\256\256\257\377\357\357\357\377\202\377\377\377\377\12\367" + "\367\370\377\350\350\352\377\325\325\330\377\300\300\304\377\250\250" + "\256\377\204\204\213\377\\\\a\377QQW\3776H:\377\220\265\220\377\202\377" + "\377\377\377\36\377\377\377\376\377\377\377\322\377\377\377\326\377\377" + "\377\331\377\377\377\335\377\377\377\340\377\377\377\343\377\377\377" + "\346\377\377\377\350\377\377\377\353\377\377\377\355\377\377\377\357" + "\377\377\377\361\377\377\377\363\377\377\377\365\377\377\377\366\377" + "\377\377\370\377\377\377\371\377\377\377\372\374\374\375\373\366\366" + "\370\375\360\360\365\376\353\353\361\376\346\346\355\377\341\341\351" + "\377\332\332\344\375\333\333\344\377\332\332\344\377\333\333\344\377" + "\333\333\345\377\202\334\334\345\377\10\335\335\346\377;;=\377iim\377" + "\375\375\375\377\207\207\207\377333\377\344\344\352\377\340\340\350\377" + "\202\341\341\350\377\202\342\342\351\377\5\343\343\351\377\343\343\352" + "\377\0\0\0\377\350\350\355\377\344\344\352\377\202\345\345\353\377\2" + "\346\346\353\377\346\346\354\377\202\347\347\354\377\202\350\350\355" + "\377\202\351\351\355\377\13\352\352\356\377NNO\377//0\377\372\372\373" + "\377\376\376\376\377fff\377222\377\357\357\362\377\355\355\360\377\356" + "\356\360\377\356\356\361\377\202\357\357\361\377\202\360\360\362\377" + "\2\0\0\0\377\363\363\365\377\202\362\362\363\377\10\363\363\363\377\363" + "\363\364\377\362\362\363\377\361\361\362\377\357\357\361\377\360\360" + "\362\377\0\0\0\377\377\377\377\377\203\361\361\362\377\202\362\362\363" + "\377\1\362\362\362\377\202\361\361\362\377\202\362\362\362\377\204\362" + "\362\363\377\202\362\362\362\377\202\361\361\362\377\3\0\0\0\377\360" + "\360\361\377\361\361\361\377\202\360\360\361\377\204\361\361\362\377" + "\14\361\361\362\375\361\361\362\370\361\361\362\357\361\361\362\343\361" + "\361\362\324\361\361\362\301\361\361\362\252\361\361\362\220\361\361" + "\362s\361\361\362R\361\361\362.\361\361\362\10\210\0\0\0\0\16\303\333" + "\303\310\226\277\226\377\222\275\222\377N\223N\377C\214C\377<\210<\377" + "Y\232Y\377\204\263\204\377\203\260\203\377\202\256\202\377L\210L\377" + "+o+\377[\230[\377\177\252\177\377\202\262\262\262\377)\372\372\372\377" + "\377\377\377\377\367\367\370\377\350\350\352\377\325\325\330\377\300" + "\300\304\377\250\250\256\377\216\216\226\377mmu\377RRV\377\\\\a\377Q" + "QW\377\15-\15\377\273\326\273\331\377\377\377\312\377\377\377\317\377" + "\377\377\322\377\377\377\326\377\377\377\331\377\377\377\335\377\377" + "\377\340\377\377\377\343\377\377\377\346\377\377\377\350\377\377\377" + "\353\377\377\377\355\377\377\377\357\377\377\377\361\377\377\377\363" + "\377\377\377\365\377\377\377\366\377\377\377\370\377\377\377\371\377" + "\377\377\372\374\374\375\373\366\366\371\375\361\361\365\376\353\353" + "\361\376\347\347\356\377\341\341\351\377\333\333\344\375\202\333\333" + "\345\377\202\334\334\345\377\202\335\335\346\377\11\336\336\346\377\0" + "\0\0\377\366\366\371\377\360\360\364\377\340\340\347\377\0\0\0\377\371" + "\371\372\377\341\341\350\377\0\0\0\377\202\342\342\351\377\10\0\0\0\377" + "\343\343\352\377jjm\377\0\0\0\377UUU\377\345\345\353\377\346\346\353" + "\377\346\346\354\377\202\347\347\354\377\1\350\350\354\377\202\350\350" + "\355\377\2\351\351\355\377\351\351\356\377\202\352\352\356\377\21\0\0" + "\0\377\306\306\310\377\373\373\374\377\354\354\357\377\355\355\360\377" + "\0\0\0\377\374\374\374\377\356\356\361\377\0\0\0\377\357\357\361\377" + "\360\360\362\377\0\0\0\377\361\361\362\377ppq\377\0\0\0\377UUU\377\362" + "\362\363\377\202\363\363\364\377\202\363\363\363\377\33\361\361\362\377" + "\360\360\362\377\360\360\361\377\0\0\0\377\377\377\377\377\0\0\0\377" + "QQQ\377\40\40\40\377\0\0\0\377qqq\377\362\362\362\377\0\0\0\377QQQ\377" + "\40\40\40\377\0\0\0\377qqq\377\362\362\362\377\0\0\0\377\357\357\361" + "\377\360\360\362\377\0\0\0\377\361\361\362\377ppq\377\0\0\0\377UUU\377" + "\362\362\363\377\360\360\361\377\205\357\357\360\377\14\357\357\360\375" + "\357\357\360\370\357\357\360\357\357\357\360\343\357\357\360\324\357" + "\357\360\301\357\357\360\252\357\357\360\220\357\357\360s\357\357\360" + "R\357\357\360.\357\357\360\10\207\0\0\0\0\17\377\377\377\31\261\317\261" + "\355\225\277\225\377\204\264\204\377H\220H\377A\213A\377:\207:\377b\237" + "b\377\204\262\204\377\203\260\203\377\202\255\202\377A\201A\377*n*\377" + "f\242f\377t\223t\377\202\262\262\262\377\15""000\377\253\253\253\377" + "\350\350\352\377\325\325\330\377\300\300\304\377\250\250\256\377\216" + "\216\226\377``g\377\32\32\34\377\33\33\34\377ffk\377\\\\a\377\6\27\6" + "\377\203\377\377\377\377\31\377\377\377\361\377\377\377\326\377\377\377" + "\331\377\377\377\335\377\377\377\340\377\377\377\343\377\377\377\346" + "\377\377\377\350\377\377\377\353\377\377\377\355\377\377\377\357\377" + "\377\377\361\377\377\377\363\377\377\377\365\377\377\377\366\377\377" + "\377\370\377\377\377\371\377\377\377\372\374\374\375\373\366\366\371" + "\375\361\361\365\376\354\354\361\376\350\350\356\377\342\342\352\377" + "\334\334\345\375\202\334\334\345\377\2\335\335\345\377\335\335\346\377" + "\202\336\336\346\377\3\336\336\347\377\0\0\0\377\377\377\377\377\202" + "\340\340\350\377\15\0\0\0\377\377\377\377\377\342\342\351\377\0\0\0\377" + "\377\377\377\377\343\343\352\377\0\0\0\377\377\377\377\377\345\345\353" + "\377\0\0\0\377\377\377\377\377\367\367\370\377\346\346\354\377\202\347" + "\347\354\377\202\350\350\355\377\2\351\351\355\377\351\351\356\377\202" + "\352\352\356\377\23\353\353\356\377\353\353\357\377\0\0\0\377\377\377" + "\377\377\361\361\363\377\355\355\360\377\356\356\360\377\0\0\0\377\377" + "\377\377\377\357\357\361\377\0\0\0\377\377\377\377\377\360\360\362\377" + "\0\0\0\377\377\377\377\377\362\362\363\377\0\0\0\377\377\377\377\377" + "\373\373\373\377\202\364\364\364\377\34\363\363\364\377\363\363\363\377" + "\361\361\362\377\360\360\361\377\361\361\362\377\0\0\0\377\377\377\377" + "\377\0\0\0\377\252\252\252\377\373\373\373\377\333\333\333\377\0\0\0" + "\377\370\370\371\377\0\0\0\377\252\252\252\377\373\373\373\377\333\333" + "\333\377\0\0\0\377\370\370\371\377\0\0\0\377\377\377\377\377\360\360" + "\362\377\0\0\0\377\377\377\377\377\362\362\363\377\0\0\0\377\377\377" + "\377\377\373\373\373\377\206\357\357\360\377\14\357\357\360\375\357\357" + "\360\370\357\357\360\357\357\357\360\343\357\357\360\324\357\357\360" + "\301\357\357\360\252\357\357\360\220\357\357\360s\357\357\360R\357\357" + "\360.\357\357\360\10\207\0\0\0\0\22\377\377\377F\240\305\240\374\224" + "\276\224\377v\254v\377F\216F\377\77\212\77\3778\2068\377p\247p\377\203" + "\261\203\377\202\257\202\377\201\254\201\377A\177A\377*m*\377e\241e\377" + "MsM\377\247\247\247\377\262\262\262\377CCC\377\202\0\0\0\377\3""223\377" + ",,.\377&&(\377\203\0\0\0\377\5==\77\377ppu\377``e\377\2\7\2\377\325\345" + "\325\377\202\377\377\377\377\31\377\377\377\372\377\377\377\326\377\377" + "\377\331\377\377\377\335\377\377\377\340\377\377\377\343\377\377\377" + "\346\377\377\377\350\377\377\377\353\377\377\377\355\377\377\377\357" + "\377\377\377\361\377\377\377\363\377\377\377\365\377\377\377\366\377" + "\377\377\370\377\377\377\371\377\377\377\372\374\374\375\373\366\366" + "\371\375\362\362\365\376\355\355\362\376\350\350\356\377\343\343\352" + "\377\335\335\345\375\203\335\335\346\377\2\336\336\346\377\336\336\347" + "\377\202\337\337\347\377\2\0\0\0\377\377\377\377\377\202\341\341\350" + "\377\13\0\0\0\377\377\377\377\377\343\343\351\377\0\0\0\377\377\377\377" + "\377\344\344\352\377\0\0\0\377\377\377\377\377\345\345\353\377\0\0\0" + "\377\377\377\377\377\202\347\347\354\377\202\350\350\355\377\202\351" + "\351\355\377\202\352\352\356\377\2\353\353\356\377\353\353\357\377\202" + "\354\354\357\377\25\20\20\20\377\314\314\314\377\355\355\360\377\356" + "\356\360\377\316\316\321\377\0\0\0\377\377\377\377\377\360\360\362\377" + "\0\0\0\377\377\377\377\377\361\361\363\377\0\0\0\377\377\377\377\377" + "\363\363\363\377\0\0\0\377\377\377\377\377\364\364\364\377\364\364\365" + "\377\365\365\365\377\364\364\364\377\363\363\364\377\202\361\361\362" + "\377\32\363\363\363\377\0\0\0\377\377\377\377\377\0\0\0\377\377\377\377" + "\377\366\366\366\377\361\361\362\377\0\0\0\377\377\377\377\377\0\0\0" + "\377\377\377\377\377\366\366\366\377\361\361\362\377\0\0\0\377\377\377" + "\377\377\0\0\0\377\377\377\377\377\361\361\363\377\0\0\0\377\377\377" + "\377\377\363\363\363\377\0\0\0\377\377\377\377\377\364\364\364\377\355" + "\355\357\377\356\356\357\377\204\357\357\360\377\14\357\357\360\375\357" + "\357\360\370\357\357\360\357\357\357\360\343\357\357\360\324\357\357" + "\360\301\357\357\360\252\357\357\360\220\357\357\360s\357\357\360R\357" + "\357\360.\357\357\360\10\207\0\0\0\0\37\351\362\351}\227\300\227\377" + "\223\275\223\377h\243h\377D\215D\377=\211=\3776\2056\377g\232g\377j\227" + "j\377i\225i\377g\222g\3771t1\377*l*\377d\241d\377j\245j\3779F9\377zz" + "z\377\262\262\262\377\221\221\221\377YYY\377,,,\377+++\377))*\377(((" + "\377KKL\377rrt\377\203\203\206\377[[^\377\25\25\26\377\20=\20\377|\243" + "|\377\202\277\277\277\377\31\275\275\275\377\377\377\377\326\377\377" + "\377\331\377\377\377\335\377\377\377\340\377\377\377\343\377\377\377" + "\346\377\377\377\350\377\377\377\353\377\377\377\355\377\377\377\357" + "\377\377\377\361\377\377\377\363\377\377\377\365\377\377\377\366\377" + "\377\377\370\377\377\377\371\377\377\377\372\374\374\375\373\367\367" + "\371\375\362\362\365\376\355\355\362\376\350\350\356\377\344\344\353" + "\377\335\335\346\375\202\336\336\346\377\1\336\336\347\377\202\337\337" + "\347\377\21\340\340\347\377\340\340\350\377--.\377\210\210\210\377\342" + "\342\351\377yy|\377--/\377\377\377\377\377\343\343\352\377\0\0\0\377" + "\377\377\377\377\267\267\274\377\0\0\0\377\377\377\377\377\346\346\354" + "\377\0\0\0\377\377\377\377\377\202\350\350\355\377\202\351\351\355\377" + "\203\352\352\356\377\202\353\353\357\377\202\354\354\357\377\21\355\355" + "\360\377OOP\377UUU\377\361\361\364\377\357\357\361\377```\377AAA\377" + "\377\377\377\377\361\361\362\377\0\0\0\377\377\377\377\377\302\302\302" + "\377\0\0\0\377\377\377\377\377\363\363\364\377\0\0\0\377\377\377\377" + "\377\203\365\365\365\377\202\364\364\364\377\7\362\362\362\377\363\363" + "\363\377\364\364\364\377\0\0\0\377\377\377\377\377\0\0\0\377\377\377" + "\377\377\202\361\361\362\377\21\0\0\0\377\377\377\377\377\0\0\0\377\252" + "\252\252\377\373\373\373\377\333\333\333\377\0\0\0\377\370\370\371\377" + "\0\0\0\377\377\377\377\377\302\302\302\377\0\0\0\377\377\377\377\377" + "\363\363\364\377\0\0\0\377\377\377\377\377\365\365\365\377\206\355\355" + "\357\377\14\355\355\357\375\355\355\357\370\355\355\357\357\355\355\357" + "\343\355\355\357\324\355\355\357\301\355\355\357\252\355\355\357\220" + "\355\355\357s\355\355\357R\355\355\357.\355\355\357\10\207\0\0\0\0\37" + "\306\334\306\316\226\277\226\377\221\275\221\377Z\233Z\377B\214B\377" + ";\210;\3775\2045\377\204\263\204\377\203\260\203\377\202\256\202\377" + "\201\253\201\377+o+\377-n-\377b\240b\377q\261q\377v\267v\377<a<\377\34" + "0\34\377\33""0\33\377\31/\31\377\30/\30\377\27.\27\377\25.\25\377\24" + ".\24\377\22-\22\377\21-\21\377\17,\17\377\16+\16\377\36j\36\377)\235" + ")\377q\250q\377\203\377\377\377\377\30\377\377\377\350\377\377\377\331" + "\377\377\377\335\377\377\377\340\377\377\377\343\377\377\377\346\377" + "\377\377\350\377\377\377\353\377\377\377\355\377\377\377\357\377\377" + "\377\361\377\377\377\363\377\377\377\365\377\377\377\366\377\377\377" + "\370\377\377\377\371\377\377\377\372\374\374\375\373\367\367\371\375" + "\362\362\365\376\356\356\362\376\351\351\357\377\345\345\353\377\336" + "\336\346\375\203\337\337\347\377\1\340\340\347\377\202\340\340\350\377" + "\23\341\341\350\377\303\303\312\377!!!\377\20\20\20\377\17\17\20\377" + "\320\320\323\377\372\372\373\377\344\344\352\377LLN\377\0\0\0\377==\77" + "\377\0\0\0\377\377\377\377\377\347\347\354\377\0\0\0\377\21\21\21\377" + "\350\350\355\377\351\351\355\377\351\351\356\377\202\352\352\356\377" + "\202\353\353\357\377\202\354\354\357\377\202\355\355\360\377\21\356\356" + "\360\377\316\316\321\377222\377\21\21\21\377\0\0\0\377000\377\330\330" + "\331\377\373\373\374\377\361\361\363\377QQQ\377\0\0\0\377AAA\377\0\0" + "\0\377\377\377\377\377\364\364\365\377!!!\377\0\0\0\377\204\365\365\365" + "\377\2\364\364\364\377\363\363\364\377\202\363\363\363\377\31\0\0\0\377" + "\377\377\377\377\0\0\0\377\377\377\377\377\361\361\361\377\360\360\361" + "\377\0\0\0\377\377\377\377\377\0\0\0\377QQQ\377\40\40\40\377\0\0\0\377" + "qqq\377\362\362\362\377QQQ\377\0\0\0\377AAA\377\0\0\0\377\377\377\377" + "\377\364\364\365\377!!!\377\0\0\0\377\365\365\365\377\355\355\357\377" + "\355\355\356\377\204\355\355\357\377\14\355\355\357\375\355\355\357\370" + "\355\355\357\357\355\355\357\343\355\355\357\324\355\355\357\301\355" + "\355\357\252\355\355\357\220\355\355\357s\355\355\357R\355\355\357.\355" + "\355\357\10\206\0\0\0\0\40\377\377\377%\260\317\260\355\225\276\225\377" + "\220\274\220\377G\217G\377@\213@\377:\207:\377C\214C\377\203\262\203" + "\377\203\257\203\377\202\255\202\377\200\252\200\377*n*\3778x8\377a\237" + "a\377o\260o\377|\302|\377\220\315\220\377\216\277\216\377s\247s\377\207" + "\276\207\377k\245k\377\177\274\177\377|\273|\377x\272x\377t\271t\377" + "q\267q\377U\236U\377i\264i\377/\251/\377)\245)\377E\216E\377\203\377" + "\377\377\377\30\377\377\377\365\377\377\377\331\377\377\377\335\377\377" + "\377\340\377\377\377\343\377\377\377\346\377\377\377\350\377\377\377" + "\353\377\377\377\355\377\377\377\357\377\377\377\361\377\377\377\363" + "\377\377\377\365\377\377\377\366\377\377\377\370\377\377\377\371\377" + "\377\377\372\374\374\375\373\367\367\371\375\362\362\366\376\356\356" + "\362\376\352\352\357\377\346\346\354\377\337\337\347\375\202\337\337" + "\347\377\202\340\340\350\377\202\341\341\350\377\202\342\342\351\377" + "\2\347\347\354\377\373\373\374\377\202\375\375\376\377\7\350\350\356" + "\377\345\345\353\377\346\346\353\377\367\367\370\377\377\377\377\377" + "\371\371\372\377\377\377\377\377\202\350\350\355\377\2\377\377\377\377" + "\376\376\376\377\202\352\352\356\377\2\353\353\356\377\353\353\357\377" + "\202\354\354\357\377\202\355\355\360\377\1\356\356\360\377\202\356\356" + "\361\377\15\357\357\361\377\361\361\363\377\374\374\374\377\376\376\376" + "\377\377\377\377\377\374\374\375\377\364\364\365\377\362\362\363\377" + "\363\363\364\377\373\373\373\377\377\377\377\377\374\374\374\377\377" + "\377\377\377\202\365\365\365\377\2\376\376\376\377\377\377\377\377\202" + "\365\365\365\377\1\364\364\365\377\203\364\364\364\377\5\363\363\364" + "\377\363\363\363\377\377\377\377\377\363\363\363\377\377\377\377\377" + "\202\360\360\361\377\3\357\357\361\377\377\377\377\377\0\0\0\377\202" + "\360\360\361\377\202\361\361\361\377\6\362\362\363\377\363\363\364\377" + "\373\373\373\377\377\377\377\377\374\374\374\377\377\377\377\377\202" + "\365\365\365\377\4\376\376\376\377\377\377\377\377\354\354\355\377\353" + "\353\355\377\204\355\355\357\377\14\355\355\357\375\355\355\357\370\355" + "\355\357\357\355\355\357\343\355\355\357\324\355\355\357\301\355\355" + "\357\252\355\355\357\220\355\355\357s\355\355\357R\355\355\357.\355\355" + "\357\10\206\0\0\0\0!\377\377\377R\240\305\240\374\223\276\223\377\202" + "\263\202\377E\216E\377>\212>\3778\2068\377L\221L\377\203\261\203\377" + "\202\257\202\377\201\254\201\377k\233k\377*m*\3777w7\377`\236`\377n\260" + "n\377{\302{\377\217\314\217\377\215\277\215\377r\246r\377\206\275\206" + "\377j\244j\377\177\273\177\377{\272{\377w\271w\377s\270s\377p\267p\377" + "T\235T\377h\263h\377A\260A\377(\244(\377\33~\33\377\340\354\340\376\202" + "\377\377\377\374\30\377\377\377\367\377\377\377\331\377\377\377\335\377" + "\377\377\340\377\377\377\343\377\377\377\346\377\377\377\350\377\377" + "\377\353\377\377\377\355\377\377\377\357\377\377\377\361\377\377\377" + "\363\377\377\377\365\377\377\377\366\377\377\377\370\377\377\377\371" + "\377\377\377\372\374\374\375\373\367\367\371\375\363\363\366\376\356" + "\356\363\376\352\352\357\377\346\346\354\377\340\340\347\375\202\340" + "\340\350\377\202\341\341\350\377\202\342\342\351\377\1\343\343\351\377" + "\202\343\343\352\377\202\344\344\352\377\202\345\345\353\377\2\346\346" + "\353\377\346\346\354\377\202\347\347\354\377\202\350\350\355\377\202" + "\351\351\355\377\202\352\352\356\377\1\353\353\356\377\202\353\353\357" + "\377\2\354\354\357\377\354\354\360\377\202\355\355\360\377\2\356\356" + "\360\377\356\356\361\377\202\357\357\361\377\202\360\360\362\377\2\361" + "\361\362\377\361\361\363\377\202\362\362\363\377\2\363\363\363\377\363" + "\363\364\377\202\364\364\364\377\1\364\364\365\377\207\365\365\365\377" + "\203\364\364\364\377\202\363\363\364\377\202\363\363\363\377\203\362" + "\362\363\377\6\362\362\362\377\361\361\362\377\361\361\361\377\361\361" + "\362\377\0\0\0\377\360\360\361\377\203\361\361\361\377\6\360\360\361" + "\377\361\361\362\377\360\360\361\377\355\355\356\377\354\354\355\377" + "\352\352\354\377\202\351\351\353\377\210\353\353\355\377\14\353\353\355" + "\375\353\353\355\370\353\353\355\357\353\353\355\343\353\353\355\324" + "\353\353\355\301\353\353\355\252\353\353\355\220\353\353\355s\353\353" + "\355R\353\353\355.\353\353\355\10\206\0\0\0\0;\314\340\314\207\227\300" + "\227\377\222\275\222\377p\250p\377C\215C\377<\211<\3776\2056\377G\215" + "G\377Z\226Z\377X\223X\377W\220W\377K\205K\377)l)\3776v6\377_\236_\377" + "m\257m\377y\302y\377\215\314\215\377\214\277\214\377q\246q\377\205\275" + "\205\377i\244i\377}\273}\377z\272z\377v\271v\377r\270r\377o\267o\377" + "S\235S\377g\262g\377;\237;\377&\243&\377\33\206\33\3777\2067\374\377" + "\377\377\317\377\377\377\322\377\377\377\326\377\377\377\331\377\377" + "\377\335\377\377\377\340\377\377\377\343\377\377\377\346\377\377\377" + "\350\377\377\377\353\377\377\377\355\377\377\377\357\377\377\377\361" + "\377\377\377\363\377\377\377\365\377\377\377\366\377\377\377\370\377" + "\377\377\371\377\377\377\372\374\374\375\373\367\367\371\375\363\363" + "\366\376\357\357\363\376\353\353\357\377\347\347\355\377\341\341\350" + "\375\202\341\341\350\377\1\341\341\351\377\202\342\342\351\377\2\343" + "\343\351\377\343\343\352\377\202\344\344\352\377\202\345\345\353\377" + "\2\346\346\353\377\346\346\354\377\202\347\347\354\377\2\350\350\354" + "\377\350\350\355\377\202\351\351\355\377\1\351\351\356\377\202\352\352" + "\356\377\202\353\353\357\377\202\354\354\357\377\202\355\355\360\377" + "\2\356\356\360\377\356\356\361\377\202\357\357\361\377\202\360\360\362" + "\377\202\361\361\362\377\1\361\361\363\377\202\362\362\363\377\202\363" + "\363\364\377\2\364\364\364\377\364\364\365\377\207\365\365\365\377\1" + "\364\364\365\377\204\364\364\364\377\203\363\363\363\377\202\362\362" + "\363\377\7\362\362\362\377\362\362\363\377\362\362\362\377\361\361\362" + "\377\361\361\361\377\361\361\362\377\363\363\364\377\205\360\360\361" + "\377\5\357\357\360\377\356\356\360\377\355\355\356\377\353\353\355\377" + "\353\353\356\377\202\352\352\354\377\202\351\351\353\377\206\353\353" + "\355\377\14\353\353\355\375\353\353\355\370\353\353\355\357\353\353\355" + "\343\353\353\355\324\353\353\355\301\353\353\355\252\353\353\355\220" + "\353\353\355s\353\353\355R\353\353\355.\353\353\355\10\206\0\0\0\0;\316" + "\341\316\306\225\277\225\377\221\274\221\377j\222j\377c\201c\377PoP\377" + "]}]\377[|[\377ZzZ\377XxX\377GgG\377UuU\377TsT\377<_<\377X\223X\377n\261" + "n\377w\301w\377\203\307\203\377\201\277\201\377m\255m\377x\274x\377d" + "\253d\377o\272o\377k\271k\377f\270f\377b\266b\377]\264]\377I\242I\377" + "`\257`\3779\2319\377$\242$\377\33\216\33\377\21o\21\377\377\377\377\317" + "\377\377\377\322\377\377\377\326\377\377\377\331\377\377\377\335\377" + "\377\377\340\377\377\377\343\377\377\377\346\377\377\377\350\377\377" + "\377\353\377\377\377\355\377\377\377\357\377\377\377\361\377\377\377" + "\363\377\377\377\365\377\377\377\366\377\377\377\370\377\377\377\371" + "\377\377\377\372\374\374\375\373\370\370\371\375\363\363\366\376\357" + "\357\363\376\353\353\360\377\350\350\355\377\341\341\351\375\203\342" + "\342\351\377\2\343\343\351\377\343\343\352\377\202\344\344\352\377\202" + "\345\345\353\377\202\346\346\353\377\11\255\255\261\377HHI\377\16\16" + "\16\377\35\35\35\377---\377<<<\377||}\377\306\306\311\377\352\352\356" + "\377\202\353\353\357\377\202\354\354\357\377\202\355\355\360\377\2\356" + "\356\360\377\356\356\361\377\203\357\357\361\377\202\360\360\362\377" + "\2\361\361\362\377\361\361\363\377\202\362\362\363\377\11\363\363\364" + "\377\266\266\267\377LLL\377\16\16\16\377\35\35\35\377---\377<<<\377\200" + "\200\200\377\316\316\316\377\202\365\365\365\377\1\364\364\365\377\205" + "\364\364\364\377\2\363\363\364\377\363\363\363\377\202\362\362\363\377" + "\204\362\362\362\377\203\361\361\362\377\16\267\267\270\377XXY\377\40" + "\40\40\377,,,\377888\377FFF\377\203\203\204\377\312\312\313\377\356\356" + "\357\377\355\355\357\377\355\355\356\377\353\353\355\377\352\352\354" + "\377\352\352\353\377\204\351\351\353\377\204\353\353\355\377\14\353\353" + "\355\375\353\353\355\370\353\353\355\357\353\353\355\343\353\353\355" + "\324\353\353\355\301\353\353\355\252\353\353\355\220\353\353\355s\353" + "\353\355R\353\353\355.\353\353\355\10\205\0\0\0\0<\377\377\377%\265\322" + "\265\350\224\276\224\377\220\274\220\377\256\267\262\377ccw\377XXl\377" + "MMa\377BBV\37799L\37711C\377)):\377!!0\377\31\31'\377\12\12\20\377Eu" + "E\377s\270s\377v\301v\377\213\313\213\377\212\277\212\377o\246o\377\203" + "\275\203\377g\243g\377{\273{\377x\272x\377t\271t\377p\267p\377l\266l" + "\377Q\234Q\377e\261e\3775\2165\377#\241#\377\33\225\33\377\20n\20\377" + "\271\324\271\337\377\377\377\322\377\377\377\326\377\377\377\331\377" + "\377\377\335\377\377\377\340\377\377\377\343\377\377\377\346\377\377" + "\377\350\377\377\377\353\377\377\377\355\377\377\377\357\377\377\377" + "\361\377\377\377\363\377\377\377\365\377\377\377\366\377\377\377\370" + "\377\377\377\371\377\377\377\372\374\374\375\373\370\370\372\375\363" + "\363\366\376\360\360\363\376\354\354\360\377\350\350\356\377\342\342" + "\351\375\202\343\343\351\377\1\343\343\352\377\202\344\344\352\377\203" + "\345\345\353\377\6\346\346\353\377\346\346\354\377eeg\377\0\0\0\377\5" + "\5\5\377\2\2\2\377\202\0\0\0\377\4\4\4\4\377\"\"\"\377]]]\377\244\244" + "\246\377\202\354\354\357\377\203\355\355\360\377\202\356\356\361\377" + "\202\357\357\361\377\202\360\360\362\377\2\361\361\362\377\361\361\363" + "\377\202\362\362\363\377\202\363\363\364\377\4jjj\377\0\0\0\377\5\5\5" + "\377\2\2\2\377\202\0\0\0\377\4\4\4\4\377\"\"\"\377]]]\377\247\247\250" + "\377\205\364\364\364\377\202\363\363\364\377\202\363\363\363\377\203" + "\362\362\363\377\1\362\362\362\377\203\361\361\362\377\5\360\360\361" + "\377hhi\377\0\0\0\377\5\5\5\377\2\2\2\377\202\0\0\0\377\7\4\4\4\377\"" + "\"\"\377]]]\377\245\245\245\377\355\355\356\377\354\354\356\377\354\354" + "\355\377\202\352\352\354\377\2\351\351\353\377\350\350\353\377\206\351" + "\351\353\377\14\351\351\353\375\351\351\353\370\351\351\353\357\351\351" + "\353\343\351\351\353\324\351\351\353\301\351\351\353\252\351\351\353" + "\220\351\351\353s\351\351\353R\351\351\353.\351\351\353\10\205\0\0\0" + "\0>\377\377\377R\243\307\243\371\223\276\223\377\217\273\217\377\261" + "\261\267\377nn\202\377ccw\377XXl\377MMa\377BBV\37799L\37711C\377)):\377" + "!!0\377\16\16\25\377DuD\377q\270q\377t\300t\377\203\277\203\377\212\276" + "\212\377n\245n\377\202\274\202\377f\243f\377z\272z\377w\271w\377s\270" + "s\377o\267o\377l\265l\377P\233P\377d\260d\377H\226H\377!\240!\377\33" + "\234\33\377\17m\17\377r\251r\360\377\377\377\322\377\377\377\326\377" + "\377\377\331\377\377\377\335\377\377\377\340\377\377\377\343\377\377" + "\377\346\377\377\377\350\377\377\377\353\377\377\377\355\377\377\377" + "\357\377\377\377\361\377\377\377\363\377\377\377\365\377\377\377\366" + "\377\377\377\370\377\377\377\371\377\377\377\372\375\375\375\373\370" + "\370\372\375\364\364\366\376\360\360\364\376\354\354\361\377\351\351" + "\356\377\343\343\352\375\344\344\352\377\343\343\352\377\202\344\344" + "\352\377\202\345\345\353\377\10\346\346\353\377\346\346\354\377\347\347" + "\354\377VVX\377\0\0\0\377\11\11\11\377@@@\377xxx\377\202\177\177\177" + "\377\5xxx\377@@@\377\7\7\7\377ooo\377\275\275\276\377\202\355\355\360" + "\377\2\356\356\360\377\356\356\361\377\202\357\357\361\377\202\360\360" + "\362\377\2\361\361\362\377\361\361\363\377\202\362\362\363\377\1\363" + "\363\363\377\202\363\363\364\377\5[[[\377\0\0\0\377\1\13\1\377\0M\0\377" + "\0\220\0\377\202\0\231\0\377\5\0\220\0\377\0M\0\377\7\7\7\377ooo\377" + "\300\300\300\377\202\364\364\364\377\202\363\363\364\377\203\363\363" + "\363\377\202\362\362\363\377\1\362\362\362\377\203\361\361\362\377\7" + "\361\361\361\377\360\360\361\377YYZ\377\0\0\0\377\16\16\1\377ee\0\377" + "\275\275\0\377\202\311\311\0\377\5\275\275\0\377ee\0\377\7\7\7\377oo" + "o\377\275\275\275\377\203\353\353\355\377\202\351\351\353\377\3\350\350" + "\352\377\351\351\353\377\350\350\353\377\204\351\351\353\377\14\351\351" + "\353\375\351\351\353\370\351\351\353\357\351\351\353\343\351\351\353" + "\324\351\351\353\301\351\351\353\252\351\351\353\220\351\351\353s\351" + "\351\353R\351\351\353.\351\351\353\10\205\0\0\0\0<\377\377\377y\226\277" + "\226\377\222\275\222\377\222\273\222\377\231\266\231\377\245\275\245" + "\377\223\254\223\377\241\273\241\377\237\271\237\377\235\270\235\377" + "\233\267\233\377\211\245\211\377\226\264\226\377\224\263\224\377d\214" + "d\377U\221U\377p\267p\377s\300s\377~\271~\377\211\276\211\377l\245l\377" + "\201\274\201\377e\243e\377y\272y\377v\271v\377r\270r\377n\267n\377j\265" + "j\377O\232O\377c\260c\377G\226G\377.\245.\377\32\233\32\377\20x\20\377" + "H\220H\370\377\377\377\322\377\377\377\326\377\377\377\331\377\377\377" + "\335\377\377\377\340\377\377\377\343\377\377\377\346\377\377\377\350" + "\377\377\377\353\377\377\377\355\377\377\377\357\377\377\377\361\377" + "\377\377\363\377\377\377\365\377\377\377\366\377\377\377\370\377\377" + "\377\371\377\377\377\372\375\375\375\373\370\370\372\375\364\364\367" + "\376\360\360\364\376\355\355\361\377\351\351\357\377\344\344\352\375" + "\202\344\344\352\377\202\345\345\353\377\2\346\346\353\377\346\346\354" + "\377\202\347\347\354\377\17\256\256\261\377\0\0\0\377\11\11\11\377hh" + "h\377\177\177\177\377\262\276\257\377\310\332\305\377\275\314\272\377" + "\252\264\250\377\225\232\224\377hhh\377\11\11\11\377\223\223\223\377" + "\340\340\342\377\356\356\361\377\202\357\357\361\377\202\360\360\362" + "\377\202\361\361\362\377\1\361\361\363\377\202\362\362\363\377\202\363" + "\363\364\377\20\364\364\364\377\267\267\270\377\0\0\0\377\1\13\1\377" + "\0}\0\377\0\231\0\377q\313o\377\244\342\240\377\213\327\210\377`\304" + "^\3771\2570\377\0}\0\377\11\11\11\377\223\223\223\377\345\345\345\377" + "\363\363\364\377\203\363\363\363\377\202\362\362\363\377\202\362\362" + "\362\377\202\361\361\362\377\1\361\361\361\377\202\360\360\361\377\16" + "\264\264\265\377\0\0\0\377\16\16\1\377\244\244\0\377\311\311\0\377\327" + "\344o\377\336\357\240\377\333\352\210\377\325\340^\377\317\3240\377\244" + "\244\0\377\11\11\11\377\223\223\223\377\336\336\337\377\202\352\352\354" + "\377\3\351\351\354\377\351\351\353\377\350\350\353\377\202\350\350\352" + "\377\204\351\351\353\377\14\351\351\353\375\351\351\353\370\351\351\353" + "\357\351\351\353\343\351\351\353\324\351\351\353\301\351\351\353\252" + "\351\351\353\220\351\351\353s\351\351\353R\351\351\353.\351\351\353\10" + "\203\0\0\0\0>\347\347\354\357\351\351\356\357\350\352\353\374\205\220" + "\212\377\276\311\300\377\330\343\332\377\316\320\320\377\346\346\350" + "\377\326\326\330\377\347\347\351\377\350\350\351\377\350\350\352\377" + "\351\351\353\377\332\332\333\377\352\352\353\377\353\353\354\377\327" + "\337\330\377\323\343\324\377\331\353\332\377\332\356\333\377\340\354" + "\340\377\344\357\344\377\333\347\333\377\342\356\342\377\331\346\331" + "\377\340\355\340\377\337\354\337\377\335\353\336\377\334\352\334\377" + "\332\351\333\377\321\340\322\377\327\347\330\377\316\335\317\377\307" + "\343\310\377\275\336\277\377\272\324\274\377\305\327\310\377\362\362" + "\365\374\361\361\364\374\360\360\363\375\360\360\363\374\360\360\364" + "\363\372\372\373\347\377\377\377\346\377\377\377\350\377\377\377\353" + "\377\377\377\355\377\377\377\357\377\377\377\361\377\377\377\363\377" + "\377\377\365\377\377\377\366\377\377\377\370\377\377\377\371\377\377" + "\377\372\375\375\375\373\370\370\372\375\365\365\367\376\361\361\364" + "\376\356\356\361\377\352\352\357\377\345\345\353\375\202\345\345\353" + "\377\202\346\346\353\377\203\347\347\354\377\6\350\350\355\377HHI\377" + "\5\5\5\377@@@\377\177\177\177\377\271\307\266\377\202\346\377\341\377" + "\7\330\356\324\377\302\323\277\377\254\267\252\377\226\233\225\377@@" + "@\377DDD\377\323\323\324\377\202\357\357\361\377\202\360\360\362\377" + "\2\361\361\362\377\361\361\363\377\202\362\362\363\377\202\363\363\364" + "\377\202\364\364\364\377\6\365\365\365\377LLL\377\5\5\5\377\0M\0\377" + "\0\231\0\377\202\323\177\377\202\346\377\341\377\7\307\361\303\377\226" + "\334\223\377d\306b\3772\2571\377\0M\0\377DDD\377\325\325\325\377\202" + "\363\363\363\377\202\362\362\363\377\202\362\362\362\377\203\361\361" + "\362\377\203\360\360\361\377\6\357\357\360\377JJJ\377\5\5\5\377ee\0\377" + "\311\311\0\377\331\347\177\377\202\346\377\341\377\10\342\370\303\377" + "\334\354\223\377\326\341b\377\317\3251\377ee\0\377DDD\377\322\322\322" + "\377\351\351\354\377\202\351\351\353\377\3\350\350\353\377\350\350\352" + "\377\347\347\352\377\205\347\347\351\377\14\347\347\351\375\347\347\351" + "\370\347\347\351\357\347\347\351\343\347\347\351\324\347\347\351\301" + "\347\347\351\252\347\347\351\220\347\347\351s\347\347\351R\347\347\351" + ".\347\347\351\10\203\0\0\0\0>\353\353\357\377\303\303\321\377\313\313" + "\327\377\205\205\212\377\253\253\265\377\270\270\303\377\323\323\336" + "\377\331\331\343\377\333\333\344\377\335\335\345\377\337\337\347\377" + "\341\341\350\377\343\343\351\377\345\345\352\377\347\347\354\377\351" + "\351\355\377\353\353\356\377\355\355\360\377\357\357\361\377\361\361" + "\362\377\363\363\363\377\364\364\365\377\365\365\365\377\364\364\364" + "\377\363\363\364\377\363\363\363\377\361\361\362\377\360\360\361\377" + "\357\357\360\377\355\355\356\377\353\353\355\377\351\351\354\377\347" + "\347\352\377\345\345\350\377\343\343\346\377\341\341\345\377\336\336" + "\343\377\334\334\341\377\331\331\337\377\327\327\334\377\326\326\335" + "\377\340\340\346\377\345\345\353\377\341\341\347\375\342\342\351\366" + "\377\377\377\353\377\377\377\355\377\377\377\357\377\377\377\361\377" + "\377\377\363\377\377\377\365\377\377\377\366\377\377\377\370\377\377" + "\377\371\377\377\377\372\375\375\375\373\371\371\372\375\365\365\367" + "\376\361\361\364\376\356\356\362\377\353\353\357\377\345\345\353\375" + "\202\346\346\353\377\1\346\346\354\377\202\347\347\354\377\202\350\350" + "\355\377\17\351\351\355\377\16\16\16\377\2\2\2\377xxx\377\235\244\233" + "\377\310\332\305\377\342\372\335\377\344\375\337\377\331\357\325\377" + "\310\332\305\377\265\302\262\377\241\251\237\377\204\207\203\377\14\14" + "\14\377\326\326\326\377\202\360\360\362\377\2\361\361\362\377\361\361" + "\363\377\202\362\362\363\377\2\363\363\363\377\363\363\364\377\202\364" + "\364\364\377\203\365\365\365\377\17\16\16\16\377\2\2\2\377\0\220\0\377" + "B\266A\377\244\342\240\377\335\373\330\377\342\375\335\377\311\362\305" + "\377\244\342\240\377y\317v\377K\272I\377\32\233\31\377\14\14\14\377\326" + "\326\326\377\363\363\363\377\202\362\362\363\377\1\362\362\362\377\203" + "\361\361\362\377\1\361\361\361\377\203\360\360\361\377\202\357\357\360" + "\377\23\16\16\16\377\2\2\2\377\275\275\0\377\321\331A\377\336\357\240" + "\377\345\375\330\377\345\376\335\377\342\370\305\377\336\357\240\377" + "\330\345v\377\322\333I\377\301\304\31\377\14\14\14\377\326\326\326\377" + "\351\351\353\377\350\350\353\377\350\350\352\377\347\347\352\377\347" + "\347\351\377\202\346\346\351\377\204\347\347\351\377\14\347\347\351\375" + "\347\347\351\370\347\347\351\357\347\347\351\343\347\347\351\324\347" + "\347\351\301\347\347\351\252\347\347\351\220\347\347\351s\347\347\351" + "R\347\347\351.\347\347\351\10\203\0\0\0\0\24\357\357\363\377\310\310" + "\325\377\322\322\334\377\214\214\217\377\255\255\267\377\265\265\276" + "\377\277\277\307\377\324\324\335\377\200\200\205\377``b\377ffh\377\210" + "\210\213\377\226\226\231\377\227\227\232\377\230\230\233\377\354\354" + "\357\377\211\211\213\377eee\377kkk\377\221\221\221\377\203\237\237\237" + "\377'\363\363\363\377\214\214\214\377eee\377jjj\377\215\215\216\377\231" + "\231\233\377\230\230\232\377\227\227\231\377\346\346\351\377\204\204" + "\206\377aab\377eef\377\204\204\207\377\216\216\221\377\214\214\220\377" + "\212\212\216\377\322\322\330\377\317\317\326\377\314\314\323\377\312" + "\312\322\377\326\326\335\377\302\302\320\377\377\377\377\353\377\377" + "\377\355\377\377\377\357\377\377\377\361\377\377\377\363\377\377\377" + "\365\377\377\377\366\377\377\377\370\377\377\377\371\377\377\377\372" + "\375\375\375\373\371\371\372\375\365\365\367\376\362\362\365\376\356" + "\356\362\377\353\353\357\377\346\346\354\376\203\347\347\354\377\202" + "\350\350\355\377\202\351\351\355\377\21\352\352\356\377\35\35\35\377" + "\0\0\0\377\177\177\177\377\244\255\242\377\302\323\277\377\323\350\317" + "\377\327\354\322\377\321\344\315\377\305\326\301\377\265\302\263\377" + "\244\255\242\377\221\225\220\377\0\0\0\377\345\345\345\377\361\361\362" + "\377\361\361\363\377\202\362\362\363\377\1\363\363\363\377\202\363\363" + "\364\377\2\364\364\364\377\364\364\365\377\204\365\365\365\377\20\35" + "\35\35\377\0\0\0\377\0\231\0\377R\275P\377\226\334\223\377\274\354\270" + "\377\304\360\300\377\266\352\262\377\233\336\230\377y\317v\377R\275P" + "\377(\253'\377\0\0\0\377\345\345\345\377\362\362\363\377\362\362\362" + "\377\203\361\361\362\377\1\361\361\361\377\203\360\360\361\377\203\357" + "\357\360\377\20\356\356\357\377\35\35\35\377\0\0\0\377\311\311\0\377" + "\323\334P\377\334\354\223\377\341\365\270\377\342\367\300\377\340\364" + "\262\377\335\355\230\377\330\345v\377\323\334P\377\316\322'\377\0\0\0" + "\377\345\345\345\377\350\350\352\377\202\347\347\352\377\202\346\346" + "\351\377\202\345\345\350\377\204\347\347\351\377\14\347\347\351\375\347" + "\347\351\370\347\347\351\357\347\347\351\343\347\347\351\324\347\347" + "\351\301\347\347\351\252\347\347\351\220\347\347\351s\347\347\351R\347" + "\347\351.\347\347\351\10\203\0\0\0\0>\363\363\366\377\331\331\341\377" + "\342\342\351\377\222\222\224\377\260\260\270\377\270\270\300\377\300" + "\300\310\377\310\310\317\377]]_\377\256\256\260\377\276\276\300\377u" + "uw\377\254\254\257\377\256\256\261\377\257\257\261\377\357\357\361\377" + "eee\377\263\263\263\377\302\302\303\377yyy\377\264\264\264\377\263\263" + "\264\377\263\263\263\377\361\361\362\377dde\377\261\261\261\377\300\300" + "\300\377vvw\377\253\253\255\377\252\252\254\377\250\250\253\377\342\342" + "\346\377``a\377\254\254\255\377\273\273\274\377qqr\377\235\235\242\377" + "\233\233\240\377\231\231\236\377\314\314\324\377\311\311\321\377\306" + "\306\317\377\303\303\314\377\277\277\311\377\224\224\236\377\377\377" + "\377\353\377\377\377\355\377\377\377\357\377\377\377\361\377\377\377" + "\363\377\377\377\365\377\377\377\366\377\377\377\370\377\377\377\371" + "\377\377\377\372\375\375\375\373\371\371\372\375\365\365\370\376\362" + "\362\365\376\357\357\363\377\354\354\360\377\347\347\354\376\202\350" + "\350\354\377\202\350\350\355\377\2\351\351\355\377\351\351\356\377\202" + "\352\352\356\377\17---\377\0\0\0\377\177\177\177\377\240\250\236\377" + "\267\305\264\377\304\325\301\377\310\332\305\377\305\326\302\377\274" + "\313\271\377\260\274\256\377\241\252\240\377\221\225\220\377\0\0\0\377" + "\365\365\365\377\361\361\363\377\202\362\362\363\377\202\363\363\364" + "\377\2\364\364\364\377\364\364\365\377\206\365\365\365\377\17---\377" + "\0\0\0\377\0\231\0\377I\271G\377}\320z\377\233\336\227\377\244\342\240" + "\377\234\336\231\377\211\326\206\377n\312k\377M\273K\377(\253'\377\0" + "\0\0\377\365\365\365\377\362\362\362\377\202\361\361\362\377\1\361\361" + "\361\377\203\360\360\361\377\203\357\357\360\377\1\356\356\360\377\202" + "\356\356\357\377\22---\377\0\0\0\377\311\311\0\377\322\332G\377\331\346" + "z\377\334\355\227\377\336\357\240\377\335\356\231\377\332\351\206\377" + "\327\343k\377\323\333K\377\316\322'\377\0\0\0\377\365\365\365\377\347" + "\347\352\377\347\347\351\377\346\346\351\377\346\346\350\377\202\345" + "\345\350\377\205\344\344\347\377\14\344\344\347\375\344\344\347\370\344" + "\344\347\357\344\344\347\343\344\344\347\324\344\344\347\301\344\344" + "\347\252\344\344\347\220\344\344\347s\344\344\347R\344\344\347.\344\344" + "\347\10\203\0\0\0\0>\367\367\371\377\352\352\356\377\363\363\366\377" + "\230\230\230\377\263\263\272\377\273\273\302\377\303\303\312\377\313" + "\313\321\377__a\377\235\235\236\377\254\254\255\377xxy\377\304\303\306" + "\377\237\233\235\377\307\307\310\377\363\363\364\377kkk\377\244\244\244" + "\377\260\260\260\377{{{\377\310\310\311\377\241\235\236\377\307\306\307" + "\377\356\356\357\377hhh\377\241\241\242\377\254\254\255\377vvw\377\275" + "\275\300\377\227\224\226\377\272\271\275\377\336\336\342\377bbc\377\233" + "\233\235\377\247\247\250\377oor\377\254\254\262\377\212\206\213\377\250" + "\247\256\377\307\307\320\377\304\304\315\377\300\300\312\377\275\275" + "\307\377\271\271\304\377yy\200\377\377\377\377\353\377\377\377\355\377" + "\377\377\357\377\377\377\361\377\377\377\363\377\377\377\365\377\377" + "\377\366\377\377\377\370\377\377\377\371\377\377\377\372\375\375\375" + "\373\371\371\372\375\366\366\370\376\363\363\365\376\357\357\363\377" + "\354\354\360\377\350\350\355\376\202\350\350\355\377\2\351\351\355\377" + "\351\351\356\377\202\352\352\356\377\21\353\353\356\377\353\353\357\377" + "<<<\377\4\4\4\377xxx\377\227\235\226\377\252\264\250\377\265\302\263" + "\377\272\310\267\377\270\306\265\377\262\276\257\377\250\262\246\377" + "\234\243\232\377\205\210\205\377\16\16\16\377\377\377\377\377\362\362" + "\363\377\202\363\363\364\377\202\364\364\364\377\207\365\365\365\377" + "\17\364\364\365\377<<<\377\4\4\4\377\0\220\0\3775\2614\377`\303^\377" + "y\317v\377\203\323\200\377\177\321|\377q\313o\377\\\302Z\377@\265\77" + "\377\36\235\35\377\16\16\16\377\377\377\377\377\202\361\361\362\377\203" + "\360\360\361\377\203\357\357\360\377\1\356\356\360\377\202\356\356\357" + "\377\20\355\355\357\377\355\355\356\377<<<\377\4\4\4\377\275\275\0\377" + "\320\3254\377\325\337^\377\330\345v\377\331\350\200\377\331\347|\377" + "\327\344o\377\325\336Z\377\321\330\77\377\301\304\35\377\16\16\16\377" + "\377\377\377\377\202\346\346\351\377\202\345\345\350\377\202\344\344" + "\347\377\1\343\343\346\377\204\344\344\347\377\14\344\344\347\375\344" + "\344\347\370\344\344\347\357\344\344\347\343\344\344\347\324\344\344" + "\347\301\344\344\347\252\344\344\347\220\344\344\347s\344\344\347R\344" + "\344\347.\344\344\347\10\203\0\0\0\0@\373\373\374\377\372\372\373\377" + "\375\375\375\377\226\226\227\377\266\266\274\377\276\276\304\377\306" + "\306\313\377\316\316\323\377\273\273\277\377\237\237\241\377\250\250" + "\252\377\322\322\324\377cII\377\246II\377wJJ\377\365\365\365\377\325" + "\325\325\377\254\254\254\377\256\256\256\377\324\324\324\377cHI\377\245" + "HH\377uHH\377\353\353\355\377\313\313\315\377\243\243\245\377\245\245" + "\247\377\307\307\312\377^DE\377\240CE\377pBD\377\331\331\337\377\273" + "\273\300\377\227\227\233\377\230\230\234\377\265\265\273\377X=@\377\231" + "<\77\377i;>\377\301\301\313\377\276\276\310\377\272\272\305\377\267\267" + "\302\377\263\263\277\377{{\202\377\377\377\377\353\377\377\377\355\377" + "\377\377\357\377\377\377\361\377\377\377\363\377\377\377\365\377\377" + "\377\366\377\377\377\370\377\377\377\371\377\377\377\372\375\375\375" + "\373\371\371\373\375\366\366\370\376\363\363\365\376\360\360\363\377" + "\355\355\361\377\351\351\355\376\351\351\356\377\351\351\355\377\202" + "\352\352\356\377\2\353\353\356\377\353\353\357\377\202\354\354\357\377" + "\17}}~\377\"\"\"\377@@@\377\214\217\213\377\234\243\233\377\246\260\244" + "\377\253\265\250\377\252\265\250\377\246\257\244\377\236\245\234\377" + "\224\231\223\377DED\377___\377\373\373\373\377\363\363\364\377\202\364" + "\364\364\377\1\364\364\365\377\206\365\365\365\377\1\364\364\365\377" + "\202\364\364\364\377\17\177\177\177\377\"\"\"\377\0M\0\377\34\245\33" + "\377A\266\77\377W\300U\377a\304_\377`\304^\377V\277T\377E\270D\377.\255" + "-\377\11Q\11\377___\377\373\373\373\377\361\361\361\377\203\360\360\361" + "\377\202\357\357\360\377\1\356\356\360\377\202\356\356\357\377\1\355" + "\355\357\377\202\355\355\356\377\17\354\354\356\377}}}\377\"\"\"\377" + "ee\0\377\315\320\33\377\321\330\77\377\324\336U\377\325\340_\377\325" + "\340^\377\324\335T\377\322\331D\377\317\324-\377fg\11\377___\377\367" + "\367\370\377\202\345\345\350\377\202\344\344\347\377\3\343\343\347\377" + "\343\343\346\377\342\342\346\377\204\344\344\347\377\14\344\344\347\375" + "\344\344\347\370\344\344\347\357\344\344\347\343\344\344\347\324\344" + "\344\347\301\344\344\347\252\344\344\347\220\344\344\347s\344\344\347" + "R\344\344\347.\344\344\347\10\203\0\0\0\0>\377\377\377\377\372\372\373" + "\377\362\362\365\377\220\220\223\377\271\271\276\377\301\301\305\377" + "\311\311\315\377\321\321\325\377\332\332\335\377\343\343\345\377\354" + "\354\355\377\362\362\363\377tTU\377\264JJ\377\212UU\377\364\364\364\377" + "\363\363\363\377\362\362\362\377\360\360\361\377\357\357\360\377rRR\377" + "\262GH\377\207QR\377\350\350\352\377\346\346\351\377\344\344\347\377" + "\342\342\345\377\337\337\343\377lLN\377\254BC\377\200JL\377\325\325\333" + "\377\322\322\330\377\317\317\326\377\314\314\323\377\311\311\321\377" + "dDH\377\245;>\377xBE\377\273\273\306\377\270\270\303\377\264\264\300" + "\377\260\260\275\377\242\242\256\377}}\204\377\377\377\377\353\377\377" + "\377\355\377\377\377\357\377\377\377\361\377\377\377\363\377\377\377" + "\365\377\377\377\366\377\377\377\370\377\377\377\371\377\377\377\372" + "\375\375\376\373\371\371\373\375\366\366\370\376\363\363\366\376\361" + "\361\363\377\356\356\361\377\352\352\356\376\203\352\352\356\377\202" + "\353\353\357\377\202\354\354\357\377\21\355\355\360\377\310\310\313\377" + "]]]\377\7\7\7\377hhh\377\216\221\215\377\227\235\226\377\234\243\232" + "\377\234\243\233\377\231\237\230\377\223\227\222\377qrp\377\17\17\17" + "\377\337\337\337\377\366\366\367\377\364\364\364\377\364\364\365\377" + "\207\365\365\365\377\1\364\364\365\377\203\364\364\364\377\16\316\316" + "\316\377]]]\377\7\7\7\377\0}\0\377!\250\40\3776\2614\377@\265\77\377" + "A\266@\377:\2639\377,\254+\377\24\206\24\377\17\17\17\377\337\337\337" + "\377\364\364\365\377\202\360\360\361\377\203\357\357\360\377\202\356" + "\356\357\377\202\355\355\357\377\1\355\355\356\377\202\354\354\356\377" + "\26\353\353\355\377\307\307\310\377]]]\377\7\7\7\377\244\244\0\377\315" + "\321\40\377\320\3264\377\321\330\77\377\321\330@\377\320\3279\377\317" + "\323+\377\246\251\24\377\17\17\17\377\337\337\337\377\354\354\356\377" + "\344\344\350\377\344\344\347\377\343\343\347\377\343\343\346\377\342" + "\342\346\377\342\342\345\377\341\341\345\377\204\342\342\346\377\14\342" + "\342\346\375\342\342\346\370\342\342\346\357\342\342\346\343\342\342" + "\346\324\342\342\346\301\342\342\346\252\342\342\346\220\342\342\346" + "s\342\342\346R\342\342\346.\342\342\346\10\203\0\0\0\0>\374\374\375\377" + "\353\353\360\377\340\340\347\377\210\210\214\377\274\274\300\377\304" + "\304\307\377\314\314\317\377\325\325\327\377\335\335\337\377\346\346" + "\347\377\357\357\360\377\365\365\365\377\340\337\337\377\321\311\312" + "\377\340\336\336\377\362\362\363\377\361\361\362\377\360\360\361\377" + "\356\356\357\377\354\354\356\377\327\326\330\377\307\300\302\377\324" + "\322\325\377\345\345\350\377\342\342\346\377\340\340\344\377\335\335" + "\342\377\333\333\340\377\306\305\312\377\267\260\265\377\302\300\306" + "\377\320\320\327\377\315\315\324\377\312\312\322\377\306\306\317\377" + "\303\303\314\377\257\257\270\377\242\233\244\377\252\250\263\377\265" + "\265\301\377\261\261\276\377\240\240\252\377\216\216\225\377\207\207" + "\214\377\245\245\251\374\377\377\377\353\377\377\377\355\377\377\377" + "\357\377\377\377\361\377\377\377\363\377\377\377\365\377\377\377\366" + "\377\377\377\370\377\377\377\371\377\377\377\372\375\375\376\373\372" + "\372\373\375\367\367\370\376\364\364\366\376\361\361\364\377\357\357" + "\362\377\352\352\356\376\203\353\353\357\377\202\354\354\357\377\202" + "\355\355\360\377\17\356\356\360\377\356\356\361\377\255\255\256\377o" + "oo\377\11\11\11\377@@@\377\200\202\177\377\215\220\214\377\216\221\215" + "\377\203\206\203\377CDC\377\17\17\17\377\317\317\317\377\372\372\372" + "\377\364\364\365\377\207\365\365\365\377\1\364\364\365\377\205\364\364" + "\364\377\16\363\363\364\377\257\257\257\377ooo\377\11\11\11\377\0M\0" + "\377\23\230\22\377\36\246\36\377!\250\40\377\32\233\31\377\11P\10\377" + "\17\17\17\377\317\317\317\377\370\370\371\377\360\360\361\377\203\357" + "\357\360\377\1\356\356\360\377\202\356\356\357\377\2\355\355\357\377" + "\355\355\356\377\202\354\354\356\377\1\354\354\355\377\202\353\353\355" + "\377\15\352\352\354\377\253\253\254\377ooo\377\11\11\11\377ee\0\377\300" + "\302\22\377\315\320\36\377\315\321\40\377\300\304\31\377fg\10\377\17" + "\17\17\377\317\317\317\377\364\364\365\377\202\344\344\347\377\1\343" + "\343\346\377\202\342\342\346\377\202\341\341\345\377\1\340\340\344\377" + "\204\342\342\346\377\14\342\342\346\375\342\342\346\370\342\342\346\357" + "\342\342\346\343\342\342\346\324\342\342\346\301\342\342\346\252\342" + "\342\346\220\342\342\346s\342\342\346R\342\342\346.\342\342\346\10\203" + "\0\0\0\0\13\370\370\372\377\210\210\214\377\201\201\207\377~~\204\377" + "\212\212\220\377\215\215\223\377\220\220\226\377\223\223\230\377\226" + "\226\233\377\232\232\236\377\235\235\241\377\202\237\237\243\377\3\240" + "\240\244\377\241\241\245\377\242\242\245\377\202\243\243\246\377\202" + "\244\244\247\377\2\245\245\247\377\245\245\250\377\202\246\246\250\377" + "\202\247\247\251\377\203\250\250\251\377!\247\247\251\377\246\246\250" + "\377\244\244\247\377\243\243\246\377\241\241\244\377\240\240\243\377" + "\236\236\241\377\234\234\240\377\232\232\236\377\230\230\235\377\225" + "\225\233\377\223\223\230\377\252\252\254\372\315\315\317\362\377\377" + "\377\346\377\377\377\350\377\377\377\353\377\377\377\355\377\377\377" + "\357\377\377\377\361\377\377\377\363\377\377\377\365\377\377\377\366" + "\377\377\377\370\377\377\377\371\377\377\377\372\375\375\376\373\372" + "\372\373\375\367\367\371\376\364\364\366\376\361\361\364\377\357\357" + "\362\377\353\353\357\376\203\354\354\357\377\203\355\355\360\377\202" + "\356\356\361\377\202\357\357\361\377\4\276\276\277\377\223\223\223\377" + "DDD\377\14\14\14\377\202\0\0\0\377\4\16\16\16\377___\377\337\337\337" + "\377\372\372\372\377\207\365\365\365\377\1\364\364\365\377\205\364\364" + "\364\377\202\363\363\364\377\202\363\363\363\377\4\277\277\300\377\223" + "\223\223\377DDD\377\14\14\14\377\202\0\0\0\377\5\16\16\16\377___\377" + "\337\337\337\377\370\370\371\377\357\357\361\377\202\357\357\360\377" + "\1\356\356\360\377\202\356\356\357\377\1\355\355\357\377\202\355\355" + "\356\377\2\354\354\356\377\354\354\355\377\202\353\353\355\377\203\352" + "\352\354\377\5\351\351\353\377\273\273\274\377\223\223\223\377DDD\377" + "\14\14\14\377\202\0\0\0\377\5\16\16\16\377___\377\337\337\337\377\363" + "\363\365\377\344\344\347\377\202\343\343\346\377\3\342\342\346\377\342" + "\342\345\377\341\341\345\377\202\340\340\344\377\1\337\337\343\377\204" + "\342\342\346\377\14\342\342\346\375\342\342\346\370\342\342\346\357\342" + "\342\346\343\342\342\346\324\342\342\346\301\342\342\346\252\342\342" + "\346\220\342\342\346s\342\342\346R\342\342\346.\342\342\346\10\206\0" + "\0\0\0\1\377\377\377\4\202\377\377\377\6""8\377\377\377\14\377\377\377" + "\22\377\377\377\24\377\377\377\31\377\377\377%\377\377\377*\377\377\377" + ",\377\377\377\77\377\377\377F\377\377\377K\377\377\377Z\377\377\377h" + "\377\377\377n\377\377\377t\377\377\377z\377\377\377\201\377\377\377\207" + "\377\377\377\214\377\377\377\223\377\377\377\230\377\377\377\236\377" + "\377\377\243\377\377\377\251\377\377\377\256\377\377\377\263\377\377" + "\377\271\377\377\377\275\377\377\377\302\377\377\377\306\377\377\377" + "\312\377\377\377\317\377\377\377\322\377\377\377\326\377\377\377\331" + "\377\377\377\335\377\377\377\340\377\377\377\343\377\377\377\346\377" + "\377\377\350\377\377\377\353\377\377\377\355\377\377\377\357\377\377" + "\377\361\377\377\377\363\377\377\377\365\377\377\377\366\377\377\377" + "\370\377\377\377\371\377\377\377\372\375\375\376\373\372\372\373\375" + "\367\367\371\376\365\365\366\376\362\362\365\377\360\360\363\377\354" + "\354\357\376\202\354\354\360\377\202\355\355\360\377\2\356\356\360\377" + "\356\356\361\377\202\357\357\361\377\202\360\360\362\377\11\361\361\362" + "\377\342\342\344\377\324\324\325\377\326\326\326\377\345\345\345\377" + "\365\365\365\377\377\377\377\377\374\374\374\377\367\367\370\377\207" + "\365\365\365\377\205\364\364\364\377\202\363\363\364\377\203\363\363" + "\363\377\202\362\362\363\377\10\343\343\343\377\324\324\324\377\326\326" + "\326\377\345\345\345\377\365\365\365\377\377\377\377\377\372\372\373" + "\377\364\364\365\377\203\357\357\360\377\202\356\356\357\377\202\355" + "\355\357\377\1\355\355\356\377\202\354\354\356\377\202\353\353\355\377" + "\1\353\353\354\377\202\352\352\354\377\202\351\351\353\377\21\350\350" + "\353\377\350\350\352\377\333\333\335\377\321\321\322\377\326\326\326" + "\377\345\345\345\377\365\365\365\377\377\377\377\377\367\367\370\377" + "\353\353\355\377\343\343\347\377\343\343\346\377\342\342\346\377\342" + "\342\345\377\341\341\345\377\341\341\344\377\340\340\344\377\202\337" + "\337\343\377\1\336\336\343\377\204\337\337\343\377\14\337\337\343\375" + "\337\337\343\370\337\337\343\357\337\337\343\343\337\337\343\324\337" + "\337\343\301\337\337\343\252\337\337\343\220\337\337\343s\337\337\343" + "R\337\337\343.\337\337\343\10\226\0\0\0\0+\377\377\377\10\377\377\377" + "\33\377\377\377\35\377\377\377\37\377\377\377\77\377\377\377C\377\377" + "\377E\377\377\377_\377\377\377k\377\377\377p\377\377\377\201\377\377" + "\377\230\377\377\377\235\377\377\377\244\377\377\377\302\377\377\377" + "\306\377\377\377\312\377\377\377\317\377\377\377\322\377\377\377\326" + "\377\377\377\331\377\377\377\335\377\377\377\340\377\377\377\343\377" + "\377\377\346\377\377\377\350\377\377\377\353\377\377\377\355\377\377" + "\377\357\377\377\377\361\377\377\377\363\377\377\377\365\377\377\377" + "\366\377\377\377\370\377\377\377\371\377\377\377\372\375\375\376\373" + "\372\372\373\375\370\370\371\376\365\365\367\376\363\363\365\377\360" + "\360\363\377\355\355\360\376\202\355\355\360\377\2\356\356\360\377\356" + "\356\361\377\202\357\357\361\377\202\360\360\362\377\202\361\361\362" + "\377\1\361\361\363\377\202\362\362\363\377\202\363\363\364\377\2\364" + "\364\364\377\364\364\365\377\207\365\365\365\377\1\364\364\365\377\205" + "\364\364\364\377\1\363\363\364\377\203\363\363\363\377\202\362\362\363" + "\377\202\362\362\362\377\202\361\361\362\377\1\361\361\361\377\203\360" + "\360\361\377\203\357\357\360\377\1\356\356\360\377\202\356\356\357\377" + "\2\355\355\357\377\355\355\356\377\202\354\354\356\377\1\354\354\355" + "\377\202\353\353\355\377\202\352\352\354\377\4\351\351\354\377\351\351" + "\353\377\350\350\353\377\350\350\352\377\202\347\347\352\377\2\347\347" + "\351\377\346\346\351\377\202\345\345\350\377\6\344\344\350\377\344\344" + "\347\377\343\343\347\377\343\343\346\377\342\342\346\377\342\342\345" + "\377\202\341\341\345\377\202\340\340\344\377\4\337\337\343\377\336\336" + "\343\377\336\336\342\377\335\335\342\377\204\337\337\343\377\14\337\337" + "\343\375\337\337\343\370\337\337\343\357\337\337\343\343\337\337\343" + "\324\337\337\343\301\337\337\343\252\337\337\343\220\337\337\343s\337" + "\337\343R\337\337\343.\337\337\343\10\247\0\0\0\0\33\377\377\377.\377" + "\377\3778\377\377\377:\377\377\377W\377\377\377q\377\377\377s\377\377" + "\377\201\377\377\377\247\377\377\377\251\377\377\377\255\377\377\377" + "\322\377\377\377\327\377\377\377\331\377\377\377\354\377\377\377\365" + "\377\377\377\366\377\377\377\370\377\377\377\371\377\377\377\372\375" + "\375\376\373\372\372\373\375\370\370\371\376\365\365\367\376\363\363" + "\365\377\361\361\363\377\357\357\360\376\356\356\361\377\202\357\357" + "\361\377\203\360\360\362\377\2\361\361\362\377\361\361\363\377\202\362" + "\362\363\377\202\363\363\364\377\2\364\364\364\377\364\364\365\377\207" + "\365\365\365\377\1\364\364\365\377\205\364\364\364\377\1\363\363\364" + "\377\203\363\363\363\377\202\362\362\363\377\202\362\362\362\377\203" + "\361\361\362\377\203\360\360\361\377\203\357\357\360\377\1\356\356\360" + "\377\202\356\356\357\377\2\355\355\357\377\355\355\356\377\202\354\354" + "\356\377\1\354\354\355\377\202\353\353\355\377\202\352\352\354\377\1" + "\351\351\354\377\202\351\351\353\377\4\350\350\353\377\350\350\352\377" + "\347\347\352\377\347\347\351\377\202\346\346\351\377\202\345\345\350" + "\377\202\344\344\347\377\202\343\343\346\377\1\342\342\346\377\202\341" + "\341\345\377\202\340\340\344\377\202\337\337\343\377\5\336\336\342\377" + "\335\335\342\377\335\335\341\377\334\334\341\377\334\334\340\377\204" + "\337\337\343\377\14\337\337\343\375\337\337\343\370\337\337\343\357\337" + "\337\343\343\337\337\343\324\337\337\343\301\337\337\343\252\337\337" + "\343\220\337\337\343s\337\337\343R\337\337\343.\337\337\343\10\267\0" + "\0\0\0\12\377\377\377\35\377\377\377O\377\377\377P\327\327\331m\303\303" + "\307\275\236\236\243\276\213\213\222\322\204\204\213\350ww\200\362ww" + "\177\375\202ww\177\377\202xx\200\377\203yy\200\377\202zz\201\377\1zz" + "\202\377\202{{\202\377\1||\202\377\202||\203\377\203}}\203\377\3}}\204" + "\377~~\204\377~~\205\377\203\177\177\205\377\203\200\200\206\377\202" + "\201\201\206\377\202\202\202\207\377\1\202\202\210\377\203\203\203\210" + "\377\2\203\203\211\377\204\204\211\377\203\205\205\211\377\2\205\205" + "\212\377\206\206\212\377\202\206\206\213\377\202\207\207\213\377\203" + "\210\210\214\377\202\211\211\214\377\202\211\211\215\377\1\212\212\216" + "\377\203\213\213\216\377\1\213\213\217\377\203\214\214\217\377\3\215" + "\215\217\377\215\215\220\377\216\216\220\377\202\216\216\221\377\202" + "\217\217\221\377\1\217\217\222\377\202\220\220\222\377\202\221\221\222" + "\377\202\221\221\223\377\203\222\222\224\377\2\223\223\224\377\223\223" + "\225\377\203\224\224\225\377\2\226\226\227\377\225\225\227\377\202\225" + "\225\226\377\14\225\225\226\375\224\224\225\370\224\224\225\357\224\224" + "\225\343\224\224\225\324\223\223\224\301\222\222\224\252\222\222\224" + "\220\222\222\224s\222\222\223R\221\221\223.\221\221\223\10\377\0\0\0" + "\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\377\0" + "\0\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\320\0\0\0\0", +}; + +static const GdkPixdata sdi_shared_sync_bnc_pixdata = { + 0x47646b50, /* Pixbuf magic: 'GdkP' */ + 24 + 20657, /* header length + pixel_data length */ + 0x2010002, /* pixdata_type */ + 656, /* rowstride */ + 164, /* width */ + 60, /* height */ + sdi_shared_sync_bnc_pixdata_pixel_data /* pixel_data: */ +}; diff --git a/src/image_data/vcsc_pixdata.h b/src/image_data/vcs_pixdata.h index a4ff5ea..5bd5348 100644 --- a/src/image_data/vcsc_pixdata.h +++ b/src/image_data/vcs_pixdata.h @@ -1,6 +1,6 @@ /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ -static guint8 vcsc_pixdata_pixel_data[] = { +static guint8 vcs_pixdata_pixel_data[] = { 0x87,0xff,0xff,0xbe,0x00,0x8a,0x00,0x00,0x00,0x00,0x5a,0xff,0xff,0xbe,0x01, 0xff,0xff,0xbe,0x02,0xff,0xff,0xbe,0x03,0xff,0xff,0xbe,0x05,0xff,0xff,0xbe, 0x09,0xff,0xff,0xbe,0x0e,0xff,0xff,0xbe,0x14,0xff,0xff,0xbe,0x1c,0xff,0xff, @@ -1695,12 +1695,12 @@ static guint8 vcsc_pixdata_pixel_data[] = { 0xbe,0x00 }; -static const GdkPixdata vcsc_pixdata = { +static const GdkPixdata vcs_pixdata = { 0x47646b50, /* Pixbuf magic: 'GdkP' */ 24 + 25367, /* header length + pixel_data length */ 0x2010002, /* pixdata_type */ 452, /* rowstride */ 113, /* width */ 60, /* height */ - vcsc_pixdata_pixel_data /* pixel_data */ + vcs_pixdata_pixel_data /* pixel_data */ }; diff --git a/src/libXNVCtrl/Imakefile b/src/libXNVCtrl/Imakefile deleted file mode 100644 index e15e7b5..0000000 --- a/src/libXNVCtrl/Imakefile +++ /dev/null @@ -1,26 +0,0 @@ -XCOMM Imakefile for libXNVCtrl.a - -#define DoNormalLib NormalLibXrandr -#define LibName XNVCtrl -#define IncSubdir X11 -#define IncSubSubdir extensions - -#include <Threads.tmpl> - -#if Malloc0ReturnsNull -ALLOC_DEFINES = -DMALLOC_0_RETURNS_NULL -#endif - - - DEFINES = $(ALLOC_DEFINES) - INCLUDES = -I$(XLIBSRC) -I$(EXTINCSRC) - SRCS = NVCtrl.c - OBJS = NVCtrl.o - LINTLIBS = $(LINTXLIB) - -HEADERS = NVCtrlLib.h NVCtrl.h - -#include <Library.tmpl> - -DependTarget() - diff --git a/src/libXNVCtrl/Makefile b/src/libXNVCtrl/Makefile new file mode 100644 index 0000000..49ea8b2 --- /dev/null +++ b/src/libXNVCtrl/Makefile @@ -0,0 +1,11 @@ +RANLIB ?= ranlib + +libXNVCtrl.a : libXNVCtrl.a(NVCtrl.o) + $(RANLIB) $@ + +NVCtrl.o : NVCtrl.h nv_control.h NVCtrlLib.h +.INTERMEDIATE: NVCtrl.o + +clean :: + rm -f libXNVCtrl.a *.o +.PHONY: clean diff --git a/src/libXNVCtrl/Makefile.inc b/src/libXNVCtrl/Makefile.inc index d3ecbeb..402fe1d 100644 --- a/src/libXNVCtrl/Makefile.inc +++ b/src/libXNVCtrl/Makefile.inc @@ -26,14 +26,13 @@ # EXTRA_DIST += \ + Makefile \ Makefile.inc \ NVCtrl.h \ NVCtrlLib.h \ libXNVCtrl.a \ NVCtrl.c \ - nv_control.h \ - README.LIBXNVCTRL \ - Imakefile + nv_control.h dist_list:: @ echo $(SRC) $(EXTRA_DIST) diff --git a/src/libXNVCtrl/NVCtrl.c b/src/libXNVCtrl/NVCtrl.c index cbb7be6..1697380 100644 --- a/src/libXNVCtrl/NVCtrl.c +++ b/src/libXNVCtrl/NVCtrl.c @@ -1283,6 +1283,8 @@ static Bool wire_to_event (Display *dpy, XEvent *host, xEvent *wire) xnvctrlEvent *event; XNVCtrlEventTarget *reTarget; xnvctrlEventTarget *eventTarget; + XNVCtrlEventTargetAvailability *reTargetAvailability; + XNVCtrlStringEventTarget *reTargetString; XNVCTRLCheckExtension (dpy, info, False); @@ -1291,7 +1293,7 @@ static Bool wire_to_event (Display *dpy, XEvent *host, xEvent *wire) re = (XNVCtrlEvent *) host; event = (xnvctrlEvent *) wire; re->attribute_changed.type = event->u.u.type & 0x7F; - re->attribute_changed.serial = + re->attribute_changed.serial = _XSetLastRequestRead(dpy, (xGenericReply*) event); re->attribute_changed.send_event = ((event->u.u.type & 0x80) != 0); re->attribute_changed.display = dpy; @@ -1306,7 +1308,7 @@ static Bool wire_to_event (Display *dpy, XEvent *host, xEvent *wire) reTarget = (XNVCtrlEventTarget *) host; eventTarget = (xnvctrlEventTarget *) wire; reTarget->attribute_changed.type = eventTarget->u.u.type & 0x7F; - reTarget->attribute_changed.serial = + reTarget->attribute_changed.serial = _XSetLastRequestRead(dpy, (xGenericReply*) eventTarget); reTarget->attribute_changed.send_event = ((eventTarget->u.u.type & 0x80) != 0); @@ -1324,6 +1326,52 @@ static Bool wire_to_event (Display *dpy, XEvent *host, xEvent *wire) reTarget->attribute_changed.value = eventTarget->u.attribute_changed.value; break; + case TARGET_ATTRIBUTE_AVAILABILITY_CHANGED_EVENT: + reTargetAvailability = (XNVCtrlEventTargetAvailability *) host; + eventTarget = (xnvctrlEventTarget *) wire; + reTargetAvailability->attribute_changed.type = + eventTarget->u.u.type & 0x7F; + reTargetAvailability->attribute_changed.serial = + _XSetLastRequestRead(dpy, (xGenericReply*) eventTarget); + reTargetAvailability->attribute_changed.send_event = + ((eventTarget->u.u.type & 0x80) != 0); + reTargetAvailability->attribute_changed.display = dpy; + reTargetAvailability->attribute_changed.time = + eventTarget->u.availability_changed.time; + reTargetAvailability->attribute_changed.target_type = + eventTarget->u.availability_changed.target_type; + reTargetAvailability->attribute_changed.target_id = + eventTarget->u.availability_changed.target_id; + reTargetAvailability->attribute_changed.display_mask = + eventTarget->u.availability_changed.display_mask; + reTargetAvailability->attribute_changed.attribute = + eventTarget->u.availability_changed.attribute; + reTargetAvailability->attribute_changed.availability = + eventTarget->u.availability_changed.availability; + reTargetAvailability->attribute_changed.value = + eventTarget->u.availability_changed.value; + break; + case TARGET_STRING_ATTRIBUTE_CHANGED_EVENT: + reTargetString = (XNVCtrlStringEventTarget *) host; + eventTarget = (xnvctrlEventTarget *) wire; + reTargetString->attribute_changed.type = eventTarget->u.u.type & 0x7F; + reTargetString->attribute_changed.serial = + _XSetLastRequestRead(dpy, (xGenericReply*) eventTarget); + reTargetString->attribute_changed.send_event = + ((eventTarget->u.u.type & 0x80) != 0); + reTargetString->attribute_changed.display = dpy; + reTargetString->attribute_changed.time = + eventTarget->u.attribute_changed.time; + reTargetString->attribute_changed.target_type = + eventTarget->u.attribute_changed.target_type; + reTargetString->attribute_changed.target_id = + eventTarget->u.attribute_changed.target_id; + reTargetString->attribute_changed.display_mask = + eventTarget->u.attribute_changed.display_mask; + reTargetString->attribute_changed.attribute = + eventTarget->u.attribute_changed.attribute; + break; + default: return False; } diff --git a/src/libXNVCtrl/NVCtrl.h b/src/libXNVCtrl/NVCtrl.h index bd031a3..96e073d 100644 --- a/src/libXNVCtrl/NVCtrl.h +++ b/src/libXNVCtrl/NVCtrl.h @@ -18,7 +18,7 @@ #define NV_CTRL_TARGET_TYPE_X_SCREEN 0 #define NV_CTRL_TARGET_TYPE_GPU 1 #define NV_CTRL_TARGET_TYPE_FRAMELOCK 2 -#define NV_CTRL_TARGET_TYPE_VCSC 3 /* Visual Computing System Controller */ +#define NV_CTRL_TARGET_TYPE_VCSC 3 /* Visual Computing System */ /**************************************************************************/ @@ -586,6 +586,9 @@ * conjunction with software such as the Valgrind memory debugger. * This setting is only applied to OpenGL clients that are started * after this setting is applied. + * + * USAGE NOTE: This attribute is deprecated. CPU compatibility is now + * checked each time during initialization. */ #define NV_CTRL_FORCE_GENERIC_CPU 37 /* RW-X */ @@ -944,7 +947,8 @@ #define NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT 70 /* RW- */ #define NV_CTRL_GVO_VIDEO_FORMAT_NONE 0 -#define NV_CTRL_GVO_VIDEO_FORMAT_480I_59_94_SMPTE259_NTSC 1 +#define NV_CTRL_GVO_VIDEO_FORMAT_480I_59_94_SMPTE259_NTSC 1 //deprecated +#define NV_CTRL_GVO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC 1 #define NV_CTRL_GVO_VIDEO_FORMAT_576I_50_00_SMPTE259_PAL 2 #define NV_CTRL_GVO_VIDEO_FORMAT_720P_59_94_SMPTE296 3 #define NV_CTRL_GVO_VIDEO_FORMAT_720P_60_00_SMPTE296 4 @@ -1186,7 +1190,7 @@ * * XNVCTRLQueryAttribute (dpy, * screen, - * NV_CTRL_GVO_VIDEO_FORMAT_480I_59_94_SMPTE259_NTSC, + * NV_CTRL_GVO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC, * NV_CTRL_GVO_VIDEO_FORMAT_WIDTH, * &value); * @@ -2696,12 +2700,22 @@ * COMPOSITE_TERMINATION - whether the 75 ohm termination of the * SDI composite input signal can be programmed through the * NV_CTRL_GVO_COMPOSITE_TERMINATION attribute. + * + * SHARED_SYNC_BNC - whether the SDI device has a single BNC + * connector used for both (SDI & Composite) incoming signals. + * + * MULTIRATE_SYNC - whether the SDI device supports synchronization + * of input and output video modes that match in being odd or even + * modes (ie, AA.00 Hz modes can be synched to other BB.00 Hz modes and + * AA.XX Hz can match to BB.YY Hz where .XX and .YY are not .00) */ #define NV_CTRL_GVO_CAPABILITIES 229 /* R-- */ -#define NV_CTRL_GVO_CAPABILITIES_APPLY_CSC_IMMEDIATELY 0x1 -#define NV_CTRL_GVO_CAPABILITIES_APPLY_CSC_TO_X_SCREEN 0x2 -#define NV_CTRL_GVO_CAPABILITIES_COMPOSITE_TERMINATION 0x4 +#define NV_CTRL_GVO_CAPABILITIES_APPLY_CSC_IMMEDIATELY 0x00000001 +#define NV_CTRL_GVO_CAPABILITIES_APPLY_CSC_TO_X_SCREEN 0x00000002 +#define NV_CTRL_GVO_CAPABILITIES_COMPOSITE_TERMINATION 0x00000004 +#define NV_CTRL_GVO_CAPABILITIES_SHARED_SYNC_BNC 0x00000008 +#define NV_CTRL_GVO_CAPABILITIES_MULTIRATE_SYNC 0x00000010 /* @@ -2939,7 +2953,7 @@ /* - * NV_CTRL_NATIVE_RESOLUTION - Returns the dimensions of the + * NV_CTRL_FLATPANEL_NATIVE_RESOLUTION - Returns the dimensions of the * native resolution of the flat panel as determined by the * NVIDIA X Driver. * @@ -2989,7 +3003,7 @@ /* - * NV_CTRL_FLATPANEL_DFP_SCALING_ACTIVE - Returns the current state of + * NV_CTRL_DFP_SCALING_ACTIVE - Returns the current state of * DFP scaling. DFP scaling is mode-specific (meaning it may vary * depending on which mode is currently set). DFP scaling is active if * the GPU is set to scale to the best fit resolution (NV_CTRL_GPU_SCALING @@ -3062,7 +3076,6 @@ #define NV_CTRL_GVO_LOCK_OWNER_X_SCREEN 3 - /* * NV_CTRL_HWOVERLAY - when a workstation overlay is in use, reports * whether the hardware overlay is used, or if the overlay is emulated. @@ -3080,6 +3093,19 @@ #define NV_CTRL_NUM_GPU_ERRORS_RECOVERED 259 /* R--- */ + +/* + * NV_CTRL_REFRESH_RATE_3 - Returns the refresh rate of the specified + * display device in 1000 * Hz (ie. to get the refresh rate in Hz, divide + * the returned value by 1000.) + * + * This attribute may be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. + */ + +#define NV_CTRL_REFRESH_RATE_3 260 /* R-DG */ + + /* * NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS - if the OnDemandVBlankInterrupts * X driver option is set to true, this attribute can be used to @@ -3139,6 +3165,123 @@ #define NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE_DISABLED 0 #define NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE_ENABLED 1 + +/* + * NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED - Returns whether or not the GVO output + * video is locked to the GPU. + */ + +#define NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED 267 /* R--- */ +#define NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED_FALSE 0 +#define NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED_TRUE 1 + + +/* + * NV_CTRL_GVO_SYNC_LOCK_STATUS - Returns whether or not the GVO device + * is locked to the input ref signal. If the sync mode is set to + * NV_CTRL_GVO_SYNC_MODE_GENLOCK, then this returns the genlock + * sync status, and if the sync mode is set to NV_CTRL_GVO_SYNC_MODE_FRAMELOCK, + * then this reports the frame lock status. + */ + +#define NV_CTRL_GVO_SYNC_LOCK_STATUS 268 /* R--- */ +#define NV_CTRL_GVO_SYNC_LOCK_STATUS_UNLOCKED 0 +#define NV_CTRL_GVO_SYNC_LOCK_STATUS_LOCKED 1 + + +/* + * NV_CTRL_GVO_ANC_TIME_CODE_GENERATION - Allows SDI device to generate + * time codes in the ANC region of the SDI video output stream. + */ + +#define NV_CTRL_GVO_ANC_TIME_CODE_GENERATION 269 /* RW-- */ +#define NV_CTRL_GVO_ANC_TIME_CODE_GENERATION_DISABLE 0 +#define NV_CTRL_GVO_ANC_TIME_CODE_GENERATION_ENABLE 1 + + +/* + * NV_CTRL_GVO_COMPOSITE - Enables/Disables SDI compositing. This attribute + * is only available when an SDI input source is detected and is in genlock + * mode. + */ + +#define NV_CTRL_GVO_COMPOSITE 270 /* RW-- */ +#define NV_CTRL_GVO_COMPOSITE_DISABLE 0 +#define NV_CTRL_GVO_COMPOSITE_ENABLE 1 + + +/* + * NV_CTRL_GVO_COMPOSITE_ALPHA_KEY - When compositing is enabled, this + * enables/disables alpha blending. + */ + +#define NV_CTRL_GVO_COMPOSITE_ALPHA_KEY 271 /* RW-- */ +#define NV_CTRL_GVO_COMPOSITE_ALPHA_KEY_DISABLE 0 +#define NV_CTRL_GVO_COMPOSITE_ALPHA_KEY_ENABLE 1 + + +/* + * NV_CTRL_GVO_COMPOSITE_LUMA_KEY_RANGE - Set the values of a luma + * channel range. This is a packed int that has the following format + * (in order of high-bits to low bits): + * + * Range # (11 bits), (Enabled 1 bit), min value (10 bits), max value (10 bits) + * + * To query the current values, pass the range # throught he display_mask + * variable. + */ + +#define NV_CTRL_GVO_COMPOSITE_LUMA_KEY_RANGE 272 /* RW-- */ + +#define NV_CTRL_GVO_COMPOSITE_MAKE_RANGE(range, enable, min, max) \ + ((((min) & 0x3FF) << 0) | \ + (((max) & 0x3FF) << 10) | \ + (((enable) & 0x1) << 20) | \ + (((range) & 0x7FF) << 21)) + +#define NV_CTRL_GVO_COMPOSITE_GET_RANGE(val, range, enable, min, max) \ + (min) = ((val) >> 0) & 0x3FF; \ + (max) = ((val) >> 10) & 0x3FF; \ + (enable) = ((val) >> 20) & 0x1; \ + (range) = ((val) >> 21) & 0x7FF; + + +/* + * NV_CTRL_GVO_COMPOSITE_CR_KEY_RANGE - Set the values of a CR + * channel range. This is a packed int that has the following format + * (in order of high-bits to low bits): + * + * Range # (11 bits), (Enabled 1 bit), min value (10 bits), max value (10 bits) + * + * To query the current values, pass the range # throught he display_mask + * variable. + */ + +#define NV_CTRL_GVO_COMPOSITE_CR_KEY_RANGE 273 /* RW-- */ + + +/* + * NV_CTRL_GVO_COMPOSITE_CB_KEY_RANGE - Set the values of a CB + * channel range. This is a packed int that has the following format + * (in order of high-bits to low bits): + * + * Range # (11 bits), (Enabled 1 bit), min value (10 bits), max value (10 bits) + * + * To query the current values, pass the range # throught he display_mask + * variable. + */ + +#define NV_CTRL_GVO_COMPOSITE_CB_KEY_RANGE 274 /* RW-- */ + + +/* + * NV_CTRL_GVO_COMPOSITE_NUM_KEY_RANGES - Returns the number of ranges + * available for each channel (Y/Luma, Cr, and Cb.) + */ + +#define NV_CTRL_GVO_COMPOSITE_NUM_KEY_RANGES 275 /* R--- */ + + /* * NV_CTRL_SWITCH_TO_DISPLAYS takes display to which * user wants to switch. @@ -3376,7 +3519,7 @@ /* * NV_CTRL_STRING_VCSC_SERIAL_NUMBER - Querys the unique serial number - * of the VCSC device. + * of the VCS device. * * This attribute must be queried through XNVCTRLQueryTargetStringAttribute() * using a NV_CTRL_TARGET_TYPE_VCSC target. @@ -3386,7 +3529,7 @@ /* - * NV_CTRL_STRING_VCSC_BUILD_DATE - Querys the date of the VCSC device. + * NV_CTRL_STRING_VCSC_BUILD_DATE - Querys the date of the VCS device. * the returned string is in the following format: "Week.Year" * * This attribute must be queried through XNVCTRLQueryTargetStringAttribute() @@ -3398,7 +3541,7 @@ /* * NV_CTRL_STRING_VCSC_FIRMWARE_VERSION - Querys the firmware version - * of the VCSC device. + * of the VCS device. * * This attribute must be queried through XNVCTRLQueryTargetStringAttribute() * using a NV_CTRL_TARGET_TYPE_VCSC target. @@ -3409,10 +3552,10 @@ /* * NV_CTRL_STRING_VCSC_FIRMWARE_REVISION - Querys the firmware revision - * of the VCSC device. + * of the VCS device. * * This attribute must be queried through XNVCTRLQueryTargetStringAttribute() - * using a NV_CTRL_TARGET_TYPE_VCSC target. + * using a NV_CTRL_TARGET_TYPE_VCS target. */ #define NV_CTRL_STRING_VCSC_FIRMWARE_REVISION 20 /* R---V */ @@ -3420,7 +3563,7 @@ /* * NV_CTRL_STRING_VCSC_HARDWARE_VERSION - Querys the hardware version - * of the VCSC device. + * of the VCS device. * * This attribute must be queried through XNVCTRLQueryTargetStringAttribute() * using a NV_CTRL_TARGET_TYPE_VCSC target. @@ -3431,7 +3574,7 @@ /* * NV_CTRL_STRING_VCSC_HARDWARE_REVISION - Querys the hardware revision - * of the VCSC device. + * of the VCS device. * * This attribute must be queried through XNVCTRLQueryTargetStringAttribute() * using a NV_CTRL_TARGET_TYPE_VCSC target. @@ -3799,7 +3942,7 @@ /* * NV_CTRL_BINARY_DATA_GPUS_USING_VCSC - Returns the list of - * GPU devices connected to the given VCSC. + * GPU devices connected to the given VCS. * * The format of the returned data is: * @@ -3821,8 +3964,8 @@ * * The format of the returned data is: * - * 4 CARD32 number of VCSCs (always 1) - * 4 * n CARD32 VCSC indices + * 4 CARD32 number of VCS (always 1) + * 4 * n CARD32 VCS indices * * This attribute can only be queried through XNVCTRLQueryTargetBinaryData() * using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be @@ -4052,9 +4195,10 @@ typedef struct _NVCTRLAttributeValidValues { * of event to receive (see NVCtrlLib.h for more information): */ -#define ATTRIBUTE_CHANGED_EVENT 0 -#define TARGET_ATTRIBUTE_CHANGED_EVENT 1 - +#define ATTRIBUTE_CHANGED_EVENT 0 +#define TARGET_ATTRIBUTE_CHANGED_EVENT 1 +#define TARGET_ATTRIBUTE_AVAILABILITY_CHANGED_EVENT 2 +#define TARGET_STRING_ATTRIBUTE_CHANGED_EVENT 3 #endif /* __NVCTRL_H */ diff --git a/src/libXNVCtrl/NVCtrlLib.h b/src/libXNVCtrl/NVCtrlLib.h index 6a6bc28..7dda4e8 100644 --- a/src/libXNVCtrl/NVCtrlLib.h +++ b/src/libXNVCtrl/NVCtrlLib.h @@ -773,6 +773,55 @@ typedef union { long pad[24]; } XNVCtrlEventTarget; + +/* + * XNVCtrlEventTargetAvailability structure + */ + +typedef struct { + int type; + unsigned long serial; + Bool send_event; /* always FALSE, we don't allow send_events */ + Display *display; + Time time; + int target_type; + int target_id; + unsigned int display_mask; + unsigned int attribute; + int value; + Bool availability; +} XNVCtrlAttributeChangedEventTargetAvailability; + +typedef union { + int type; + XNVCtrlAttributeChangedEventTargetAvailability attribute_changed; + long pad[24]; +} XNVCtrlEventTargetAvailability; + + +/* + * XNVCtrlStringEventTarget structure + */ + +typedef struct { + int type; + unsigned long serial; + Bool send_event; /* always FALSE, we don't allow send_events */ + Display *display; + Time time; + int target_type; + int target_id; + unsigned int display_mask; + unsigned int attribute; +} XNVCtrlStringAttributeChangedEventTarget; + +typedef union { + int type; + XNVCtrlStringAttributeChangedEventTarget attribute_changed; + long pad[24]; +} XNVCtrlStringEventTarget; + + #if defined __cplusplus } /* extern "C" */ #endif diff --git a/src/libXNVCtrl/README.LIBXNVCTRL b/src/libXNVCtrl/README.LIBXNVCTRL deleted file mode 100644 index 9e8eb6c..0000000 --- a/src/libXNVCtrl/README.LIBXNVCTRL +++ /dev/null @@ -1,37 +0,0 @@ - -LIBXNVCTRL README - -The libXNVCtrl.a library is a small archive that provides the NV-CONTROL -API defined in NVCtrlLib.h. This library is provided as a binary because -it is generally difficult to build an X library, unless you have an X -server source tree available. However, everything necessary to build -this library is provided in this directory should you wish to -recompile it. The files are: - - Imakefile - the input file to imake for use in generating an - appropriate Makefile - - Makefile.inc - the file that defines what files will be included - in the nvidia-settings source package - - nv_control.h - header file that defines the actual NV-CONTROL - protocol - - NVCtrl.c - libXNVCtrl.a source file - - NVCtrl.h - header file that defines the integer attributes - available to the NV-CONTROL X extension - - NVCtrlLib.h - header file that defines the NV-CONTROL API - - -To build libXNVCtrl.a, perform the following steps: - - $ xmkmf - $ make clean - $ make - -This does require that you have a properly configured xmkmf (ie: from -an X server source tree). - - diff --git a/src/libXNVCtrl/libXNVCtrl.a b/src/libXNVCtrl/libXNVCtrl.a Binary files differdeleted file mode 100644 index 7693bd3..0000000 --- a/src/libXNVCtrl/libXNVCtrl.a +++ /dev/null diff --git a/src/libXNVCtrl/nv_control.h b/src/libXNVCtrl/nv_control.h index 62133c6..edd3056 100644 --- a/src/libXNVCtrl/nv_control.h +++ b/src/libXNVCtrl/nv_control.h @@ -2,11 +2,11 @@ #define __NVCONTROL_H #define NV_CONTROL_ERRORS 0 -#define NV_CONTROL_EVENTS 2 +#define NV_CONTROL_EVENTS 4 #define NV_CONTROL_NAME "NV-CONTROL" #define NV_CONTROL_MAJOR 1 -#define NV_CONTROL_MINOR 14 +#define NV_CONTROL_MINOR 16 #define X_nvCtrlQueryExtension 0 #define X_nvCtrlIsNv 1 @@ -698,6 +698,21 @@ typedef struct { CARD32 pad0 B32; CARD32 pad1 B32; } attribute_changed; + struct { + BYTE type; + BYTE detail; + CARD16 sequenceNumber B16; + CARD32 time B32; + CARD16 target_type B16; /* Don't swap these */ + CARD16 target_id B16; + CARD32 display_mask B32; + CARD32 attribute B32; + CARD32 value B32; + CARD8 availability; + CARD8 pad0; + CARD16 pad1 B16; + CARD32 pad2 B32; + } availability_changed; } u; } xnvctrlEventTarget; diff --git a/src/libXNVCtrlAttributes/NvCtrlAttributes.c b/src/libXNVCtrlAttributes/NvCtrlAttributes.c index ac873a1..64a57ec 100644 --- a/src/libXNVCtrlAttributes/NvCtrlAttributes.c +++ b/src/libXNVCtrlAttributes/NvCtrlAttributes.c @@ -275,11 +275,11 @@ int NvCtrlGetEventBase(NvCtrlAttributeHandle *handle) { NvCtrlAttributePrivateHandle *h; - if (!handle) return 0; + if (!handle) return -1; h = (NvCtrlAttributePrivateHandle *) handle; - if (!h->nv) return 0; + if (!h->nv) return -1; return (h->nv->event_base); } /* NvCtrlGetEventBase() */ @@ -289,11 +289,11 @@ int NvCtrlGetXrandrEventBase(NvCtrlAttributeHandle *handle) { NvCtrlAttributePrivateHandle *h; - if (!handle) return 0; + if (!handle) return -1; h = (NvCtrlAttributePrivateHandle *) handle; - if (!h->xrandr) return 0; + if (!h->xrandr) return -1; return (h->xrandr->event_base); } /* NvCtrlGetXrandrEventBase() */ diff --git a/src/libXNVCtrlAttributes/NvCtrlAttributes.h b/src/libXNVCtrlAttributes/NvCtrlAttributes.h index ebd206a..e4d7469 100644 --- a/src/libXNVCtrlAttributes/NvCtrlAttributes.h +++ b/src/libXNVCtrlAttributes/NvCtrlAttributes.h @@ -112,9 +112,11 @@ typedef void NvCtrlAttributeHandle; #define NV_CTRL_ATTR_XV_TEXTURE_SYNC_TO_VBLANK (NV_CTRL_ATTR_XV_BASE + 5) #define NV_CTRL_ATTR_XV_TEXTURE_CONTRAST (NV_CTRL_ATTR_XV_BASE + 6) #define NV_CTRL_ATTR_XV_TEXTURE_BRIGHTNESS (NV_CTRL_ATTR_XV_BASE + 7) -#define NV_CTRL_ATTR_XV_TEXTURE_SET_DEFAULTS (NV_CTRL_ATTR_XV_BASE + 8) -#define NV_CTRL_ATTR_XV_BLITTER_SYNC_TO_VBLANK (NV_CTRL_ATTR_XV_BASE + 9) -#define NV_CTRL_ATTR_XV_BLITTER_SET_DEFAULTS (NV_CTRL_ATTR_XV_BASE + 10) +#define NV_CTRL_ATTR_XV_TEXTURE_SATURATION (NV_CTRL_ATTR_XV_BASE + 8) +#define NV_CTRL_ATTR_XV_TEXTURE_HUE (NV_CTRL_ATTR_XV_BASE + 9) +#define NV_CTRL_ATTR_XV_TEXTURE_SET_DEFAULTS (NV_CTRL_ATTR_XV_BASE + 10) +#define NV_CTRL_ATTR_XV_BLITTER_SYNC_TO_VBLANK (NV_CTRL_ATTR_XV_BASE + 11) +#define NV_CTRL_ATTR_XV_BLITTER_SET_DEFAULTS (NV_CTRL_ATTR_XV_BASE + 12) #define NV_CTRL_ATTR_XV_LAST_ATTRIBUTE \ diff --git a/src/libXNVCtrlAttributes/NvCtrlAttributesNvControl.c b/src/libXNVCtrlAttributes/NvCtrlAttributesNvControl.c index 20a165e..ca81d27 100644 --- a/src/libXNVCtrlAttributes/NvCtrlAttributesNvControl.c +++ b/src/libXNVCtrlAttributes/NvCtrlAttributesNvControl.c @@ -83,6 +83,36 @@ NvCtrlInitNvControlAttributes (NvCtrlAttributePrivateHandle *h) "events."); } + /* + * TARGET_ATTRIBUTE_AVAILABILITY_CHANGED_EVENT was added in NV-CONTROL + * 1.15 + */ + + if (((major > 1) || ((major == 1) && (minor >= 15)))) { + ret = XNVCtrlSelectTargetNotify(h->dpy, h->target_type, h->target_id, + TARGET_ATTRIBUTE_AVAILABILITY_CHANGED_EVENT, + True); + if (ret != True) { + nv_warning_msg("Unable to select attribute changed NV-CONTROL " + "events."); + } + } + + /* + * TARGET_STRING_ATTRIBUTE_CHANGED_EVENT was added in NV-CONTROL + * 1.16 + */ + + if (((major > 1) || ((major == 1) && (minor >= 16)))) { + ret = XNVCtrlSelectTargetNotify(h->dpy, h->target_type, h->target_id, + TARGET_STRING_ATTRIBUTE_CHANGED_EVENT, + True); + if (ret != True) { + nv_warning_msg("Unable to select attribute changed NV-CONTROL string" + "events."); + } + } + nv->event_base = event; nv->error_base = error; nv->major_version = major; diff --git a/src/libXNVCtrlAttributes/NvCtrlAttributesPrivate.h b/src/libXNVCtrlAttributes/NvCtrlAttributesPrivate.h index 8072833..8286d74 100644 --- a/src/libXNVCtrlAttributes/NvCtrlAttributesPrivate.h +++ b/src/libXNVCtrlAttributes/NvCtrlAttributesPrivate.h @@ -124,6 +124,8 @@ struct __NvCtrlXvTextureAttributes { NvCtrlXvAttribute *sync_to_vblank; NvCtrlXvAttribute *contrast; NvCtrlXvAttribute *brightness; + NvCtrlXvAttribute *hue; + NvCtrlXvAttribute *saturation; NvCtrlXvAttribute *defaults; }; diff --git a/src/libXNVCtrlAttributes/NvCtrlAttributesXv.c b/src/libXNVCtrlAttributes/NvCtrlAttributesXv.c index c43b3e6..55c5aa1 100644 --- a/src/libXNVCtrlAttributes/NvCtrlAttributesXv.c +++ b/src/libXNVCtrlAttributes/NvCtrlAttributesXv.c @@ -287,6 +287,10 @@ NvCtrlXvAttributes * NvCtrlInitXvAttributes(NvCtrlAttributePrivateHandle *h) "XV_CONTRAST"); attrs->brightness = getXvAttribute(h, attrs->port, "XV_BRIGHTNESS"); + attrs->saturation = getXvAttribute(h, attrs->port, + "XV_SATURATION"); + attrs->hue = getXvAttribute(h, attrs->port, + "XV_HUE"); attrs->defaults = getXvAttribute(h, attrs->port, "XV_SET_DEFAULTS"); if (!attrs->sync_to_vblank || @@ -569,6 +573,8 @@ static Bool checkAdaptor(NvCtrlAttributePrivateHandle *h, case NV_CTRL_ATTR_XV_TEXTURE_SYNC_TO_VBLANK: case NV_CTRL_ATTR_XV_TEXTURE_CONTRAST: case NV_CTRL_ATTR_XV_TEXTURE_BRIGHTNESS: + case NV_CTRL_ATTR_XV_TEXTURE_HUE: + case NV_CTRL_ATTR_XV_TEXTURE_SATURATION: case NV_CTRL_ATTR_XV_TEXTURE_SET_DEFAULTS: if (h && h->xv && h->xv->texture) return True; else return False; @@ -606,6 +612,8 @@ static unsigned int getXvPort(NvCtrlAttributePrivateHandle *h, case NV_CTRL_ATTR_XV_TEXTURE_SYNC_TO_VBLANK: case NV_CTRL_ATTR_XV_TEXTURE_CONTRAST: case NV_CTRL_ATTR_XV_TEXTURE_BRIGHTNESS: + case NV_CTRL_ATTR_XV_TEXTURE_HUE: + case NV_CTRL_ATTR_XV_TEXTURE_SATURATION: case NV_CTRL_ATTR_XV_TEXTURE_SET_DEFAULTS: return h->xv->texture->port; @@ -653,6 +661,12 @@ static NvCtrlXvAttribute *getXvAttributePtr(NvCtrlAttributePrivateHandle *h, case NV_CTRL_ATTR_XV_TEXTURE_BRIGHTNESS: return h->xv->texture->brightness; + case NV_CTRL_ATTR_XV_TEXTURE_HUE: + return h->xv->texture->hue; + + case NV_CTRL_ATTR_XV_TEXTURE_SATURATION: + return h->xv->texture->saturation; + case NV_CTRL_ATTR_XV_BLITTER_SYNC_TO_VBLANK: return h->xv->blitter->sync_to_vblank; diff --git a/src/nvidia-settings.c b/src/nvidia-settings.c index 75e48f0..9ab745c 100644 --- a/src/nvidia-settings.c +++ b/src/nvidia-settings.c @@ -41,9 +41,9 @@ int main(int argc, char **argv) CtrlHandles *h; NvCtrlAttributeHandle **screen_handles = NULL; NvCtrlAttributeHandle **gpu_handles = NULL; - NvCtrlAttributeHandle **vcsc_handles = NULL; + NvCtrlAttributeHandle **vcs_handles = NULL; Options *op; - int ret, i, num_screen_handles, num_gpu_handles, num_vcsc_handles; + int ret, i, num_screen_handles, num_gpu_handles, num_vcs_handles; char *dpy = NULL; int gui = 0; @@ -177,17 +177,17 @@ int main(int argc, char **argv) } } - num_vcsc_handles = h->targets[VCSC_TARGET].n; + num_vcs_handles = h->targets[VCS_TARGET].n; - if (num_vcsc_handles) { - vcsc_handles = - malloc(num_vcsc_handles * sizeof(NvCtrlAttributeHandle *)); - if (vcsc_handles) { - for (i = 0; i < num_vcsc_handles; i++) { - vcsc_handles[i] = h->targets[VCSC_TARGET].t[i].h; + if (num_vcs_handles) { + vcs_handles = + malloc(num_vcs_handles * sizeof(NvCtrlAttributeHandle *)); + if (vcs_handles) { + for (i = 0; i < num_vcs_handles; i++) { + vcs_handles[i] = h->targets[VCS_TARGET].t[i].h; } } else { - num_vcsc_handles = 0; + num_vcs_handles = 0; } } @@ -195,7 +195,7 @@ int main(int argc, char **argv) ctk_main(screen_handles, num_screen_handles, gpu_handles, num_gpu_handles, - vcsc_handles, num_vcsc_handles, + vcs_handles, num_vcs_handles, p, &conf); /* write the configuration file */ diff --git a/src/parse.c b/src/parse.c index 9e71944..52a1051 100644 --- a/src/parse.c +++ b/src/parse.c @@ -60,7 +60,9 @@ static char *nv_strndup(char *s, int n); #define A NV_PARSER_TYPE_NO_QUERY_ALL #define Z NV_PARSER_TYPE_NO_ZERO_VALUE #define H NV_PARSER_TYPE_100Hz +#define K NV_PARSER_TYPE_1000Hz #define S NV_PARSER_TYPE_STRING_ATTRIBUTE +#define I NV_PARSER_TYPE_SDI #define W NV_PARSER_TYPE_VALUE_IS_SWITCH_DISPLAY AttributeTableEntry attributeTable[] = { @@ -95,7 +97,7 @@ AttributeTableEntry attributeTable[] = { { "AssociatedDisplays", NV_CTRL_ASSOCIATED_DISPLAY_DEVICES, N|D }, { "ProbeDisplays", NV_CTRL_PROBE_DISPLAYS, A }, { "Depth30Allowed", NV_CTRL_DEPTH_30_ALLOWED, N }, - { "ForceGenericCpu", NV_CTRL_FORCE_GENERIC_CPU, 0 }, + { "ForceGenericCpu", NV_CTRL_FORCE_GENERIC_CPU, N }, { "GammaCorrectedAALines", NV_CTRL_OPENGL_AA_LINE_GAMMA, 0 }, { "ShowSLIHUD", NV_CTRL_SHOW_SLI_HUD, 0 }, { "CursorShadow", NV_CTRL_CURSOR_SHADOW, 0 }, @@ -108,6 +110,7 @@ AttributeTableEntry attributeTable[] = { { "FSAAAppControlled", NV_CTRL_FSAA_APPLICATION_CONTROLLED, 0 }, { "LogAnisoAppControlled", NV_CTRL_LOG_ANISO_APPLICATION_CONTROLLED,0 }, { "RefreshRate", NV_CTRL_REFRESH_RATE, N|H }, + { "RefreshRate3", NV_CTRL_REFRESH_RATE_3, N|K }, { "InitialPixmapPlacement",NV_CTRL_INITIAL_PIXMAP_PLACEMENT, N }, { "GlyphCache", NV_CTRL_GLYPH_CACHE, N }, { "PCIBus", NV_CTRL_PCI_BUS, N }, @@ -148,28 +151,34 @@ AttributeTableEntry attributeTable[] = { { "FrameLockMasterable", NV_CTRL_FRAMELOCK_MASTERABLE, N|F|G }, { "FrameLockFPGARevision", NV_CTRL_FRAMELOCK_FPGA_REVISION, N|F|G }, - { "GvoSupported", NV_CTRL_GVO_SUPPORTED, N }, - { "GvoSyncMode", NV_CTRL_GVO_SYNC_MODE, N }, - { "GvoSyncSource", NV_CTRL_GVO_SYNC_SOURCE, N }, - { "GvoOutputVideoFormat", NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT, N }, - { "GvoInputVideoFormat", NV_CTRL_GVO_INPUT_VIDEO_FORMAT, N }, - { "GvoDataFormat", NV_CTRL_GVO_DATA_FORMAT, N }, - { "GvoDisplayXScreen", NV_CTRL_GVO_DISPLAY_X_SCREEN, N }, - { "GvoCompositeSyncInputDetected", NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED, N }, - { "GvoCompositeSyncInputDetectMode", NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE, N }, - { "GvoSdiSyncInputDetected", NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED, N }, - { "GvoVideoOutputs", NV_CTRL_GVO_VIDEO_OUTPUTS, N }, - { "GvoSyncDelayPixels", NV_CTRL_GVO_SYNC_DELAY_PIXELS, N }, - { "GvoSyncDelayLines", NV_CTRL_GVO_SYNC_DELAY_LINES, N }, - { "GvoGlxLocked", NV_CTRL_GVO_GLX_LOCKED, N }, - { "GvoXScreenPanX", NV_CTRL_GVO_X_SCREEN_PAN_X, N }, - { "GvoXScreenPanY", NV_CTRL_GVO_X_SCREEN_PAN_Y, N }, - { "GvoOverrideHwCsc", NV_CTRL_GVO_OVERRIDE_HW_CSC, N }, - { "GvoCapabilities", NV_CTRL_GVO_CAPABILITIES, N }, - { "GvoCompositeTermination", NV_CTRL_GVO_COMPOSITE_TERMINATION, N }, - { "GvoFlipQueueSize", NV_CTRL_GVO_FLIP_QUEUE_SIZE, N }, - { "GvoFirmwareVersion", NV_CTRL_STRING_GVO_FIRMWARE_VERSION, S|N }, - { "GvoLockOwner", NV_CTRL_GVO_LOCK_OWNER, N }, + { "GvoSupported", NV_CTRL_GVO_SUPPORTED, I|N }, + { "GvoSyncMode", NV_CTRL_GVO_SYNC_MODE, I }, + { "GvoSyncSource", NV_CTRL_GVO_SYNC_SOURCE, I }, + { "GvoOutputVideoFormat", NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT, I }, + { "GvoInputVideoFormat", NV_CTRL_GVO_INPUT_VIDEO_FORMAT, I|N }, + { "GvoDataFormat", NV_CTRL_GVO_DATA_FORMAT, I }, + { "GvoDisplayXScreen", NV_CTRL_GVO_DISPLAY_X_SCREEN, I|N }, + { "GvoCompositeSyncInputDetected", NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED, I|N }, + { "GvoCompositeSyncInputDetectMode", NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE, I|N }, + { "GvoSdiSyncInputDetected", NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED, I|N }, + { "GvoVideoOutputs", NV_CTRL_GVO_VIDEO_OUTPUTS, I|N }, + { "GvoSyncDelayPixels", NV_CTRL_GVO_SYNC_DELAY_PIXELS, I }, + { "GvoSyncDelayLines", NV_CTRL_GVO_SYNC_DELAY_LINES, I }, + { "GvoGlxLocked", NV_CTRL_GVO_GLX_LOCKED, I|N }, + { "GvoXScreenPanX", NV_CTRL_GVO_X_SCREEN_PAN_X, I }, + { "GvoXScreenPanY", NV_CTRL_GVO_X_SCREEN_PAN_Y, I }, + { "GvoOverrideHwCsc", NV_CTRL_GVO_OVERRIDE_HW_CSC, I }, + { "GvoCapabilities", NV_CTRL_GVO_CAPABILITIES, I|N }, + { "GvoCompositeTermination", NV_CTRL_GVO_COMPOSITE_TERMINATION, I }, + { "GvoFlipQueueSize", NV_CTRL_GVO_FLIP_QUEUE_SIZE, I }, + { "GvoFirmwareVersion", NV_CTRL_STRING_GVO_FIRMWARE_VERSION, I|S|N }, + { "GvoLockOwner", NV_CTRL_GVO_LOCK_OWNER, I|N }, + { "GvoOutputVideoLocked", NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED, I|N }, + { "GvoSyncLockStatus", NV_CTRL_GVO_SYNC_LOCK_STATUS, I|N }, + { "GvoANCTimeCodeGeneration", NV_CTRL_GVO_ANC_TIME_CODE_GENERATION, I }, + { "GvoComposite", NV_CTRL_GVO_COMPOSITE, I }, + { "GvoCompositeAlphaKey", NV_CTRL_GVO_COMPOSITE_ALPHA_KEY, I }, + { "GvoCompositeNumKeyRanges", NV_CTRL_GVO_COMPOSITE_NUM_KEY_RANGES, I|N }, { "Brightness", BRIGHTNESS_VALUE|ALL_CHANNELS, N|C|G }, { "RedBrightness", BRIGHTNESS_VALUE|RED_CHANNEL, C|G }, @@ -199,6 +208,8 @@ AttributeTableEntry attributeTable[] = { { "XVideoOverlayHue", NV_CTRL_ATTR_XV_OVERLAY_HUE, V }, { "XVideoTextureBrightness", NV_CTRL_ATTR_XV_TEXTURE_BRIGHTNESS, V }, { "XVideoTextureContrast", NV_CTRL_ATTR_XV_TEXTURE_CONTRAST, V }, + { "XVideoTextureHue", NV_CTRL_ATTR_XV_TEXTURE_HUE, V }, + { "XVideoTextureSaturation", NV_CTRL_ATTR_XV_TEXTURE_SATURATION, V }, { "XVideoTextureSyncToVBlank", NV_CTRL_ATTR_XV_TEXTURE_SYNC_TO_VBLANK, V }, { "XVideoBlitterSyncToVBlank", NV_CTRL_ATTR_XV_BLITTER_SYNC_TO_VBLANK, V }, { "XVideoSyncToDisplay", NV_CTRL_XV_SYNC_TO_DISPLAY, D|Z }, @@ -237,7 +248,9 @@ AttributeTableEntry attributeTable[] = { #undef A #undef Z #undef H +#undef K #undef S +#undef I #undef W /* @@ -281,9 +294,9 @@ TargetTypeEntry targetTypeTable[] = { ATTRIBUTE_TYPE_FRAMELOCK, /* permission_bit */ NV_FALSE }, /* uses_display_devices */ - { "VCSC", /* name */ - "vcsc", /* parsed_name */ - VCSC_TARGET, /* target_index */ + { "VCS", /* name */ + "vcs", /* parsed_name */ + VCS_TARGET, /* target_index */ NV_CTRL_TARGET_TYPE_VCSC, /* nvctrl */ ATTRIBUTE_TYPE_VCSC, /* permission_bit */ NV_FALSE }, /* uses_display_devices */ diff --git a/src/parse.h b/src/parse.h index d6dddc1..1e0d510 100644 --- a/src/parse.h +++ b/src/parse.h @@ -56,6 +56,8 @@ #define NV_PARSER_TYPE_STRING_ATTRIBUTE (1<<26) #define NV_PARSER_TYPE_ASSIGN_ALL_DISPLAYS (1<<27) #define NV_PARSER_TYPE_VALUE_IS_SWITCH_DISPLAY (1<<28) +#define NV_PARSER_TYPE_1000Hz (1<<29) +#define NV_PARSER_TYPE_SDI (1<<30) #define NV_PARSER_ASSIGNMENT 0 #define NV_PARSER_QUERY 1 @@ -142,7 +144,7 @@ extern AttributeTableEntry attributeTable[]; #define X_SCREEN_TARGET 0 #define GPU_TARGET 1 #define FRAMELOCK_TARGET 2 -#define VCSC_TARGET 3 +#define VCS_TARGET 3 #define MAX_TARGET_TYPES 4 diff --git a/src/query-assign.c b/src/query-assign.c index eda350d..2920762 100644 --- a/src/query-assign.c +++ b/src/query-assign.c @@ -373,8 +373,8 @@ static int process_attribute_queries(int num, char **queries, continue; } - if (nv_strcasecmp(queries[query], "vcscs")) { - query_all_targets(display_name, VCSC_TARGET); + if (nv_strcasecmp(queries[query], "vcs")) { + query_all_targets(display_name, VCS_TARGET); continue; } @@ -772,6 +772,8 @@ static void print_queried_value(CtrlHandleTarget *t, free(tmp_d_str); } else if (flags & NV_PARSER_TYPE_100Hz) { snprintf(val_str, 64, "%.2f Hz", ((float) val) / 100.0); + } else if (flags & NV_PARSER_TYPE_1000Hz) { + snprintf(val_str, 64, "%.3f Hz", ((float) val) / 1000.0); } else if (v->type == ATTRIBUTE_TYPE_BITMASK) { snprintf(val_str, 64, "0x%08x", val); } else if (flags & NV_PARSER_TYPE_PACKED_ATTRIBUTE) { @@ -1018,11 +1020,11 @@ static int print_target_display_connections(CtrlHandleTarget *t) /* - * get_vcsc_name() Returns the VCSC product name of the given - * VCSC target. + * get_vcs_name() Returns the VCS product name of the given + * VCS target. */ -static char * get_vcsc_name(NvCtrlAttributeHandle *h) +static char * get_vcs_name(NvCtrlAttributeHandle *h) { char *product_name; ReturnStatus status; @@ -1034,7 +1036,7 @@ static char * get_vcsc_name(NvCtrlAttributeHandle *h) return product_name; -} /* get_vcsc_name() */ +} /* get_vcs_name() */ @@ -1114,9 +1116,9 @@ static int print_target_connections(CtrlHandles *h, get_gpu_name(h->targets[target_index].t[ pData[i] ].h); break; - case VCSC_TARGET: + case VCS_TARGET: product_name = - get_vcsc_name(h->targets[target_index].t[ pData[i] ].h); + get_vcs_name(h->targets[target_index].t[ pData[i] ].h); break; case FRAMELOCK_TARGET: @@ -1229,7 +1231,7 @@ static int query_all_targets(const char *display_name, const int target_index) product_name = malloc(32); snprintf(product_name, 32, "G-Sync %d", i); - } else if (target_index == VCSC_TARGET) { + } else if (target_index == VCS_TARGET) { status = NvCtrlGetStringAttribute (t->h, NV_CTRL_STRING_VCSC_PRODUCT_NAME, &product_name); @@ -1280,7 +1282,7 @@ static int query_all_targets(const char *display_name, const int target_index) FRAMELOCK_TARGET); print_target_connections (h, t, NV_CTRL_BINARY_DATA_VCSCS_USED_BY_GPU, - VCSC_TARGET); + VCS_TARGET); break; case X_SCREEN_TARGET: @@ -1295,7 +1297,7 @@ static int query_all_targets(const char *display_name, const int target_index) GPU_TARGET); break; - case VCSC_TARGET: + case VCS_TARGET: print_target_connections (h, t, NV_CTRL_BINARY_DATA_GPUS_USING_VCSC, GPU_TARGET); @@ -1777,7 +1779,7 @@ int nv_process_parsed_attribute(ParsedAttribute *a, CtrlHandles *h, status = NvCtrlGetAttribute(t->h, NV_CTRL_FRAMELOCK, &available); if (status != NvCtrlSuccess) { nv_error_msg("The attribute '%s' specified %s cannot be " - "%s; error querying frame lock availablity on " + "%s; error querying frame lock availablity on " "%s (%s).", a->name, whence, assign ? "assigned" : "queried", t->name, NvCtrlAttributesStrError(status)); @@ -1785,7 +1787,7 @@ int nv_process_parsed_attribute(ParsedAttribute *a, CtrlHandles *h, } if (available != NV_CTRL_FRAMELOCK_SUPPORTED) { - nv_error_msg("The attribute '%s' specified %s cannot be %s; " + nv_error_msg("The attribute '%s' specified %s cannot be %s; " "frame lock is not supported/available on %s.", a->name, whence, assign ? "assigned" : "queried", t->name); @@ -1801,7 +1803,7 @@ int nv_process_parsed_attribute(ParsedAttribute *a, CtrlHandles *h, &enabled); if (status != NvCtrlSuccess) { nv_error_msg("The attribute '%s' specified %s cannot be " - "assigned; error querying frame lock sync " + "assigned; error querying frame lock sync " "status on %s (%s).", a->name, whence, t->name, NvCtrlAttributesStrError(status)); @@ -1811,14 +1813,14 @@ int nv_process_parsed_attribute(ParsedAttribute *a, CtrlHandles *h, if (a->attr == NV_CTRL_FRAMELOCK_TEST_SIGNAL) { if (enabled != NV_CTRL_FRAMELOCK_SYNC_ENABLE) { nv_error_msg("The attribute '%s' specified %s cannot " - "be assigned; frame lock sync is " + "be assigned; frame lock sync is " "currently disabled on %s.", a->name, whence, t->name); continue; } } else if (enabled != NV_CTRL_FRAMELOCK_SYNC_DISABLE) { nv_warning_msg("The attribute '%s' specified %s cannot be " - "assigned; frame lock sync is currently " + "assigned; frame lock sync is currently " "enabled on %s.", a->name, whence, t->name); continue; @@ -1826,6 +1828,34 @@ int nv_process_parsed_attribute(ParsedAttribute *a, CtrlHandles *h, } } + /* + * To properly handle SDI (GVO) attributes, we just need to make + * sure that GVO is supported by the handle. + */ + + if (a->flags & NV_PARSER_TYPE_SDI) { + int available; + + status = NvCtrlGetAttribute(t->h, NV_CTRL_GVO_SUPPORTED, + &available); + if (status != NvCtrlSuccess) { + nv_error_msg("The attribute '%s' specified %s cannot be " + "%s; error querying SDI availablity on " + "%s (%s).", + a->name, whence, assign ? "assigned" : "queried", + t->name, NvCtrlAttributesStrError(status)); + continue; + } + + if (available != NV_CTRL_GVO_SUPPORTED_TRUE) { + nv_error_msg("The attribute '%s' specified %s cannot be %s; " + "SDI is not supported/available on %s.", + a->name, whence, assign ? "assigned" : "queried", + t->name); + continue; + } + } + /* loop over the display devices */ for (bit = 0; bit < 24; bit++) { |