ࡱ> ` Bbjbjss 7 BFFFFFFFZ====?T Z2J$J$J$J$J$J$J$J)++++++$ܕhDOFQ$J$JQQOFF$J$Jd{Y{Y{YQNF$JF$J){YQ){Y{Yi|FFj$JJ JŘg=KVin%z0iИaVИ$jИFj$J 0Lv{YM,N+$J$J$JOOqY $J$J$JQQQQZZZS>XZZZ>XZZZFFFFFF The Nagios 2.X Event Broker Module API Introduction The purpose of this document is three-fold: Catalog and explain the API used for writing Nagios Event Broker (NEB) Modules and, Touch upon what can and cant be done with the stock NEB Module API and, Identify key Nagios structures and internal Nagios Helper Routines that can be used to manipulate Nagios from within an NEB Module. This document assumes that the reader is familiar with the Nagios Event Broker (NEB) concept and the basic structure of an NEB Module. If not, Taylor Dondich (of OpenGroundWork fame) has created an excellent two-part introduction, available on his companys website. Also, while not strictly required, it is very beneficial to have at least a passing knowledge of the C programming language, in order to be able to follow the example code. Finally, this document will (hopefully) be a continuing work-in-progress. It is currently by no means exhaustive in its treatment of what tricks, hacks and other functionality can be derived via the NEB Module mechanism. Any errors, omissions or bad spelling are mine and I would appreciate all (constructive) feedback on this subject. I can be reached via e-mail: bobi-AT-netshel-DOT-net. Author, Copyright and License This document was written by and is copyright Robert W. Ingraham. This work is licensed under the Creative Commons Attribution-ShareAlike 2.5 License. To view a copy of this license, visit  HYPERLINK "http://creativecommons.org/licenses/by-sa/2.5/" http://creativecommons.org/licenses/by-sa/2.5/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA. Revision History DateAuthorComments2006-07-28Robert W. IngrahamFirst publication date. Overview of the NEB Communication Model From a software point-of-view, Nagios communicates with user-written NEB Modules using a Publish-Subscribe model. In this model, modules are first identified to Nagios via the module directive in the Nagios configuration file. When the Nagios process starts, one of its startup tasks is to load identified modules into its address-space using the dynamic linker facility (much like a DLL under Windows.) After a module is loaded into Nagios memory space, Nagios searches the module for the modules initialization function, which must be named nebmodule_init. The module-writer uses this function to initialize any private data structures and, principally, to subscribe to specific Nagios Events. For example, a module might be only interested in Host and Service Checks and would subscribe to Nagios Host Check and Service Check channels. The actual mechanism for subscribing to a Nagios Event Channel is that a module provides to Nagios the name of a subroutine defined within the module (known as a Call-Back routine.) When the desired event occurs, Nagios will call-back the subscribers registered Call-Back routine with the details of the Service Check Event. More details will be given on this shortly. After initializing itself and subscribing to Nagios Event Channels of interest, the nebmodule_init then returns control back to Nagios. It is important to know that any number of modules may be loaded and subscribe to the same events. Nagios builds Subscriber Lists for each Nagios Event Channel. When an event occurs within the Nagios Scheduler lets say that it is time to run a particular Service Check as an example Nagios publishes that Service Check Event to its Service Check Event Channel; that is, it will walk the list of Service Check Channel subscribers and invoke each subscribers Call-Back Routine, one-at-a-time, with the Service Check Event details. In the case of a Service Check Event, the Call-Back Routine will actually be invoked twice: Just before Nagios executes the Service Check and, Just after the Service Checks results are processed by Nagios. The Call-Back routine does with the Service Check information just about whatever it wants to do with it: store it in a database, trigger some external event, attempt to modify Nagios configuration or operation, etc. After processing the event, the Call-Back routine immediately returns control back to Nagios. At any point during its operation, a Call-Back routine may unsubscribe it self (or another Call-Back routine) from a Nagios Event Channel. Finally, when Nagios is getting ready to shutdown, it will invoke each NEB Modules de-initialization routine. Each NEB Module implements a routine called nebmodule_deinit, for this purpose. The primary function of the Modules nebmodule_deinit routine is to unsubscribe all of its currently-subscribed Call-Back routines, and then de-allocate or clean-up any internal resources that it has used. Call Back Routines The main purpose of Event Broker call-back routines is to allow an event broker module to register to receive notification of certain pre-defined events from Nagios, as they occur. These events are called call-back types within Nagios. Currently, there are 31 call-back types defined for which an NEB module can register: IDNameDescription0NEBCALLBACK_RESERVED0Reserved for future use1NEBCALLBACK_RESERVED1Reserved for future use2NEBCALLBACK_RESERVED2Reserved for future use3NEBCALLBACK_RESERVED3Reserved for future use4NEBCALLBACK_RESERVED4Reserved for future use5NEBCALLBACK_RAW_DATANot implemented6NEBCALLBACK_NEB_DATANot implemented7NEBCALLBACK_PROCESS_DATAInformation from the main nagios process. Invoked when starting-up, shutting-down, restarting or abending.8NEBCALLBACK_TIMED_EVENT_DATATimed Event9NEBCALLBACK_LOG_DATAData being written to the Nagios logs10NEBCALLBACK_SYSTEM_COMMAND_DATASystem Commands11NEBCALLBACK_EVENT_HANDLER_DATAEvent Handlers12NEBCALLBACK_NOTIFICATION_DATANotifications13NEBCALLBACK_SERVICE_CHECK_DATAService Checks14NEBCALLBACK_HOST_CHECK_DATAHost Checks15NEBCALLBACK_COMMENT_DATAComments16NEBCALLBACK_DOWNTIME_DATAScheduled Downtime17NEBCALLBACK_FLAPPING_DATAFlapping18NEBCALLBACK_PROGRAM_STATUS_DATAProgram Status Change19NEBCALLBACK_HOST_STATUS_DATAHost Status Change20NEBCALLBACK_SERVICE_STATUS_DATAService Status Change21NEBCALLBACK_ADAPTIVE_PROGRAM_DATAAdaptive Program Change22NEBCALLBACK_ADAPTIVE_HOST_DATAAdaptive Host Change23NEBCALLBACK_ADAPTIVE_SERVICE_DATAAdaptive Service Change24NEBCALLBACK_EXTERNAL_COMMAND_DATAExternal Command Processing25NEBCALLBACK_AGGREGATED_STATUS_DATAAggregated Status Dump26NEBCALLBACK_RETENTION_DATARetention Data Loading and Saving27NEBCALLBACK_CONTACT_NOTIFICATION_DATAContact Notification Change28NEBCALLBACK_CONTACT_NOTIFICATION_METHOD_DATAContact Notification Method Change29NEBCALLBACK_ACKNOWLEDGEMENT_DATAAcknowledgements30NEBCALLBACK_STATE_CHANGE_DATAState Changes Table of Call-Back Types Each call back type is accompanied with an event-specific data structure. For example, the NEBCALLBACK_SERVICE_CHECK_DATA call-back type is always accompanied by a nebstruct_service_check_data structure: /* service check structure */ typedef struct nebstruct_service_check_struct{ int type; int flags; int attr; struct timeval timestamp; char *host_name; char *service_description; int check_type; int current_attempt; int max_attempts; int state_type; int state; int timeout; char *command_name; char *command_args; char *command_line; struct timeval start_time; struct timeval end_time; int early_timeout; double execution_time; double latency; int return_code; char *output; char *perf_data; }nebstruct_service_check_data; So, when your NEB modules registers a call-back routine with Nagios to receive notifications about service check events, your call-back routine will receive two pieces of information: The Call-Back Type (In this case NEBCALLBACK_SERVICE_CHECK_DATA) and, A pointer to a nebstruct_service_check_data structure, containing some relevant details about the service check. Well discuss this data structure in some detail, further on. If youre curious, Appendix A is a catalog of Call-Back Types and their respective data structures. The Nagios call-back mechanism is one-way, informational-only. That is, there is currently no way for a call-back routine to alter the operation of Nagios through the call-back mechanism itself. To alter the operation of Nagios, a call-back routine must alter global Nagios data structures while it has control from Nagios. For example, to dynamically add a new service definition to Nagios, a call-back routine would invoke the add_service() helper function, among other things. Since Nagios is currently a single, monolithic scheduling process with global control structures, a call-back routine must observe the following rules of good citizenship: Always return control back to Nagios. Spend as little time as possible in the call-back routine; i.e., return control to Nagios as quickly as possible. Be careful when modifying the global control structures. Where possible, always use the existing Nagios helper functions provided to interact with the global control structures. Call-Back Registration (Subscribing to a Nagios Event Channel): Call back routines are registered with Nagios usually within the modules initialization function (nebmodule_init). Here is an example initialization routine which registers for service checks: static nebmodule *my_module_handle; int nebmodule_init (int flags, char *args, nebmodule *handle) { my_module_handle = handle; // Save our module handle in our own global variable well need it later // Register our service check event handler neb_register_callback(NEBCALLBACK_SERVICE_CHECK_DATA, handle, 0, ServiceCheckHandler); // Always return OK (zero) if your module initialized properly; // Otherwise, your module will not be loaded by Nagios. return OK; } // Our Service Check Call-Back Routine: static int ServiceCheckHandler (int callback_type, void *data) { // Cast the data structure to the appropriate data structure type nebstruct_service_check_data *ds = (nebstruct_service_check_data *)data; // Now we can access information about this service check that Nagios // is about to execute. For example: // // ds->host_name // ds->command_name // ds->command_args // Etc // // Appendix A contains a catalog of call-back-type-specific data structures. // Always return OK (zero) for success. Although the call-back return code // is currently ignored by Nagios, it may be utilized in the future. return OK; } There are a couple of things to notice about the above call back registration: The same event handler may be registered for multiple events. For example, we could have registered one event handler, say ObjectEventHandler, for both Host and Service checks, among others. What makes this possible is the fact that the call back routine receives the call-back type as the first parameter. This allows you to write a multi-event handler in the following manner: // Our Multi-Event Call-Back Routine: static int ObjectEventHandler (int callback_type, void *data) { // Invoke call-back-type-specific handling for this event: switch (callback_type) { case NEBCALLBACK_SYSTEM_COMMAND_DATA: handleSystemCommand((nebstruct_system_command_data *)data); break; case NEBCALLBACK_EVENT_HANDLER_DATA: handleEventHandler((nebstruct_event_handler_data *)data); break; case NEBCALLBACK_NOTIFICATION_DATA: handleNotification((nebstruct_notification_data *)data); break; case NEBCALLBACK_SERVICE_CHECK_DATA: handleServiceCheck((nebstruct_service_check_data *)data); break; case NEBCALLBACK_HOST_CHECK_DATA: handleHostCheck((nebstruct_host_check_data *)data); break; default: // Unknown: Did we register for this? write_to_logs_and_console(ObjectEventHandler: Unhandled event, NSLOG_RUNTIME_WARNING, TRUE); } // Always return OK (zero) for success. Although the call-back return code // is currently ignored by Nagios, it may be utilized in the future. return OK; } When the nebmodule_init routine registers a call-back function (i.e., subscribes to a Nagios Event Channel), it uses the following registration function: int neb_register_callback(int callback_type, void *mod_handle, int priority, int (*callback_func)(int,void *)); The parameters are: int callback_type;One of the thirty-one pre-defined callback types defined in the preceding Table of Call-Back Types. void *mod_handle;The module handle pointer that is passed into the nebmodule_init function by Nagios. int priority;An integer priority. This interesting item allows module writers to prioritize the chain of callback routines registered for a given event. That is, it lets you specify which callback routine gets called first, then second, third and so forth. For example, a callback routine registered for service checks with a priority of 1 will be invoked before another callback routine with priority 2. There is no min/max limitation on the range of priority values, except for the min/max size of an integer as defined by your OS (i.e., 32-bit ints vs. 64-bits ints). Priorities can be positive, zero or negative. int (*callback_func)(int, void *);This is a pointer to your callback routine. Notice that the callback routine is expected to return an integer result code; although it is currently neither examined nor used by Nagios. Also note that the call-back routine should expect to receive two input values: an integer callback_type (as discussed above,) and a void pointer which must be cast to the relevant, callback-type-specific data structure. Appendix A contains a catalog of call-back-type-specific data structures.  Also notice that the call-back routine is declared as static. In C programming, this ensures that the call-back function name is not visible outside of the source file in which it is declared. The reason for this is to avoid conflicts with function names within the global Nagios name space; i.e., it reduces global name space pollution and eliminates the possibility of a conflict between the name of your call-back functions and the names of any internal Nagios functions. Call-Back Routine Invocation: Earlier, we discussed the fact that when a call-back routine is invoked, it receives two parameters: static int myCallBackroutine (int callback_type, void *data); Since weve already discussed the meaning and values of the callback_type parameter, lets now dig a little deeper into the call-back type-specific data structure that is passed into each call-back routine as the second parameter: Although each data structure is unique to the call-back type it accompanies, there are several variables at the beginning of each data structure that are common to all of them. Looking at a subsection of the nebstruct_service_check_data structure as an example, we see that these variables are: /* service check structure */ typedef struct nebstruct_service_check_struct{ int type; int flags; int attr; struct timeval timestamp; (service-check-specific variables omitted) }nebstruct_service_check_data; The meaning and use of these common variables is detailed in the following table: Variable NameTypeDescriptiontypeintThis is arguably the most useful of the common variables. The purpose of the type variable is to give more detailed information about the call-back-type event. For example, when your call-back routine is registered for and receives the NEBCALLBACK_SYSTEM_COMMAND_DATA call-back type, the type variable will tell you whether Nagios is about to execute the system command (type == NEBTYPE_SYSTEM_COMMAND_START) or has just completed execution of the system command (type == NEBTYPE_SYSTEM_COMMAND_END). This is useful for perhaps dynamically modifying the command just before it is executed; or for receiving the results of the completed/timed-out command before Nagios acts upon them (although, with the way Nagios currently handles this call-back, there isnt really much you can do to override the result status of the command without modifying the Nagios sources directly.) As a further example, the NEBCALLBACK_DOWNTIME_DATA call-back type will set this type variable to let you know if the scheduled downtime is being added, deleted, loaded, started or stopped.flagsintCurrently, the flags variable is only used in conjunction with the NEBCALLBACK_PROCESS_DATA call-back type, usually to let you know whether a shutdown/restart was Nagios or User initiated. All other call-back types currently set this value to NEBFLAG_NONE (zero).attrintThe attr variable is used to provide further information about the event type specified in the type variable. It is currently only used in conjunction with three call-back types: NEBCALLBACK_PROCESS_DATA to tell you whether a shutdown/restart was normal or abnormal. NEBCALLBACK_FLAPPING_DATA to tell you whether flapping stopped normally or was disabled. NEBCALLBACK_DOWNTIME_DATA to tell you whether scheduled downtime stopped normally or was disabled. All other call-back types currently set this value to NEBATTR_NONE (zero).struct timevaltimestampThis is the time stamp that Nagios places on the event just prior to passing it to the call-back routines. It represents the current time in UNIX time. The timeval structure looks like: struct timeval { long tv_sec; /* seconds */ long tv_usec; /* microseconds */ }; and gives the number of seconds and microseconds since the Epoch. As an example of how one might use these common variables, lets re-visit our original service check call-back routine: // Our Service Check Call-Back Routine, Second Version: static int ServiceCheckHandler (int callback_type, void *data) { // Cast the data structure to the appropriate data structure type nebstruct_service_check_data *ds = (nebstruct_service_check_data *)data; char logMsg[1024]; // Used for formatting log messages // You can use the following Nagios global variable to identify // how many active service checks are currently running. extern int currently_running_service_checks; // Many of the members of the nebstruct_service_check_data structure are // simply copied from Nagios internal service structure. However, there // is other useful service information which is *not* copied. So, to // obtain direct access to this structure, we do the following: service *svc; if ((svc = find_service (ds->host_name, ds->service_description)) == NULL) { // ERROR This should never happen here: The service was not found sprintf(logMsg, ServiceCheckHandler: Could not find service %s for host %s, ds->host_name, ds->service_description); write_to_logs_and_console(logMsg, NSLOG_RUNTIME_WARNING, TRUE); return OK; } // Now, we can dynamically examine (or twiddle with,) the service definition. // // For example, lets see if this service check is accepting passive checks: if (svc->accept_passive_service_checks == FALSE) { // Nope, so lets change it. svc->accept_passive_service_checks = TRUE; } // Examples of other interesting items in the internal service structure: // // svc->next_check UNIX timestamp of when this service is next scheduled to execute // svc->checks_enabled TRUE/FALSE // svc->check_interval // svc->latency service latency (represented as a double variable) // Now, use the type common variable to see if we are being notified before or after // the service check execution: switch (ds->type) { case NEBTYPE_SERVICECHECK_INITIATE: // Now lets do something naughty and change the service check command // just BEFORE Nagios executes it. Note that at this point, Nagios has // already substituted-in all of the service check arguments. // // WARNING: The command_line buffer has a max size of MAX_COMMAND_BUFFER // (currently 8,192) bytes, so be sure not to overrun it! // // CAVEAT: Since multiple call-back routines may be registered for this // event, all call-back routines down-stream from us will now see this // modified command (instead of the original.) Furthermore, any one of // these down-stream call-back routines can also modify the command line // string, so unless you know for sure what all of your loaded NEB modules // are doing with this event, your command line changes may not survive! strncpy(ds->command_line, /usr/local/nagios/libexec/naughty.pl, MAX_COMMAND_BUFFER); ds->command_line[MAX_COMMAND_BUFFER-1] = \0; // Null-terminate for safety break; case NEBTYPE_SERVICECHECK_PROCESSED: // The service check command has been executed and its result has // been retrieved from the child process. No we can examine it. // // However, there is nothing we can do at this point, in this call- // back routine, to override the result that Nagios will use in // its processing (unless we modify the Nagios source file checks.c) // // The following example code does nothing useful, but provides some // examples of using the service data structure elements. // See if our current state is soft or hard. if (ds->state_type == SOFT_STATE) // do something about a soft state else // were in a hard state // Examine our current service state switch (ds->state) { case STATE_CRITICAL: // handle critical state break; case STATE_WARNING: // handle warning state break; case STATE_UNKNOWN: // handle unknown state break; case STATE_OK: // Everythings okie-dokie break; default: // Should never happen } // See if theres been a state change: // // NOTE: The data structure supplied by the NEB only // contains the current service state. To compare // against the previous service state, we have to appeal // to Nagios internal service structure (which we // located previously in this code example.) if (ds->state != svc->last_state) { // Weve had a state change! } break; case NEBTYPE_SERVICECHECK_RAW_START: // This has not been implemented as of Nagios 2.3 break; case NEBTYPE_SERVICECHECK_RAW_END: // This has not been implemented as of Nagios 2.3 break; default: // ERROR Weve received an unknown (to us) event type sprintf(logMsg, ServiceCheckHandler: Unknown event type for service %s for host %s, ds->host_name, ds->service_description); write_to_logs_and_console(logMsg, NSLOG_RUNTIME_WARNING, TRUE); return OK; } // Always return OK (zero) for success. Although the call-back return code // is currently ignored by Nagios, it may be utilized in the future. return OK; } Call-Back De-Registration (Unsubscribing to a Nagios Event Channel): When the nebmodule_deinit routine de-registers a call-back function (i.e., unsubscribes to a Nagios Event Channel), it uses the following de-registration function: int neb_deregister_callback(int callback_type, int (*callback_func)(int,void *)); The parameters are: int callback_type;One of the thirty-one pre-defined callback types defined in the preceding Table of Call-Back Types. int (*callback_func)(int, void *);This is a pointer to your callback routine. Notice that the callback routine is expected to return an integer result code; although it is currently neither examined nor used by Nagios. Also note that the call-back routine should expect to receive two input values: an integer callback_type (as discussed above,) and a void pointer which must be cast to the relevant, callback-type-specific data structure. Appendix A contains a catalog of call-back-type-specific data structures.  As noted earlier, call-back routines can also be registered and de-registered at any time within a call-back routine in your module. The Module Information Function There is one other NEB Module function that has not yet been discussed. It is used to register information about your module with Nagios: int neb_set_module_info(void *handle, int type, char *data); The parameters are: void *mod_handle;The module handle pointer that you received from Nagios in your nebmodule_init function. int type;This integer specifies which (of the six possible) pieces of module information you wish to set: Title, Author, Copyright, Version, License, Description. The table below gives both the integer and mnemonic representations you can use for this parameter. char *data;This is a string containing the information you wish Nagios to associate with your module.  IndexMnemonic0NEBMODULE_MODINFO_TITLE1NEBMODULE_MODINFO_AUTHOR2NEBMODULE_MODINFO_COPYRIGHT3NEBMODULE_MODINFO_VERSION4NEBMODULE_MODINFO_LICENSE5NEBMODULE_MODINFO_DESCTable of Module Information Types It would seem that a module writer would use this function in the nebmodule_init routine. Here are some examples of its use: neb_set_module_info(my_module_handle, NEBMODULE_MODINFO_TITLE, Demo NEB Module); neb_set_module_info(my_module_handle, NEBMODULE_MODINFO_AUTHOR, Joe Module-Writer); neb_set_module_info(my_module_handle, NEBMODULE_MODINFO_COPYRIGHT, 2006 JMW & Friends); neb_set_module_info(my_module_handle, NEBMODULE_MODINFO_VERSION, 1.0.0); neb_set_module_info(my_module_handle, NEBMODULE_MODINFO_LICENSE, GPL Version 2); neb_set_module_info(my_module_handle, NEBMODULE_MODINFO_DESC, A demonstration module); Currently, there appears to be no API function to enumerate the list of loaded modules nor is there a function to look-up a module by information type. However, the list of loaded modules is also global so, by way of example, we can perform the enumeration function in the following manner: static int neb_enum_modules (void) { extern nebmodule *neb_module_list; // The linked-list of NEB modules nebmodule *temp_module; // Temp pointer int nebmod_count = 0; // Count the number of active modules char logMsg[1024]; // Used for formatting log messages // Traverse the NEB Module List for(temp_module=neb_module_list;temp_module;temp_module=temp_module->next) { // Skip modules that are not loaded if(temp_module->is_currently_loaded==FALSE) continue; // Skip modules that do not have a valid handle if(temp_module->module_handle==NULL) continue; // Increment the active module counter nebmod_count++; // Log the module title - *if* its been set if (temp_module->info[NEBMODULE_MODINFO_TITLE] != NULL) sprintf(logMsg, Found module: %s, temp_module->info[NEBMODULE_MODINFO_TITLE]); else sprintf(logMsg, Found module: NoTitle #%d,nebmod_count); write_to_logs_and_console(logMsg, NSLOG_INFO_MESSAGE, TRUE); } return nebmod_count; // Return the number of active modules } Likewise, we can implement a module lookup function in the following manner: static nebmodule *neb_find_module (int type, char *data) { extern nebmodule *neb_module_list; // The linked-list of NEB modules nebmodule *temp_module; // Temp pointer // Validate our parameters if (type < 0 || type > NEBMODULE_MODINFO_NUMITEMS || !data) { write_to_logs_and_console(neb_find_module: Invalid type or data parameter, NSLOG_RUNTIME_WARNING, TRUE); return OK; } // Traverse the NEB Module List for(temp_module=neb_module_list;temp_module;temp_module=temp_module->next) { // Skip modules that are not loaded if(temp_module->is_currently_loaded==FALSE) continue; // Skip modules that do not have a valid handle if(temp_module->module_handle==NULL) continue; // Compare the desired module information type if (temp_module->info[type] != NULL && !strcmp(temp_module->info[type], data)) break; // Success: We have a match } return temp_module; // Return a pointer to the module, if found; NULL otherwise } NEB API Summary In summary, the current NEB Module writers API officially consists of the following five functions: NEB FunctionPurposenemodule_initYour Modules Initialization Routinenebmodule_deinitYour Modules De-Initialization Routineneb_register_callbackUsed to subscribe to Nagios Event Channelsneb_deregister_callbackUsed to Unsubscribe to Nagios Event Channelsneb_set_module_infoUsed to register information about your module with Nagios I say officially since, unofficially, the module writer is free to invoke any of the internal Nagios routines to examine, modify or otherwise interact with the Nagios engine. Obviously, extreme care should be taken when utilizing any of the internal Nagios functions or directly accessing global Nagios data structures since, without a reasonable knowledge of Nagios inner-workings, bad-things can happen with regard to the stability and integrity of the Nagios engine. In order to present a view of the available Nagios global data structures and internal functions, I have created Appendix B in this document; which serves to catalog and discuss both the global Nagios data structures and the internal Helper Routines that operate on them. Appendix A: Catalog of NEB Call-Back Types and their Associated Data Structures Purpose This table presents a catalog of each of the NEB Call-Back Types (Nagios Event Channels) and any relevant information associated with them. Note that, when describing the associated data structure for a Call-Back Type, the common variables (i.e., common to all call-back data structures,) are not explained, since they have the same purpose regardless of Call-Back Type: Variable NameTypeDescriptiontypeintThis is arguably the most useful of the common variables. The purpose of the type variable is to give more detailed information about the call-back-type event. For example, when your call-back routine is registered for and receives the NEBCALLBACK_SYSTEM_COMMAND_DATA call-back type, the type variable will tell you whether Nagios is about to execute the system command (type == NEBTYPE_SYSTEM_COMMAND_START) or has just completed execution of the system command (type == NEBTYPE_SYSTEM_COMMAND_END). This is useful for perhaps dynamically modifying the command just before it is executed; or for receiving the results of the completed/timed-out command before Nagios acts upon them (although, with the way Nagios currently handles this call-back, there isnt really much you can do to override the result status of the command without modifying the Nagios sources directly.) As a further example, the NEBCALLBACK_DOWNTIME_DATA call-back type will set this type variable to let you know if the scheduled downtime is being added, deleted, loaded, started or stopped.flagsintCurrently, the flags variable is only used in conjunction with the NEBCALLBACK_PROCESS_DATA call-back type, usually to let you know whether a shutdown/restart was Nagios or User initiated. All other call-back types currently set this value to NEBFLAG_NONE (zero).attrintThe attr variable is used to provide further information about the event type specified in the type variable. It is currently only used in conjunction with three call-back types: NEBCALLBACK_PROCESS_DATA to tell you whether a shutdown/restart was normal or abnormal. NEBCALLBACK_FLAPPING_DATA to tell you whether flapping stopped normally or was disabled. NEBCALLBACK_DOWNTIME_DATA to tell you whether scheduled downtime stopped normally or was disabled. All other call-back types currently set this value to NEBATTR_NONE (zero).struct timevaltimestampThis is the time stamp that Nagios places on the event just prior to passing it to the call-back routines. It represents the current time in UNIX time. The timeval structure looks like: struct timeval { long tv_sec; /* seconds */ long tv_usec; /* microseconds */ }; and gives the number of seconds and microseconds since the Epoch. A.0 NEBCALLBACK_RESERVED0 Description This Call-Back type is reserved for future use. Data Structure N/A Invocation N/A Relevant Internal Structures N/A Examples N/A A.1 NEBCALLBACK_RESERVED1 Description This Call-Back type is reserved for future use. Data Structure N/A Invocation N/A Relevant Internal Structures N/A Examples N/A A.2 NEBCALLBACK_RESERVED2 Description This Call-Back type is reserved for future use. Data Structure N/A Invocation N/A Relevant Internal Structures N/A Examples N/A A.3 NEBCALLBACK_RESERVED3 Description This Call-Back type is reserved for future use. Data Structure N/A Invocation N/A Relevant Internal Structures N/A Examples N/A A.4 NEBCALLBACK_RESERVED4 Description This Call-Back type is reserved for future use. Data Structure N/A Invocation N/A Relevant Internal Structures N/A Examples N/A A.5 NEBCALLBACK_RAW_DATA Description This Call-Back type is not implemented. Data Structure N/A Invocation N/A Relevant Internal Structures N/A Examples N/A A.6 NEBCALLBACK_NEB_DATA Description This Call-Back type is not implemented. Data Structure N/A Invocation N/A Relevant Internal Structures N/A Examples N/A A.7 NEBCALLBACK_PROCESS_DATA Description This Call-Back Type delivers events relevant to the operation of the main Nagios process (e.g., startup, initialization, shutdown, abend, etc.) Data Structure /* process data structure */ typedef struct nebstruct_process_struct{ int type; int flags; int attr; struct timeval timestamp; }nebstruct_process_data; Invocation Note: The following Event Types have been arranged in the chronological order in which they will be delivered to your Call-Back routine during a normal start-up (i.e., no abends.) Event TypesFlagsAttributesDescriptionNEBTYPE_PROCESS_PRELAUNCHNEBFLAG_NONENEBATTR_NONECalled prior to reading/parsing the object configuration files.NEBTYPE_PROCESS_STARTNEBFLAG_NONENEBATTR_NONECalled after reading all configuration objects and after passing the pre-flight check. Called before entering daemon mode, opening command pipe, starting worker threads, initializing the status, comments, downtime, performance and initial host/service state structures.NEBTYPE_PROCESS_DAEMONIZENEBFLAG_NONENEBATTR_NONECalled right after Nagios successfully daemonizes; that is, detaches from the controlling terminal and is running in the background.NEBTYPE_PROCESS_EVENTLOOPSTARTNEBFLAG_NONENEBATTR_NONECalled immediately prior to entering the main event execution loopNEBTYPE_PROCESS_EVENTLOOPENDNEBFLAG_NONENEBATTR_NONECalled immediately after exiting the main event execution loop (due to either a shutdown or restart.)NEBTYPE_PROCESS_SHUTDOWNNEBFLAG_PROCESS_INITIATED NEBFLAG_USER_INITIATEDNEBATTR_SHUTDOWN_NORMAL NEBATTR_SHUTDOWN_ABNORMALInvoked if exiting due to either a process initiated (abnormal) or a user-initiated (normal) shutdown.NEBTYPE_PROCESS_RESTARTNEBFLAG_USER_INITIATEDNEBATTR_RESTART_NORMALInvoked if exiting due to a user-initiated restart. Always invoked after NEBTYPE_PROCESS_ EVENTLOOPEND. Relevant Internal Structures N/A Examples None. A.8 NEBCALLBACK_TIMED_EVENT_DATA Description Notifies a call-back routine of timed-event events. Since Nagios is, at its core, one big timed-event-driven loop, all actions taken by Nagios are considered timed events. Therefore, a call-back routine registered for this Call-Back Type will be invoked quite often. Data Structure /* timed event data structure */ typedef struct nebstruct_timed_event_struct{ int type; int flags; int attr; struct timeval timestamp; int event_type; int recurring; time_t run_time; void *event_data; }nebstruct_timed_event_data; Variable NameTypeDescriptionevent_typeintDefines the type of event being added, deleted, executed, etc. See the Table of event_types below.recurringintBoolean (TRUE or FALSE). Determines whether the event is automatically re-scheduled by Nagios after it is executed.run_timetime_tThe time at which this event is next scheduled to run (in UNIX time).event_datavoid *Point to an event-specific data that the event will use when it executes. See the Table of event_types below. Event IDMnemonicDescriptionEvent_Data0EVENT_SERVICE_CHECKactive service checkPointer to internal Nagios service structure1EVENT_COMMAND_CHECKexternal command checkNone2EVENT_LOG_ROTATIONlog file rotationNone3EVENT_PROGRAM_SHUTDOWNprogram shutdownNone4EVENT_PROGRAM_RESTARTprogram restartNone5EVENT_SERVICE_REAPERreaps results from service checksNone6EVENT_ORPHAN_CHECKchecks for orphaned service checksNone7EVENT_RETENTION_SAVEsave (dump) retention dataNone8EVENT_STATUS_SAVEsave (dump) status dataNone9EVENT_SCHEDULED_DOWNTIMEscheduled host or service downtimePointer to internal Nagios downtime structure10EVENT_SFRESHNESS_CHECKchecks service result "freshness"None11EVENT_EXPIRE_DOWNTIMEchecks for (and removes) expired scheduled downtimeNone12EVENT_HOST_CHECKactive host checkPointer to internal Nagios host structure13EVENT_HFRESHNESS_CHECKchecks host result "freshness"None14EVENT_RESCHEDULE_CHECKSadjust scheduling of host and service checksNone15EVENT_EXPIRE_COMMENTremoves expired commentsPointer to a newly assigned comment_id (unsigned long)98EVENT_SLEEPasynchronous sleep event that occurs when event queues are emptyPointer to a struct timespec called delay, which is the amount of time to sleep.99EVENT_USER_FUNCTIONUSER-defined function (modules)User defined (i.e., whatever you want.) Table of event_types Invocation Event TypesFlagsAttributesDescriptionNEBTYPE_TIMEDEVENT_ADDNEBFLAG_NONENEBATTR_NONEA timed event has just been added to one of the global event lists (high priority or low priority)NEBTYPE_TIMEDEVENT_REMOVENEBFLAG_NONENEBATTR_NONEA timed event has been removed from one of the global event listsNEBTYPE_TIMEDEVENT_EXECUTENEBFLAG_NONENEBATTR_NONEA timed event is just about to execute.NEBTYPE_TIMEDEVENT_DELAYNEBFLAG_NONENEBATTR_NONENot implementedNEBTYPE_TIMEDEVENT_SKIPNEBFLAG_NONENEBATTR_NONENot implementedNEBTYPE_TIMEDEVENT_SLEEPNEBFLAG_NONENEBATTR_NONEThe Nagios scheduler is about to go into a timed sleep due to idleness. Relevant Internal Structures Nagios keeps two timed event lists: a high priority list and a low priority list. They are defined globally as: timed_event *event_list_low; timed_event *event_list_high; A timed_event structure is defined as: typedef struct timed_event_struct{ int event_type; time_t run_time; int recurring; unsigned long event_interval; int compensate_for_time_change; void *timing_func; void *event_data; void *event_args; struct timed_event_struct *next; }timed_event; Examples Scheduling an event on one of these two lists is accomplished via the following internal function: int schedule_new_event(int event_type, int high_priority, time_t run_time, int recurring, unsigned long event_interval, void *timing_func, int compensate_for_time_change, void *event_data, void *event_args); Removing a scheduled event is accomplished via the following internal function: int deschedule_event(int event_type, int high_priority, void *event_data, void *event_args) A.9 NEBCALLBACK_LOG_DATA Description Provides a copy of log entries to call-back routines. Note that this call-back is invoked just after the entry has been written to the Nagios log file. Data Structure /* log data structure */ typedef struct nebstruct_log_struct{ int type; int flags; int attr; struct timeval timestamp; time_t entry_time; int data_type; char *data; }nebstruct_log_data; Variable NameTypeDescriptionentry_timetime_tTime stamp of entry in the log file (in UNIX time)data_typeintUsed to classify the source and/or severity of the log entry. See the Log Data Type table below. Notice that the log data types are defined as bit fields. This allows Nagios to filter which types of messages get written to the Nagios log file. Usually, the data_type variable will hold just one of the defined log data types; but it is possible that you may see multiple log data type values bitwise OR-ed together (if theres an error from the service check result worker thread.)datachar *Message string that was written to the log file Table of Log Data Types IDMnemonic1NSLOG_RUNTIME_ERROR2NSLOG_RUNTIME_WARNING4NSLOG_VERIFICATION_ERROR8NSLOG_VERIFICATION_WARNING16NSLOG_CONFIG_ERROR32NSLOG_CONFIG_WARNING64NSLOG_PROCESS_INFO128NSLOG_EVENT_HANDLER256Unused512NSLOG_EXTERNAL_COMMAND1024NSLOG_HOST_UP2048NSLOG_HOST_DOWN4096NSLOG_HOST_UNREACHABLE8192NSLOG_SERVICE_OK16384NSLOG_SERVICE_UNKNOWN32768NSLOG_SERVICE_WARNING65536NSLOG_SERVICE_CRITICAL131072NSLOG_PASSIVE_CHECK262144NSLOG_INFO_MESSAGE524288NSLOG_HOST_NOTIFICATION1048576NSLOG_SERVICE_NOTIFICATION Invocation Event TypesFlagsAttributesDescriptionNEBTYPE_LOG_DATANEBFLAG_NONENEBATTR_NONENEBTYPE_LOG_ROTATIONNEBFLAG_NONENEBATTR_NONE Relevant Internal Structures Global StructureTypeDescriptionextern char *log_filestringName of the Nagios log fileextern char *log_archive_pathstringPath to log archive directoryextern int use_syslogbooleanEnable/Disables writing log entries to the syslogextern int log_service_retriesbooleanEnables/Disable logging soft service statesextern int log_initial_statesbooleanEnables/Disables logging initial host/service statesextern unsigned long logging_optionsbit-fieldA filter which defines which log data types will be written to the Nagios log fileextern unsigned long syslog_optionbit-fieldA filter which defines which log data types will be written to the syslog fileextern time_t last_log_rotationtimeTime of last log file rotationextern int log_rotation_methodenumLog rotation method See the Log Rotation Method table below. Log Rotation Method Table IDMnemonic0LOG_ROTATION_NONE1LOG_ROTATION_HOURLY2LOG_ROTATION_DAILY3LOG_ROTATION_WEEKLY4LOG_ROTATION_MONTHLY Examples None. A.10 NEBCALLBACK_SYSTEM_COMMAND_DATA Description Notifies a call-back routine both before and after each system command is executed. A system command is an external command that is run by Nagios to satisfy one of the following events: Executing an obsessive service check command Executing an obsessive host check command Executing the global service event handler Executing a service event handler Executing the global host event handler Executing a host event handler Executing a service contact notification command Executing a host contact notification command Data Structure /* system command structure */ typedef struct nebstruct_system_command_struct{ int type; int flags; int attr; struct timeval timestamp; struct timeval start_time; struct timeval end_time; int timeout; char *command_line; int early_timeout; double execution_time; int return_code; char *output; }nebstruct_system_command_data; Variable NameTypeDescriptionstart_timetimevalTime that the command started (in UNIX time)end_timetimevalTime that the command ended (in UNIX time). Only valid for event_type NEBTYPE_SYSTEM_COMMAND_END.timeoutintMaximum number of seconds to allow for this command to execute.command_linechar *The command to be executed.early_timeoutintBoolean. Set to TRUE if there was a critical return code and no output AND the command time exceeded the timeout thresholds. Only valid for event_type NEBTYPE_SYSTEM_COMMAND_END.execution_timedoubleElapsed execution in milliseconds. Only valid for event_type NEBTYPE_SYSTEM_COMMAND_END.return_codeintReturn Code: STATE_OK (0), STATE_WARNING (1), STATE_CRITICAL (2) or STATE_UNKNOWN (3). Only valid for event_type NEBTYPE_SYSTEM_COMMAND_END.outputchar *Command output string. Only valid for event_type NEBTYPE_SYSTEM_COMMAND_END. Invocation Event TypesFlagsAttributesDescriptionNEBTYPE_SYSTEM_COMMAND_STARTNEBFLAG_NONENEBATTR_NONEInvoked just prior to starting a new process (fork) to execute a system command.NEBTYPE_SYSTEM_COMMAND_ENDNEBFLAG_NONENEBATTR_NONEInvoked after the systems command has completed and its results collected. Relevant Internal Structures None. Examples System commands are executed via the internal function: int my_system(char *cmd,int timeout,int *early_timeout,double *exectime,char *output,int output_length); Where: Variable NameTypeDescriptioncmdchar *[INPUT] Fully-qualified command to execute.timeoutint[INPUT] Maximum number of seconds to allow for this command to execute.early_timeoutint *[OUTPUT] Boolean. Set to TRUE if there was a critical return code and no output AND the command time exceeded the timeout thresholds.exectimedouble *[OUTPUT] Elapsed execution in milliseconds.outputchar *[OUTPUT] Command output string. Note: This is expected to be a pre-allocated string buffer.output_lengthint[INPUT] Pre-allocated size of the output buffer in bytes. The return value is the result code from the executed command and is one of: STATE_OK (0), STATE_WARNING (1), STATE_CRITICAL (2) or STATE_UNKNOWN (3). A.11 NEBCALLBACK_EVENT_HANDLER_DATA Description Notifies a call-back routine before and after an event handler is executed. Nagios invokes this call-back for the following four event handlers: Global Service Event Handler Service Event Handler Global Host Event Handler Host Event Handler Data Structure /* event handler structure */ typedef struct nebstruct_event_handler_struct{ int type; int flags; int attr; struct timeval timestamp; int eventhandler_type; char *host_name; char *service_description; int state_type; int state; int timeout; char *command_name; char *command_args; char *command_line; struct timeval start_time; struct timeval end_time; int early_timeout; double execution_time; int return_code; char *output; }nebstruct_event_handler_data; Variable NameTypeDescriptioneventhandler_typeintIdentifies which of the four types of event handler. See the Event Handler Type table below.host_namechar *Host nameservice_descriptionchar *Service descriptionstate_typeintHost/Service State Type: SOFT_STATE (0) or HARD_STATE (1)stateintHost/Service State. See the Host/Service State table below.timeoutintMaximum number of seconds to allow for this command to execute.command_namechar *The commands name.command_argschar *The commands arguments (separated by exclamation points)command_linechar *The full, processed command line (i.e., after parameter substitution) Only valid for event_type NEBTYPE_EVENTHANDLER_END.start_timetimevalTime that the command started (in UNIX time)end_timetimevalTime that the command ended (in UNIX time). Only valid for event_type NEBTYPE_EVENTHANDLER_END.early_timeoutintBoolean. Set to TRUE if there was a critical return code and no output AND the command time exceeded the timeout thresholds. Only valid for event_type NEBTYPE_EVENTHANDLER_END.execution_timedoubleElapsed execution in milliseconds. Only valid for event_type NEBTYPE_EVENTHANDLER_END.return_codeintReturn Code: STATE_OK (0), STATE_WARNING (1), STATE_CRITICAL (2) or STATE_UNKNOWN (3). Only valid for event_type NEBTYPE_EVENTHANDLER_END.outputchar *Command output string. Only valid for event_type NEBTYPE_EVENTHANDLER_END. Event Handler Type Table IDMnemonic0HOST_EVENTHANDLER1SERVICE_EVENTHANDLER2GLOBAL_HOST_EVENTHANDLER3GLOBAL_SERVICE_EVENTHANDLER Host State Table IDMnemonic0HOST_UP1HOST_DOWN2HOST_UNREACHABLE Service State Table IDMnemonic0STATE_OK1STATE_WARNING2STATE_CRITICAL3STATE_UNKNOWN Invocation Event TypesFlagsAttributesDescriptionNEBTYPE_EVENTHANDLER_STARTNEBFLAG_NONENEBATTR_NONEAn event handler is about to be executed.NEBTYPE_EVENTHANDLER_ENDNEBFLAG_NONENEBATTR_NONEAn event handler has completed execution Relevant Internal Structures Global StructureTypeDescriptionextern int enable_event_handlersbooleanEnable/Disable event handlersextern int log_event_handlersbooleanEnable/Disable logging of event handler eventsextern int event_handler_timeoutvalueMaximum number of seconds to allow for event handlers to execute.extern char *global_host_event_handlerstringGlobal host event handler command string.extern char *global_service_event_handlerstringGlobal service event handler command string. Examples None. A.12 NEBCALLBACK_NOTIFICATION_DATA Description Data Structure /* notification data structure */ typedef struct nebstruct_notification_struct{ int type; int flags; int attr; struct timeval timestamp; int notification_type; struct timeval start_time; struct timeval end_time; char *host_name; char *service_description; int reason_type; int state; char *output; char *ack_author; char *ack_data; int escalated; int contacts_notified; }nebstruct_notification_data; Invocation Event TypesFlagsAttributesDescriptionNEBTYPE_NOTIFICATION_STARTNEBFLAG_NONENEBATTR_NONENEBTYPE_NOTIFICATION_ENDNEBFLAG_NONENEBATTR_NONENEBTYPE_CONTACTNOTIFICATION_STARTNEBFLAG_NONENEBATTR_NONENEBTYPE_CONTACTNOTIFICATION_ENDNEBFLAG_NONENEBATTR_NONENEBTYPE_CONTACTNOTIFICATIONMETHOD_STARTNEBFLAG_NONENEBATTR_NONENEBTYPE_CONTACTNOTIFICATIONMETHOD_ENDNEBFLAG_NONENEBATTR_NONE Relevant Internal Structures Examples A.13 NEBCALLBACK_SERVICE_CHECK_DATA Description Data Structure /* service check structure */ typedef struct nebstruct_service_check_struct{ int type; int flags; int attr; struct timeval timestamp; char *host_name; char *service_description; int check_type; int current_attempt; int max_attempts; int state_type; int state; int timeout; char *command_name; char *command_args; char *command_line; struct timeval start_time; struct timeval end_time; int early_timeout; double execution_time; double latency; int return_code; char *output; char *perf_data; }nebstruct_service_check_data; Invocation Event TypesFlagsAttributesDescriptionNEBTYPE_SERVICECHECK_INITIATENEBFLAG_NONENEBATTR_NONENEBTYPE_SERVICECHECK_PROCESSEDNEBFLAG_NONENEBATTR_NONENEBTYPE_SERVICECHECK_RAW_STARTNEBFLAG_NONENEBATTR_NONENot implemented.NEBTYPE_SERVICECHECK_RAW_ENDNEBFLAG_NONENEBATTR_NONENot implemented Relevant Internal Structures Examples A.14 NEBCALLBACK_HOST_CHECK_DATA Description Data Structure /* host check structure */ typedef struct nebstruct_host_check_struct{ int type; int flags; int attr; struct timeval timestamp; char *host_name; int current_attempt; int check_type; int max_attempts; int state_type; int state; int timeout; char *command_name; char *command_args; char *command_line; struct timeval start_time; struct timeval end_time; int early_timeout; double execution_time; double latency; int return_code; char *output; char *perf_data; }nebstruct_host_check_data; Invocation Event TypesFlagsAttributesDescriptionNEBTYPE_HOSTCHECK_INITIATENEBFLAG_NONENEBATTR_NONEA check of the route to the host has been initiatedNEBTYPE_HOSTCHECK_PROCESSEDNEBFLAG_NONENEBATTR_NONEThe processed/final result of a host checkNEBTYPE_HOSTCHECK_RAW_STARTNEBFLAG_NONENEBATTR_NONEThe start of a "raw" host checkNEBTYPE_HOSTCHECK_RAW_ENDNEBFLAG_NONENEBATTR_NONEA finished "raw" host check. Relevant Internal Structures Examples A.15 NEBCALLBACK_COMMENT_DATA Description Data Structure /* comment data structure */ typedef struct nebstruct_comment_struct{ int type; int flags; int attr; struct timeval timestamp; int comment_type; char *host_name; char *service_description; time_t entry_time; char *author_name; char *comment_data; int persistent; int source; int entry_type; int expires; time_t expire_time; unsigned long comment_id; }nebstruct_comment_data; Invocation Event TypesFlagsAttributesDescriptionNEBTYPE_COMMENT_ADDNEBFLAG_NONENEBATTR_NONENEBTYPE_COMMENT_DELETENEBFLAG_NONENEBATTR_NONENEBTYPE_COMMENT_LOADNEBFLAG_NONENEBATTR_NONE Relevant Internal Structures Examples A.16 NEBCALLBACK_DOWNTIME_DATA Description Data Structure /* downtime data structure */ typedef struct nebstruct_downtime_struct{ int type; int flags; int attr; struct timeval timestamp; int downtime_type; char *host_name; char *service_description; time_t entry_time; char *author_name; char *comment_data; time_t start_time; time_t end_time; int fixed; unsigned long duration; unsigned long triggered_by; unsigned long downtime_id; }nebstruct_downtime_data; Invocation Event TypesFlagsAttributesDescriptionNEBTYPE_DOWNTIME_ADDNEBFLAG_NONENEBATTR_NONENEBTYPE_DOWNTIME_DELETENEBFLAG_NONENEBATTR_NONENEBTYPE_DOWNTIME_LOADNEBFLAG_NONENEBATTR_NONENEBTYPE_DOWNTIME_STARTNEBFLAG_NONENEBATTR_NONENEBTYPE_DOWNTIME_STOPNEBFLAG_NONENEBATTR_NONE Relevant Internal Structures Examples A.17 NEBCALLBACK_FLAPPING_DATA Description Data Structure /* flapping data structure */ typedef struct nebstruct_flapping_struct{ int type; int flags; int attr; struct timeval timestamp; int flapping_type; char *host_name; char *service_description; double percent_change; double high_threshold; double low_threshold; unsigned long comment_id; }nebstruct_flapping_data; Invocation Event TypesFlagsAttributesDescriptionNEBTYPE_FLAPPING_STARTNEBFLAG_NONENEBATTR_NONENEBTYPE_FLAPPING_STOPNEBFLAG_NONENEBATTR_NONE Relevant Internal Structures Examples A.18 NEBCALLBACK_PROGRAM_STATUS_DATA Description Data Structure /* program status structure */ typedef struct nebstruct_program_status_struct{ int type; int flags; int attr; struct timeval timestamp; time_t program_start; int pid; int daemon_mode; time_t last_command_check; time_t last_log_rotation; int notifications_enabled; int active_service_checks_enabled; int passive_service_checks_enabled; int active_host_checks_enabled; int passive_host_checks_enabled; int event_handlers_enabled; int flap_detection_enabled; int failure_prediction_enabled; int process_performance_data; int obsess_over_hosts; int obsess_over_services; unsigned long modified_host_attributes; unsigned long modified_service_attributes; char *global_host_event_handler; char *global_service_event_handler; }nebstruct_program_status_data; Invocation Event TypesFlagsAttributesDescriptionNEBTYPE_PROGRAMSTATUS_UPDATENEBFLAG_NONENEBATTR_NONE Relevant Internal Structures Examples A.19 NEBCALLBACK_HOST_STATUS_DATA Description Data Structure /* host status structure */ typedef struct nebstruct_host_status_struct{ int type; int flags; int attr; struct timeval timestamp; void *object_ptr; }nebstruct_host_status_data; Invocation Event TypesFlagsAttributesDescriptionNEBTYPE_HOSTSTATUS_UPDATENEBFLAG_NONENEBATTR_NONE Relevant Internal Structures Examples A.20 NEBCALLBACK_SERVICE_STATUS_DATA Description Data Structure /* service status structure */ typedef struct nebstruct_service_status_struct{ int type; int flags; int attr; struct timeval timestamp; void *object_ptr; }nebstruct_service_status_data; Invocation Event TypesFlagsAttributesDescriptionNEBTYPE_SERVICESTATUS_UPDATENEBFLAG_NONENEBATTR_NONE Relevant Internal Structures Examples A.21 NEBCALLBACK_ADAPTIVE_PROGRAM_DATA Description Data Structure /* adaptive program data structure */ typedef struct nebstruct_adaptive_program_data_struct{ int type; int flags; int attr; struct timeval timestamp; int command_type; unsigned long modified_host_attribute; unsigned long modified_host_attributes; unsigned long modified_service_attribute; unsigned long modified_service_attributes; char *global_host_event_handler; char *global_service_event_handler; }nebstruct_adaptive_program_data; Invocation Event TypesFlagsAttributesDescriptionNEBTYPE_ADAPTIVEPROGRAM_UPDATENEBFLAG_NONENEBATTR_NONE Relevant Internal Structures Examples A.22 NEBCALLBACK_ADAPTIVE_HOST_DATA Description Data Structure /* adaptive host data structure */ typedef struct nebstruct_adaptive_host_data_struct{ int type; int flags; int attr; struct timeval timestamp; int command_type; unsigned long modified_attribute; unsigned long modified_attributes; void *object_ptr; }nebstruct_adaptive_host_data; Invocation Event TypesFlagsAttributesDescriptionNEBTYPE_ADAPTIVEHOST_UPDATENEBFLAG_NONENEBATTR_NONE Relevant Internal Structures Examples A.23 NEBCALLBACK_ADAPTIVE_SERVICE_DATA Description Data Structure /* adaptive service data structure */ typedef struct nebstruct_adaptive_service_data_struct{ int type; int flags; int attr; struct timeval timestamp; int command_type; unsigned long modified_attribute; unsigned long modified_attributes; void *object_ptr; }nebstruct_adaptive_service_data; Invocation Event TypesFlagsAttributesDescriptionNEBTYPE_ADAPTIVESERVICE_UPDATENEBFLAG_NONENEBATTR_NONE Relevant Internal Structures Examples A.24 NEBCALLBACK_EXTERNAL_COMMAND_DATA Description Data Structure /* external command data structure */ typedef struct nebstruct_external_command_struct{ int type; int flags; int attr; struct timeval timestamp; int command_type; time_t entry_time; char *command_string; char *command_args; }nebstruct_external_command_data; Invocation Event TypesFlagsAttributesDescriptionNEBTYPE_EXTERNALCOMMAND_STARTNEBFLAG_NONENEBATTR_NONENEBTYPE_EXTERNALCOMMAND_ENDNEBFLAG_NONENEBATTR_NONE Relevant Internal Structures Examples A.25 NEBCALLBACK_AGGREGATED_STATUS_DATA Description Data Structure /* aggregated status data structure */ typedef struct nebstruct_aggregated_status_struct{ int type; int flags; int attr; struct timeval timestamp; }nebstruct_aggregated_status_data; Invocation Event TypesFlagsAttributesDescriptionNEBTYPE_AGGREGATEDSTATUS_STARTDUMPNEBFLAG_NONENEBATTR_NONENEBTYPE_AGGREGATEDSTATUS_ENDDUMPNEBFLAG_NONENEBATTR_NONE Relevant Internal Structures Examples A.26 NEBCALLBACK_RETENTION_DATA Description Data Structure /* retention data structure */ typedef struct nebstruct_retention_struct{ int type; int flags; int attr; struct timeval timestamp; }nebstruct_retention_data; Invocation Event TypesFlagsAttributesDescriptionNEBTYPE_RETENTIONDATA_STARTLOADNEBFLAG_NONENEBATTR_NONENEBTYPE_RETENTIONDATA_ENDLOADNEBFLAG_NONENEBATTR_NONENEBTYPE_RETENTIONDATA_STARTSAVENEBFLAG_NONENEBATTR_NONENEBTYPE_RETENTIONDATA_ENDSAVENEBFLAG_NONENEBATTR_NONE Relevant Internal Structures Examples A.27 NEBCALLBACK_CONTACT_NOTIFICATION_DATA Description Data Structure /* contact notification data structure */ typedef struct nebstruct_contact_notification_struct{ int type; int flags; int attr; struct timeval timestamp; int notification_type; struct timeval start_time; struct timeval end_time; char *host_name; char *service_description; char *contact_name; int reason_type; int state; char *output; char *ack_author; char *ack_data; int escalated; }nebstruct_contact_notification_data; Invocation Event TypesFlagsAttributesDescriptionNEBTYPE_NOTIFICATION_STARTNEBFLAG_NONENEBATTR_NONENEBTYPE_NOTIFICATION_ENDNEBFLAG_NONENEBATTR_NONENEBTYPE_CONTACTNOTIFICATION_STARTNEBFLAG_NONENEBATTR_NONENEBTYPE_CONTACTNOTIFICATION_ENDNEBFLAG_NONENEBATTR_NONE Relevant Internal Structures Examples A.28 NEBCALLBACK_CONTACT_NOTIFICATION_METHOD_DATA Description Data Structure /* contact notification method data structure */ typedef struct nebstruct_contact_notification_method_struct{ int type; int flags; int attr; struct timeval timestamp; int notification_type; struct timeval start_time; struct timeval end_time; char *host_name; char *service_description; char *contact_name; char *command_name; char *command_args; int reason_type; int state; char *output; char *ack_author; char *ack_data; int escalated; }nebstruct_contact_notification_method_data; Invocation Event TypesFlagsAttributesDescriptionNEBTYPE_CONTACTNOTIFICATIONMETHOD_STARTNEBFLAG_NONENEBATTR_NONENEBTYPE_CONTACTNOTIFICATIONMETHOD_ENDNEBFLAG_NONENEBATTR_NONE Relevant Internal Structures Examples A.29 NEBCALLBACK_ACKNOWLEDGEMENT_DATA Description Data Structure /* acknowledgement structure */ typedef struct nebstruct_acknowledgement_struct{ int type; int flags; int attr; struct timeval timestamp; int acknowledgement_type; char *host_name; char *service_description; int state; char *author_name; char *comment_data; int is_sticky; int persistent_comment; int notify_contacts; }nebstruct_acknowledgement_data; Invocation Event TypesFlagsAttributesDescriptionNEBTYPE_ACKNOWLEDGEMENT_ADDNEBFLAG_NONENEBATTR_NONENEBTYPE_ACKNOWLEDGEMENT_REMOVENEBFLAG_NONENEBATTR_NONENEBTYPE_ACKNOWLEDGEMENT_LOADNEBFLAG_NONENEBATTR_NONE Relevant Internal Structures Examples A.30 NEBCALLBACK_STATE_CHANGE_DATA Description Data Structure /* state change structure */ typedef struct nebstruct_statechange_struct{ int type; int flags; int attr; struct timeval timestamp; int statechange_type; char *host_name; char *service_description; int state; int state_type; int current_attempt; int max_attempts; char *output; }nebstruct_statechange_data; Invocation Event TypesFlagsAttributesDescriptionNEBTYPE_STATECHANGE_STARTNEBFLAG_NONENEBATTR_NONENEBTYPE_STATECHANGE_ENDNEBFLAG_NONENEBATTR_NONE Relevant Internal Structures Examples Appendix B: Catalog of Global NagiosData Structures B.1 TBA  &'(56: <  % : ? E M o  D 3 Žwl]ljhH{hH{CJUaJhH{hH{CJaJhH{h7'856>*hH{hH{56>*hH{CJaJhTCJaJh*CJaJhy,CJaJh(CJaJh7'8CJaJh7ZCJaJh7'8h7Z56>*CJaJhGCJaJh7'856CJaJhqhG56CJaJh7Z56CJaJ$'(56bc C D 2 3  $h^ha$gdoF $ & Fa$gdoF$a$gdoF$a$gd|B @NSimгЧyqyyqy`UyqyqyMqh]mCJaJhF1hF1CJaJ hE0hF1CJOJQJ^JaJh CJaJhF1CJaJhtUCJaJh]mhtU56>*CJaJh]mh7'856>*CJaJhH{56>*CJaJhH{hH{56CJaJhH{hH{56>*CJaJhH{CJaJhH{hH{CJaJhH{hH{0JCJaJjhH{hH{CJUaJikd$$IflF8 $ ) t06    44 la$If qkkk$Ifkdu$$IflF8 $ ) t06    44 laqoooooggggg$a$gdQdkd$$IflF8 $ ) t06    44 la m);IJnD]67junɾ𶮶yjbZRh`/{CJaJh[CJaJhGCJaJh7'8hG56>*CJaJh56>*CJaJhBj~CJaJ hhg0CJOJQJ^JaJhg0CJaJh*CJaJh7'8CJaJhdCJaJhF1hF1CJaJhF1CJOJQJ^JaJ hE0hF1CJOJQJ^JaJhF1CJaJh CJaJh]mCJaJ op\]78"#gdik$ $h^ha$gdQd $ & Fa$gdQd$a$gdQd"JU)+@\r 5DH]lp$9c+GWp}𪸟hS$CJaJhGhik$CJaJh|hik$56CJaJhik$CJaJh]?CJaJh5YCJaJhfCJaJhRCJaJh v0CJaJh*CJaJh[CJaJhM(CJaJ;()+AYhkd_$$IflFh2 t0    44 lal $Ifgdik$YZ\rsjjj $Ifgdik$kd$$IflFh2 t0    44 lalsjjj $Ifgdik$kdM$$IflFh2 t0    44 lalsjjj $Ifgdik$kd$$IflFh2 t0    44 lalsjjj $Ifgdik$kd;$$IflFh2 t0    44 lal 5Esjjj $Ifgdik$kd$$IflFh2 t0    44 lalEFH]msjjj $Ifgdik$kd)$$IflFh2 t0    44 lalmnpsjjj $Ifgdik$kd$$IflFh2 t0    44 lal!sjjj $Ifgdik$kd$$IflFh2 t0    44 lal!"$9_sjjj $Ifgdik$kd$$IflFh2 t0    44 lal_`csjjj $Ifgdik$kd$$IflFh2 t0    44 lalsjjj $Ifgdik$kd|$$IflFh2 t0    44 lalsjjj $Ifgdik$kd$$IflFh2 t0    44 lal'sjjj $Ifgdik$kdj$$IflFh2 t0    44 lal'(+GSsjjj $Ifgdik$kd$$IflFh2 t0    44 lalSTWpysjjj $Ifgdik$kdX$$IflFh2 t0    44 lalyz}sjjj $Ifgdik$kd$$IflFh2 t0    44 lal}  , > C c x } !,!1!S!n!s!!!!!!!"-"3"8"e"""""""""""# # #6#V#g#####ĸhM*CJaJhGh[CJaJhvyCJaJh[CJaJhhh;-Q6CJaJh;-Q6CJaJhiCJaJh6:CJaJhm`*CJaJhNCJaJhik$CJaJhGhik$CJaJ:sjjj $Ifgdik$kdF $$IflFh2 t0    44 lal sjjj $Ifgdik$kd $$IflFh2 t0    44 lal  , ? sjjj $Ifgdik$kd4 $$IflFh2 t0    44 lal? @ C c y sjjj $Ifgdik$kd $$IflFh2 t0    44 laly z } sjjj $Ifgdik$kd" $$IflFh2 t0    44 lal sjjj $Ifgdik$kd $$IflFh2 t0    44 lal !-!sjjj $Ifgdik$kd $$IflFh2 t0    44 lal-!.!1!S!o!sjjj $Ifgdik$kd $$IflFh2 t0    44 lalo!p!s!!!sjjj $Ifgdik$kd $$IflFh2 t0    44 lal!!!!!sjjj $Ifgdik$kdu $$IflFh2 t0    44 lal!!!"4"sjjj $Ifgdik$kd $$IflFh2 t0    44 lal4"5"8"e""sjjj $Ifgdik$kdc$$IflFh2 t0    44 lal"""""sjjj $Ifgdik$kd$$IflFh2 t0    44 lal"""""sjjj $Ifgdik$kdQ$$IflFh2 t0    44 lal""" # # #U#V####skkiiaaaiX^gdvy$a$gdQd$a$gd;-Qkd$$IflFh2 t0    44 lal #####&g'''''''' ((((((() )+)@)C)H)O)[)))))))))&***||tltt|t||tdh?mCJaJh3yCJaJheCJaJhhCJaJh~CJaJh7Zh7ZCJaJh7ZCJOJQJ^JaJ hvyh7ZCJOJQJ^JaJhGh7ZCJaJh7ZCJaJ hvyhvyCJOJQJ^JaJhvyCJaJhM(CJaJhM(CJOJQJ^JaJh[CJaJ'#&$<$S$i$$$$$$%"%>%U%n%%%%%& &@&Y&v&&&& ^`gdvy^gdvy&&''';(<(((**u+v++,G,,,,------../. $ & Fa$gdQd $ & Fa$gdQd$a$gdQd**+++++ ,G,X,,,,---J-K-f-t-v----------.../..ؽtfUt hK(hB@CJOJQJ^JaJh?mCJOJQJ^JaJ hK(h?mCJOJQJ^JaJhM(CJOJQJ^JaJ hM(hM(CJOJQJ^JaJ hE0hGCJOJQJ^JaJh?mCJaJhGCJaJh*g56>*h*gh*g56>*h*gCJaJh#CJaJhM(CJaJhhCJaJh[CJaJ /..../ /b//////00[000011/1E1[1e1j1111 ^`gdK(gdK(.. /!/"/3/7/;/>>>>?ļ礬笔hiCJaJhik$CJaJh*CJaJhwaCJaJhM*CJaJhfCJaJh|CJaJh|h|CJaJh~CJaJh"TCJaJh~CJaJhfrCJaJ h~hfrCJOJQJ^JaJ39999:d:e:f:t:KSkd$$Ifl0|)xd t644 la Skd?$$Ifl0|)xd t644 la  $$Ifa$gdwbt:;<<<<<<<==>>>>Skdm$$Ifl0|)xd t644 la  $$Ifa$gdwb>>>@@@@@GAHAAAnBoBCC ^`gd*ggd*g$a$gdQdgd|Skd$$Ifl0|)xd t644 la ??@@@@@8A9AHAdAiAAAAAAABBmBnBoBBB"CCCCED׼׮׊yyגqiqaqaP hvyh{VCJOJQJ^JaJh{VCJaJhM*CJaJhwaCJaJ h*gh*gCJOJQJ^JaJh}CJaJh*gh*gCJaJ hK(h*gCJOJQJ^JaJh*gCJOJQJ^JaJhE4CJaJh*gh*g56>*h*g56>*h*gCJaJhfrCJaJhiCJaJ hihiCJOJQJ^JaJCCCCD)DDDEDqDrDDDDDDDDE $$Ifa$gdQd $$Ifa$gd .$a$gdQdgd| ^`gd{V^gd{VEDqDDDDDDEEE EEFFFFGGdHhHoHwHHHHHHHHH@IAILIwII̾zrzrzzg_W__WhCJaJh CJaJhGh CJaJhZCJaJh9_CJaJhUYlhUYlCJaJhGhUYlCJaJh< ZCJaJhUYlCJaJhM*CJaJh .he+56CJaJh .hM*56CJaJhwaCJaJh{VCJaJ hvyh{VCJOJQJ^JaJ#hTh{V6CJOJQJ^JaJ"EE EEEEHHAIqeeYYYYY $$Ifa$gdQd $$Ifa$gd .kd$$IflF 78|) t06    44 la<AIBIHILI J JUJqeeYYY $$Ifa$gdQd $$Ifa$gd .kd$$IflF 78|) t06    44 la<III@JLJTJUJ_JJJKKK.KpKKKK0LgLsL{L|LLMWMMNNNNNNNNNbNdNNNN巬夙dž~vnnfvhwaCJaJh{VCJaJhTCJaJhLCJaJhkCJaJh< ZhoCJaJh< Zh< ZCJaJh< ZCJaJh# h# CJaJh# CJaJh.aCJaJhM*CJaJhhM*CJaJhhCJaJhCJaJhGhCJaJh CJaJ(UJVJ[J_JJJKKpKqeeYYYYI$ & F$Ifa$gdQd $$Ifa$gdQd $$Ifa$gd .kd$$IflF 78|) t06    44 la<pKK0L1L|L}LLL3MUII $$Ifa$gd .kd $$IflF 78|) t06    44 la< $$Ifa$gdQd$ & F$Ifa$gdQd3M4MVMWMhMMMMMNNNe`gd|kd$$IflF 78|) t06    44 la< $$Ifa$gdQd NNNNNNNOOUOOOOOPXPYPPPP&QlQQQQ ^`gd < ^`gdgdk$a$gdQdgd|NNNNNFOOOOO)P*P+P2P[PPPPPPPQjQoQ|Q}QQQQQQQQQ$SBSISSSŷ||n`|`|||ŷŷӷh <CJOJQJ^JaJhCJOJQJ^JaJhRCJOJQJ^JaJ hv hv CJOJQJ^JaJh6CJOJQJ^JaJhdGCJOJQJ^JaJhv CJOJQJ^JaJhCJOJQJ^JaJhNCJOJQJ^JaJ hK(hkCJOJQJ^JaJhkCJOJQJ^JaJ%QQ RURRRS S$S%SuSzSSSSTMTQTRTTTT!U:UUUUU p^p`gdgdkSSSSSSSSSSSSTT'TDTLTMTQTTTMUaUUUUUUUUUŴ򦘦yk]O]OheCJOJQJ^JaJhkCJOJQJ^JaJhCJOJQJ^JaJ hv hCJOJQJ^JaJh4CJOJQJ^JaJh$3oCJOJQJ^JaJhCJOJQJ^JaJ hdGhdGCJOJQJ^JaJhdGCJOJQJ^JaJ hv hv CJOJQJ^JaJhtCJOJQJ^JaJhv CJOJQJ^JaJUUUUVVVV:V]X]a]v]] p^p`gd-Kgdk[[[ \!\N\\\\\\\\\] ]>]X]v]]]]]]]^^^^^__ _d_o_x_Ⱥ֬֞ȐȐȐȐȐււււtfhnCJOJQJ^JaJhRCJOJQJ^JaJh <CJOJQJ^JaJh1CJOJQJ^JaJh*CJOJQJ^JaJhR#CJOJQJ^JaJh@0CJOJQJ^JaJhI*OCJOJQJ^JaJhCJOJQJ^JaJh-KCJOJQJ^JaJhu-vCJOJQJ^JaJ#]]]]]]]]]^^S^^^^_ _D_b_d_o_p____gdk p^p`gd1 ^`gd1 p^p`gd-Kx_________`A`B`M`N`V`````acaxa|aaaabbbb b b bŷӘӘӷyh`Xhik$CJaJh[CJaJ hK(hkCJOJQJ^JaJ h*hTCJaJhGCJaJhfCJaJh|h"TCJaJh"TCJOJQJ^JaJ h~h"TCJOJQJ^JaJh"TCJaJh|h|CJaJh*g56>*h*gh*g56>*bbHcJc_c`cccvcccccdde|Skd$$Ifl0|)xd t644 la  $$Ifa$gdwb$a$gdwbgd"T ^`gd"Th^hgd"TeeeeeekflfmfffggYgZgngog$a$gdwb$a$gdgSkd$$Ifl0|)xd t644 la  $$Ifa$gdwbogggggghhhKSkd$$Ifl0|)xd t644 la Skd+$$Ifl0|)xd t644 la  $$Ifa$gdwbhhhhRiXi`ibidi|iiiiiiiiii j j-j.j/jqjjjjjFkWkkkklJlWlllll̵̐qqqqqihGCJaJhCJOJQJ^JaJ hhCJOJQJ^JaJ h hCJOJQJ^JaJhWCJaJhhH26CJaJhh6CJaJhhCJaJhCJaJhh*56CJaJhh56CJaJhH2CJaJh*CJaJ(hhOiPiQiRiXiai $$Ifa$gdSkdY$$Ifl0|)xd t644 la  $$Ifa$gdwbaibidi|ixo $Ifgd $$Ifa$gdzkd$$Ifl0(8 t0644 laL|i}iiixo $Ifgd $$Ifa$gdzkdT$$Ifl0(8 t0644 laLiiiixo $Ifgd $$Ifa$gdzkd$$Ifl0(8 t0644 laLiiiixo $Ifgd $$Ifa$gdzkd$$Ifl0(8 t0644 laLiiiixo $Ifgd $$Ifa$gdzkd$$Ifl0(8 t0644 laLiii jxo $Ifgd $$Ifa$gdzkd$$Ifl0(8 t0644 laL j j.j/jjjk[kkl[lll|zrzzmmmmmzgd$a$gdg$a$gdzkdH$$Ifl0(8 t0644 laL lllNmOmPmWmmmmmmHnInJncndnnnYoZoVppppppq]q^qaqqqqqq2rϢϑϑϑϑrrϑg_h!_vCJaJh3h#%CJaJ hAeWhl+xCJOJQJ^JaJhl+xCJOJQJ^JaJ hAeWhAeWCJOJQJ^JaJhAeWCJOJQJ^JaJ hAeWh3,CJOJQJ^JaJh3CJOJQJ^JaJ hAeWh3CJOJQJ^JaJhjCJaJh CJaJhjCJaJhl+xCJaJ$lOmPmmmnnInJntnnnnno\o]oooooo p^p`gd3 ^`gd3gdAeW ^`gd3gd3`gd3$a$gdgo pppBpUpVpppqq]q^qqqqqqqq3r4ror`gd$a$gdggdAeWgdl+xgd3 p^p`gd3 ^`gd32r3r4r;rFrUrWrkrrrrrrs2ssstu6u:uCuOuaueufumunusuxuyuuuuqqch}SCJOJQJ^JaJ hAeWh bCJOJQJ^JaJh bCJOJQJ^JaJ hQXhQXCJOJQJ^JaJhQXCJOJQJ^JaJ h hQXCJOJQJ^JaJ hAeWhCJOJQJ^JaJ hAeWhQXCJOJQJ^JaJhCJOJQJ^JaJh!_vCJaJh`CJaJ!orprrrrr?ssssss/t0tTttttttttu p^p`gd ^`gdgdQX ^`gdgd`gduouuuuuuuuuuvvmvnv{vv $$Ifa$gd8$a$gdggduuuuuuuuuvvv)v2v6vCvnvvvvvvvvw2wLwTw_wxwwwwwwww|x}x=y>yyz}}}}u}}mmmmhcCJaJh*CJaJh8CJaJh8hN56CJaJhHf1CJaJhNCJaJhTCJaJh`hG56>*h`hT56>*h CJaJh`CJaJhCJaJh!_vCJaJ hAeWhCJOJQJ^JaJh(e>CJOJQJ^JaJ*vvvv~~$Ifzkd$$Ifl0d- P t0644 la(vvvv~~$Ifzkd$$Ifl0d- P t0644 la(vvw3w~~$Ifzkdt$$Ifl0d- P t0644 la(3w4wLwyw~~$Ifzkd$$Ifl0d- P t0644 la(ywzwww~~$Ifzkd<$$Ifl0d- P t0644 la(www}x~xyyz { {{{{zzzzrj$a$gd5Y$a$gd$a$gdgzkd$$Ifl0d- P t0644 la( zz5zzz { { {{8|H|d||||||}}4~P~~~AZ3K҂-o {{{pphh$CJaJhUYlh$CJaJhGh$CJaJh .h$56CJaJh$(CJaJh$CJaJh D.CJaJh D.h D.56h5YCJaJh5Yh56CJaJh5Yh5Y56CJaJh56CJaJhcCJaJh7 CJaJ'{{|||||||||Wkd$$IflF 78|) t06    44 la< $$Ifa$gd$ $$Ifa$gd$ |V}W}&'eYY $$Ifa$gd$kd~$$IflF 78|) t06    44 la< $$Ifa$gd$ steYY $$Ifa$gd$kd$$IflF 78|) t06    44 la< $$Ifa$gd$oԃՃ !0:UII $$Ifa$gd$kdr$$IflF 78|) t06    44 la< $$Ifa$gd$$ & F$Ifa$gd$  Å؅مڅ'(-89<>[\ahijopstɆ؆نކ ŽʧʟʟʟʧʟʌŽʧʟʟʟʧʟh/3h/35h/356CJaJh1CJaJh/3h/356CJaJhfh/35hfhf5 h/35h/3CJaJh5YCJaJh D.CJaJh< Zh$CJaJh$CJaJh# h$CJaJ7:ׄ؄ =nxyekd$$IflF 78|) t06    44 la< $$Ifa$gd$ مڅ'(,-89=>[\`ajko^gd1gd/3ȆɆ؆ن݆ކ  !<=IJz{gd1gd/3^gd1!"&;<=IJ{Çćˇ͇̇҇Ӈׇ,;@ALMPRotu|}~݈ %&-./459MNOhCJaJh/356CJaJhfh/35hfhf5 h/35h/3CJaJh1CJaJh/3h/356CJaJIÇć͇·҇+,;<@ALMQRogd1^gd1gd/3optu~܈݈ !%&/gd^gdgd/3^gd1gd1/04NO[\ȉɉ͉Ή׉؉܉gd0u^gd0ugd/3^gdgdO[\ȉ͉ΉՉ։׉܉݉-<ABMNQSpuv}~APQ67ʲ hzZhzZCJOJQJ^JaJhzZCJaJh/3hS$56CJaJhS$CJaJhfh5Y5h1CJaJhfh/35hfhf5 h/35h/356CJaJh0uCJaJh/3CJaJh/3h/356CJaJ3,-<=ABMNRSpquv@AP^gdzZgd1^gd1gd/3PQnԋ67BC $ $Ifgd/3^gd^gdzZ7ABCG%?Yʍَ Ώ.IȐɐ,FoȺșșȎȃxmbbbZZhVCJaJhVhVCJaJh6hCJaJhhCJaJh.DhCJaJh69hCJaJhhCJaJh[hCJaJh>mhCJaJhzZh/356CJaJhCJaJhh5CJaJhS$CJaJh/3hS$56CJaJh/3h/356CJaJ#$%?LY^UUUL $Ifgd $Ifgd/3kdf$$Ifl\Iu,8Ce   t0644 lalʍ!؎^UUULL $Ifgd $Ifgd/3kd$$Ifl\Iu,8Ce   t0644 lal؎َ ^UUUL $Ifgd $Ifgd/3kd $$Ifl\Iu,8Ce   t0644 lalΏ^UUUL $Ifgd $Ifgd/3kd!$$Ifl\Iu,8Ce   t0644 lal/<I^UUUL $Ifgd $Ifgd/3kd!$$Ifl\Iu,8Ce   t0644 lalɐ,^UUUUUL $Ifgd $Ifgd/3kd6"$$Ifl\Iu,8Ce   t0644 lalÑڑB^UUUL $Ifgd $Ifgd/3kd"$$Ifl\Iu,8Ce   t0644 lal‘Ñّڑ#34@CEbchopqwx{|׼צxphZRhzZCJaJh$(h656CJaJh$(h65h$(h[5h$(h$(5 h/35h/356CJaJh/3hS$56CJaJh>mCJaJh6CJaJh/3h656CJaJh/3CJaJhhVCJaJhVCJaJhCJaJhVhCJaJhVhVCJaJh6hCJaJBCDEbcghq^\\\\S\\^gd>mkdV#$$Ifl\Iu,8Ce   t0644 lalqrےܒƓǓ3Rp۔"GHIgd[^gd[^gdgd6ْڒܒƓǓGHIixݕޕabs̖ߖ<=?@ع𱣱}rjbWh< Zh D.CJaJh{cCJaJhjCJaJh# h D.CJaJhh D.CJaJhDwCJaJhUYlh D.CJaJhv*CJaJh .h D.56CJaJh D.CJaJ h[h[CJOJQJ^JaJh$(h656CJaJh6CJaJhzZCJaJh$(CJaJh[CJaJhZjCJaJ!IW\hitxޕYkd#$$IflF 78|) t06    44 la< $$Ifa$gd^ $$Ifa$gd^ޕߕbqeeY $$Ifa$gd^ $$Ifa$gd^kd`$$$IflF 78|) t06    44 la<bclsqeeY $$Ifa$gd^ $$Ifa$gd^kd$$$IflF 78|) t06    44 la<Ŗ̖=qeeY $$Ifa$gd^ $$Ifa$gd^kdT%$$IflF 78|) t06    44 la<=>?@IR^iqll```` $$Ifa$gdMFgd[kd%$$IflF 78|) t06    44 la<@IQ^hjl—ŗٗ !"%<MQRUk{˜՘0458bfgjәԙؙdhimƻƻƻƻƻѳƻƳƳƫƳƫƳƳhHCJaJh-]CJaJh13h{cCJaJhMFh{cCJaJh{cCJaJh{c56CJaJhv*h*56CJaJhv*h{c56CJaJCijl—^RIII $Ifgd[ $$Ifa$gdMFkdH&$$Ifl\B$8r  t0644 la<—×ŗٗ^RIII $Ifgd[ $$Ifa$gdMFkd&$$Ifl\B$8r  t0644 la< "^RIII $Ifgd[ $$Ifa$gdMFkdh'$$Ifl\B$8r  t0644 la<"#%<MR^RIII $Ifgd[ $$Ifa$gdMFkd'$$Ifl\B$8r  t0644 la<RSUk{^RIII $Ifgd[ $$Ifa$gdMFkd($$Ifl\B$8r  t0644 la<^RIII $Ifgd[ $$Ifa$gdMFkd)$$Ifl\B$8r  t0644 la<˜՘^RIII $Ifgd[ $$Ifa$gdMFkd)$$Ifl\B$8r  t0644 la<05^RIII $Ifgd[ $$Ifa$gdMFkd8*$$Ifl\B$8r  t0644 la<568Jbg^RI@@ $Ifgd[ $IfgdMF $$Ifa$gdMFkd*$$Ifl\B$8r  t0644 la<ghjԙ^RIII $Ifgd[ $$Ifa$gdMFkdX+$$Ifl\B$8r  t0644 la<ԙՙؙ^RIII $Ifgd[ $$Ifa$gdMFkd+$$Ifl\B$8r  t0644 la<0di^RIII $Ifgd[ $$Ifa$gdMFkdx,$$Ifl\B$8r  t0644 la<ijm~^RIII $Ifgd[ $$Ifa$gdMFkd-$$Ifl\B$8r  t0644 la<՚^RIII $Ifgd[ $$Ifa$gdMFkd-$$Ifl\B$8r  t0644 la<BFGKy&'(-UVZ͜ΜϜڜ67[ΝFmoĶzrzzjhZjCJaJh D.CJaJh)CJaJh[h[CJaJh[CJaJh$(h[56CJaJh[h D.CJaJhMFCJaJhv*hv*56CJaJhv*56CJaJhHh{cCJaJhHhHCJaJhHCJaJh{cCJaJhMFh{cCJaJ)BG^RIII $Ifgd[ $$Ifa$gdMFkd(.$$Ifl\B$8r  t0644 la<GHK`y^RIII $Ifgd[ $$Ifa$gdMFkd.$$Ifl\B$8r  t0644 la<V^RIII $Ifgd[ $$Ifa$gdMFkdH/$$Ifl\B$8r  t0644 la<VWZn^RIII $Ifgd[ $$Ifa$gdMFkd/$$Ifl\B$8r  t0644 la<͜ΜϜڜۜ^VVQQLLgd6gd[$a$gdv*kdh0$$Ifl\B$8r  t0644 la<ۜ)6Ukd0$$Ifl\28 z t0644 la< $Ifgd[ Ν^UUUU $Ifgd[kd1$$Ifl\28 z t0644 la<,9Fn^UUUU $Ifgd[kd2$$Ifl\28 z t0644 la<no^UUUU $Ifgd[kd2$$Ifl\28 z t0644 la<o)pst?@NWhAǶǮ|Ƕk`UhDwhDwCJaJhZjhZjCJaJ h$(hZjCJOJQJ^JaJh$(hZj56CJaJh$(h$(CJaJ h$(h$(CJOJQJ^JaJh*CJaJh$(CJaJ h$(hDwCJOJQJ^JaJhDwCJaJh$(h656CJaJh6CJaJhZjCJaJh[CJaJh[h[CJaJ˞؞^UUUU $Ifgd[kd83$$Ifl\28 z t0644 la<)q^UUUU $Ifgd[kd3$$Ifl\28 z t0644 la<qrst^UPPPGG^gdm_gd6^gd[kdX4$$Ifl\28 z t0644 la<!?@ghӠ!<Vp@AgdZjgdDw^gdm_ ^`gdm_AǣȣbcrsϤ /0Tw^gd$gd/3gdDw ^`gdm_ǣ).abcrsե) JKMN𡙋xph]Rph# h$CJaJhh\CJaJh*CJaJh^gCJaJhUYlh$CJaJhcXCJaJh .h$56CJaJh$CJaJ h$h$CJOJQJ^JaJh\h\56CJaJh\CJaJh/3h/356CJaJhfh/35hfhf5 h/35 h-:5h/3CJaJhS$CJaJ åȥԥեYkd4$$IflF 78|) t06    44 la< $$Ifa$gd$ $$Ifa$gd$%)qeeYY $$Ifa$gd$ $$Ifa$gd$kdb5$$IflF 78|) t06    44 la<KqeeY $$Ifa$gd$ $$Ifa$gd$kd5$$IflF 78|) t06    44 la<KLMNijmvqllll`W $Ifgd/3 $$Ifa$gd^ggd/3kdV6$$IflF 78|) t06    44 la<Nijmuwy¨Ũ',@KLQhn|Ʃͩ&:BU]uvҪ·····················¯h$h/356CJaJh/3CJaJh/3h/356CJaJh$CJaJh^gh^gCJaJh^gCJaJh^gh*56CJaJh^gh^g56CJaJh^gh\6CJaJh\h^g56CJaJ4vwyxo $Ifgd/3 $$Ifa$gd^gzkd6$$Ifl0  t0644 la<xo $Ifgd/3 $$Ifa$gd^gzkd47$$Ifl0  t0644 la<¨xo $Ifgd/3 $$Ifa$gd^gzkd7$$Ifl0  t0644 la<¨èŨxo $Ifgd/3 $$Ifa$gd^gzkd7$$Ifl0  t0644 la<xo $Ifgd/3 $$Ifa$gd^gzkd`8$$Ifl0  t0644 la<xo $Ifgd/3 $$Ifa$gd^gzkd8$$Ifl0  t0644 la<'xo $Ifgd/3 $$Ifa$gd^gzkd(9$$Ifl0  t0644 la<'(,@xo $Ifgd/3 $$Ifa$gd^gzkd9$$Ifl0  t0644 la<@AELxo $Ifgd/3 $$Ifa$gd^gzkd9$$Ifl0  t0644 la<LMQhxo $Ifgd/3 $$Ifa$gd^gzkdT:$$Ifl0  t0644 la<hin|xo $Ifgd/3 $$Ifa$gd^gzkd:$$Ifl0  t0644 la<|}xo $Ifgd/3 $$Ifa$gd^gzkd;$$Ifl0  t0644 la<xo $Ifgd/3 $$Ifa$gd^gzkd;$$Ifl0  t0644 la<Ʃxo $Ifgd/3 $$Ifa$gd^gzkd;$$Ifl0  t0644 la<Ʃǩͩxo $Ifgd/3 $$Ifa$gd^gzkdH<$$Ifl0  t0644 la<xo $Ifgd/3 $$Ifa$gd^gzkd<$$Ifl0  t0644 la<xo $Ifgd/3 $$Ifa$gd^gzkd=$$Ifl0  t0644 la<&:xo $Ifgd/3 $$Ifa$gd^gzkdt=$$Ifl0  t0644 la<:;BUxo $Ifgd/3 $$Ifa$gd^gzkd=$$Ifl0  t0644 la<UV]uxo $Ifgd/3 $$Ifa$gd^gzkd<>$$Ifl0  t0644 la<uv~xo $Ifgd/3 $$Ifa$gd^gzkd>$$Ifl0  t0644 la<ŪѪvvvv $Ifgd/3gd/3zkd?$$Ifl0  t0644 la< ѪҪ^UUUU $Ifgd/3kdh?$$Ifl\28 z t0644 la<Ҫ.2OPs̫ HlĬ'%JnrsЮѮԮܮޮ׻qh&Bh*56CJaJh&B56CJaJh&Bh&B56CJaJhpwCJaJh&BCJaJhXhXCJaJhXCJaJhXhX5>*CJaJh/3h/356CJaJh/3CJaJh[h/3CJaJh$h/3CJaJh$h$CJaJ(!./^UUUU $Ifgd/3kd?$$Ifl\28 z t0644 la</012OPaf^YYYYMM $$Ifa$gdXgd/3kd@$$Ifl\28 z t0644 la<frsh\ $$Ifa$gdXkdA$$IflF88# t06    44 la< $Ifgd/3̫ӫqh\h $$Ifa$gdX $Ifgd/3kdA$$IflF88# t06    44 la< Gqh\h $$Ifa$gdX $Ifgd/3kd B$$IflF88# t06    44 la<GHltqh\h $$Ifa$gdX $Ifgd/3kdB$$IflF88# t06    44 la<Ĭ̬qh\h $$Ifa$gdX $Ifgd/3kdC$$IflF88# t06    44 la<'1qh\h $$Ifa$gdX $Ifgd/3kdzC$$IflF88# t06    44 la<qh\S $Ifgd&B $$Ifa$gdX $Ifgd/3kdC$$IflF88# t06    44 la<%*Iqh\S $Ifgd&B $$Ifa$gdX $Ifgd/3kdnD$$IflF88# t06    44 la<IJnsqh\S $Ifgd&B $$Ifa$gdX $Ifgd/3kdD$$IflF88# t06    44 la<ѮԮݮqllll_SS $$Ifa$gd&B ^`gd&Bgd/3kdbE$$IflF88# t06    44 la<ݮޮxo $Ifgd/3 $$Ifa$gd&BzkdE$$Ifl0T t0644 la< "69NQXYZabefgOP<mvųdzļĚqch .hAIKMVYgjy|#%=>Xܵ~v~vhhXh"{5>*CJaJhQCJaJh[h/3CJaJh<h/3CJaJh<h<CJaJhu>h/356CJaJh/3CJaJh/3h/356CJaJh0t|h0t|56CJaJh0t|h0t|CJaJh0t|CJaJh&Bh0t|56CJaJh&Bh*56CJaJ&xo $Ifgd0t| $$Ifa$gd0t|zkd[$$Ifl0T t0644 la< xo $Ifgd0t| $$Ifa$gd0t|zkd|[$$Ifl0T t0644 la<(xo $Ifgd0t| $$Ifa$gd0t|zkd[$$Ifl0T t0644 la<()*>AJrff $$Ifa$gd0t| ^`gd0t|gd/3zkdD\$$Ifl0T t0644 la<JKMVxo $Ifgd0t| $$Ifa$gd0t|zkd\$$Ifl0T t0644 la<VWYgxo $Ifgd0t| $$Ifa$gd0t|zkd ]$$Ifl0T t0644 la<ghjyxo $Ifgd0t| $$Ifa$gd0t|zkdp]$$Ifl0T t0644 la<yz|xo $Ifgd0t| $$Ifa$gd0t|zkd]$$Ifl0T t0644 la<vvvv $Ifgd/3gd/3zkd8^$$Ifl0T t0644 la< $^UUUU $Ifgd/3kd^$$Ifl\^8 N t0644 la<$%>KX^UUUU $Ifgd/3kd,_$$Ifl\^8 N t0644 la<^YYYYMM $$Ifa$gd"{gd/3kd_$$Ifl\^8 N t0644 la< h\ $$Ifa$gd"{kdL`$$IflF88# t06    44 la< $Ifgd"{+n1fļđ{peZh[h/3CJaJhy$^h/3CJaJhy$^hy$^CJaJh0T+h/356CJaJhh1CJaJ hh1hh1CJOJQJ^JaJhfh/35hfhf5 h/35 h-:5h/3h/35h/3CJaJh8ICJaJh/356CJaJh/3h/356CJaJhpwh"{CJaJh"{CJaJ# +3bqh\h $$Ifa$gd"{ $Ifgd"{kd`$$IflF88# t06    44 la<bcqh\h $$Ifa$gd"{ $Ifgd"{kd@a$$IflF88# t06    44 la<0qh\h $$Ifa$gd"{ $Ifgd"{kda$$IflF88# t06    44 la<01fmqh\h $$Ifa$gd"{ $Ifgd"{kd4b$$IflF88# t06    44 la<qllllclllll^gd8Igd/3kdb$$IflF88# t06    44 la< ?]| /S .Q| $Ifgd/3^gdh1gd/3Ukd(c$$Ifl\o%8 z t0644 la< $Ifgd/3)6CD^UUUU $Ifgd/3kdc$$Ifl\o%8 z t0644 la<()CEfg()CGdelmnorstbcnoɾ׶׋uh0T+h/356CJaJhh1CJaJ hh1hh1CJOJQJ^JaJhfh/35hfhf5 h/35 h-:5h/3h/35h/356CJaJh/3h/356CJaJh/3CJaJh[h/3CJaJhy$^h/3CJaJhy$^hy$^CJaJ)DEgt^UUUU $Ifgd/3kdHd$$Ifl\o%8 z t0644 la<^UUUU $Ifgd/3kdd$$Ifl\o%8 z t0644 la<^UUUU $Ifgd/3kdhe$$Ifl\o%8 z t0644 la<)6CD^UUUU $Ifgd/3kde$$Ifl\o%8 z t0644 la<DEFGden^YYYYYYYYYgd/3kdf$$Ifl\o%8 z t0644 la< ;Y|}Bf?a;^gdh1gd/3;bcno{ $Ifgd/3gd/3^gdh1^UUUU $Ifgd/3kdg$$Ifl\#!8 t0644 la< ,-GWYuv #$%@׮׃uh0T+h/356CJaJ hh1hh1CJOJQJ^JaJhfh/35hfhf5 h/35 h-:5h/3h/35h/356CJaJh/3h/356CJaJhh1CJaJh/3CJaJh[h/3CJaJhh1h/3CJaJhh1hh1CJaJ. ^UUUU $Ifgd/3kdg$$Ifl\#!8 t0644 la< -:GX^UUUU $Ifgd/3kd8h$$Ifl\#!8 t0644 la<XYv^UUUU $Ifgd/3kdh$$Ifl\#!8 t0644 la<^YYYYYYYYYgd/3kdXi$$Ifl\#!8 t0644 la< %QoAg@d<`^gdh1gd/3Pkdi$$Ifl\UW8 t0644 la< $Ifgd/3gd/3 $%AN[Ukdxj$$Ifl\UW8 t0644 la< $Ifgd/3@A[\-./2OPWXYZ]^_wxy78CDnϮσ{mh0T+h/356CJaJhICJaJ hIhICJOJQJ^JaJhfh/35hfhf5 h/35 h-:5h/3h/35h/356CJaJh/3h/356CJaJh/3CJaJhh1hh1CJaJhh1CJaJh[h/3CJaJhh1h/3CJaJ*^UUUU $Ifgd/3kdk$$Ifl\UW8 t0644 la</^UUUU $Ifgd/3kdk$$Ifl\UW8 t0644 la</012OPYxy^YYYYYYYYYgd/3kd(l$$Ifl\UW8 t0644 la< 7Z[Dh78CDPV $Ifgd/3^gdIgd/3VamnUkdl$$Ifl\28 z t0644 la< $Ifgd/3n!")*+,/01JKLXYhiEYZtvɾ׶׋uj_hj-h/3CJaJhj-hj-CJaJh0T+h/356CJaJhj-CJaJ hj-hj-CJOJQJ^JaJhfh/35hfhf5 h/35 h-:5h/3h/35h/356CJaJh/3h/356CJaJh/3CJaJh[h/3CJaJhIh/3CJaJhIhICJaJ%^UUUU $Ifgd/3kdHm$$Ifl\28 z t0644 la<^UUUU $Ifgd/3kdm$$Ifl\28 z t0644 la<!"+KLXY^YYYYYYYYYgd/3kdhn$$Ifl\28 z t0644 la< Yhi /0W{>`'- $Ifgd/3^gdj-gd/3-8DEZgtuUkdn$$Ifl\28 z t0644 la< $Ifgd/3uv^UUUU $Ifgd/3kdo$$Ifl\28 z t0644 la<v $%?C`ahijknopɾ׶׋ujhq$'hq$'CJaJh0T+h/356CJaJhq$'CJaJ hq$'hq$'CJOJQJ^JaJhfh/35hfhf5 h/35 h-:5h/3h/35h/356CJaJh/3h/356CJaJh/3CJaJh[h/3CJaJhj-h/3CJaJhj-hj-CJaJ&^UUUU $Ifgd/3kdp$$Ifl\28 z t0644 la< ^UUUU $Ifgd/3kdp$$Ifl\28 z t0644 la<%2?@^UUUU $Ifgd/3kd8q$$Ifl\28 z t0644 la<@ABC`aj^YYYYYYYYYgd/3kdq$$Ifl\28 z t0644 la< -Kno8_ $Ifgd/3^gdq$'gd/3 ^UUUU $Ifgd/3kdXr$$Ifl\28 z t0644 la< $%?C`ahijknop\]hiɾⶱ⋃uj_ɾhJh/3CJaJhJhJCJaJh0T+h/356CJaJhJCJaJ hJhJCJOJQJ^JaJhfh/35hfhf5 h/35 h-:5h/3h/35h/356CJaJh/3h/356CJaJhq$'hq$'CJaJh/3CJaJh[h/3CJaJhq$'h/3CJaJ%%2?@^UUUU $Ifgd/3kdr$$Ifl\28 z t0644 la<@ABC`aj^YYYYYYYYYgd/3kdxs$$Ifl\28 z t0644 la< :X{|<kCs 4b^gdJgd/34\]hiu{ $Ifgd/3gd/3^gdJ ^UUUU $Ifgd/3kdt$$Ifl\v 8 6 t0644 la<%&^YYYYYYYYYgd/3kdt$$Ifl\v 8 6 t0644 la< %&56HITU!"=>IJtuh/356CJaJh[h/3CJaJh~h/3CJaJh~h~CJaJh0T+h/356CJaJh~CJaJ h~h~CJOJQJ^JaJh/3h/356CJaJhfh/35hfhf5 h/35 h-:5h/3h/35h/3CJaJ.&56R#HITUagr~ $Ifgd/3^gd~gd/3~^UUUU $Ifgd/3kd(u$$Ifl\28 z t0644 la<^YYYYYYYYYgd/3kdu$$Ifl\28 z t0644 la< !"Aq=>IJV\gs $Ifgd/3^gd~gd/3st^UUUU $Ifgd/3kdHv$$Ifl\>@8n t0644 la< ^YYYYYYYYYgd/3kdv$$Ifl\>@8n t0644 la<  >?@LM\] 5PQŽ߬ߖuŽ߬ߖh[h/3CJaJh~h/3CJaJh~h~CJaJh0T+h/356CJaJh~CJaJ h~h~CJOJQJ^JaJhfh/35hfhf5 h/35 h-:5h/3h/35h/3CJaJh/356CJaJh/3h/356CJaJ. ByOU $Ifgd/3^gd~gd/3^UUUU $Ifgd/3kdhw$$Ifl\c!8I t0644 la<?@LM^YYYYYYYYYgd/3kdw$$Ifl\c!8I t0644 la< M\]23Y (4 $Ifgd/3^gd~gd/345Q^kl^UUUU $Ifgd/3kdx$$Ifl\8,  t0644 la<Qko !"&'HIJVWfgº퓈}ºl h;h;CJOJQJ^JaJh~h/3CJaJh~h~CJaJh0T+h/356CJaJh~CJaJ h~h~CJOJQJ^JaJhfh/35hfhf5 h/35 h-:5h/356CJaJh/3h/356CJaJh/3CJaJh[h/3CJaJ*lmno^YYYYYYYYYgd/3kdy$$Ifl\8,  t0644 la< 9Wv 7\ $Ifgd/3^gd~gd/3^UUUU $Ifgd/3kdy$$Ifl\35 8c t0644 la<!IJVW^YYYYYYYYYgd/3kd8z$$Ifl\35 8c t0644 la< Wfg=>d!,8 $Ifgd/3^gd;gd/39VWqs  +,Vxyɾɾ⣞}uj_jhrh/3CJaJhrhrCJaJhrCJaJ hrhrCJOJQJ^JaJhfh/35hfhf5 h/35 h-:5h/356CJaJh[h/3CJaJh;h/3CJaJh;h;CJaJh0T+h/356CJaJh/3CJaJh/3h/356CJaJh;CJaJ%89Wdqr^UUUU $Ifgd/3kdz$$Ifl\M!8_ t0644 la<rs^UUUU $Ifgd/3kdX{$$Ifl\M!8_ t0644 la< ^YYYYYYYYYgd/3kd{$$Ifl\M!8_ t0644 la< Bu +,8>IU $Ifgd/3^gdrgd/3UVy^UUUU $Ifgd/3kdx|$$Ifl\~#8*. t0644 la<^UUUU $Ifgd/3kd}$$Ifl\~#8*. t0644 la<)*9:&'23]|} ,-GKhipqrĿ➖}r}r}r}rh h/3CJaJh h CJaJh h/356CJaJh CJaJ h h CJOJQJ^JaJhfh/35hfhf5 h/35 h-:5h/356CJaJh/3h/356CJaJh/3CJaJh[h/3CJaJhrh/3CJaJ,)*^YYYYYYYYYgd/3kd}$$Ifl\~#8*. t0644 la< *9:Y&'23?EP\ $Ifgd/3^gd gd/3\]}^UUUU $Ifgd/3kd(~$$Ifl\')!8W t0644 la<^UUUU $Ifgd/3kd~$$Ifl\')!8W t0644 la< ^UUUU $Ifgd/3kdH$$Ifl\')!8W t0644 la<-:GH^UUUU $Ifgd/3kd$$Ifl\')!8W t0644 la<HIJKhir^YYYYYYYYYgd/3kdh$$Ifl\')!8W t0644 la< rswx  $&GHbd  }h/356CJaJh[h/3CJaJhich/3CJaJhichicCJaJhGh/356CJaJhicCJaJ hichicCJOJQJ^JaJh/3h/356CJaJhfh/35hfhf5 h/35 h-:5h/3CJaJ.:Yw 0^2U $Ifgd/3^gdicgd/3Ukd$$Ifl\/"8} t0644 la< $Ifgd/3 $%^UUUU $Ifgd/3kd$$Ifl\/"8} t0644 la<%&HUbc^UUUU $Ifgd/3kd$$Ifl\/"8} t0644 la<cd^UUUU $Ifgd/3kd$$Ifl\/"8} t0644 la<  ^YYYYYYYYYgd/3kd8$$Ifl\/"8} t0644 la< K2Vx?dDEPQ^gdHQgd/3DEPQ{ !()*+/0PQR^_no     øѸٗђ}ldVhh/356CJaJhCJaJ hhCJOJQJ^JaJhfh/35hfhf5 h/35 h-:5h/356CJaJh[h/3CJaJhHQh/3CJaJhHQhHQCJaJhHQh/356CJaJh/3CJaJh/3h/356CJaJhHQCJaJ hHQhHQCJOJQJ^JaJ!Q]cnz{Ukdȃ$$Ifl\n%8)s> t0644 la< $Ifgd/3 ^UUUU $Ifgd/3kdX$$Ifl\n%8)s> t0644 la< !*QR^_^YYYYYYYYYgd/3kd$$Ifl\n%8)s> t0644 la< _no>?m + N z           $Ifgd/3^gdgd/3   , 9 : ^UUUU $Ifgd/3kdx$$Ifl\"8 t0644 la<   9 ; Y Z t v                    7 8 C D n         ɾ׹ד}rgrgh7gh/3CJaJh7gh7gCJaJh7gh/356CJaJh7gCJaJ h7gh7gCJOJQJ^JaJhfh/35hfhf5 h/35 h-:5h/356CJaJh/3h/356CJaJh/3CJaJh[h/3CJaJhh/3CJaJhhCJaJ(: ; Z g t u ^UUUU $Ifgd/3kd$$Ifl\"8 t0644 la<u v     ^UUUU $Ifgd/3kd$$Ifl\"8 t0644 la<           ^YYYYYYYYYgd/3kd($$Ifl\"8 t0644 la<   7 d       1 _ ~     7 8 C D P V a m  $Ifgd/3^gd7ggd/3m n     ^UUUU $Ifgd/3kd$$Ifl\28 z t0644 la<      ^UUUU $Ifgd/3kdH$$Ifl\28 z t0644 la<      7^YYYYYTL$a$gd-:gd-:gd/3kd؈$$Ifl\28 z t0644 la<     67<@AB̾̾hhZCJaJh7gCJaJhZCJaJh5YhZ56CJaJhZ56CJaJh-:CJaJh/356CJaJh/3CJaJh/3h/356CJaJ789ABgdZ51h0:p= /!"#$% s$$If!vh5 5$ 5)#v #v$ #v):Vl t65 5$ 5)s$$If!vh5 5$ 5)#v #v$ #v):Vl t65 5$ 5)s$$If!vh5 5$ 5)#v #v$ #v):Vl t65 5$ 5)u$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555alu$$Ifl!vh555#v#v#v:Vl t555al$$If !vh5x5d#vx#vd:Vl t065x5da $$If !vh5x5d#vx#vd:Vl t065x5da $$If !vh5x5d#vx#vd:Vl t065x5da $$If !vh5x5d#vx#vd:Vl t065x5da x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<$$If !vh5x5d#vx#vd:Vl t065x5da $$If !vh5x5d#vx#vd:Vl t065x5da $$If !vh5x5d#vx#vd:Vl t065x5da $$If !vh5x5d#vx#vd:Vl t065x5da $$If !vh5x5d#vx#vd:Vl t065x5da b$$IfL!vh585#v8#v:Vl t6585aLb$$IfL!vh585#v8#v:Vl t6585aLb$$IfL!vh585#v8#v:Vl t6585aLb$$IfL!vh585#v8#v:Vl t6585aLb$$IfL!vh585#v8#v:Vl t6585aLb$$IfL!vh585#v8#v:Vl t6585aLb$$IfL!vh585#v8#v:Vl t6585aLb$$If(!vh5 5P#v #vP:Vl t65 5Pa(b$$If(!vh5 5P#v #vP:Vl t65 5Pa(b$$If(!vh5 5P#v #vP:Vl t65 5Pa(b$$If(!vh5 5P#v #vP:Vl t65 5Pa(b$$If(!vh5 5P#v #vP:Vl t65 5Pa(b$$If(!vh5 5P#v #vP:Vl t65 5Pa(x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<$$Ifl!vh55 5,57 #v#v #v,#v7 :Vl t65C5e 5 5 al$$Ifl!vh55 5,57 #v#v #v,#v7 :Vl t65C5e 5 5 al$$Ifl!vh55 5,57 #v#v #v,#v7 :Vl t65C5e 5 5 al$$Ifl!vh55 5,57 #v#v #v,#v7 :Vl t65C5e 5 5 al$$Ifl!vh55 5,57 #v#v #v,#v7 :Vl t65C5e 5 5 al$$Ifl!vh55 5,57 #v#v #v,#v7 :Vl t65C5e 5 5 al$$Ifl!vh55 5,57 #v#v #v,#v7 :Vl t65C5e 5 5 al$$Ifl!vh55 5,57 #v#v #v,#v7 :Vl t65C5e 5 5 alx$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<$$If<!vh5r5 55#vr#v #v#v:Vl t65r5 55a<$$If<!vh5r5 55#vr#v #v#v:Vl t65r5 55a<$$If<!vh5r5 55#vr#v #v#v:Vl t65r5 55a<$$If<!vh5r5 55#vr#v #v#v:Vl t65r5 55a<$$If<!vh5r5 55#vr#v #v#v:Vl t65r5 55a<$$If<!vh5r5 55#vr#v #v#v:Vl t65r5 55a<$$If<!vh5r5 55#vr#v #v#v:Vl t65r5 55a<$$If<!vh5r5 55#vr#v #v#v:Vl t65r5 55a<$$If<!vh5r5 55#vr#v #v#v:Vl t65r5 55a<$$If<!vh5r5 55#vr#v #v#v:Vl t65r5 55a<$$If<!vh5r5 55#vr#v #v#v:Vl t65r5 55a<$$If<!vh5r5 55#vr#v #v#v:Vl t65r5 55a<$$If<!vh5r5 55#vr#v #v#v:Vl t65r5 55a<$$If<!vh5r5 55#vr#v #v#v:Vl t65r5 55a<$$If<!vh5r5 55#vr#v #v#v:Vl t65r5 55a<$$If<!vh5r5 55#vr#v #v#v:Vl t65r5 55a<$$If<!vh5r5 55#vr#v #v#v:Vl t65r5 55a<$$If<!vh5r5 55#vr#v #v#v:Vl t65r5 55a<$$If<!vh5r5 55#vr#v #v#v:Vl t65r5 55a<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<x$$If<!vh5585##v#v8#v#:Vl t65585#a<x$$If<!vh5585##v#v8#v#:Vl t65585#a<x$$If<!vh5585##v#v8#v#:Vl t65585#a<x$$If<!vh5585##v#v8#v#:Vl t65585#a<x$$If<!vh5585##v#v8#v#:Vl t65585#a<x$$If<!vh5585##v#v8#v#:Vl t65585#a<x$$If<!vh5585##v#v8#v#:Vl t65585#a<x$$If<!vh5585##v#v8#v#:Vl t65585#a<x$$If<!vh5585##v#v8#v#:Vl t65585#a<x$$If<!vh5585##v#v8#v#:Vl t65585#a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<$$If<!vh5B555#vB#v#v#v:Vl t65B555a<$$If<!vh5B555#vB#v#v#v:Vl t65B555a<$$If<!vh5B555#vB#v#v#v:Vl t65B555a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<x$$If<!vh5585|)#v#v8#v|):Vl t65585|)a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<b$$If<!vh55#v#v:Vl t655a<$$If<!vh5 555N#v #v#v#vN:Vl t65 555Na<$$If<!vh5 555N#v #v#v#vN:Vl t65 555Na<$$If<!vh5 555N#v #v#v#vN:Vl t65 555Na<x$$If<!vh5585##v#v8#v#:Vl t65585#a<x$$If<!vh5585##v#v8#v#:Vl t65585#a<x$$If<!vh5585##v#v8#v#:Vl t65585#a<x$$If<!vh5585##v#v8#v#:Vl t65585#a<x$$If<!vh5585##v#v8#v#:Vl t65585#a<x$$If<!vh5585##v#v8#v#:Vl t65585#a<$$If<!vh5)55t5=#v)#v#vt#v=:Vl t65 555za<$$If<!vh5)55t5=#v)#v#vt#v=:Vl t65 555za<$$If<!vh5)55t5=#v)#v#vt#v=:Vl t65 555za<$$If<!vh5)55t5=#v)#v#vt#v=:Vl t65 555za<$$If<!vh5)55t5=#v)#v#vt#v=:Vl t65 555za<$$If<!vh5)55t5=#v)#v#vt#v=:Vl t65 555za<$$If<!vh5)55t5=#v)#v#vt#v=:Vl t65 555za<$$If<!vh5555#v#v#v#v:Vl t65555a<$$If<!vh5555#v#v#v#v:Vl t65555a<$$If<!vh5555#v#v#v#v:Vl t65555a<$$If<!vh5555#v#v#v#v:Vl t65555a<$$If<!vh5555#v#v#v#v:Vl t65555a<$$If<!vh5555#v#v#v#v:Vl t65555a<$$If<!vh5555#v#v#v#v:Vl t65555a<$$If<!vh5555#v#v#v#v:Vl t65555a<$$If<!vh5555#v#v#v#v:Vl t65555a<$$If<!vh5555#v#v#v#v:Vl t65555a<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5 5556#v #v#v#v6:Vl t65 5556a<$$If<!vh5 5556#v #v#v#v6:Vl t65 5556a<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5n555#vn#v#v#v:Vl t65n555a<$$If<!vh5n555#vn#v#v#v:Vl t65n555a<$$If<!vh5555I#v#v#v#vI:Vl t65555Ia<$$If<!vh5555I#v#v#v#vI:Vl t65555Ia<$$If<!vh5,555 #v,#v#v#v :Vl t65,555 a<$$If<!vh5,555 #v,#v#v#v :Vl t65,555 a<$$If<!vh5c555#vc#v#v#v:Vl t65c555a<$$If<!vh5c555#vc#v#v#v:Vl t65c555a<$$If<!vh5555_#v#v#v#v_:Vl t65555_a<$$If<!vh5555_#v#v#v#v_:Vl t65555_a<$$If<!vh5555_#v#v#v#v_:Vl t65555_a<$$If<!vh5*555.#v*#v#v#v.:Vl t65*555.a<$$If<!vh5*555.#v*#v#v#v.:Vl t65*555.a<$$If<!vh5*555.#v*#v#v#v.:Vl t65*555.a<$$If<!vh5W555#vW#v#v#v:Vl t65W555a<$$If<!vh5W555#vW#v#v#v:Vl t65W555a<$$If<!vh5W555#vW#v#v#v:Vl t65W555a<$$If<!vh5W555#vW#v#v#v:Vl t65W555a<$$If<!vh5W555#vW#v#v#v:Vl t65W555a<$$If<!vh5555}#v#v#v#v}:Vl t65555}a<$$If<!vh5555}#v#v#v#v}:Vl t65555}a<$$If<!vh5555}#v#v#v#v}:Vl t65555}a<$$If<!vh5555}#v#v#v#v}:Vl t65555}a<$$If<!vh5555}#v#v#v#v}:Vl t65555}a<$$If<!vh5)55s5>#v)#v#vs#v>:Vl t65)55s5>a<$$If<!vh5)55s5>#v)#v#vs#v>:Vl t65)55s5>a<$$If<!vh5)55s5>#v)#v#vs#v>:Vl t65)55s5>a<$$If<!vh5555#v#v#v#v:Vl t65555a<$$If<!vh5555#v#v#v#v:Vl t65555a<$$If<!vh5555#v#v#v#v:Vl t65555a<$$If<!vh5555#v#v#v#v:Vl t65555a<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<$$If<!vh5 555z#v #v#v#vz:Vl t65 555za<@@@ ~NormalCJ_HaJmH sH tH DA@D Default Paragraph FontRi@R  Table Normal4 l4a (k@(No Listj@j  Table Grid7:V04U`4 H{ Hyperlink >*phB '(56bcCD23 o p   \]78"#()+AYZ\r 5EFH]mnp!"$9_`c'(+GSTWpyz}  ,?@Ccyz}-.1Sops458e   UV&<Si">Un @Yv; < ""u#v##$G$$$$%%%%%%.&/&&&&' 'b''''''(([(((())/)E)[)e)j)))) *R*_*a*b***0,1,X,,,,,-[-f-----;.F.n....//Q////0N0[0]0^000i1k111111112d2e2f2t2344444445566666688888G9H999n:o:;;;;;<)<D<E<q<r<<<<<<<<== ====@@AABAHALA B BUBVB[B_BBBCCpCC0D1D|D}DDD3E4EVEWEhEEEEEFFFFFFFFFGGUGGGGGHXHYHHHH&IlIIIII JUJJJK K$K%KuKzKKKKLMLQLRLLLL!M:MMMMMMNNUXUaUvUUUUUUUUUUVVSVVVVW WDWbWdWoWpWWWWWX6XAXBXNXXX YQY`YdYeYYYZ Z Z ZPZQZZZH[J[_[`[c[v[[[[[\\]]]]]]k^l^m^^^__Y_Z_n_o______````OaPaQaRaXaaabada|a}aaaaaaaaaaaaaa b b.b/bbbc[ccd[dddOePeeeffIfJftfffffg\g]gggggg hhhBhUhVhhhii]i^iiiiiiii3j4jojpjjjjj?kkkkkk/l0lTllllllllmommmmmmmmmmnnmnnn{nnnnnnnnno3o4oLoyozooooo}p~pqqr s ssssstttttttttVuWu&x'xxxxxyyyyyzsztzzz{o{{{ |!|0|:||||| }=}n}x}y}}}}}}}}}~~'~(~,~-~8~9~=~>~[~\~`~a~j~k~o~~~~~~~~~~~~~~~   !<=IJz{+,;<@ALMQRoptu~܀݀ !%&/04NO[\ȁɁ́΁ׁ؁܁,-<=ABMNRSpquv@APQnԃ67BC $%?LYʅ!؆ن ·/<IɈ,ÉډBCDEbcghqrۊ܊ƋNj3Rpی"GHIW\hitxލߍbclsŎ̎=>?@IR^ijlÏŏُ "#%<MRSUk{Ր0568JbghjԑՑؑ0dijm~ՒBGHK`yVWZn͔Δϔڔ۔)6Ε,9Fno˖ؖ)qrst!?@ghӘ!<Vp@AǛțbcrsϜ /0TwÝȝԝ՝%)KLMNijmvwy àŠ'(,@AELMQhin|}ơǡ͡&:;BUV]uv~ŢѢҢ!./012OPafrṣӣ GHltĤ̤'1%*IJnsѦԦݦަ  "679NOPQZ[aPQ~Ө<m˩8Vyz/W|ūƫǫիګ'(19)-QR^bNOPQ\]ioz+8E°delm{ıűͱѱ(.Dz_`nrFklxyŴƴ )?Ylm|}ʵ%HItƶ *Qx÷ 4Yz¸øոٸ78BISThoιϹչٹ#cdqxۺܺklw .2RS_cKLMNgjstv۾ܾݾ ()*>AJKMVWYghjyz|Ŀſ$%>KX +3bc01fm?]| /S .Q|)6CDEgt)6CDEFGden;Y|}Bf?a;bcno{ -:GXYv %QoAg@d<`$%AN[/012OPYxy7Z[Dh78CDPVamn!"+KLXYhi /0W{>`'-8DEZgtuv %2?@ABC`aj-Kno8_ %2?@ABC`aj:X{|<kCs 4b4\]hiu{%&56R#HITUagr~!"Aq=>IJV\gst ByOU?@LM\]23Y (45Q^klmno9Wv 7\!IJVWfg=>d!,89Wdqrs Bu +,8>IUVy)*9:Y&'23?EP\]} -:GHIJKhir:Yw 0^2U $%&HUbcd K2Vx?dDEPQ]cnz{ !*QR^_no>?m+Nz,9:;Zgtuv  7d 1_~78CDPVamn789AD000000 0 0 0000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0000000000000000 0 00000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000000000000000000000000000000000000 0 00000000 0 0 0 000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00 0 0 00 0 0 000000 0 0 000000 0 00000000000000000000000000000 0 0 0 0 0 00000 0 0 0 000 0 0 0 0000 0 0 000 0 0 0 0000000000 0 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00 0 0 000000 0 0000000000000 00 0 0 00 0 0 00 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000000000000000 0 0 0 0 0 00000 0 0 0 000 0 0 0 0000 0 0 000 0 0 0 0000000000 0 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 00 0 0 0 0 0 0 0 000000000000000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000000000000000000000000000000000000000000000000000000000 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 00000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000000000000 0 0 0 0 0 0 0 00000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000000000 0 0 0 000000000000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 000 0 0 0 0 0 0 0 0 0 0 0 000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000000000000000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 000000000000000000000000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000000000000000000000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000000000000000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000000000000000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 000000000000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000000000000000000000000000000000000000000 0 0 0 0 0 0 0 0 0 000000000000000000000000 0 0 0 0 0 0 0 0 0 000000000000000000000000 0 0 0 0 0 0 0 0 0 000000000000000000000000000000 0 0 0 0 0 0 0 0 0 000000000000000000000000000 0 0 0 0 0 0 0 0 0 000000000000000000000000000 0 0 0 0 0 0 0 0 0 000000000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000000000000000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000000000000000000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000000000000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000000000000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000000000'23o ]()+AYZ\r 5EFH]mnp!"$9_`c'(+GSTWpyz}  ,?@Ccyz}-.1Sops458e   UV&<Si">Un @Yv ""u#v##$G$$$%%%%.&/&&&&' 'b''''''(([(((())/)E)[)e)j)))) *R*_*a*b***0,1,X,,,,,-[-f-----;.F.n....//Q////0N0[0]0^000i1k111111112d2e2f2t234444444556666668o:;;;<)<D<E<r<<<<<<<== ====@@AABAHALA B BUBVB[B_BCCpCC0D1D|D}DhEEEEEFFFFGGUGGGGYHHHII JJK$K%KuKzKKKKLMLMMMN=NNZQRRUdWoWpWWWWX6XBXNXX YQY`YdYeYYYZ ZQZZZH[J[_[`[c[v[[[[[\\]]]]]m^^^_______````OaPaQaRaXaaabada|a}aaaaaaaaaaaaaa b b.b/bbbc[ccd[ddtffffgg hBhUhVhhhii]i^iiii3j4jojjjj?kkkklllllmommmmmm~pqqrttttttttVuWu&x'xxxxxyyyyyzzz{o{{{ |!| }=}n}x}y}}}}}=~>~[~\~`~a~j~k~~~~~~~~~~~~~~   <=IJz{+,;<@ALMQRoptu~܀݀ !%&/04O[\ȁɁ́΁ׁ؁܁,-<=ABMNRSpquvԃ6 $%?LYʅ!؆ن ·/<IɈ,ÉډBCی"GW\hitxލߍbcls=>IR^lŏُ %<MUk{Ր08Jbjؑ0dm~ՒBK`yVWZn͔ϔ)6Ε,9Fno˖ؖ)qrt!?<Vp@A0TwÝȝԝ՝%)KLjmvwy àŠ'(,@AELMQhin|}ơǡ͡&:;BUV]uv~ŢѢҢ!./02OPafrṣӣ GHltĤ̤'1%*IJnԦݦަ  "679NOQZ/W|ūիګ'(19)-QR^bNOioz+8E°m{ıűͱѱ(.Dz_`nrF 4Yz¸øոٸ78BISThoιϹչٹ#cdqxۺܺklw .2RS_cKLgjstv۾ܾݾ ()>AJKMVWYghjyz|Ŀſ$%>KX +3bc01fm .Q|)6CDEgt)6CDEGden;b{ -:GXYv<`$%AN[/02OPY7PVamn!"+'-8DEZgtuv %2?@AC`aj8_ %2?@AC`aj4\u{#Hagr~=V\gstU?@LM\Y (45Q^klmno 7\!d!,89Wdqrs8>IUVy&?EP\]} -:GHIKhir2U $%&HUbcdD]cnz{ !*+Nz,9:;Zgtuv7PVamn789AD0j00%# h00$000000j00)$ h00( h00' h00$ 00 h00" j00" j00"$ 0000d00000000000000000000 0000 0000 0000 0000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000 @0000000000000000000000000000000000000 0000000 0 0 0 00000000000000000000000000000000000000000000@000000000000000000000000000000000000000000000000000000000000000@0@0@0@0@0@0@0@0@00000000000000000000000000 0 0 0 0 000(00(0!110!1/00(0!1-0!1-00(@0@0@0@0@0@00.1H@0@0@0@0011C2(011B011@@0@0091C:)091B0:1Q091@@0@00=1A@0@0@0@0@0@009180916@00;15@00I1;JD+0I180?16@00N1;0N19@0@00N19@0@00?16@,*@0@0@0@0@0@0@0@0@000(@0@000(@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@001-601,01*000 0-@0@0@0@0@0@0@0@0@0@0@0@001.01-01+0 0-01+01+0 0-01+01+0 0-01+01+0 0-01+01+0 0-01+01+0 0-01+01+0 0- l͠0 0-01*000 0-0 0-0 0-0 0-0 0-0 0-0 0-0150<0140.1H@001,0<01+01)01-<01,01*0001+01-01+0001+01A=0001>0140150150150.1H01+01;@0@001,01,01+01)0150140001+01-01,01*0000012BV01101/00j02213^"j0220@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@ 0@ 0@ 0@ 0@ 000(00(0!110!1/00(0!1-0!1-00(j022.092 j07280_"j0U2j0U2j0U2j0U2j0U2092 092 j0?2 @`"j0?2 j0?2 092 j0C2 j0C2 j0C2 j072j0G2j0G2j0j2j072j0|2j0|2j072j072j0|2092 j072j072j0S2T@b"j0S2j0S2092 092 j0X2j0X2j0C2 j072j0\2j0\2j02j02g"j02j02j0C2 j072j02092 j0C2 j072j0h2id"j0h2j0h2092 j0l2j0l2j0C2 j072j0p2j0p2j02j02@i"j02j02j0C2 j072j02092 j0C2 j072j0|2}f"j0|2j0|2092 j02j02j0C2 j072j02yj02wj02sj02spk"j02j02j0C2 j072j02092 j0C2 j072j02ph"j02oj02n092 j02pj02oj0C2 j072j02Rj02Pj02Lj02Lm"j03j03j0C2 j072j03092 j0C2 j072j02Ik"j02Hj02G092 j02Ij02Hj0C2 j072j02+j02)j02%j02%o"j0?3j0?3j0C2 j072j0?3092 j0C2 j072j02"Lm"j02!j02092 092 092 :V092  092 092 022 0>2 0>2 0>2 00 022 0C2 0C2 0C2 020 0022 0H2 0H2 0H2 02 022 0M2 0M2 0M2 00022 0R2 0R2 0R2 00 022 0W2 0W20W2 0W20W2 00022 j02( j02+ j02* 0000 @0032 4HV032032022022@0@0@0@0@0@0@0@0@0@0@0@0@0@0@ 000(0!1-00(j0J2-j0J2,j0J2*j0O2*j0O2*j0O2*j0S2*j0S2*j0S2*j0W2*j0W2*j0W2*j0[2*j0[2*j0[2*j0_2*j0_2*j0_2*j0c2*j0c2*j0c2*j0g2*j0g2*j0g2*j0k2*j0k2*j0k2*j0o2*j0o2*j0o2*j0s2*j0s2*j0s2*j0w2*j0w2*j0w2*j0{2*j0{2*j0{2*j02*j02*j02*j02*j02*j02*j02*j02*j02*j02*j02*j02*j0}2<~Rj02*j02*j02*j02*j027j02*j02*j02*j02*j0J2.022092 :(IV092  092 092 022 0>2 0>2 0>2 0>2 022 0C2 0C2 0C2 0C2 022 0H2 0H2 0H2 0H2 022 0M2 0M2 0M2 0M2 022 0R2 0R2 0R2 0R2 022 0W2 0W2 0W2 0W2XpLV022 0223dHV022j02Yj02j020j02j02Xj02j02 @0j02 j02 @0j020022j02j02022022022022022092 j0q3lr"j0q3kj0q3i092 092 @0@0@0@0@0@0@0@0@0@0@0@0@0@0@ 000(j03Xj03Wj03U092  j03Uj03U092  j03Uj03U092  j03Uj03U092  j03Uj03U092  j03Uj03U092  j03Uj03U092  j03Uj03U092  j03Uj03U092  j03Wj03U092  j03Uj03U092  j03Uj03U092  j03Uj03U092  j03Uj03U092  j03Uj03U092  j03Uj03U092  j03Uj03U092  j03Uj03U092  j03Uj03U092  j03Uj03U092  j03Uj03U092  j03Uj03U092  092 :V092  092 092 022 0>2 0>2 0>2 0>2 022 0C2 0C2 0C2 0C2 022 j04j04j03HHj03Gj03Fj03D0j03Dj03Fj03D0j03Dj03Fj03D0j03Dj03Fj03D0j03Dj03Dj03D0j03Dj03Dj03D0j03Dj03Fj03D0j03Dj03Fj03D@0j03Dj03Fj03D0j03Dj03DT0j04Hj04Fj04D0j04Dj04D0j0 4Dj0 4D0j0 4Dj0 4D0j04Dj04D0j04Dj04D0j040j041j040j04.092 092 @0@0@0@0@0@0@0@0@0@0@0@0@0@0@ 000(j0-40.\092 :j0/41j0/40@ 0092  j0340092 j034.092  j074.j074.j074.092  j0;40092 j0;4.092  092 :V092  092 092 022 0>2 0>2 0>2 0>2 022 0C2 0C2 0C2 0C2 022 j0A4B؋j0A4j0O4Pj0A40j0R4j0R4 j0R4 j0R4 @0@0@0@0@0@0@0@0@0@0@ 000(j0/41j0/40@ 0092  j0340092 j034.092  j0;40092 j0;4.092  j0n4j0n4j0n4j0R4 j0R4 j0R4 j0R4 Shj0R4 j0R4092 092 @0@0@0@0@0@0@0@0@0@0@0@0@0@0@ 000(j0-40j0-40j0-40092 :j0/41j0/40@ 0092  j0340092 @ 0092  j074.j074.j074.092  j0;40092 j0;4.092  j04P092 j0y4 092 :j0{4 j0{4 @0092  j04 j04 @0092  j04 j04 @ 0092  j04 j04 j034.092  j04 j04 j074.092  j04 j04 j0;4.092  j04@j04Fj04D@0j04Dj04D@0j0 4Dj0 4D@0j0 4Dj0 4D@0j04Dj04D@0j04-|j04,j04Fj04D@0j04Dj04D@0j0 4Dj0 4D@0j0 4Dj04D@0j04j04Fj04D@0j04Dj04D@0j0 4Dj0 4D@0j0 4Dj04D@0j04Dj04D@0092 092 :V092  092 092 022 0>2 0>2 0>2 0>2 022 0C2 0C2 0C2 0C2 022 j0h4ij0h4j03Gj03Fj03D@0j03Dj03Fj03D@0j0X4{j0Y4}j0X4{@0j0\4{j0\4{j0\4{@0j0`4{j0a4}j0`4{@0j0d4{j05j0d4{@0j0h40j05j05j05092 092 092 :V092  092 092 022 0>2 0>2 0>2 0>2 022 0C2 0C2 0C2 0C2 022 0H2 0H2 0H2 0H2 022 0M2 0M2 0M2 0M2 022 0R2 0R2 0R2 0R2 022 0W2 0W2 0W2 0W2 022 j04`j04j040j0?5@Tj0?5j0?5092 092 092 :V092  092 092 022 0>2 0>2 0>2 0>2 022 0C2 0C2 0C2 0C2 022 0H2 0H2 0H2 0H2 022 0M2 0M2 0M2 0M2 022 j04j04j040j0a5b j0a5j0a5092 092 092 :V092  092 092 022 0>2 0>2 0>2 0>2 022 0C2 0C2 0C2 0C2 022 0H2 0H2 0H2 0H2 022 0M2 0M2 0M2 0M2 022 j04蜪j04j040j05ļj05j05092 092 092 :V092  092 092 022 0>2 0>2 0>2 0>2 022 0C2 0C2 0C2 0C2 022 0H2 0H2 0H2 0H2 022 j05,j05j050j05Vj05Uj05S092 092 092 :V092  092 092 022 0>2 0>2 0>2 0>2 022 0C2 0C2 0C2 0C2 022 0H2 0H2 0H2 0H2 022 0M2 0M2 0M2 0M2 022 0R2 0R2 0R2 0R2 022 j0+5,Īj0+5j0+50j0544Ľj053j051092 092 092 :V092  092 092 022 0>2 0>2 0>2 0>2 022 0C2 0C2 0C2 0C2 022 j0R5Sj0R5j0R50j05ƽj05j05092 092 092 :V092  092 092 022 0>2 0>2 0>2 0>2 022 j0y5zLj0y5j0y50j05ʽj05j05092 092 092 :V092  092 092 022 0>2 0>2 0>2 0>2 022 j05j05j050j06ʽj06j06092 092 092 :V092  092 092 022 0>2 0>2 0>2 0>2 022 j05Իj05j050j06ͽj06j06092 092 092 :V092  092 092 022 0>2 0>2 0>2 0>2 022 j05j05j050092 092 092 092 092 j006S1Ͻj006Rj006P092 092 092 092 092 092  092  092 092 022 0>2 0>2 0>2 0>2 022 j06j06j06j060j0G6AH4ҽj0G6@j0G6>092 092 092 :V092  092 092 022 0>2 0>2 0>2 0>2 022 j0E6 Fɪj0E6j0E60j0Z6[HԽj0Z6j0Z6092 092 092 :V092  092 092 022 0>2 0>2 0>2 0>2 022 0C2 0C2 0C2 0C2 022 j0l6 mͪj0l6j0l60j0r6sֽj0r6j0r6092 092 092 092 :V092  092 092 022 0>2 0>2 0>2 0>2 022 0C2 0C2 0C2 0C2 022 j06 @"j06j060j06ٽj06j06092 092 092 092 :V092  092 092 022 0>2 0>2 0>2 0>2 022 0C2 0C2 0C2 0C2 022 0H2 0H2 0H2 0H2 022 0M2 0M2 0M2 0M2 022 j06 "j06j060j06xݽj06j06092 092 092 :V092  092 092 022 0>2 0>2 0>2 0>2 022 0C2 0C2 0C2 0C2 022 0H2 0H2 0H2 0H2 022 0M2 0M2 0M2 0M2 022 j06 "j06j060j06j0j06ij06g092 092 092 :V092  092 092 022 0>2 0>2 0>2 0>2 022 0C2 0C2 0C2 0C2 022 j07  "j07j070j06Wj06Vj06T092 092 092 :V092  092 092 022 0>2 0>2 0>2 0>2 022 0C2 0C2 0C2 0C2 022 0H2 0H2 0H2 0H2 022 j0/7 0P"j0/7j0/70j07j07j07092 092 092 :V092  092 092 022 0>2 0>2 0>2 0>2 022 0C2 0C2 0C2 0C2 022 j0V7 W"j0V7j0V70j0"60000000 }#*.0a25g8?EDINSU[x_ bhl2ruz O7@oNҪù@nvQr  B  *05M[dns}YEm!_'Sy ? y -!o!!!4""""#&/.169t:>CEAIUJpK3MNQU?@ABCDEFGHIJKLNOPQRSTUVWXYZ\]^_`abcefghijklmopqrtuvwxyz{|~     BBX%۔9Lԯܔ9ӯݔ9Lӯޔ9 ԯߔ9ӯ9 ӯ9ү9d9$999d9$999d9$99L9j9Lj9f9D949s9t9d޵99l99,9n9Ln99$o9N9$j09BB``o{QQJVJV=f=fffjjkkmmnnnnrr߾߾**2D      !"#$8@SSmyQQMVMV@f@fggjjkkmmqnqnrr177D  !"#$ B*urn:schemas-microsoft-com:office:smarttagscountry-region>*urn:schemas-microsoft-com:office:smarttags PostalCode8 *urn:schemas-microsoft-com:office:smarttagsCity:"*urn:schemas-microsoft-com:office:smarttagsStreet;#*urn:schemas-microsoft-com:office:smarttagsaddress9!*urn:schemas-microsoft-com:office:smarttagsplace9*urn:schemas-microsoft-com:office:smarttagsState=%*urn:schemas-microsoft-com:office:smarttags PlaceName=$*urn:schemas-microsoft-com:office:smarttags PlaceType %$#"! !!!!!!!!!!!%!$%!$4Os6B5HU  (6P]Ti &A[q!2L`z=Za}!,FPo ;Qw6Mg^}KWq7"5PZeVbQsh $w^ZBWk)CLfxFb 5!+D-D3juJUL(U(3344FGOGBKIKTT````Xa`abbTo_oqqrr s sIQNW muԦܦmvjrAI $$&GbbdD{n99;Yttv7n<@ADD>KԂX5d,FLq1CтvjHGJ&cPq r^^`o(. ^`hH. pLp^p`LhH. @ @ ^@ `hH. ^`hH. L^`LhH. ^`hH. ^`hH. PLP^P`LhH.88^8`o(. ^`hH.  L ^ `LhH.   ^ `hH. xx^x`hH. HLH^H`LhH. ^`hH. ^`hH. L^`LhH.^`OJPJQJ^Jo(-^`OJQJ^Jo(hHopp^p`OJQJo(hH@ @ ^@ `OJQJo(hH^`OJQJ^Jo(hHo^`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHoPP^P`OJQJo(hH^`o(. ^`hH. pLp^p`LhH. @ @ ^@ `hH. ^`hH. L^`LhH. ^`hH. ^`hH. PLP^P`LhH.^`o(. ^`hH. pLp^p`LhH. @ @ ^@ `hH. ^`hH. L^`LhH. ^`hH. ^`hH. PLP^P`LhH.^`OJPJQJ^Jo(-^`OJQJ^Jo(hHopp^p`OJQJo(hH@ @ ^@ `OJQJo(hH^`OJQJ^Jo(hHo^`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHoPP^P`OJQJo(hHq1CjHGJ&c5d,>K r         u"$        8                                   @TR#3&V-]~MFv I G5 zZ2&Bwg0Wy,Iv*.DlvX !'! *!t"B"ik$#%q$'(K(M()(*M*m`*0T+3, D. v0Hf1h1H22a2/3E487'869V:-:6: <(e>B@EEGGdGH8It_MI*O;-QDQ`QRtU{VAeWQX< ZZ7Z>[\y$^m_+bFb{c"cicGucdm?m]m$3oqpMqrrft0uu-v!_vDwl+xrz"{`/{H{0t|~Bj~j-|JF3yh_@||dT7g]?N[*^i 3~y8ZL"Tj5YeF1wau.t{jv%5d;u># \ `cffd|Qd^g$jo b[e+Yu/HQk1i;G}-KeeoF#` cX1$(gW<E01 j6^5Zjnpwvy@0Q .#hNTfr||f9_*[a ^wb .aS$R7 N=}S669u-x4g13Iq()+AYZ\r 5EFH]mnp!"$9_`c'(+GSTWpyz}  ,?@Ccyz}-.1Sops458e11112e2f2t244466<<<== ==AABAHALAUBVB[B_B|D}DDDFFc[v[[[[]]o_____```PaQaRaXaaabada|a}aaaaaaaaaaaaaa b bnn{nnnnnnnnno3o4oLoyozooootttttttxxxxyyyz |!|0|:|}} $%?LYʅ؆ن ·/<IɈ,ÉډBCIW\hitxލߍbclsŎ̎=>@IR^ijlÏŏُ "#%<MRSUk{Ր0568JbghjԑՑؑ0dijm~ՒBGHK`yVWZn۔)6Ε,9Fno˖ؖ)qrÝȝԝ՝%)KLjmvwy àŠ'(,@AELMQhin|}ơǡ͡&:;BUV]uv~ŢѢҢ!./0Pafrṣӣ GHltĤ̤'1%*IJnsѦԦݦަ  "679NOǫիګ'(19)-QR^bNO]ioz+8Em{ıűͱѱ(.Dz_`nr¸øոٸ78BISThoιϹչٹ#cdqxۺܺklw .2RS_cKLgjstv۾ܾ ()>AJKMVWYghjyz|Ŀſ$%>KX +3bc01fm)6CDEgt)6CDEo{ -:GXYv$%AN[/0DPVamn'-8DEZgtuv %2?@A %2?@Aiu{Uagr~JV\gst (45Q^klm!,89Wdqrs,8>IUVy3?EP\]} -:GHI $%&HUbcdQ]cnz{,9:;ZgtuvDPVamnD@``$K``@{B`@UnknownG: Times New Roman5Symbol3& : Arial?5 z Courier New;Wingdings"qhq&⧦$'$'i$24d2QHX)?2NEB Entry Points  Time Order INGRAHAMRW INGRAHAMRW$      Oh+'0  , L X dpx NEB Entry Points Time Order INGRAHAMRW Normal.dot INGRAHAMRW5Microsoft Office Word@@-L}@fg$'՜.+,D՜.+,P  hp   LDS Church NEB Entry Points Time Order Title 8@ _PID_HLINKSA,:/http://creativecommons.org/licenses/by-sa/2.5/[   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root Entry FXȘgData h1TableVWordDocument7 SummaryInformation(DocumentSummaryInformation8CompObjq  FMicrosoft Office Word Document MSWordDocWord.Document.89q