(command.CommandList
  children: [
    (command.ShFunction
      name: display_msg
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number 1))}
              arms: [
                (case_arm
                  pat_list: [{<usage>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 134
                              stdin_parts: [
                                <'\n'>
                                <' '>
                                ($ Id.VSub_DollarName PROG)
                                <':  [ -m mapping_file ] [ -c config_file ]\n'>
                                <'   m <mapping_file> Name of the generated NISLDAP mapping file\n'>
                                <'                    Default is /var/yp/NISLDAPmapping\n'>
                                <
'   c <config_file>  Name of the generated ypserv configuration file\n'
                                >
                                <'                    Default is /etc/default/ypserv\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [116 117 136 -1]
                )
                (case_arm
                  pat_list: [{<no_config_file_name_specified>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 157
                              stdin_parts: [
                                <'\n'>
                                <
'You have not specified the config file name. You still have the\n'
                                >
                                <
'option to skip creating this file, specify a config file name, or\n'
                                >
                                <'continue creating it with the default file name ('>
                                (${ Id.VSub_Name CONFIG_FILE)
                                <').\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [139 140 159 -1]
                )
                (case_arm
                  pat_list: [{<no_mapping_file_name_specified>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 180
                              stdin_parts: [
                                <'\n'>
                                <
'You have not specified the mapping file name. You still have the\n'
                                >
                                <
'option to skip creating this file, specify a mapping file name, or\n'
                                >
                                <'continue creating it with the default file name ('>
                                (${ Id.VSub_Name MAP_FILE)
                                <').\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [162 163 182 -1]
                )
                (case_arm
                  pat_list: [{<new_config_file_name_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 206
                              stdin_parts: [
                                <'\n'>
                                <'You can either specify a new file name, or accept the default\n'>
                                <'config file name ('>
                                (${ Id.VSub_Name CONFIG_FILE)
                                <'). \n'>
                                <'\n'>
                                <'It is recommended not to use the default file name since this\n'>
                                <'script just helps with rapid creation of a config file. You\n'>
                                <'should examine it\'s content before using it.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [185 186 208 -1]
                )
                (case_arm
                  pat_list: [{<new_mapping_file_name_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 238
                              stdin_parts: [
                                <'\n'>
                                <'You can either specify a new file name, or accept the default\n'>
                                <'mapping file name ('>
                                (${ Id.VSub_Name MAP_FILE)
                                <'). \n'>
                                <'\n'>
                                <'It is recommended not to use the default file name since this\n'>
                                <'script just helps with rapid creation of a mapping file. You\n'>
                                <'should examine it\'s content before using it. And if there are\n'>
                                <'custom maps, then their entries in the mapping file need to be\n'>
                                <'customized too.\n'>
                                <'\n'>
                                <
'Also, creation of default mapping file would cause NIS components\n'
                                >
                                <
'to work in NIS to LDAP (N2L), rather than traditional NIS, mode\n'
                                >
                                <'when next restarted.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [211 212 240 -1]
                )
                (case_arm
                  pat_list: [{<backup_config_file>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 267
                              stdin_parts: [
                                <'\n'>
                                <'The config file '>
                                <Id.Right_DoubleQuote '"'>
                                (${ Id.VSub_Name CONFIG_FILE)
                                <Id.Right_DoubleQuote '"'>
                                <' already exists. It is strongly\n'>
                                <'recommended that you BACKUP this file before running '>
                                ($ Id.VSub_DollarName PROG)
                                <'.\n'>
                                <'\n'>
                                <
'However, even if you continue, you would be given the option to\n'
                                >
                                <'back up this file before it gets overwritten.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [243 244 269 -1]
                )
                (case_arm
                  pat_list: [{<backup_mapping_file>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 296
                              stdin_parts: [
                                <'\n'>
                                <'The mapping file '>
                                <Id.Right_DoubleQuote '"'>
                                (${ Id.VSub_Name MAP_FILE)
                                <Id.Right_DoubleQuote '"'>
                                <' already exists. It is strongly\n'>
                                <'recommended that you BACKUP this file before running '>
                                ($ Id.VSub_DollarName PROG)
                                <'.\n'>
                                <'\n'>
                                <
'However, even if you continue, you would be given the option to\n'
                                >
                                <'back up this file before it gets overwritten.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [272 273 298 -1]
                )
                (case_arm
                  pat_list: [{<warn_n2l_mode>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 341
                              stdin_parts: [
                                <'\n'>
                                <'Warning : Creation of default mapping file ('>
                                (command_sub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: (C {<basename>} {($ Id.VSub_DollarName MAP_FILE)})
                                  right: <Id.Backtick_Right '`'>
                                )
                                <')\n'>
                                <'          at default location ('>
                                (command_sub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: (C {<dirname>} {($ Id.VSub_DollarName MAP_FILE)})
                                  right: <Id.Backtick_Right '`'>
                                )
                                <') would cause NIS\n'>
                                <
'          components to work in NIS to LDAP (N2L) mode, rather than\n'
                                >
                                <'          traditional NIS mode, when next restarted.\n'>
                                <'\n'>
                                <'          '>
                                <Id.Right_DoubleQuote '"'>
                                ($ Id.VSub_DollarName PROG)
                                <Id.Right_DoubleQuote '"'>
                                <' assists with rapid creation of a simple N2L mapping\n'>
                                <
'          file. The user should examine it\'s content before using it.\n'
                                >
                                <
'          For custom maps, this file needs to be customized which can\n'
                                >
                                <'          be done using standard text editors.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [301 302 343 -1]
                )
                (case_arm
                  pat_list: [{<config_auth_method_menu>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 360
                              stdin_parts: [
                                <'    The following are the supported Authentication Methods -\n'>
                                <'      1  none\n'>
                                <'      2  simple\n'>
                                <'      3  sasl/cram-md5\n'>
                                <'      4  sasl/digest-md5\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [346 347 362 -1]
                )
                (case_arm
                  pat_list: [{<auth_method_menu>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 378
                              stdin_parts: [
                                <'    The following are the supported Authentication Methods -\n'>
                                <'      1  simple\n'>
                                <'      2  sasl/cram-md5\n'>
                                <'      3  sasl/digest-md5\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [365 366 380 -1]
                )
                (case_arm
                  pat_list: [{<tls_method_menu>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 395
                              stdin_parts: [
                                <'    The following are the supported TLS Methods -\n'>
                                <'      1  none\n'>
                                <'      2  ssl\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [383 384 397 -1]
                )
                (case_arm
                  pat_list: [{<retrieve_error_action_menu>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 412
                              stdin_parts: [
                                <'    The following are the supported actions -\n'>
                                <'      1  use_cached\n'>
                                <'      2  fail\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [400 401 414 -1]
                )
                (case_arm
                  pat_list: [{<store_error_action_menu>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 429
                              stdin_parts: [
                                <'    The following are the supported actions -\n'>
                                <'      1  retry\n'>
                                <'      2  fail\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [417 418 431 -1]
                )
                (case_arm
                  pat_list: [{<sorry>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 446
                              stdin_parts: [
                                <'\n'>
                                <'HELP - No help is available for this topic.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [434 435 448 -1]
                )
                (case_arm
                  pat_list: [{<backup_config_file_cont_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 470
                              stdin_parts: [
                                <'\n'>
                                <'HELP - Since '>
                                ($ Id.VSub_DollarName PROG)
                                <' will overwrite the existing config file, it is\n'>
                                <'       strongly recommended that you backup this file prior to\n'>
                                <'       running this utility.\n'>
                                <'\n'>
                                <
'       However, even if you continue, you would be given the option\n'
                                >
                                <'       to back up this file before it gets overwritten.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [451 452 472 -1]
                )
                (case_arm
                  pat_list: [{<backup_config_file_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 488
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - If you choose to backup the existing config file, it would be\n'
                                >
                                <
'       saved with current date and time suffix in yymmdd.HH.MM.SS format.\n'
                                >
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [475 476 490 -1]
                )
                (case_arm
                  pat_list: [{<backup_mapping_file_cont_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 512
                              stdin_parts: [
                                <'\n'>
                                <'HELP - Since '>
                                ($ Id.VSub_DollarName PROG)
                                <' will overwrite the existing mapping file, it is\n'>
                                <
'       strongly recommended that you backup this file prior to running\n'
                                >
                                <'       this utility.\n'>
                                <'\n'>
                                <
'       However, even if you continue, you would be given the option to\n'
                                >
                                <'       back up this file before it gets overwritten.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [493 494 514 -1]
                )
                (case_arm
                  pat_list: [{<backup_mapping_file_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 530
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - If you choose to backup the existing mapping file, it would be\n'
                                >
                                <
'       saved with current date and time suffix in yymmdd.HH.MM.SS format.\n'
                                >
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [517 518 532 -1]
                )
                (case_arm
                  pat_list: [{<warn_n2l_mode_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 559
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - It is strongly recommended that the mapping file is created at\n'
                                >
                                <'       non-default location (other than '>
                                (command_sub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: (C {<dirname>} {($ Id.VSub_DollarName MAP_FILE)})
                                  right: <Id.Backtick_Right '`'>
                                )
                                <'). After this,\n'>
                                <
'       it\'s content should be verified, custom maps should be handled,\n'
                                >
                                <
'       and if NIS components are desired to run in NIS to LDAP (N2L),\n'
                                >
                                <'       then only it should be copied at the default location.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [535 536 561 -1]
                )
                (case_arm
                  pat_list: [{<nisLDAPconfigDN_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 578
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - The DN which stores the configuration information in LDAP.\n'
                                >
                                <
'       There is no default value for this field. Leave empty or\n'
                                >
                                <
'       undefined to get this information from config file (ypserv).\n'
                                >
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [564 565 580 -1]
                )
                (case_arm
                  pat_list: [{<nisLDAPconfigPreferredServerList_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 605
                              stdin_parts: [
                                <'\n'>
                                <'HELP - List of directory servers to provide the configuration\n'>
                                <'       information. There is no default. The preferred servers\n'>
                                <
'       must be entered IN THE ORDER you wish to have them contacted.\n'
                                >
                                <
'       The preferred server list is a space separated list of IP\n'
                                >
                                <
'       addresses. Providing port numbers is optional, and when not\n'
                                >
                                <
'       supplied, port 389 is assumed. For an LDAP server running\n'
                                >
                                <'       on this machine, at port 389, use '>
                                <Id.Right_DoubleQuote '"'>
                                <'127.0.0.1:389'>
                                <Id.Right_DoubleQuote '"'>
                                <'.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [583 584 607 -1]
                )
                (case_arm
                  pat_list: [{<auth_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 623
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - The authentication method to be used to obtain information\n'
                                >
                                <
'       from LDAP server. The supported methods are provided in menu.\n'
                                >
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [610 611 625 -1]
                )
                (case_arm
                  pat_list: [{<tls_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 647
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - The transport layer security used for connection to the LDAP\n'
                                >
                                <
'       server. In order to successfully use transport layer security,\n'
                                >
                                <
'       the server must also support the chosen values. The supported\n'
                                >
                                <'       methods are provided in menu. Default is '>
                                <Id.Right_DoubleQuote '"'>
                                ($ Id.VSub_DollarName DEF_TLS)
                                <Id.Right_DoubleQuote '"'>
                                <'.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [628 629 649 -1]
                )
                (case_arm
                  pat_list: [{<TLSCertificateDBPath_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 669
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - The absolute path name of the directory containing the certificate\n'
                                >
                                <'       database. The default value is '>
                                <Id.Right_DoubleQuote '"'>
                                ($ Id.VSub_DollarName DEF_TLSCertificateDBPath)
                                <Id.Right_DoubleQuote '"'>
                                <'\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [652 653 671 -1]
                )
                (case_arm
                  pat_list: [{<nisLDAPconfigProxyUser_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 689
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - The bind DN of the proxy user used to obtain configuration\n'
                                >
                                <
'       information. There is no default value. If the value ends\n'
                                >
                                <
'       with a comma, the value of the nisLDAPconfigDN attribute\n'
                                >
                                <'       is appended.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [674 675 691 -1]
                )
                (case_arm
                  pat_list: [{<ProxyPassword_warn>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 712
                              stdin_parts: [
                                <'\n'>
                                <
'Warning : In order to avoid having this password publicly visible\n'
                                >
                                <
'          on the machine, the password should appear only in the\n'
                                >
                                <
'          configuration file, and the file should have an appropriate\n'
                                >
                                <'          owner, group, and file mode.\n'>
                                <'\n'>
                                <
'          So, once this file is ready, please modify appropriately\n'
                                >
                                <'          to make sure this file is well protected.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [694 695 714 -1]
                )
                (case_arm
                  pat_list: [{<preferredServerList_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 739
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - List of directory servers for mapping data to/from LDAP.\n'
                                >
                                <
'       There is no default. The preferred servers must be entered\n'
                                >
                                <
'       IN THE ORDER you wish to have them contacted. The preferred\n'
                                >
                                <'       server list is a space separated list of IP addresses.\n'>
                                <
'       Providing port numbers is optional, and when not supplied,\n'
                                >
                                <'       port 389 is assumed. For an LDAP server running on this\n'>
                                <'       machine, at port 389, use '>
                                <Id.Right_DoubleQuote '"'>
                                <'127.0.0.1:389'>
                                <Id.Right_DoubleQuote '"'>
                                <'.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [717 718 741 -1]
                )
                (case_arm
                  pat_list: [{<nisLDAPproxyUser_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 761
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - The bind DN of the proxy user the ypserv to read or write\n'
                                >
                                <
'       from or to LDAP. Assumed to have the appropriate permission\n'
                                >
                                <
'       to read and modify LDAP data. There is no default value. If\n'
                                >
                                <
'       the value ends with a comma, the value of the context for\n'
                                >
                                <
'       the current domain (as defined by a nisLDAPdomainContext\n'
                                >
                                <'       attribute (NISLDAPmapping(4))) is appended.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [744 745 763 -1]
                )
                (case_arm
                  pat_list: [{<nisLDAPbindTimeout_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 782
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - The amount of time in seconds after which an LDAP bind operation\n'
                                >
                                <'       will timeout. Default is '>
                                ($ Id.VSub_DollarName DEF_nisLDAPbindTimeout)
                                <' seconds.\n'>
                                <'       Decimal values are allowed.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [766 767 784 -1]
                )
                (case_arm
                  pat_list: [{<nisLDAPsearchTimeout_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 803
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - The amount of time in seconds after which an LDAP search operation\n'
                                >
                                <'       will timeout. Default is '>
                                ($ Id.VSub_DollarName DEF_nisLDAPsearchTimeout)
                                <' seconds.\n'>
                                <'       Decimal values are allowed.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [787 788 805 -1]
                )
                (case_arm
                  pat_list: [{<nisLDAPmodifyTimeout_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 824
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - The amount of time in seconds after which an LDAP modify operation\n'
                                >
                                <'       will timeout. Default is '>
                                ($ Id.VSub_DollarName DEF_nisLDAPmodifyTimeout)
                                <' seconds.\n'>
                                <'       Decimal values are allowed.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [808 809 826 -1]
                )
                (case_arm
                  pat_list: [{<nisLDAPaddTimeout_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 845
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - The amount of time in seconds after which an LDAP add operation\n'
                                >
                                <'       will timeout. Default is '>
                                ($ Id.VSub_DollarName DEF_nisLDAPaddTimeout)
                                <' seconds.\n'>
                                <'       Decimal values are allowed.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [829 830 847 -1]
                )
                (case_arm
                  pat_list: [{<nisLDAPdeleteTimeout_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 866
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - The amount of time in seconds after which an LDAP delete operation\n'
                                >
                                <'       will timeout. Default is '>
                                ($ Id.VSub_DollarName DEF_nisLDAPdeleteTimeout)
                                <' seconds.\n'>
                                <'       Decimal values are allowed.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [850 851 868 -1]
                )
                (case_arm
                  pat_list: [{<nisLDAPsearchTimeLimit_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 895
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - Establish a value for the LDAP_OPT_TIMELIMIT option, which\n'
                                >
                                <
'       suggests a time limit for the search operation on the LDAP\n'
                                >
                                <
'       server. The server may impose its own constraints on possible\n'
                                >
                                <
'       values. See your LDAP server documentation. The default is the\n'
                                >
                                <'       nisLDAPsearchTimeout ('>
                                ($ Id.VSub_DollarName DEF_nisLDAPsearchTimeout)
                                <' seconds) value.\n'>
                                <'       Only integer values are allowed.\n'>
                                <'\n'>
                                <
'       Since the nisLDAPsearchTimeout limits the amount of time the\n'
                                >
                                <
'       client ypserv will wait for completion of a search operation,\n'
                                >
                                <'       setting the nisLDAPsearchTimeLimit larger than the\n'>
                                <'       nisLDAPsearchTimeout is not recommended.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [871 872 897 -1]
                )
                (case_arm
                  pat_list: [{<nisLDAPsearchSizeLimit_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 919
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - Establish a value for the LDAP_OPT_SIZELIMIT option, which\n'
                                >
                                <
'       suggests a size limit, in bytes, for the search results on\n'
                                >
                                <
'       the LDAP server. The server may impose its own constraints\n'
                                >
                                <
'       on possible values. See your LDAP server documentation. The\n'
                                >
                                <'       default is '>
                                ($ Id.VSub_DollarName DEF_nisLDAPsearchSizeLimit)
                                <', which means unlimited.\n'>
                                <'       Only integer values are allowed.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [900 901 921 -1]
                )
                (case_arm
                  pat_list: [{<nisLDAPfollowReferral_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 939
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - Determines if the ypserv should follow referrals or not.\n'
                                >
                                <'       Recognized values are yes and no. Default is '>
                                ($ Id.VSub_DollarName DEF_nisLDAPfollowReferral)
                                <'.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [924 925 941 -1]
                )
                (case_arm
                  pat_list: [{<nisLDAPretrieveErrorAction_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 969
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - If an error occurs while trying to retrieve an entry from\n'
                                >
                                <'       LDAP, one of the following actions can be selected:\n'>
                                <'\n'>
                                <
'       use_cached : Retry the retrieval the number of time specified\n'
                                >
                                <'                    by nisLDAPretrieveErrorAttempts, with the\n'>
                                <
'                    nisLDAPretrieveErrorTimeout value controlling\n'
                                >
                                <'                    the wait between each attempt.\n'>
                                <'\n'>
                                <
'                    If all attempts fail then log a warning and\n'
                                >
                                <
'                    return the value currently in the cache to the\n'
                                >
                                <'                    client.  This is the default value.\n'>
                                <'\n'>
                                <
'       fail       : Proceed as for \'use_cached\' but if all attempts\n'
                                >
                                <
'                    fail return a YPERR_YPERR error to the client.\n'
                                >
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [944 945 971 -1]
                )
                (case_arm
                  pat_list: [{<nisLDAPretrieveErrorAttempts_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 989
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - The number of times a failed retrieval should be retried.\n'
                                >
                                <
'       The default is unlimited. Note while retries are made, the\n'
                                >
                                <
'       NIS daemon will be prevented from servicing further requests.\n'
                                >
                                <'       Hence, values other than 1 should be used with caution.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [974 975 991 -1]
                )
                (case_arm
                  pat_list: [{<nisLDAPretrieveErrorTimeout_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 1009
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - The timeout (in seconds) between each new attempt to retrieve\n'
                                >
                                <'       LDAP data. Default is '>
                                ($ Id.VSub_DollarName DEF_nisLDAPretrieveErrorTimeout)
                                <' seconds.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [994 995 1011 -1]
                )
                (case_arm
                  pat_list: [{<nisLDAPstoreErrorAction_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 1035
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - If an error occurs while trying to store data to the LDAP\n'
                                >
                                <
'       repository, one of the following actions can be selected :\n'
                                >
                                <'\n'>
                                <
'       retry : Retry operation nisLDAPstoreErrorAttempts times with\n'
                                >
                                <
'               nisLDAPstoreErrorTimeout seconds between each attempt.\n'
                                >
                                <
'               Note while retries are made the NIS daemon will be\n'
                                >
                                <
'               prevented from servicing further requests. Use with\n'
                                >
                                <'               caution. This is the default value.\n'>
                                <'\n'>
                                <'       fail  : Return YPERR_YPERR error to the client.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1014 1015 1037 -1]
                )
                (case_arm
                  pat_list: [{<nisLDAPstoreErrorAttempts_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 1056
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - The number of times a failed attempt to store data to the\n'
                                >
                                <
'       LDAP repository should be retried. The default is unlimited.\n'
                                >
                                <'\n'>
                                <
'       The value for nisLDAPstoreErrorAttempts is ignored unless\n'
                                >
                                <'       nisLDAPstoreErrorAction=retry.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1040 1041 1058 -1]
                )
                (case_arm
                  pat_list: [{<nisLDAPstoreErrorTimeout_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 1079
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - The timeout (in seconds) between each new attempt to store\n'
                                >
                                <'       LDAP data. Default is '>
                                ($ Id.VSub_DollarName DEF_nisLDAPstoreErrorTimeout)
                                <' seconds.\n'>
                                <'\n'>
                                <
'       The value for nisLDAPstoreErrorTimeout is ignored unless\n'
                                >
                                <'       nisLDAPstoreErrorAction=retry.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1061 1062 1081 -1]
                )
                (case_arm
                  pat_list: [{<selectDomain4N2L_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 1098
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - Whether this domain needs to be served by YP to LDAP transition\n'
                                >
                                <
'       solution. The default is no in which case the data in this\n'
                                >
                                <
'       domain would not be taken care for transitioning to LDAP.\n'
                                >
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1084 1085 1100 -1]
                )
                (case_arm
                  pat_list: [{<generate_comment_info_for_cust_map_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 1117
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - If selected, this script will try to add relevant comments\n'
                                >
                                <'       in the mapping file which might help in customizing the\n'>
                                <'       mapping information for custom maps.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1103 1104 1119 -1]
                )
                (case_arm
                  pat_list: [{<generate_mapping_info_for_cust_map_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 1165
                              stdin_parts: [
                                <'\n'>
                                <'HELP - If selected, this script will try to generate mapping\n'>
                                <'       information for this map assuming it is a '>
                                <Id.Right_DoubleQuote '"'>
                                <simple>
                                <Id.Right_DoubleQuote '"'>
                                <' map.\n'>
                                <'\n'>
                                <'       A map is assumed to be '>
                                <Id.Right_DoubleQuote '"'>
                                <simple>
                                <Id.Right_DoubleQuote '"'>
                                <' if each entry of this map\n'>
                                <'       has only one '>
                                <Id.Right_DoubleQuote '"'>
                                <'key value'>
                                <Id.Right_DoubleQuote '"'>
                                <' entry in YP, and if each map entry\n'>
                                <
'       can be represented as a single DIT string in the LDAP server.\n'
                                >
                                <'\n'>
                                <
'       If this map is not a simple map and you do want to store it\n'
                                >
                                <'       in LDAP, you have two options :\n'>
                                <'\n'>
                                <
'       1 - Answer yes, and this script would generate the mapping\n'
                                >
                                <
'           information for this map assuming it is a simple map.\n'
                                >
                                <
'           And once the execution of the script is over, you can\n'
                                >
                                <
'           customize the mapping information by hand editing the\n'
                                >
                                <'           mapping file.\n'>
                                <'\n'>
                                <
'       2 - Answer no, and this script would not generate mapping\n'
                                >
                                <
'           info for this map. And once the execution of the script\n'
                                >
                                <'           is over, you can include the customized mapping\n'>
                                <'           information by hand editing the mapping file.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1122 1123 1167 -1]
                )
                (case_arm
                  pat_list: [{<nisLDAPdomainContext_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 1184
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - This parameter defines the context (default location) in\n'
                                >
                                <
'       the directory tree at which all the name service entries\n'
                                >
                                <'       for this particular domain would be stored.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1170 1171 1186 -1]
                )
                (case_arm
                  pat_list: [{<nisLDAPyppasswddDomains_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 1208
                              stdin_parts: [
                                <'\n'>
                                <'HELP - Lists the domains for which password changes should be\n'>
                                <
'       made.  If this is not present then the value returned by\n'
                                >
                                <'       \'domainname\' will be used.\n'>
                                <'\n'>
                                <
'       NIS password change requests do not specify the domains in\n'
                                >
                                <
'       which any given password should be changed. (In traditional\n'
                                >
                                <
'       NIS this information is effectively hard coded in the NIS\n'
                                >
                                <'       makefile.)\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1189 1190 1210 -1]
                )
                (case_arm
                  pat_list: [{<custom_map_comment_char_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 1231
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - If selected, it will allow you to specify a character which\n'
                                >
                                <
'       would represent the start of the special \'comment\' field in\n'
                                >
                                <
'       a given NIS map. If this attribute is not present then the\n'
                                >
                                <'       default comment character \'#\' is used.\n'>
                                <'\n'>
                                <'       If a map cannot contain comments then the blank comment\n'>
                                <
'       character (\'\') should be specified (just hit the return key).\n'
                                >
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1213 1214 1233 -1]
                )
                (case_arm
                  pat_list: [{<same_comment_char_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 1253
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - If selected, for a given map, it will allow you to specify\n'
                                >
                                <'       a common comment character for all the domains.\n'>
                                <'\n'>
                                <'       Or else by selecting NO, for the same map, you would be\n'>
                                <'       given the option to specify different comment character\n'>
                                <'       for different domains.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1236 1237 1255 -1]
                )
                (case_arm
                  pat_list: [{<secure_flag_on_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 1276
                              stdin_parts: [
                                <'\n'>
                                <'HELP - Secure flag is set on maps which are generated with\n'>
                                <'       '>
                                <Id.Right_DoubleQuote '"'>
                                <'makedbm -s'>
                                <Id.Right_DoubleQuote '"'>
                                <'. When converting data from LDAP to YP,\n'>
                                <'       it adds YP_SECURE entries.\n'>
                                <'       \n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1258 1259 1278 -1]
                )
                (case_arm
                  pat_list: [{<secure_flag_all_domains_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 1297
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - If selected, it will allow you to set the secure flag on\n'
                                >
                                <'       for this map for all the domains.\n'>
                                <'\n'>
                                <
'       Or else by selecting NO, you would be given the option to\n'
                                >
                                <'       set this flag, for the same map, on per domain basis.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1281 1282 1299 -1]
                )
                (case_arm
                  pat_list: [{<interdomain_flag_on_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 1324
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - Interdomain flag is set on a set of maps which are generated\n'
                                >
                                <'       with '>
                                <Id.Right_DoubleQuote '"'>
                                <'makedbm -b'>
                                <Id.Right_DoubleQuote '"'>
                                <'. It signals NIS servers to use the domain\n'>
                                <
'       name resolver for host name and address lookups for hosts\n'
                                >
                                <'       not found in the maps.\n'>
                                <'\n'>
                                <
'       If selected, it adds YP_INTERDOMAIN entries in these maps\n'
                                >
                                <'       when converting data from LDAP to YP.\n'>
                                <'       \n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1302 1303 1326 -1]
                )
                (case_arm
                  pat_list: [{<interdomain_flag_all_domains_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 1345
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - If selected, it will allow you to set the interdomain flag\n'
                                >
                                <'       on for all the domains.\n'>
                                <'\n'>
                                <
'       Or else by selecting NO, you would be given the option to\n'
                                >
                                <'       set this flag on per domain basis.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1329 1330 1347 -1]
                )
                (case_arm
                  pat_list: [{<initialTTLlo_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 1369
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - The lower limit for the initial TTL (in seconds) for data\n'
                                >
                                <
'       read from disk when the ypserv starts. If initialTTLhi also\n'
                                >
                                <
'       is specified, the actual initialTTL will be randomly selected\n'
                                >
                                <
'       from the interval initialTTLlo to initialTTLhi (inclusive).\n'
                                >
                                <'\n'>
                                <'       Leaving the field empty yields the default value of '>
                                ($ Id.VSub_DollarName DEF_iTTLlo)
                                <'.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1350 1351 1371 -1]
                )
                (case_arm
                  pat_list: [{<initialTTLhi_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 1391
                              stdin_parts: [
                                <'\n'>
                                <'HELP - The upper limit for the initial TTL (in seconds).\n'>
                                <'       If left empty, defaults to '>
                                <Id.Right_DoubleQuote '"'>
                                ($ Id.VSub_DollarName DEF_iTTLhi)
                                <Id.Right_DoubleQuote '"'>
                                <'.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1374 1375 1393 -1]
                )
                (case_arm
                  pat_list: [{<runningTTL_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 1413
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - The TTL (in seconds) for data retrieved from LDAP while the\n'
                                >
                                <'       ypserv is running. If left empty, defaults to '>
                                <Id.Right_DoubleQuote '"'>
                                ($ Id.VSub_DollarName DEF_runTTL)
                                <Id.Right_DoubleQuote '"'>
                                <'.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1396 1397 1415 -1]
                )
                (case_arm
                  pat_list: [{<default_ttl_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 1445
                              stdin_parts: [
                                <'\n'>
                                <'HELP - The default TTL value for each map is set to :\n'>
                                <'       '>
                                (${ Id.VSub_Name DEF_iTTLlo)
                                <':'>
                                (${ Id.VSub_Name DEF_iTTLhi)
                                <':'>
                                (${ Id.VSub_Name DEF_runTTL)
                                <'\n'>
                                <'\n'>
                                <'       Select yes if you want to change the current TTL value.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1418 1419 1447 -1]
                )
                (case_arm
                  pat_list: [{<non_default_same_ttl_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 1463
                              stdin_parts: [
                                <'\n'>
                                <'HELP - Select yes if you want to set a new TTL value, but want\n'>
                                <'       to keep it same for all the maps.\n'>
                                <'      \n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1450 1451 1465 -1]
                )
                (case_arm
                  pat_list: [{<non_default_different_ttl_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 1481
                              stdin_parts: [
                                <'\n'>
                                <
'HELP - Select yes if you want to set TTL value for each map, but\n'
                                >
                                <'       want to keep it same for all the domains.\n'>
                                <'      \n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1468 1469 1483 -1]
                )
                (case_arm
                  pat_list: [{<default_different_ttl_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 1499
                              stdin_parts: [
                                <'\n'>
                                <'HELP - Select yes if you want to accept the default TTL\n'>
                                <'       value for this map.\n'>
                                <'      \n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1486 1487 1501 -1]
                )
                (case_arm
                  pat_list: [{<same_ttl_across_domains_help>}]
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 1517
                              stdin_parts: [
                                <'\n'>
                                <'HELP - Select yes if you want to set TTL value for the map,\n'>
                                <'       but want to keep it same for all the domains.\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1504 1505 1519 -1]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: d_echo
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<DEBUG>} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>})
                (C {<echo>} {($ Id.VSub_At '@')})
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_ans
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_Number 2))} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [(C {<echo>} {(DQ ($ Id.VSub_Number 1) <' '> <Id.Lit_BadBackslash '\\'> <c>)})]
                  spids: [1588 1601]
                )
              ]
              else_action: [
                (C {<echo>} 
                  {
                    (DQ ($ Id.VSub_Number 1) <' ['> ($ Id.VSub_Number 2) <'] '> 
                      <Id.Lit_BadBackslash '\\'> <c>
                    )
                  }
                )
              ]
              redirects: []
            )
            (C {<read>} {<ANS>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName ANS))} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ANS='> name:ANS)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 2)}
                          spids: [1654]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1638 1651]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_ans_req
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ANS='> name:ANS)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [1683]
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName ANS))} {<Id.Lit_Equals '='>} {(DQ )} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (C {<get_ans>} {(DQ ($ Id.VSub_At '@'))})
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName ANS))} 
                          {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                        )
                        (C {<echo>} {(DQ <'NULL value not allowed!'>)})
                      ]
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_integer
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ANS='> name:ANS)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [1774]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NUM='> name:NUM)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [1782]
                )
              ]
              redirects: []
            )
            (C {<get_ans>} {(DQ ($ Id.VSub_Number 1))} {(DQ ($ Id.VSub_Number 2))})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<not_integer>} {($ Id.VSub_DollarName ANS)})])
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName ANS))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {<Id.Lit_LBracket '['> <Hh> <Id.Lit_RBracket ']'>}
                            {<help>}
                            {<Help>}
                            {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\?'> ch:'?')}
                          ]
                          action: [
                            (C {<display_msg>} 
                              {
                                (braced_var_sub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Number 3>
                                  var_name: 3
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op: <Id.VTest_ColonHyphen _>
                                      arg_word: {<sorry>}
                                    )
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              }
                            )
                          ]
                          spids: [1823 1838 1848 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (C {<echo>} 
                              {
                                (DQ <'Invalid value: '> 
                                  (word_part.EscapedLiteral
                                    token: <Id.Lit_EscapedChar '\\"'>
                                    ch: '"'
                                  ) (${ Id.VSub_Name ANS) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'. '> 
                                  <Id.Lit_BadBackslash '\\'> <c>
                                )
                              }
                            )
                          ]
                          spids: [1851 1853 1870 -1]
                        )
                      ]
                      redirects: []
                    )
                    (C {<get_ans>} {(DQ <'Enter an integer value:'>)} {(DQ ($ Id.VSub_Number 2))})
                  ]
                )
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NUM='> name:NUM)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName ANS)}
                  spids: [1895]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_number
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ANS='> name:ANS)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [1930]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NUM='> name:NUM)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [1938]
                )
              ]
              redirects: []
            )
            (C {<get_ans>} {(DQ ($ Id.VSub_Number 1))} {(DQ ($ Id.VSub_Number 2))})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<not_numeric>} {($ Id.VSub_DollarName ANS)})])
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName ANS))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {<Id.Lit_LBracket '['> <Hh> <Id.Lit_RBracket ']'>}
                            {<help>}
                            {<Help>}
                            {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\?'> ch:'?')}
                          ]
                          action: [
                            (C {<display_msg>} 
                              {
                                (braced_var_sub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Number 3>
                                  var_name: 3
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op: <Id.VTest_ColonHyphen _>
                                      arg_word: {<sorry>}
                                    )
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              }
                            )
                          ]
                          spids: [1979 1994 2004 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (C {<echo>} 
                              {
                                (DQ <'Invalid value: '> 
                                  (word_part.EscapedLiteral
                                    token: <Id.Lit_EscapedChar '\\"'>
                                    ch: '"'
                                  ) (${ Id.VSub_Name ANS) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'. '> 
                                  <Id.Lit_BadBackslash '\\'> <c>
                                )
                              }
                            )
                          ]
                          spids: [2007 2009 2026 -1]
                        )
                      ]
                      redirects: []
                    )
                    (C {<get_ans>} {(DQ <'Enter a numeric value:'>)} {(DQ ($ Id.VSub_Number 2))})
                  ]
                )
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NUM='> name:NUM)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName ANS)}
                  spids: [2051]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_pos_int
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
              body: 
                (command.DoGroup
                  children: [
                    (C {<get_integer>} {(DQ ($ Id.VSub_Number 1))} {(DQ ($ Id.VSub_Number 2))} 
                      {(DQ ($ Id.VSub_Number 3))}
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName ANS)} {<-lt>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<echo>} {(DQ <'Invalid number: please enter a positive integer.'>)})
                          ]
                          spids: [2107 2120]
                        )
                      ]
                      else_action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_pos_num
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
              body: 
                (command.DoGroup
                  children: [
                    (C {<get_number>} {(DQ ($ Id.VSub_Number 1))} {(DQ ($ Id.VSub_Number 2))} 
                      {(DQ ($ Id.VSub_Number 3))}
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName ANS)} {<-lt>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<echo>} {(DQ <'Invalid number: please enter a positive number.'>)})
                          ]
                          spids: [2197 2210]
                        )
                      ]
                      else_action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_passwd
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<echo>} {(DQ <'In get_passwd()'>)})
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_PASS1='> name:_PASS1)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [2284]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_PASS2='> name:_PASS2)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [2289]
                )
              ]
              redirects: []
            )
            (C {<trap>} {(DQ <'/usr/bin/stty echo; exit'>)} {<1>} {<2>} {<3>} {<6>} {<15>})
            (C {<'/usr/bin/stty'>} {<-echo>})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ANS='> name:ANS)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                          spids: [2342]
                        )
                      ]
                      redirects: []
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName ANS))} 
                              {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<get_ans>} {(DQ ($ Id.VSub_At '@'))})
                            (command.AndOr
                              ops: [Id.Op_DAmp Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName ANS))} 
                                  {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<echo>} {(DQ )})
                                (C {<echo>} {(DQ <'NULL passwd not allowed!'>)})
                              ]
                            )
                          ]
                        )
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_PASS1='> name:_PASS1)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName ANS)}
                          spids: [2413]
                        )
                      ]
                      redirects: []
                    )
                    (C {<echo>} {(DQ )})
                    (C {<get_ans>} {(DQ <'Re-enter passwd:'>)})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_PASS2='> name:_PASS2)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName ANS)}
                          spids: [2438]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName _PASS1))} 
                                      {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName _PASS2))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                          spids: [2447 2464]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (C {<echo>} {(DQ )})
                    (C {<echo>} {(DQ <'ERROR: passwords don\'t match; try again.'>)})
                  ]
                )
              redirects: []
            )
            (C {<'/usr/bin/stty'>} {<echo>})
            (C {<trap>} {<1>} {<2>} {<3>} {<6>} {<15>})
            (C {<echo>} {(DQ )})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_passwd_nochk
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<echo>} {(DQ <'In get_passwd_nochk()'>)})
              ]
            )
            (C {<trap>} {(DQ <'/usr/bin/stty echo; exit'>)} {<1>} {<2>} {<3>} {<6>} {<15>})
            (C {<'/usr/bin/stty'>} {<-echo>})
            (C {<get_ans>} {(DQ ($ Id.VSub_At '@'))})
            (C {<'/usr/bin/stty'>} {<echo>})
            (C {<trap>} {<1>} {<2>} {<3>} {<6>} {<15>})
            (C {<echo>} {(DQ )})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_confirm
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_ANSWER='> name:_ANSWER)
                  op: assign_op.Equal
                  rhs: (rhs_word.Empty)
                  spids: [2668]
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_Number 2))} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<echo>} 
                              {(DQ <'INTERNAL ERROR: get_confirm requires 2 args, 3rd is optional.'>)}
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<2>}
                            )
                          ]
                          spids: [2684 2697]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (C {<echo>} 
                      {
                        (DQ ($ Id.VSub_Number 1) <' ['> ($ Id.VSub_Number 2) <'] '> 
                          <Id.Lit_BadBackslash '\\'> <c>
                        )
                      }
                    )
                    (C {<read>} {<_ANSWER>})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName _ANSWER))} 
                                          {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                        )
                                        (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_Number 2))} 
                                          {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_ANSWER='>
                                      name: _ANSWER
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number 2)}
                                  spids: [2774]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2742 2771]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName _ANSWER))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {<Id.Lit_LBracket '['> <Yy> <Id.Lit_RBracket ']'>}
                            {<yes>}
                            {<Yes>}
                            {<YES>}
                          ]
                          action: [
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [2790 2805 2811 -1]
                        )
                        (case_arm
                          pat_list: [
                            {<Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'>}
                            {<no>}
                            {<No>}
                            {<NO>}
                          ]
                          action: [
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [2814 2829 2835 -1]
                        )
                        (case_arm
                          pat_list: [
                            {<Id.Lit_LBracket '['> <Hh> <Id.Lit_RBracket ']'>}
                            {<help>}
                            {<Help>}
                            {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\?'> ch:'?')}
                          ]
                          action: [
                            (C {<display_msg>} 
                              {
                                (braced_var_sub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Number 3>
                                  var_name: 3
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op: <Id.VTest_ColonHyphen _>
                                      arg_word: {<sorry>}
                                    )
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              }
                            )
                          ]
                          spids: [2838 2853 2862 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [(C {<echo>} {(DQ <'Please enter y or n.'>)})]
                          spids: [2865 2867 2875 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_confirm_nodef
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_ANSWER='> name:_ANSWER)
                  op: assign_op.Equal
                  rhs: (rhs_word.Empty)
                  spids: [2906]
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
              body: 
                (command.DoGroup
                  children: [
                    (C {<echo>} {(DQ ($ Id.VSub_At '@') <' '> <Id.Lit_BadBackslash '\\'> <c>)})
                    (C {<read>} {<_ANSWER>})
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName _ANSWER))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {<Id.Lit_LBracket '['> <Yy> <Id.Lit_RBracket ']'>}
                            {<yes>}
                            {<Yes>}
                            {<YES>}
                          ]
                          action: [
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [2942 2957 2963 -1]
                        )
                        (case_arm
                          pat_list: [
                            {<Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'>}
                            {<no>}
                            {<No>}
                            {<NO>}
                          ]
                          action: [
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [2966 2981 2987 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [(C {<echo>} {(DQ <'Please enter y or n.'>)})]
                          spids: [2990 2992 3000 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: is_integer
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-ne>} {<1>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})]
                  spids: [3038 3051]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Simple
              words: [{<expr>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_Other '+'>} {<1>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              more_env: []
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ge>} {<2>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})]
                  spids: [3086 3099]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: not_integer
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<is_integer>} {($ Id.VSub_Number 1)})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})]
                  spids: [3156 3169]
                )
              ]
              else_action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: is_numeric
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-ne>} {<1>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})]
                  spids: [3217 3230]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Simple
              words: [{<let>} {<Id.Lit_VarLike '_NUM='> (DQ ($ Id.VSub_Number 1) <' + 1'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              more_env: []
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})]
                  spids: [3263 3276]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: not_numeric
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<is_numeric>} {($ Id.VSub_Number 1)})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})]
                  spids: [3325 3338]
                )
              ]
              else_action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: domain_2_dc
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_DOM='> name:_DOM)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                  spids: [3379]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_DOM_2_DC='> name:_DOM_2_DC)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [3386]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_FIRST='> name:_FIRST)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [3394]
                )
              ]
              redirects: []
            )
            (C {<export>} {<_DOM_2_DC>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'domtmp='> name:domtmp)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_Backtick '`'>
                          child: 
                            (command.Pipeline
                              children: [
                                (C {<echo>} {(${ Id.VSub_Name _DOM)})
                                (C {<tr>} {(SQ <.>)} {(SQ <' '>)})
                              ]
                              negated: F
                              stderr_indices: []
                            )
                          right: <Id.Backtick_Right '`'>
                        )
                      )
                    }
                  spids: [3416]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [i]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName domtmp)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName _FIRST)} {<-eq>} 
                                      {<1>} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_DOM_2_DC='>
                                      name: _DOM_2_DC
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <'dc='> (${ Id.VSub_Name i))}
                                  spids: [3471]
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_FIRST='> name:_FIRST)
                                  op: assign_op.Equal
                                  rhs: {<0>}
                                  spids: [3480]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [3454 3467]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike '_DOM_2_DC='>
                                  name: _DOM_2_DC
                                )
                              op: assign_op.Equal
                              rhs: {(DQ (${ Id.VSub_Name _DOM_2_DC) <',dc='> (${ Id.VSub_Name i))}
                              spids: [3487]
                            )
                          ]
                          redirects: []
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: is_root_user
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Case
              to_match: 
                {
                  (command_sub
                    left_token: <Id.Left_Backtick '`'>
                    child: (C {<id>})
                    right: <Id.Backtick_Right '`'>
                  )
                }
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_VarLike 'uid='> <0> 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\('>
                        ch: '('
                      ) <root> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\)'> ch:')') <Id.Lit_Star '*'>
                    }
                  ]
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})]
                  spids: [3535 3541 3547 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})]
                  spids: [3550 3552 3558 -1]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: parse_arg
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<getopts>} {(DQ <':dm:c:'>)} {<ARG>})])
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {($ Id.VSub_DollarName ARG)}
                      arms: [
                        (case_arm
                          pat_list: [{<d>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DEBUG='> name:DEBUG)
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                  spids: [3610]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [3607 3608 3612 -1]
                        )
                        (case_arm
                          pat_list: [{<m>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'MAP_FILE='>
                                      name: MAP_FILE
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName OPTARG)}
                                  spids: [3619]
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'MAPPING_FILE_SPECIFIED='>
                                      name: MAPPING_FILE_SPECIFIED
                                    )
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                  spids: [3623]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [3616 3617 3625 -1]
                        )
                        (case_arm
                          pat_list: [{<c>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'CONFIG_FILE='>
                                      name: CONFIG_FILE
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName OPTARG)}
                                  spids: [3632]
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'CONFIG_FILE_SPECIFIED='>
                                      name: CONFIG_FILE_SPECIFIED
                                    )
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                  spids: [3636]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [3629 3630 3638 -1]
                        )
                        (case_arm
                          pat_list: [
                            {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\?'> ch:'?')}
                          ]
                          action: [
                            (C {<echo>} 
                              {
                                (DQ <'**ERROR: Invalid option \''> ($ Id.VSub_DollarName OPTARG) <'\''>)
                              }
                            )
                            (C {<display_msg>} {<usage>})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [3642 3643 3662 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (C {<shift>} 
              {
                (command_sub
                  left_token: <Id.Left_Backtick '`'>
                  child: (C {<expr>} {($ Id.VSub_DollarName OPTIND)} {<->} {<1>})
                  right: <Id.Backtick_Right '`'>
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-gt>} {<0>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<echo>} {(DQ <'**ERROR: wrong usage '>)})
                    (C {<display_msg>} {<usage>})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [3687 3700]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: present
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_ELEMENT='> name:_ELEMENT)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                  spids: [3745]
                )
              ]
              redirects: []
            )
            (C {<shift>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARG_LIST='> name:ARG_LIST)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_At '@')}
                  spids: [3751]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [item]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName ARG_LIST)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName _ELEMENT))} 
                          {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName item))} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                    )
                  ]
                )
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: remove
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_ELEMENT='> name:_ELEMENT)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                  spids: [3819]
                )
              ]
              redirects: []
            )
            (C {<shift>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARG_LIST='> name:ARG_LIST)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_At '@')}
                  spids: [3825]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NEW_LIST='> name:NEW_LIST)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [3829]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [item]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName ARG_LIST)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName _ELEMENT))} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName item))} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NEW_LIST='> name:NEW_LIST)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ ($ Id.VSub_DollarName NEW_LIST) <' '> ($ Id.VSub_DollarName item))
                                }
                              spids: [3862]
                            )
                          ]
                          redirects: []
                        )
                      ]
                    )
                  ]
                )
              redirects: []
            )
            (C {<echo>} {($ Id.VSub_DollarName NEW_LIST)})
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: merge_lists
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MERGED_LIST='> name:MERGED_LIST)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [3902]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [_VAR]
              iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '@'))}])
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (C {<present>} {($ Id.VSub_DollarName _VAR)} 
                                          {($ Id.VSub_DollarName MERGED_LIST)}
                                        )
                                      ]
                                      negated: T
                                      stderr_indices: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'MERGED_LIST='>
                                      name: MERGED_LIST
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName MERGED_LIST) <' '> 
                                        ($ Id.VSub_DollarName _VAR)
                                      )
                                    }
                                  spids: [3934]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [3920 3931]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (C {<echo>} {($ Id.VSub_DollarName MERGED_LIST)})
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: init
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DEBUG='> name:DEBUG)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [3977]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'MAPPING_FILE_SPECIFIED='>
                      name: MAPPING_FILE_SPECIFIED
                    )
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [3984]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'CONFIG_FILE_SPECIFIED='>
                      name: CONFIG_FILE_SPECIFIED
                    )
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [3990]
                )
              ]
              redirects: []
            )
            (C {<umask>} {<077>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'DEFAULT_MAP_FILE='>
                      name: DEFAULT_MAP_FILE
                    )
                  op: assign_op.Equal
                  rhs: {(DQ <'/var/yp/NISLDAPmapping'>)}
                  spids: [4009]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'DEFAULT_CONFIG_FILE='>
                      name: DEFAULT_CONFIG_FILE
                    )
                  op: assign_op.Equal
                  rhs: {(DQ <'/etc/default/ypserv'>)}
                  spids: [4014]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MAP_FILE='> name:MAP_FILE)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName DEFAULT_MAP_FILE))}
                  spids: [4020]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONFIG_FILE='> name:CONFIG_FILE)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName DEFAULT_CONFIG_FILE))}
                  spids: [4025]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TMPDIR='> name:TMPDIR)
                  op: assign_op.Equal
                  rhs: {(DQ <'/var/yp/inityp2l'>)}
                  spids: [4034]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TMPCONF='> name:TMPCONF)
                  op: assign_op.Equal
                  rhs: {(DQ <ypserv-tmp>)}
                  spids: [4046]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TMPMAP='> name:TMPMAP)
                  op: assign_op.Equal
                  rhs: {(DQ <NISLDAPmapping-tmp>)}
                  spids: [4051]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-d>} {(DQ ($ Id.VSub_DollarName TMPDIR))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<rm>} {<-rf>} {($ Id.VSub_DollarName TMPDIR)})
              ]
            )
            (C {<mkdir>} {($ Id.VSub_DollarName TMPDIR)})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<echo>} {<ERROR>} {<Id.Lit_Colon ':'>} {<Failed>} {<to>} {<create>} {<temp>} 
                      {<directory>} {($ Id.VSub_DollarName TMPDIR)}
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [4082 4095]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'DEFAULT_NIS_MAPS='>
                      name: DEFAULT_NIS_MAPS
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'passwd.byname\n'> <'                  passwd.byuid\n'> 
                        <'                  group.byname\n'> <'                  group.bygid\n'> <'                  hosts.byaddr\n'> 
                        <'                  hosts.byname\n'> <'                  ipnodes.byaddr\n'> <'                  ipnodes.byname\n'> 
                        <'                  ethers.byaddr\n'> <'                  ethers.byname\n'> <'                  networks.byaddr\n'> 
                        <'                  networks.byname\n'> <'                  rpc.bynumber\n'> <'                  services.byname\n'> 
                        <'                  services.byservicename\n'> <'                  printers.conf.byname\n'> <'                  project.byname\n'> 
                        <'                  project.byprojid\n'> <'                  protocols.byname\n'> <'                  protocols.bynumber\n'> 
                        <'                  netgroup\n'> <'                  netgroup.byuser\n'> <'                  netgroup.byhost\n'> 
                        <'                  bootparams\n'> <'                  mail.aliases\n'> <'                  mail.byaddr\n'> 
                        <'                  publickey.byname\n'> <'                  netid.byname\n'> <'                  netmasks.byaddr\n'> 
                        <'                  passwd.adjunct.byname\n'> <'                  group.adjunct.byname\n'> <'                  timezone.byname\n'> 
                        <'                  auth_attr\n'> <'                  exec_attr\n'> <'                  prof_attr\n'> <'                  user_attr\n'> 
                        <'                  audit_user\n'> <'                  auto.master\n'> <'                  auto.home\n'> <'                  ypservers'>
                      )
                    }
                  spids: [4127]
                )
              ]
              redirects: []
            )
            (C {<set>} {<-A>} {<DEF_NIS_MAP_ARRAY>} {($ Id.VSub_DollarName DEFAULT_NIS_MAPS)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'DEF_TTL_MAPLIST='>
                      name: DEF_TTL_MAPLIST
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'audit_user\n'> <'                 auto.home\n'> 
                        <'                 auto.master\n'> <'                 auth_attr\n'> <'                 bootparams\n'> <'                 ethers\n'> 
                        <'                 exec_attr\n'> <'                 group\n'> <'                 group.adjunct.byname\n'> 
                        <'                 keys.host\n'> <'                 keys.pass\n'> <'                 keys.nobody\n'> <'                 hosts\n'> 
                        <'                 multihosts\n'> <'                 ipnodes\n'> <'                 multiipnodes\n'> <'                 netgroup\n'> 
                        <'                 networks\n'> <'                 passwd\n'> <'                 passwd.adjunct.byname\n'> 
                        <'                 printers.conf.byname\n'> <'                 prof_attr\n'> <'                 project\n'> <'                 protocols\n'> 
                        <'                 services\n'> <'                 mail.aliases\n'> <'                 mail.mapping\n'> 
                        <'                 netid.host\n'> <'                 netid.pass\n'> <'                 netmasks.byaddr\n'> 
                        <'                 rpc.bynumber\n'> <'                 ageing.byname\n'> <'                 timezone.byname\n'> 
                        <'                 user_attr\n'> <'                 ypservers'>
                      )
                    }
                  spids: [4184]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'configDN_flag='> name:configDN_flag)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [4229]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'DEF_nisLDAPconfigDN='>
                      name: DEF_nisLDAPconfigDN
                    )
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [4232]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DEF_TLS='> name:DEF_TLS)
                  op: assign_op.Equal
                  rhs: {<none>}
                  spids: [4236]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'DEF_TLSCertificateDBPath='>
                      name: DEF_TLSCertificateDBPath
                    )
                  op: assign_op.Equal
                  rhs: {<'/var/yp/'>}
                  spids: [4239]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'DEF_nisLDAPbindTimeout='>
                      name: DEF_nisLDAPbindTimeout
                    )
                  op: assign_op.Equal
                  rhs: {<15>}
                  spids: [4242]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'DEF_nisLDAPsearchTimeout='>
                      name: DEF_nisLDAPsearchTimeout
                    )
                  op: assign_op.Equal
                  rhs: {<180>}
                  spids: [4245]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'DEF_nisLDAPmodifyTimeout='>
                      name: DEF_nisLDAPmodifyTimeout
                    )
                  op: assign_op.Equal
                  rhs: {<15>}
                  spids: [4248]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'DEF_nisLDAPaddTimeout='>
                      name: DEF_nisLDAPaddTimeout
                    )
                  op: assign_op.Equal
                  rhs: {<15>}
                  spids: [4251]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'DEF_nisLDAPdeleteTimeout='>
                      name: DEF_nisLDAPdeleteTimeout
                    )
                  op: assign_op.Equal
                  rhs: {<15>}
                  spids: [4254]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'DEF_nisLDAPsearchTimeLimit='>
                      name: DEF_nisLDAPsearchTimeLimit
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name DEF_nisLDAPsearchTimeout)}
                  spids: [4257]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'DEF_nisLDAPsearchSizeLimit='>
                      name: DEF_nisLDAPsearchSizeLimit
                    )
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [4262]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'DEF_nisLDAPfollowReferral='>
                      name: DEF_nisLDAPfollowReferral
                    )
                  op: assign_op.Equal
                  rhs: {<no>}
                  spids: [4265]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'DEF_nisLDAPretrieveErrorAction='>
                      name: DEF_nisLDAPretrieveErrorAction
                    )
                  op: assign_op.Equal
                  rhs: {<use_cached>}
                  spids: [4268]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'SUG_nisLDAPretrieveErrorAttempts='>
                      name: SUG_nisLDAPretrieveErrorAttempts
                    )
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [4278]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'DEF_nisLDAPretrieveErrorTimeout='>
                      name: DEF_nisLDAPretrieveErrorTimeout
                    )
                  op: assign_op.Equal
                  rhs: {<15>}
                  spids: [4281]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'DEF_nisLDAPstoreErrorAction='>
                      name: DEF_nisLDAPstoreErrorAction
                    )
                  op: assign_op.Equal
                  rhs: {<retry>}
                  spids: [4284]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'SUG_nisLDAPstoreErrorAttempts='>
                      name: SUG_nisLDAPstoreErrorAttempts
                    )
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [4291]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'DEF_nisLDAPstoreErrorTimeout='>
                      name: DEF_nisLDAPstoreErrorTimeout
                    )
                  op: assign_op.Equal
                  rhs: {<15>}
                  spids: [4294]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DEF_iTTLlo='> name:DEF_iTTLlo)
                  op: assign_op.Equal
                  rhs: {<1800>}
                  spids: [4301]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DEF_iTTLhi='> name:DEF_iTTLhi)
                  op: assign_op.Equal
                  rhs: {<5400>}
                  spids: [4304]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DEF_runTTL='> name:DEF_runTTL)
                  op: assign_op.Equal
                  rhs: {<3600>}
                  spids: [4307]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: config_auth_menu_handler
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<display_msg>} {<config_auth_method_menu>})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
              body: 
                (command.DoGroup
                  children: [
                    (C {<get_ans_req>} {(DQ <'    Choose one Authentication Method (h=help):'>)})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike '_MENU_CHOICE='>
                              name: _MENU_CHOICE
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName ANS)}
                          spids: [4373]
                        )
                      ]
                      redirects: []
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName _MENU_CHOICE))}
                      arms: [
                        (case_arm
                          pat_list: [{<1>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_AUTHMETHOD='>
                                      name: _AUTHMETHOD
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <none>)}
                                  spids: [4389]
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [4386 4387 4397 -1]
                        )
                        (case_arm
                          pat_list: [{<2>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_AUTHMETHOD='>
                                      name: _AUTHMETHOD
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <simple>)}
                                  spids: [4403]
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [4400 4401 4411 -1]
                        )
                        (case_arm
                          pat_list: [{<3>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_AUTHMETHOD='>
                                      name: _AUTHMETHOD
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <'sasl/cram-md5'>)}
                                  spids: [4417]
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [4414 4415 4425 -1]
                        )
                        (case_arm
                          pat_list: [{<4>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_AUTHMETHOD='>
                                      name: _AUTHMETHOD
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <'sasl/digest-md5'>)}
                                  spids: [4431]
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [4428 4429 4439 -1]
                        )
                        (case_arm
                          pat_list: [{<h>}]
                          action: [(C {<display_msg>} {<auth_help>})]
                          spids: [4442 4443 4449 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [(C {<echo>} {(DQ <'Please enter 1-4, or h=help.'>)})]
                          spids: [4452 4453 4461 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: auth_menu_handler
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<display_msg>} {<auth_method_menu>})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
              body: 
                (command.DoGroup
                  children: [
                    (C {<get_ans_req>} {(DQ <'    Choose one Authentication Method (h=help):'>)})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike '_MENU_CHOICE='>
                              name: _MENU_CHOICE
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName ANS)}
                          spids: [4528]
                        )
                      ]
                      redirects: []
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName _MENU_CHOICE))}
                      arms: [
                        (case_arm
                          pat_list: [{<1>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_AUTHMETHOD='>
                                      name: _AUTHMETHOD
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <simple>)}
                                  spids: [4544]
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [4541 4542 4552 -1]
                        )
                        (case_arm
                          pat_list: [{<2>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_AUTHMETHOD='>
                                      name: _AUTHMETHOD
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <'sasl/cram-md5'>)}
                                  spids: [4558]
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [4555 4556 4566 -1]
                        )
                        (case_arm
                          pat_list: [{<3>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_AUTHMETHOD='>
                                      name: _AUTHMETHOD
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <'sasl/digest-md5'>)}
                                  spids: [4572]
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [4569 4570 4580 -1]
                        )
                        (case_arm
                          pat_list: [{<h>}]
                          action: [(C {<display_msg>} {<auth_help>})]
                          spids: [4583 4584 4590 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [(C {<echo>} {(DQ <'Please enter 1-3, or h=help.'>)})]
                          spids: [4593 4594 4602 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: tls_menu_handler
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<display_msg>} {<tls_method_menu>})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
              body: 
                (command.DoGroup
                  children: [
                    (C {<get_ans>} {(DQ <'    Choose one Transport Layer Security Method (h=help):'>)} 
                      {(DQ <1>)}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike '_MENU_CHOICE='>
                              name: _MENU_CHOICE
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName ANS)}
                          spids: [4678]
                        )
                      ]
                      redirects: []
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName _MENU_CHOICE))}
                      arms: [
                        (case_arm
                          pat_list: [{<1>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_TLSMETHOD='>
                                      name: _TLSMETHOD
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <none>)}
                                  spids: [4694]
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [4691 4692 4702 -1]
                        )
                        (case_arm
                          pat_list: [{<2>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_TLSMETHOD='>
                                      name: _TLSMETHOD
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <ssl>)}
                                  spids: [4708]
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [4705 4706 4716 -1]
                        )
                        (case_arm
                          pat_list: [{<h>}]
                          action: [(C {<display_msg>} {<tls_help>})]
                          spids: [4719 4720 4726 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [(C {<echo>} {(DQ <'Please enter 1, 2, or h=help.'>)})]
                          spids: [4729 4730 4738 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: retrieve_error_action_menu_handler
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<display_msg>} {<retrieve_error_action_menu>})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
              body: 
                (command.DoGroup
                  children: [
                    (C {<get_ans>} {(DQ <'    Choose one retrieval error action (h=help):'>)} {(DQ <1>)})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike '_MENU_CHOICE='>
                              name: _MENU_CHOICE
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName ANS)}
                          spids: [4809]
                        )
                      ]
                      redirects: []
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName _MENU_CHOICE))}
                      arms: [
                        (case_arm
                          pat_list: [{<1>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_RET_ERR_ACT='>
                                      name: _RET_ERR_ACT
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <use_cached>)}
                                  spids: [4825]
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [4822 4823 4833 -1]
                        )
                        (case_arm
                          pat_list: [{<2>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_RET_ERR_ACT='>
                                      name: _RET_ERR_ACT
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <fail>)}
                                  spids: [4839]
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [4836 4837 4847 -1]
                        )
                        (case_arm
                          pat_list: [{<h>}]
                          action: [(C {<display_msg>} {<nisLDAPretrieveErrorAction_help>})]
                          spids: [4850 4851 4857 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [(C {<echo>} {(DQ <'Please enter 1, 2, or h=help.'>)})]
                          spids: [4860 4861 4869 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: store_error_action_menu_handler
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<display_msg>} {<store_error_action_menu>})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
              body: 
                (command.DoGroup
                  children: [
                    (C {<get_ans>} {(DQ <'    Choose one store error action (h=help):'>)} {(DQ <1>)})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike '_MENU_CHOICE='>
                              name: _MENU_CHOICE
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName ANS)}
                          spids: [4940]
                        )
                      ]
                      redirects: []
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName _MENU_CHOICE))}
                      arms: [
                        (case_arm
                          pat_list: [{<1>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_STOR_ERR_ACT='>
                                      name: _STOR_ERR_ACT
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <retry>)}
                                  spids: [4956]
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [4953 4954 4964 -1]
                        )
                        (case_arm
                          pat_list: [{<2>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_STOR_ERR_ACT='>
                                      name: _STOR_ERR_ACT
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <fail>)}
                                  spids: [4970]
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [4967 4968 4978 -1]
                        )
                        (case_arm
                          pat_list: [{<h>}]
                          action: [(C {<display_msg>} {<nisLDAPstoreErrorAction_help>})]
                          spids: [4981 4982 4988 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [(C {<echo>} {(DQ <'Please enter 1, 2, or h=help.'>)})]
                          spids: [4991 4992 5000 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: cleanup
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<echo>} {(DQ <'In cleanup()'>)})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<0>} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<rm>} {<-rf>} {($ Id.VSub_DollarName TMPDIR)})
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: check_back_config_file
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-f>} {($ Id.VSub_DollarName CONFIG_FILE)} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<display_msg>} {<backup_config_file>})
                    (C {<get_confirm>} {(DQ <'Do you wish to continue (y/n/h)?'>)} {(DQ <n>)} 
                      {(DQ <backup_config_file_cont_help>)}
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: (C {<cleanup>})
                              terminator: <Id.Op_Semi _>
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [5118 5131]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (C {<get_confirm>} 
                      {(DQ <'Do you wish to backup the config file '>) (${ Id.VSub_Name CONFIG_FILE) 
                        (DQ <' (y/n/h)?'>)
                      } {(DQ <y>)} {(DQ <backup_config_file_help>)}
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<1>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SUFFIX='> name:SUFFIX)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: (C {<date>} {(SQ <'+%d%h%Y.%H:%M:%S'>)})
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                  spids: [5202]
                                )
                              ]
                              redirects: []
                            )
                            (C {<cp>} {<-p>} {($ Id.VSub_DollarName CONFIG_FILE)} 
                              {(${ Id.VSub_Name CONFIG_FILE) <-> (${ Id.VSub_Name SUFFIX)}
                            )
                            (C {<echo>} 
                              {
                                (DQ <'  Saved existing '> ($ Id.VSub_DollarName CONFIG_FILE) <' as '> 
                                  (${ Id.VSub_Name CONFIG_FILE) <-> (${ Id.VSub_Name SUFFIX)
                                )
                              }
                            )
                          ]
                          spids: [5174 5187]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [5080 5091]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: check_back_mapping_file
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-f>} {($ Id.VSub_DollarName MAP_FILE)} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<display_msg>} {<backup_mapping_file>})
                    (C {<get_confirm>} {(DQ <'Do you wish to continue (y/n/h)?'>)} {(DQ <n>)} 
                      {(DQ <backup_mapping_file_cont_help>)}
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: (C {<cleanup>})
                              terminator: <Id.Op_Semi _>
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [5301 5314]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (C {<get_confirm>} 
                      {(DQ <'Do you wish to backup the map file '>) (${ Id.VSub_Name MAP_FILE) 
                        (DQ <' (y/n/h)?'>)
                      } {(DQ <y>)} {(DQ <backup_mapping_file_help>)}
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<1>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SUFFIX='> name:SUFFIX)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: (C {<date>} {(SQ <'+%d%h%Y.%H:%M:%S'>)})
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                  spids: [5385]
                                )
                              ]
                              redirects: []
                            )
                            (C {<cp>} {<-p>} {($ Id.VSub_DollarName MAP_FILE)} 
                              {(${ Id.VSub_Name MAP_FILE) <-> (${ Id.VSub_Name SUFFIX)}
                            )
                            (C {<echo>} 
                              {
                                (DQ <'  Saved existing '> ($ Id.VSub_DollarName MAP_FILE) <' as '> 
                                  (${ Id.VSub_Name MAP_FILE) <-> (${ Id.VSub_Name SUFFIX)
                                )
                              }
                            )
                          ]
                          spids: [5357 5370]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [5263 5274]
                )
              ]
              else_action: [
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MAP_FILE))} 
                                  {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName DEFAULT_MAP_FILE))} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (C {<display_msg>} {<warn_n2l_mode>})
                        (C {<get_confirm>} {(DQ <'Do you wish to continue (y/n/h)?'>)} {(DQ <n>)} 
                          {(DQ <warn_n2l_mode_help>)}
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                                          {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (command.Sentence
                                  child: (C {<cleanup>})
                                  terminator: <Id.Op_Semi _>
                                )
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Exit exit>
                                  arg_word: {<1>}
                                )
                              ]
                              spids: [5479 5492]
                            )
                          ]
                          else_action: []
                          redirects: []
                        )
                      ]
                      spids: [5435 5452]
                    )
                  ]
                  else_action: []
                  redirects: []
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: put_config_file_copyright_info
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (C {<grep>} 
                  {
                    (DQ <'ident\t'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                      <'@(#)'> ($ Id.VSub_DollarName PROG)
                    )
                  } {($ Id.VSub_DollarName ABS_PROG)}
                )
                (command.Simple
                  words: [
                    {<sed>}
                    {(DQ <'s/'> (${ Id.VSub_Name PROG) <'/'> (${ Id.VSub_Name NEW_NAME) <'/g'>)}
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
              negated: F
              stderr_indices: []
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'#\n'> <'# CDDL HEADER START\n'> <'#\n'> 
                    <'# The contents of this file are subject to the terms of the\n'> <'# Common Development and Distribution License (the '>
                  ) <License> 
                  (DQ <').\n'> 
                    <'# You may not use this file except in compliance with the License.\n'> <'#\n'> <'# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE\n'> 
                    <'# or http://www.opensolaris.org/os/licensing.\n'> <'# See the License for the specific language governing permissions\n'> 
                    <'# and limitations under the License.\n'> <'#\n'> <'# When distributing Covered Code, include this CDDL HEADER in each\n'> 
                    <'# file and include the License file at usr/src/OPENSOLARIS.LICENSE.\n'> <'# If applicable, add the following below this CDDL HEADER, with the\n'> 
                    <'# fields enclosed by brackets '>
                  ) <Id.Lit_LBracket '['> <Id.Lit_RBracket ']'> 
                  (DQ <' replaced with your own identifying\n'> 
                    <'# information: Portions Copyright [yyyy] [name of copyright owner]\n'> <'#\n'> <'# CDDL HEADER END\n'> <'#\n'> <'#\n'> 
                    <
'# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.\n'
                    > <'#'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPconfigDN
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
              body: 
                (command.DoGroup
                  children: [
                    (C {<get_ans>} {(DQ <'DN for configuration information (h=help):'>)})
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName ANS))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {<Id.Lit_LBracket '['> <Hh> <Id.Lit_RBracket ']'>}
                            {<help>}
                            {<Help>}
                            {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\?'> ch:'?')}
                          ]
                          action: [(C {<display_msg>} {<nisLDAPconfigDN_help>})]
                          spids: [5645 5660 5666 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                          spids: [5669 5671 5675 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'nisLDAPconfigDN='>
                      name: nisLDAPconfigDN
                    )
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name ANS))}
                  spids: [5682]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName ANS))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name DEF_nisLDAPconfigDN))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'nisLDAPconfigDN='> (${ Id.VSub_Name ANS))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [5693 5713]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName ANS))} 
                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'configDN_flag='>
                          name: configDN_flag
                        )
                      op: assign_op.Equal
                      rhs: {<1>}
                      spids: [5755]
                    )
                  ]
                  redirects: []
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPconfigPreferredServerList
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
              body: 
                (command.DoGroup
                  children: [
                    (C {<get_ans_req>} 
                      {(DQ <'Preferred server list for configuration information (h=help):'>)}
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName ANS))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {<Id.Lit_LBracket '['> <Hh> <Id.Lit_RBracket ']'>}
                            {<help>}
                            {<Help>}
                            {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\?'> ch:'?')}
                          ]
                          action: [(C {<display_msg>} {<nisLDAPconfigPreferredServerList_help>})]
                          spids: [5794 5809 5815 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                          spids: [5818 5820 5824 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'nisLDAPconfigPreferredServerList='>
                      name: nisLDAPconfigPreferredServerList
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name ANS)}
                  spids: [5831]
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [{<echo>} {(DQ <'nisLDAPconfigPreferredServerList='> (${ Id.VSub_Name ANS))}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPconfigAuthenticationMethod
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_AUTHMETHOD='> name:_AUTHMETHOD)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [5859]
                )
              ]
              redirects: []
            )
            (C {<echo>} {(DQ <'Select the Authentication Method for configuration server :'>)})
            (C {<config_auth_menu_handler>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'nisLDAPconfigAuthenticationMethod='>
                      name: nisLDAPconfigAuthenticationMethod
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name _AUTHMETHOD)}
                  spids: [5873]
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [
                {<echo>}
                {(DQ <'nisLDAPconfigAuthenticationMethod='> (${ Id.VSub_Name _AUTHMETHOD))}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPconfigTLS
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_TLSMETHOD='> name:_TLSMETHOD)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [5901]
                )
              ]
              redirects: []
            )
            (C {<echo>} {(DQ <'Select the Transport Layer Security (TLS) for configuration server :'>)})
            (C {<tls_menu_handler>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'nisLDAPconfigTLS='>
                      name: nisLDAPconfigTLS
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name _TLSMETHOD)}
                  spids: [5915]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _TLSMETHOD))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name DEF_TLS))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'nisLDAPconfigTLS='> (${ Id.VSub_Name _TLSMETHOD))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [5924 5946]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPconfigTLSCertificateDBPath
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
              body: 
                (command.DoGroup
                  children: [
                    (C {<get_ans>} 
                      {(DQ <'Path with TLS Certificate DB for configuration server (h=help):'>)} {(DQ (${ Id.VSub_Name DEF_TLSCertificateDBPath))}
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName ANS))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {<Id.Lit_LBracket '['> <Hh> <Id.Lit_RBracket ']'>}
                            {<help>}
                            {<Help>}
                            {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\?'> ch:'?')}
                          ]
                          action: [(C {<display_msg>} {<TLSCertificateDBPath_help>})]
                          spids: [6007 6022 6028 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                          spids: [6031 6033 6037 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'nisLDAPconfigTLSCertificateDBPath='>
                      name: nisLDAPconfigTLSCertificateDBPath
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name ANS)}
                  spids: [6044]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName ANS))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name DEF_TLSCertificateDBPath))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {(DQ <'nisLDAPconfigTLSCertificateDBPath='> (${ Id.VSub_Name ANS))}
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [6053 6073]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPconfigProxyUser
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
              body: 
                (command.DoGroup
                  children: [
                    (C {<get_ans_req>} 
                      {(DQ <'Proxy user bind DN to obtain configuration information (h=help):'>)}
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName ANS))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {<Id.Lit_LBracket '['> <Hh> <Id.Lit_RBracket ']'>}
                            {<help>}
                            {<Help>}
                            {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\?'> ch:'?')}
                          ]
                          action: [(C {<display_msg>} {<nisLDAPconfigProxyUser_help>})]
                          spids: [6126 6141 6147 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                          spids: [6150 6152 6156 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'nisLDAPconfigProxyUser='>
                      name: nisLDAPconfigProxyUser
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name ANS)}
                  spids: [6163]
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [{<echo>} {(DQ <'nisLDAPconfigProxyUser='> (${ Id.VSub_Name ANS))}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPconfigProxyPassword
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<get_passwd>} {(DQ <'Proxy user password to obtain configuration information :'>)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'nisLDAPconfigProxyPassword='>
                      name: nisLDAPconfigProxyPassword
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name ANS)}
                  spids: [6197]
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [{<echo>} {(DQ <'nisLDAPconfigProxyPassword='> (${ Id.VSub_Name ANS))}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<display_msg>} {<ProxyPassword_warn>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_preferredServerList
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
              body: 
                (command.DoGroup
                  children: [
                    (C {<get_ans_req>} 
                      {(DQ <'Preferred server list for mapping data to/from LDAP (h=help):'>)}
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName ANS))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {<Id.Lit_LBracket '['> <Hh> <Id.Lit_RBracket ']'>}
                            {<help>}
                            {<Help>}
                            {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\?'> ch:'?')}
                          ]
                          action: [(C {<display_msg>} {<preferredServerList_help>})]
                          spids: [6257 6272 6278 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                          spids: [6281 6283 6287 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'preferredServerList='>
                      name: preferredServerList
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name ANS)}
                  spids: [6294]
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [{<echo>} {(DQ <'preferredServerList='> (${ Id.VSub_Name ANS))}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_authenticationMethod
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_AUTHMETHOD='> name:_AUTHMETHOD)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [6322]
                )
              ]
              redirects: []
            )
            (C {<echo>} {(DQ <'Select the Authentication Method for mapping data to/from LDAP :'>)})
            (C {<auth_menu_handler>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'authenticationMethod='>
                      name: authenticationMethod
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name _AUTHMETHOD)}
                  spids: [6336]
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [{<echo>} {(DQ <'authenticationMethod='> (${ Id.VSub_Name _AUTHMETHOD))}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPTLS
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_TLSMETHOD='> name:_TLSMETHOD)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [6364]
                )
              ]
              redirects: []
            )
            (C {<echo>} 
              {(DQ <'Select the Transport Layer Security (TLS) for mapping data to/from LDAP :'>)}
            )
            (C {<tls_menu_handler>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'nisLDAPTLS='> name:nisLDAPTLS)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name _TLSMETHOD)}
                  spids: [6378]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _TLSMETHOD))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name DEF_TLS))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'nisLDAPTLS='> (${ Id.VSub_Name _TLSMETHOD))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [6387 6409]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPTLSCertificateDBPath
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
              body: 
                (command.DoGroup
                  children: [
                    (C {<get_ans>} 
                      {(DQ <'Path with TLS Certificate DB for LDAP data server (h=help):'>)} {(DQ (${ Id.VSub_Name DEF_nisLDAPTLSCertificateDBPath))}
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName ANS))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {<Id.Lit_LBracket '['> <Hh> <Id.Lit_RBracket ']'>}
                            {<help>}
                            {<Help>}
                            {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\?'> ch:'?')}
                          ]
                          action: [(C {<display_msg>} {<TLSCertificateDBPath_help>})]
                          spids: [6470 6485 6491 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                          spids: [6494 6496 6500 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'nisLDAPTLSCertificateDBPath='>
                      name: nisLDAPTLSCertificateDBPath
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name ANS)}
                  spids: [6507]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName ANS))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name DEF_TLSCertificateDBPath))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'nisLDAPTLSCertificateDBPath='> (${ Id.VSub_Name ANS))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [6516 6536]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPproxyUser
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
              body: 
                (command.DoGroup
                  children: [
                    (C {<get_ans_req>} 
                      {(DQ <'Proxy user bind DN to read/write data from/to LDAP (h=help):'>)}
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName ANS))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {<Id.Lit_LBracket '['> <Hh> <Id.Lit_RBracket ']'>}
                            {<help>}
                            {<Help>}
                            {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\?'> ch:'?')}
                          ]
                          action: [(C {<display_msg>} {<nisLDAPproxyUser_help>})]
                          spids: [6590 6605 6611 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                          spids: [6614 6616 6620 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'nisLDAPproxyUser='>
                      name: nisLDAPproxyUser
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name ANS)}
                  spids: [6627]
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [{<echo>} {(DQ <'nisLDAPproxyUser='> (${ Id.VSub_Name ANS))}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPproxyPassword
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<get_passwd>} {(DQ <'Proxy user password to read/write data from/to LDAP :'>)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'nisLDAPproxyPassword='>
                      name: nisLDAPproxyPassword
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name ANS)}
                  spids: [6661]
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [{<echo>} {(DQ <'nisLDAPproxyPassword='> (${ Id.VSub_Name ANS))}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<display_msg>} {<ProxyPassword_warn>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPbindTimeout
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<get_pos_int>} {(DQ <'Timeout value (in seconds) for LDAP bind operation (h=help):'>)} 
              {(DQ (${ Id.VSub_Name DEF_nisLDAPbindTimeout))} {(DQ <nisLDAPbindTimeout_help>)}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'nisLDAPbindTimeout='>
                      name: nisLDAPbindTimeout
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name NUM)}
                  spids: [6714]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName NUM)} {<-ne>} 
                              {(${ Id.VSub_Name DEF_nisLDAPbindTimeout)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'nisLDAPbindTimeout='> (${ Id.VSub_Name NUM))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [6723 6738]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPsearchTimeout
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<get_pos_int>} {(DQ <'Timeout value (in seconds) for LDAP search operation (h=help):'>)} 
              {(DQ (${ Id.VSub_Name DEF_nisLDAPsearchTimeout))} {(DQ <nisLDAPsearchTimeout_help>)}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'nisLDAPsearchTimeout='>
                      name: nisLDAPsearchTimeout
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name NUM)}
                  spids: [6785]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName NUM)} {<-ne>} 
                              {(${ Id.VSub_Name DEF_nisLDAPsearchTimeout)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'nisLDAPsearchTimeout='> (${ Id.VSub_Name NUM))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [6794 6809]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPmodifyTimeout
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<get_pos_int>} {(DQ <'Timeout value (in seconds) for LDAP modify operation (h=help):'>)} 
              {(DQ (${ Id.VSub_Name DEF_nisLDAPmodifyTimeout))} {(DQ <nisLDAPmodifyTimeout_help>)}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'nisLDAPmodifyTimeout='>
                      name: nisLDAPmodifyTimeout
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name NUM)}
                  spids: [6856]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName NUM)} {<-ne>} 
                              {(${ Id.VSub_Name DEF_nisLDAPmodifyTimeout)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'nisLDAPmodifyTimeout='> (${ Id.VSub_Name NUM))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [6865 6880]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPaddTimeout
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<get_pos_int>} {(DQ <'Timeout value (in seconds) for LDAP add operation (h=help):'>)} 
              {(DQ (${ Id.VSub_Name DEF_nisLDAPaddTimeout))} {(DQ <nisLDAPaddTimeout_help>)}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'nisLDAPaddTimeout='>
                      name: nisLDAPaddTimeout
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name NUM)}
                  spids: [6927]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName NUM)} {<-ne>} 
                              {(${ Id.VSub_Name DEF_nisLDAPaddTimeout)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'nisLDAPaddTimeout='> (${ Id.VSub_Name NUM))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [6936 6951]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPdeleteTimeout
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<get_pos_int>} {(DQ <'Timeout value (in seconds) for LDAP delete operation (h=help):'>)} 
              {(DQ (${ Id.VSub_Name DEF_nisLDAPdeleteTimeout))} {(DQ <nisLDAPdeleteTimeout_help>)}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'nisLDAPdeleteTimeout='>
                      name: nisLDAPdeleteTimeout
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name NUM)}
                  spids: [6998]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName NUM)} {<-ne>} 
                              {(${ Id.VSub_Name DEF_nisLDAPdeleteTimeout)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'nisLDAPdeleteTimeout='> (${ Id.VSub_Name NUM))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [7007 7022]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPsearchTimeLimit
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<get_pos_int>} 
              {(DQ <'Time limit (in seconds) for search operation on LDAP server (h=help):'>)} {(DQ (${ Id.VSub_Name DEF_nisLDAPsearchTimeLimit))} {(DQ <nisLDAPsearchTimeLimit_help>)}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'nisLDAPsearchTimeLimit='>
                      name: nisLDAPsearchTimeLimit
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name NUM)}
                  spids: [7069]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName NUM)} {<-ne>} 
                              {(${ Id.VSub_Name DEF_nisLDAPsearchTimeLimit)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'nisLDAPsearchTimeLimit='> (${ Id.VSub_Name NUM))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [7078 7093]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPsearchSizeLimit
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<get_pos_int>} 
              {(DQ <'Size limit (in bytes) for search operation on LDAP server (h=help):'>)} {(DQ (${ Id.VSub_Name DEF_nisLDAPsearchSizeLimit))} {(DQ <nisLDAPsearchSizeLimit_help>)}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'nisLDAPsearchSizeLimit='>
                      name: nisLDAPsearchSizeLimit
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name NUM)}
                  spids: [7140]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName NUM)} {<-ne>} 
                              {(${ Id.VSub_Name DEF_nisLDAPsearchSizeLimit)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'nisLDAPsearchSizeLimit='> (${ Id.VSub_Name NUM))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [7149 7164]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPfollowReferral
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<get_confirm>} {(DQ <'Should the ypserv follow LDAP referrals (y/n/h):'>)} {(DQ <n>)} 
              {(DQ <nisLDAPfollowReferral_help>)}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<1>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_ANS='> name:_ANS)
                          op: assign_op.Equal
                          rhs: {(DQ <yes>)}
                          spids: [7225]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [7209 7222]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_ANS='> name:_ANS)
                      op: assign_op.Equal
                      rhs: {(DQ <no>)}
                      spids: [7233]
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _ANS))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name DEF_nisLDAPfollowReferral))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'nisLDAPfollowReferral='> (${ Id.VSub_Name _ANS))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [7244 7266]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPretrieveErrorAction
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_RET_ERR_ACT='> name:_RET_ERR_ACT)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [7294]
                )
              ]
              redirects: []
            )
            (C {<echo>} {(DQ <'Select the action to be taken in case of LDAP retrieval error :'>)})
            (C {<retrieve_error_action_menu_handler>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'nisLDAPretrieveErrorAction='>
                      name: nisLDAPretrieveErrorAction
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name _RET_ERR_ACT)}
                  spids: [7308]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _RET_ERR_ACT))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name DEF_nisLDAPretrieveErrorAction))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {(DQ <'nisLDAPretrieveErrorAction='> (${ Id.VSub_Name _RET_ERR_ACT))}
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [7317 7339]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPretrieveErrorAttempts
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<get_pos_int>} {(DQ <'Number of attempts in case of LDAP retrieval error (h=help):'>)} 
              {(DQ ($ Id.VSub_DollarName SUG_nisLDAPretrieveErrorAttempts))} {(DQ <nisLDAPretrieveErrorAttempts_help>)}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'nisLDAPretrieveErrorAttempts='>
                      name: nisLDAPretrieveErrorAttempts
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name NUM)}
                  spids: [7387]
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [{<echo>} {(DQ <'nisLDAPretrieveErrorAttempts='> (${ Id.VSub_Name NUM))}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPretrieveErrorTimeout
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName nisLDAPretrieveErrorAttempts)} {<-eq>} 
                  {<0>} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (C {<get_pos_int>} 
              {(DQ <'Timeout (in seconds) between each new attempt to retrieve LDAP data (h=help):'>)} {(DQ (${ Id.VSub_Name DEF_nisLDAPretrieveErrorTimeout))} {(DQ <nisLDAPretrieveErrorTimeout_help>)}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'nisLDAPretrieveErrorTimeout='>
                      name: nisLDAPretrieveErrorTimeout
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name NUM)}
                  spids: [7460]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName NUM)} {<-ne>} 
                              {(${ Id.VSub_Name DEF_nisLDAPretrieveErrorTimeout)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'nisLDAPretrieveErrorTimeout='> (${ Id.VSub_Name NUM))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [7469 7484]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPstoreErrorAction
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_STOR_ERR_ACT='> name:_STOR_ERR_ACT)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [7512]
                )
              ]
              redirects: []
            )
            (C {<echo>} {(DQ <'Select the action to be taken in case of LDAP store error :'>)})
            (C {<store_error_action_menu_handler>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'nisLDAPstoreErrorAction='>
                      name: nisLDAPstoreErrorAction
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name _STOR_ERR_ACT)}
                  spids: [7526]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _STOR_ERR_ACT))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name DEF_nisLDAPstoreErrorAction))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {(DQ <'nisLDAPstoreErrorAction='> (${ Id.VSub_Name _STOR_ERR_ACT))}
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [7535 7557]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPstoreErrorAttempts
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName nisLDAPstoreErrorAction))} 
                  {<Id.Lit_Equals '='>} {(DQ <fail>)} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (C {<get_pos_int>} {(DQ <'Number of attempts in case of LDAP store error (h=help):'>)} 
              {(DQ ($ Id.VSub_DollarName SUG_nisLDAPstoreErrorAttempts))} {(DQ <nisLDAPstoreErrorAttempts_help>)}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'nisLDAPstoreErrorAttempts='>
                      name: nisLDAPstoreErrorAttempts
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name NUM)}
                  spids: [7633]
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [{<echo>} {(DQ <'nisLDAPstoreErrorAttempts='> (${ Id.VSub_Name NUM))}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPstoreErrorTimeout
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName nisLDAPstoreErrorAction))} 
                  {<Id.Lit_Equals '='>} {(DQ <fail>)} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName nisLDAPstoreErrorAttempts)} {<-eq>} 
                  {<0>} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (C {<get_pos_int>} 
              {(DQ <'Timeout (in seconds) between each new attempt to write LDAP data (h=help):'>)} {(DQ (${ Id.VSub_Name DEF_nisLDAPstoreErrorTimeout))} {(DQ <nisLDAPstoreErrorTimeout_help>)}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'nisLDAPstoreErrorTimeout='>
                      name: nisLDAPstoreErrorTimeout
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name NUM)}
                  spids: [7732]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName NUM)} {<-ne>} 
                              {(${ Id.VSub_Name DEF_nisLDAPstoreErrorTimeout)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'nisLDAPstoreErrorTimeout='> (${ Id.VSub_Name NUM))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [7741 7756]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: create_config_file
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_CONFIG_FILE='> name:_CONFIG_FILE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName CONFIG_FILE)}
                  spids: [7799]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONFIG_FILE='> name:CONFIG_FILE)
                  op: assign_op.Equal
                  rhs: 
                    {(${ Id.VSub_Name TMPDIR) <'/'> (${ Id.VSub_Name TMPCONF) <.> ($ Id.VSub_Dollar '$')}
                  spids: [7802]
                )
              ]
              redirects: []
            )
            (C {<echo>} 
              {
                (DQ <'Generating config file temporarily as '> 
                  (word_part.EscapedLiteral
                    token: <Id.Lit_EscapedChar '\\"'>
                    ch: '"'
                  ) (${ Id.VSub_Name CONFIG_FILE) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"')
                )
              }
            )
            (C {<put_config_file_copyright_info>})
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'#\n'> 
                    <'# Configuration file for ypserv(1M); see ypserv(4) for more information,\n'> <'# and NISLDAPmapping(4) for configuration of NIS to LDAP mapping.\n'> <'\n'> 
                    <'# Unless otherwise noted, commented lines show default values.\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'# Where to look for configuration information in LDAP. Leave empty or\n'> 
                    <'# undefined to use this file, in which case the values of the other \n'> <'# \'nisLdapConfig*\' attributes are ignored. \n'> <'#\n'> <'#nisLDAPconfigDN='>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<get_nisLDAPconfigDN>})
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'\n'> 
                    <'# Server(s) for configuration information. There is no default;\n'> <'# use the value on the line below for an LDAP server running on\n'> 
                    <'# this machine, at port 389.\n'> <'#nisLDAPconfigPreferredServerList=127.0.0.1:389'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName configDN_flag)} {<-eq>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<get_nisLDAPconfigPreferredServerList>})
              ]
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'\n'> 
                    <'# Authentication method(s) to obtain configuration information.\n'> <'#'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName configDN_flag)} {<-eq>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<get_nisLDAPconfigAuthenticationMethod>})
              ]
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'\n'> <'# Transport layer security for configuration information\n'> 
                    <'#\n'> <'#nisLDAPconfigTLS='> (${ Id.VSub_Name DEF_TLS)
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName configDN_flag)} {<-eq>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<get_nisLDAPconfigTLS>})
              ]
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'\n'> <'# Certificate DB for transport layer security\n'> <'#\n'> 
                    <'#nisLDAPconfigTLSCertificateDBPath='> (${ Id.VSub_Name DEF_TLSCertificateDBPath)
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name nisLDAPconfigTLS))} 
                              {<Id.Lit_Equals '='>} {(DQ <ssl>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName configDN_flag)} {<-eq>} {<1>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (C {<get_nisLDAPconfigTLSCertificateDBPath>})
                      ]
                    )
                  ]
                  spids: [7996 8015]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'\n'> 
                    <'# Proxy user(s) to obtain configuration information. The line below\n'> <'# is an example of the format.\n'> <'#\n'> <'#nisLDAPconfigProxyUser=cn=nisAdmin,ou=People,'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {(DQ (${ Id.VSub_Name nisLDAPconfigAuthenticationMethod))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <none>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName configDN_flag)} {<-eq>} {<1>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (C {<get_nisLDAPconfigProxyUser>})
                      ]
                    )
                  ]
                  spids: [8055 8075]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'\n'> 
                    <'# Password for proxy user. Must be supplied if the authentication method\n'> <'# requires a password. If a password appears in this file, it should be\n'> 
                    <'# protected appropriately against access by unauthorized users.\n'> <'#\n'> <'#nisLDAPconfigProxyPassword='>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {(DQ (${ Id.VSub_Name nisLDAPconfigAuthenticationMethod))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <none>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName configDN_flag)} {<-eq>} {<1>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (C {<get_nisLDAPconfigProxyPassword>})
                      ]
                    )
                  ]
                  spids: [8113 8133]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'\n'> 
                    <'# Server list for mapping data to/from LDAP. There is no default;\n'> <'# use the value on the line below for an LDAP server running on\n'> 
                    <'# this machine, at port 389.\n'> <'#preferredServerList=127.0.0.1:389'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<get_preferredServerList>})
            (command.Simple
              words: [
                {<echo>}
                {(DQ <'\n'> <'\n'> <'# Authentication method for mapping data to/from LDAP\n'> <'#'>)}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<get_authenticationMethod>})
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'\n'> <'# Transport layer security for mapping data to/from LDAP.\n'> 
                    <'#\n'> <'#nisLDAPTLS='> (${ Id.VSub_Name DEF_TLS)
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<get_nisLDAPTLS>})
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'\n'> <'# Certificate DB for transport layer security\n'> <'#\n'> 
                    <'#nisLDAPTLSCertificateDBPath='> (${ Id.VSub_Name DEF_TLSCertificateDBPath)
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name nisLDAPTLS))} 
                              {<Id.Lit_Equals '='>} {(DQ <ssl>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<get_nisLDAPTLSCertificateDBPath>})]
                  spids: [8235 8254]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'\n'> 
                    <'# Proxy user for ypserv. Assumed to have appropriate permission to read\n'> <'# and/or create or modify LDAP data. The line below is an example of the\n'> <'# format.\n'> <'#\n'> 
                    <'#nisLDAPproxyUser=cn=nisAdmin,ou=People,'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name authenticationMethod))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <none>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<get_nisLDAPproxyUser>})]
                  spids: [8283 8303]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'\n'> 
                    <'# Password for proxy user. Must be supplied if the authentication method\n'> <'# requires a password. If a password appears in this file, it should be\n'> 
                    <'# protected appropriately against unauthorized access.\n'> <'#\n'> <'#nisLDAPproxyPassword='>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name authenticationMethod))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <none>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<get_nisLDAPproxyPassword>})]
                  spids: [8329 8349]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'\n'> <'# Timeouts and time/size limits for LDAP operations.\n'> <'#\n'> 
                    <'#nisLDAPbindTimeout='> (${ Id.VSub_Name DEF_nisLDAPbindTimeout)
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<get_nisLDAPbindTimeout>})
            (command.Simple
              words: [
                {<echo>}
                {(DQ <'\n'> <'#nisLDAPsearchTimeout='> (${ Id.VSub_Name DEF_nisLDAPsearchTimeout))}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<get_nisLDAPsearchTimeout>})
            (command.Simple
              words: [
                {<echo>}
                {(DQ <'\n'> <'#nisLDAPmodifyTimeout='> (${ Id.VSub_Name DEF_nisLDAPmodifyTimeout))}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<get_nisLDAPmodifyTimeout>})
            (command.Simple
              words: [
                {<echo>}
                {(DQ <'\n'> <'#nisLDAPaddTimeout='> (${ Id.VSub_Name DEF_nisLDAPaddTimeout))}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<get_nisLDAPaddTimeout>})
            (command.Simple
              words: [
                {<echo>}
                {(DQ <'\n'> <'#nisLDAPdeleteTimeout='> (${ Id.VSub_Name DEF_nisLDAPdeleteTimeout))}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<get_nisLDAPdeleteTimeout>})
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'#nisLDAPsearchTimeLimit='> (${ Id.VSub_Name DEF_nisLDAPsearchTimeLimit))
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<get_nisLDAPsearchTimeLimit>})
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'#nisLDAPsearchSizeLimit='> (${ Id.VSub_Name DEF_nisLDAPsearchSizeLimit))
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<get_nisLDAPsearchSizeLimit>})
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'\n'> <'# Should the ypserv follow LDAP referrals ?\n'> <'#\n'> 
                    <'#nisLDAPfollowReferral='> (${ Id.VSub_Name DEF_nisLDAPfollowReferral)
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<get_nisLDAPfollowReferral>})
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'\n'> 
                    <
'# Action, number of attempts, and timeout following an LDAP retrieval error\n'
                    > <'#\n'> <'#nisLDAPretrieveErrorAction='> (${ Id.VSub_Name DEF_nisLDAPretrieveErrorAction)
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<get_nisLDAPretrieveErrorAction>})
            (command.Simple
              words: [{<echo>} {(DQ <'\n'> <'#nisLDAPretrieveErrorAttempts='>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<get_nisLDAPretrieveErrorAttempts>})
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'#nisLDAPretrieveErrorTimeout='> 
                    (${ Id.VSub_Name DEF_nisLDAPretrieveErrorTimeout)
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<get_nisLDAPretrieveErrorTimeout>})
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'\n'> 
                    <'# Action, number of attempts, and timeout following an LDAP store error\n'> <'#\n'> <'#nisLDAPstoreErrorAction='> (${ Id.VSub_Name DEF_nisLDAPstoreErrorAction)
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<get_nisLDAPstoreErrorAction>})
            (command.Simple
              words: [{<echo>} {(DQ <'\n'> <'#nisLDAPstoreErrorAttempts='>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<get_nisLDAPstoreErrorAttempts>})
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'#nisLDAPstoreErrorTimeout='> 
                    (${ Id.VSub_Name DEF_nisLDAPstoreErrorTimeout)
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName CONFIG_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<get_nisLDAPstoreErrorTimeout>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DIR_TO_CREATE='> name:DIR_TO_CREATE)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<dirname>} {(${ Id.VSub_Name _CONFIG_FILE)})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [8643]
                )
              ]
              redirects: []
            )
            (C {<mkdir>} {<-p>} {(${ Id.VSub_Name DIR_TO_CREATE)})
            (C {<echo>} 
              {
                (DQ <'Moving output from temporary file ('> ($ Id.VSub_DollarName CONFIG_FILE) 
                  <') to actual file ('> ($ Id.VSub_DollarName _CONFIG_FILE) <')'>
                )
              }
            )
            (C {<mv>} {($ Id.VSub_DollarName CONFIG_FILE)} {($ Id.VSub_DollarName _CONFIG_FILE)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONFIG_FILE='> name:CONFIG_FILE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName _CONFIG_FILE)}
                  spids: [8683]
                )
              ]
              redirects: []
            )
            (C {<echo>} 
              {
                (DQ <'Finished creation of config file ( '> ($ Id.VSub_DollarName _CONFIG_FILE) <' )'>)
              }
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: put_mapping_file_copyright_info
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (C {<grep>} 
                  {
                    (DQ <'ident\t'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                      <'@(#)'> ($ Id.VSub_DollarName PROG)
                    )
                  } {($ Id.VSub_DollarName ABS_PROG)}
                )
                (C {<sed>} {(DQ <'s/ ident/pragma ident/g'>)})
                (command.Simple
                  words: [
                    {<sed>}
                    {(DQ <'s/'> (${ Id.VSub_Name PROG) <'/'> (${ Id.VSub_Name NEW_NAME) <'/g'>)}
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_DollarName MAP_FILE)}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
              negated: F
              stderr_indices: []
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'#\n'> <'# CDDL HEADER START\n'> <'#\n'> 
                    <'# The contents of this file are subject to the terms of the\n'> <'# Common Development and Distribution License (the '>
                  ) <License> 
                  (DQ <').\n'> 
                    <'# You may not use this file except in compliance with the License.\n'> <'#\n'> <'# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE\n'> 
                    <'# or http://www.opensolaris.org/os/licensing.\n'> <'# See the License for the specific language governing permissions\n'> 
                    <'# and limitations under the License.\n'> <'#\n'> <'# When distributing Covered Code, include this CDDL HEADER in each\n'> 
                    <'# file and include the License file at usr/src/OPENSOLARIS.LICENSE.\n'> <'# If applicable, add the following below this CDDL HEADER, with the\n'> 
                    <'# fields enclosed by brackets '>
                  ) <Id.Lit_LBracket '['> <Id.Lit_RBracket ']'> 
                  (DQ <' replaced with your own identifying\n'> 
                    <'# information: Portions Copyright [yyyy] [name of copyright owner]\n'> <'#\n'> <'# CDDL HEADER END\n'> <'#\n'> <'#\n'> 
                    <
'# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.\n'
                    > <'#\n'> <'#-------------------------------------------------------------------\n'> <'#'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: create_all_var_yp_domain_list
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VARYP_DMN_LIST='> name:VARYP_DMN_LIST)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [8827]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [entry]
              iterable: (for_iter.Words words:[{<'/var/yp/'> <Id.Lit_Star '*'>}])
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DMN='> name:DMN)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<basename>} {($ Id.VSub_DollarName entry)})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [8844]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.AndOr
                                  ops: [Id.Op_DAmp]
                                  children: [
                                    (C {<Id.Lit_LBracket '['>} {<-d>} 
                                      {(DQ <'/var/yp/'> ($ Id.VSub_DollarName DMN))} {<Id.Lit_RBracket ']'>}
                                    )
                                    (C {<Id.Lit_LBracket '['>} {<-f>} 
                                      {
                                        (DQ <'/var/yp/binding/'> ($ Id.VSub_DollarName DMN) 
                                          <'/ypservers'>
                                        )
                                      } {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'VARYP_DMN_LIST='>
                                      name: VARYP_DMN_LIST
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName VARYP_DMN_LIST) <' '> 
                                        ($ Id.VSub_DollarName DMN)
                                      )
                                    }
                                  spids: [8885]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [8854 8882]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<echo>} {<VARYP_DMN_LIST>} {<Id.Lit_Equals '='>} 
                  {(DQ ($ Id.VSub_DollarName VARYP_DMN_LIST))}
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: create_n2l_domain_list
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<create_all_var_yp_domain_list>})
            (C {<let>} {<Id.Lit_VarLike 'count='> <0>})
            (command.ForEach
              iter_names: [DMN]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName VARYP_DMN_LIST)}])
              body: 
                (command.DoGroup
                  children: [
                    (C {<get_confirm>} 
                      {
                        (DQ <'Do you want to store maps from '> (${ Id.VSub_Name DMN) 
                          <' domain to LDAP (y/n/h):'>
                        )
                      } {(DQ <n>)} {(DQ <selectDomain4N2L_help>)}
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<1>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      left: <Id.Lit_ArrayLhsOpen 'N2L_DMN_LIST['>
                                      name: N2L_DMN_LIST
                                      index: ($ Id.Lit_ArithVarLike count)
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName DMN)}
                                  spids: [9012]
                                )
                              ]
                              redirects: []
                            )
                            (C {<let>} {<Id.Lit_VarLike 'count='> (DQ <'count + 1'>)})
                          ]
                          spids: [8996 9009]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'N2L_DMN_CNT='> name:N2L_DMN_CNT)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName count)}
                  spids: [9033]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<echo>} 
                  {<Id.Lit_VarLike 'N2L_DMN_LIST='> 
                    (braced_var_sub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name N2L_DMN_LIST>
                      var_name: N2L_DMN_LIST
                      bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                      right: <Id.Right_DollarBrace '}'>
                    )
                  }
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<echo>} {<Id.Lit_VarLike 'N2L_DMN_CNT='> ($ Id.VSub_DollarName N2L_DMN_CNT)})
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: create_map_lists
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'ALL_DMN_ALL_MAPLIST='>
                      name: ALL_DMN_ALL_MAPLIST
                    )
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [9119]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'ALL_DMN_DEF_MAPLIST='>
                      name: ALL_DMN_DEF_MAPLIST
                    )
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [9123]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'ALL_DMN_CUST_MAPLIST='>
                      name: ALL_DMN_CUST_MAPLIST
                    )
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [9127]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'ALL_DMN_AUTO_CUST_MAPLIST='>
                      name: ALL_DMN_AUTO_CUST_MAPLIST
                    )
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [9131]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'CUST_MAP_NEEDED='>
                      name: CUST_MAP_NEEDED
                    )
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [9139]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'CUST_CMT_NEEDED='>
                      name: CUST_CMT_NEEDED
                    )
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [9142]
                )
              ]
              redirects: []
            )
            (C {<let>} {<Id.Lit_VarLike 'count='> <0>})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Less
                          left: {($ Id.VSub_DollarName count)}
                          right: {($ Id.VSub_DollarName N2L_DMN_CNT)}
                        )
                      redirects: []
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DMN='> name:DMN)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name N2L_DMN_LIST>
                                var_name: N2L_DMN_LIST
                                bracket_op: (bracket_op.ArrayIndex expr:($ Id.Lit_ArithVarLike count))
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          spids: [9168]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MAPDIR='> name:MAPDIR)
                          op: assign_op.Equal
                          rhs: {<'/var/yp/'> (${ Id.VSub_Name DMN)}
                          spids: [9177]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'ALL_MAPLIST='>
                              name: ALL_MAPLIST
                            )
                          op: assign_op.Equal
                          rhs: {(DQ )}
                          spids: [9189]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'DEF_MAPLIST='>
                              name: DEF_MAPLIST
                            )
                          op: assign_op.Equal
                          rhs: {(DQ )}
                          spids: [9194]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'CUST_MAPLIST='>
                              name: CUST_MAPLIST
                            )
                          op: assign_op.Equal
                          rhs: {(DQ )}
                          spids: [9199]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'AUTO_CUST_MAPLIST='>
                              name: AUTO_CUST_MAPLIST
                            )
                          op: assign_op.Equal
                          rhs: {(DQ )}
                          spids: [9204]
                        )
                      ]
                      redirects: []
                    )
                    (command.ForEach
                      iter_names: [dbmfile]
                      iterable: 
                        (for_iter.Words
                          words: [{($ Id.VSub_DollarName MAPDIR) <'/'> <Id.Lit_Star '*'> <.dir>}]
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MAP='> name:MAP)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (C {<basename>} {($ Id.VSub_DollarName dbmfile)} {<.dir>})
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                  spids: [9225]
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.AndOr
                                          ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp]
                                          children: [
                                            (command.DBracket
                                              expr: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_GlobNEqual
                                                  left: {($ Id.VSub_DollarName MAP)}
                                                  right: {<LDAP_> <Id.Lit_Other '*'>}
                                                )
                                              redirects: []
                                            )
                                            (command.DBracket
                                              expr: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_GlobNEqual
                                                  left: {($ Id.VSub_DollarName MAP)}
                                                  right: {(DQ )}
                                                )
                                              redirects: []
                                            )
                                            (C {<Id.Lit_LBracket '['>} {<-f>} 
                                              {($ Id.VSub_DollarName MAPDIR) <'/'> 
                                                (${ Id.VSub_Name MAP) <.pag>
                                              } {<Id.Lit_RBracket ']'>}
                                            )
                                            (command.DBracket
                                              expr: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_GlobNEqual
                                                  left: {($ Id.VSub_DollarName MAP)}
                                                  right: {<ageing.byname>}
                                                )
                                              redirects: []
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'ALL_MAPLIST='>
                                              name: ALL_MAPLIST
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ ($ Id.VSub_DollarName ALL_MAPLIST) <' '> 
                                                ($ Id.VSub_DollarName MAP)
                                              )
                                            }
                                          spids: [9301]
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (C {<present>} {($ Id.VSub_DollarName MAP)} 
                                                  {($ Id.VSub_DollarName DEFAULT_NIS_MAPS)}
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'DEF_MAPLIST='>
                                                      name: DEF_MAPLIST
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ ($ Id.VSub_DollarName DEF_MAPLIST) <' '> 
                                                        ($ Id.VSub_DollarName MAP)
                                                      )
                                                    }
                                                  spids: [9322]
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          spids: [9310 9319]
                                        )
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.DBracket
                                                  expr: 
                                                    (bool_expr.Binary
                                                      op_id: Id.BoolBinary_GlobEqual
                                                      left: {($ Id.VSub_DollarName MAP)}
                                                      right: {<auto.> <Id.Lit_Other '*'>}
                                                    )
                                                  redirects: []
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'AUTO_CUST_MAPLIST='>
                                                      name: AUTO_CUST_MAPLIST
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ ($ Id.VSub_DollarName AUTO_CUST_MAPLIST) 
                                                        <' '> ($ Id.VSub_DollarName MAP)
                                                      )
                                                    }
                                                  spids: [9348]
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          spids: [9331 9345]
                                        )
                                      ]
                                      else_action: [
                                        (C {<get_confirm>} 
                                          {
                                            (DQ 
                                              <
'Do you want the mapping information to be generated for '
                                              > (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ($ Id.VSub_DollarName MAP) 
                                              (word_part.EscapedLiteral
                                                token: <Id.Lit_EscapedChar '\\"'>
                                                ch: '"'
                                              ) <' map of '> ($ Id.VSub_DollarName DMN) <' domain (y/n/h)?'>
                                            )
                                          } {(DQ <n>)} {(DQ <generate_mapping_info_for_cust_map_help>)}
                                        )
                                        (command.If
                                          arms: [
                                            (if_arm
                                              cond: 
                                                (condition.Shell
                                                  commands: [
                                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} 
                                                      {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                                                    )
                                                  ]
                                                )
                                              action: [
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: 
                                                        (sh_lhs_expr.Name
                                                          left: <Id.Lit_VarLike 'CUST_MAPLIST='>
                                                          name: CUST_MAPLIST
                                                        )
                                                      op: assign_op.Equal
                                                      rhs: 
                                                        {
                                                          (DQ ($ Id.VSub_DollarName CUST_MAPLIST) 
                                                            <' '> ($ Id.VSub_DollarName MAP)
                                                          )
                                                        }
                                                      spids: [9404]
                                                    )
                                                  ]
                                                  redirects: []
                                                )
                                              ]
                                              spids: [9388 9401]
                                            )
                                          ]
                                          else_action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'ALL_MAPLIST='>
                                                      name: ALL_MAPLIST
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (command_sub
                                                        left_token: <Id.Left_DollarParen '$('>
                                                        child: 
                                                          (C {<remove>} {($ Id.VSub_DollarName MAP)} 
                                                            {($ Id.VSub_DollarName ALL_MAPLIST)}
                                                          )
                                                        right: <Id.Eof_RParen _>
                                                      )
                                                    }
                                                  spids: [9423]
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          redirects: []
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [9242 9298]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                        )
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'ALL_DMN_ALL_MAPLIST='>
                              name: ALL_DMN_ALL_MAPLIST
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (C {<merge_lists>} {($ Id.VSub_DollarName ALL_DMN_ALL_MAPLIST)} 
                                    {($ Id.VSub_DollarName ALL_MAPLIST)}
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                          spids: [9453]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'ALL_DMN_DEF_MAPLIST='>
                              name: ALL_DMN_DEF_MAPLIST
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (C {<merge_lists>} {($ Id.VSub_DollarName ALL_DMN_DEF_MAPLIST)} 
                                    {($ Id.VSub_DollarName DEF_MAPLIST)}
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                          spids: [9463]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'ALL_DMN_CUST_MAPLIST='>
                              name: ALL_DMN_CUST_MAPLIST
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (C {<merge_lists>} {($ Id.VSub_DollarName ALL_DMN_CUST_MAPLIST)} 
                                    {($ Id.VSub_DollarName CUST_MAPLIST)}
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                          spids: [9473]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'ALL_DMN_AUTO_CUST_MAPLIST='>
                              name: ALL_DMN_AUTO_CUST_MAPLIST
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (C {<merge_lists>} {($ Id.VSub_DollarName ALL_DMN_AUTO_CUST_MAPLIST)} 
                                    {($ Id.VSub_DollarName AUTO_CUST_MAPLIST)}
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                          spids: [9483]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.IndexedName
                              left: <Id.Lit_ArrayLhsOpen 'ALL_MAPS['>
                              name: ALL_MAPS
                              index: {($ Id.VSub_DollarName count)}
                            )
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName ALL_MAPLIST))}
                          spids: [9500]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.IndexedName
                              left: <Id.Lit_ArrayLhsOpen 'DEF_MAPS['>
                              name: DEF_MAPS
                              index: {($ Id.VSub_DollarName count)}
                            )
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName DEF_MAPLIST))}
                          spids: [9510]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.IndexedName
                              left: <Id.Lit_ArrayLhsOpen 'CUST_MAPS['>
                              name: CUST_MAPS
                              index: {($ Id.VSub_DollarName count)}
                            )
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName CUST_MAPLIST))}
                          spids: [9520]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.IndexedName
                              left: <Id.Lit_ArrayLhsOpen 'AUTO_CUST_MAPS['>
                              name: AUTO_CUST_MAPS
                              index: {($ Id.VSub_DollarName count)}
                            )
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName AUTO_CUST_MAPLIST))}
                          spids: [9530]
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<1>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (C {<echo>} 
                          {<Id.Lit_ArrayLhsOpen 'ALL_MAPS['> ($ Id.VSub_DollarName DMN) 
                            <Id.Lit_RBracket ']'>
                          } {<Id.Lit_Equals '='>} 
                          {
                            (braced_var_sub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name ALL_MAPS>
                              var_name: ALL_MAPS
                              bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName count)})
                              right: <Id.Right_DollarBrace '}'>
                            )
                          }
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<1>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (C {<echo>} 
                          {<Id.Lit_ArrayLhsOpen 'DEF_MAPS['> ($ Id.VSub_DollarName DMN) 
                            <Id.Lit_RBracket ']'>
                          } {<Id.Lit_Equals '='>} 
                          {
                            (braced_var_sub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name DEF_MAPS>
                              var_name: DEF_MAPS
                              bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName count)})
                              right: <Id.Right_DollarBrace '}'>
                            )
                          }
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<1>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (C {<echo>} 
                          {<Id.Lit_ArrayLhsOpen 'CUST_MAPS['> ($ Id.VSub_DollarName DMN) 
                            <Id.Lit_RBracket ']'>
                          } {<Id.Lit_Equals '='>} 
                          {
                            (braced_var_sub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name CUST_MAPS>
                              var_name: CUST_MAPS
                              bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName count)})
                              right: <Id.Right_DollarBrace '}'>
                            )
                          }
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<1>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (C {<echo>} 
                          {<Id.Lit_ArrayLhsOpen 'AUTO_CUST_MAPS['> ($ Id.VSub_DollarName DMN) 
                            <Id.Lit_RBracket ']'>
                          } {<Id.Lit_Equals '='>} 
                          {
                            (braced_var_sub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name AUTO_CUST_MAPS>
                              var_name: AUTO_CUST_MAPS
                              bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName count)})
                              right: <Id.Right_DollarBrace '}'>
                            )
                          }
                        )
                      ]
                    )
                    (C {<let>} {<Id.Lit_VarLike 'count='> (DQ <'count + 1'>)})
                  ]
                )
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<echo>} {<ALL_DMN_ALL_MAPLIST>} {<Id.Lit_Equals '='>} 
                  {($ Id.VSub_DollarName ALL_DMN_ALL_MAPLIST)}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<echo>} {<ALL_DMN_DEF_MAPLIST>} {<Id.Lit_Equals '='>} 
                  {($ Id.VSub_DollarName ALL_DMN_DEF_MAPLIST)}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<echo>} {<ALL_DMN_CUST_MAPLIST>} {<Id.Lit_Equals '='>} 
                  {($ Id.VSub_DollarName ALL_DMN_CUST_MAPLIST)}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<echo>} {<ALL_DMN_AUTO_CUST_MAPLIST>} {<Id.Lit_Equals '='>} 
                  {($ Id.VSub_DollarName ALL_DMN_AUTO_CUST_MAPLIST)}
                )
              ]
            )
            (C {<set>} {<-A>} {<ALL_DMN_ALL_MAPS>} {($ Id.VSub_DollarName ALL_DMN_ALL_MAPLIST)})
            (C {<set>} {<-A>} {<ALL_DMN_DEF_MAPS>} {($ Id.VSub_DollarName ALL_DMN_DEF_MAPLIST)})
            (C {<set>} {<-A>} {<ALL_DMN_CUST_MAPS>} {($ Id.VSub_DollarName ALL_DMN_CUST_MAPLIST)})
            (C {<set>} {<-A>} {<ALL_DMN_AUTO_CUST_MAPS>} 
              {($ Id.VSub_DollarName ALL_DMN_AUTO_CUST_MAPLIST)}
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} 
                  {
                    (braced_var_sub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name ALL_DMN_CUST_MAPS>
                      var_name: ALL_DMN_CUST_MAPS
                      prefix_op: <Id.VSub_Pound '#'>
                      bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                      right: <Id.Right_DollarBrace '}'>
                    )
                  } {<-gt>} {<0>} {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'CUST_MAP_NEEDED='>
                          name: CUST_MAP_NEEDED
                        )
                      op: assign_op.Equal
                      rhs: {<1>}
                      spids: [9805]
                    )
                  ]
                  redirects: []
                )
              ]
            )
            (C {<echo>} 
              {
                (DQ <'\n'> <'  This script can place relevant information regarding custom\n'> 
                  <'  maps at appropriate places in the mapping file which can be\n'> <'  helpful in customizing this file.\n'>
                )
              }
            )
            (C {<get_confirm>} {(DQ <'Do you want such information to be generated (y/n/h)?'>)} 
              {(DQ <n>)} {(DQ <generate_comment_info_for_cust_map_help>)}
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'CUST_CMT_NEEDED='>
                          name: CUST_CMT_NEEDED
                        )
                      op: assign_op.Equal
                      rhs: {<1>}
                      spids: [9851]
                    )
                  ]
                  redirects: []
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<echo>} {<CUST_MAP_NEEDED>} {<Id.Lit_Equals '='>} 
                  {($ Id.VSub_DollarName CUST_MAP_NEEDED)}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<echo>} {<CUST_CMT_NEEDED>} {<Id.Lit_Equals '='>} 
                  {($ Id.VSub_DollarName CUST_CMT_NEEDED)}
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPdomainContext
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [{<echo>} {(DQ <'\n'> <'# List domains and contexts\n'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.ForEach
              iter_names: [DMN]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name N2L_DMN_LIST>
                        var_name: N2L_DMN_LIST
                        bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<domain_2_dc>} {($ Id.VSub_DollarName DMN)})
                            (C {<get_ans>} 
                              {
                                (DQ <'Enter the naming context for '> ($ Id.VSub_DollarName DMN) 
                                  <' domain (h=help):'>
                                )
                              } {(DQ ($ Id.VSub_DollarName _DOM_2_DC))}
                            )
                            (command.Case
                              to_match: {(DQ ($ Id.VSub_DollarName ANS))}
                              arms: [
                                (case_arm
                                  pat_list: [
                                    {<Id.Lit_LBracket '['> <Hh> <Id.Lit_RBracket ']'>}
                                    {<help>}
                                    {<Help>}
                                    {
                                      (word_part.EscapedLiteral
                                        token: <Id.Lit_EscapedChar '\\?'>
                                        ch: '?'
                                      )
                                    }
                                  ]
                                  action: [(C {<display_msg>} {<nisLDAPdomainContext_help>})]
                                  spids: [9989 10004 10010 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'>}]
                                  action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                                  spids: [10013 10015 10019 -1]
                                )
                              ]
                              redirects: []
                            )
                          ]
                        )
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName ANS))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ <'nisLDAPdomainContext '> ($ Id.VSub_DollarName DMN) <' : '> 
                                    (${ Id.VSub_Name ANS)
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                          spids: [10034 10051]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<1>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (C {<echo>} 
                          {
                            (DQ <'nisLDAPdomainContext '> ($ Id.VSub_DollarName DMN) <' : '> 
                              (${ Id.VSub_Name ANS)
                            )
                          }
                        )
                      ]
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_nisLDAPyppasswddDomains
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> 
                    <'# List domains for which passwords should be changed. If this is not\n'> <'# present then the value returned by \'domainname\' will be used.\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.ForEach
              iter_names: [DMN]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name N2L_DMN_LIST>
                        var_name: N2L_DMN_LIST
                        bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (C {<get_confirm>} 
                      {
                        (DQ <'Enable password changes for '> (${ Id.VSub_Name DMN) 
                          <' domain (y/n/h)? '>
                        )
                      } {(DQ <n>)} {(DQ <nisLDAPyppasswddDomains_help>)}
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<1>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {(DQ <'nisLDAPyppasswddDomains '> ($ Id.VSub_DollarName DMN))}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                          spids: [10170 10183]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'#\n'> 
                    <'#-------------------------------------------------------------------\n'> <'#'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: create_nisLDAPdatabaseIdMapping
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [
                {<echo>}
                {
                  (SQ <'\n'> <'# Associate map names with databaseIds (aliases)\n'> <'\n'> 
                    <'# Standard maps\n'> <'nisLDAPdatabaseIdMapping\tethers: ethers.byaddr ethers.byname\n'> 
                    <'nisLDAPdatabaseIdMapping\tgroup: group.bygid group.byname\n'> <'nisLDAPdatabaseIdMapping\thosts:[addr="[0-9]*.[0-9]*.[0-9]*.[0-9]*"] \\\n'> 
                    <'\t\t\t\thosts.byaddr hosts.byname\n'> <'# Special mapping to handle the YP_MULTI cases\n'> 
                    <'nisLDAPdatabaseIdMapping        multihosts: \\\n'> <'\t\t\t\t[addr="[0-9]*.[0-9]*.[0-9]*.[0-9]*,*"] \\\n'> <'\t\t\t\thosts.byname\n'> 
                    <'nisLDAPdatabaseIdMapping\tnetworks: networks.byaddr networks.byname\n'> <'nisLDAPdatabaseIdMapping\tproject: project.byname project.byprojid\n'> 
                    <'nisLDAPdatabaseIdMapping\tprotocols: protocols.byname protocols.bynumber\n'> <'nisLDAPdatabaseIdMapping\tservices: services.byname services.byservicename\n'> <'\n'> 
                    <'# netid.byname is built up from the hosts and passwd files using different\n'> <'# mappings. It thus has two associated nisLDAPdatabaseIdMappings.\n'> 
                    <'nisLDAPdatabaseIdMapping\tnetid.host:[number="0"] netid.byname\n'> <'nisLDAPdatabaseIdMapping\tnetid.pass:[number="[1-9]*"] netid.byname\n'> <'\n'> 
                    <
'# The next two are special databaseIds. They associate maps with databaseIds \n'
                    > <'# but additionally identify which maps contain password and password adjunct\n'> 
                    <'# information for yppasswdd. \n'> <'nisLDAPdatabaseIdMapping\tpasswd: passwd.byname passwd.byuid\n'> <'\n'> 
                    <'# mail.byaddr needs to select entries of the form x@y or x!y\n'> <'nisLDAPdatabaseIdMapping\tmail.mapping:[rf_key="*@*", rf_key="*!*"] \\\n'> <'\t\t\t\tmail.byaddr\n'> 
                    <'\n'> <'# publickey.byname\n'> <'# Each entry in publickey map consists of a network user name which\n'> 
                    <
'# may refer to a host or a user. It also contains a default entry for nobody.\n'
                    > <'# Hence, we need three nisLDAPdatabaseIdmappings to support the three\n'> 
                    <'# different types of keys.\n'> <'nisLDAPdatabaseIdMapping        keys.host:[rf_key="unix.[a-zA-Z]*@*"] \\\n'> 
                    <'\t\t\t\tpublickey.byname\n'> <'nisLDAPdatabaseIdMapping        keys.pass:[rf_key="unix.[0-9]*@*"] \\\n'> 
                    <'\t\t\t\tpublickey.byname\n'> <'nisLDAPdatabaseIdMapping        keys.nobody:[rf_key="nobody"] publickey.byname\n'> <'\n'> 
                    <'# Single standard maps. No point aliasing.\n'> <'# mail.aliases \n'> <'# netmasks.byaddr\n'> <'# rpc.bynumber\n'> <'# ypservers\n'> <'\n'> 
                    <'# Other maps\n'> <'# ipnodes looks identical to hosts but maps to a different context.\n'> 
                    <'nisLDAPdatabaseIdMapping\tipnodes:[addr="*:*"] \\\n'> <'\t\t\t\tipnodes.byaddr ipnodes.byname\n'> <'# Special mapping to handle the YP_MULTI cases\n'> 
                    <'nisLDAPdatabaseIdMapping        multiipnodes: \\\n'> <'\t\t\t\t[addr="*:*,*"] \\\n'> <'\t\t\t\tipnodes.byname\n'> <'\n'> 
                    <'# Other single maps. No point aliasing\n'> <'# audit_user\n'> <'# auth_attr\n'> <'# exec_attr\n'> <'# prof_attr\n'> <'# user_attr\n'> 
                    <'# auto.home\n'> <'# auto.master\n'> <'# bootparams\n'> <'# timezone.byname\n'> <'# printers.conf.byname\n'> 
                    <'# passwd.adjunct.byname\n'> <'# group.adjunct.byname\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<CUST_CMT_NEEDED>} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>})
                (command.Simple
                  words: [
                    {<echo>}
                    {
                      (DQ <'\n'> 
                        <'# If any custom map needs to be aliased, then it should be listed\n'> <'# here in the following format :\n'> <'# nisLDAPdatabaseIdMapping databaseId '>
                      ) <Id.Lit_Colon ':'> (DQ <' ['>) <Id.Lit_LBracket '['> (DQ <indexlist>) <Id.Lit_RBracket ']'> 
                      (DQ <'] mapname['>)
                    }
                    {(DQ <'...]\n'>)}
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_DGreat '>>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_DollarName MAP_FILE)}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<CUST_MAP_NEEDED>} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>})
                (command.Simple
                  words: [
                    {<echo>}
                    {
                      (DQ <'# Not aliasing non-default/custom maps as they are assumed to be\n'> 
                        <'# simple, single maps.'>
                      )
                    }
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_DGreat '>>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_DollarName MAP_FILE)}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
            )
            (command.ForEach
              iter_names: [MAP]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name ALL_DMN_AUTO_CUST_MAPS>
                        var_name: ALL_DMN_AUTO_CUST_MAPS
                        bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name ALL_DMN_CUST_MAPS>
                        var_name: ALL_DMN_CUST_MAPS
                        bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'# '> ($ Id.VSub_DollarName MAP))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                )
              redirects: []
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'#\n'> 
                    <
'#------------------------------------------------------------------------------\n'
                    > <'#\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: find_domains
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_MAP='> name:_MAP)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                  spids: [10464]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_ARRAY='> name:_ARRAY)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 2)}
                  spids: [10467]
                )
              ]
              redirects: []
            )
            (C {<let>} {<Id.Lit_VarLike 'PRESENT_COUNT='> <0>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'PRESENT_IN_DOMAINS='>
                      name: PRESENT_IN_DOMAINS
                    )
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [10476]
                )
              ]
              redirects: []
            )
            (C {<let>} {<Id.Lit_VarLike 'count='> <0>})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Less
                          left: {($ Id.VSub_DollarName count)}
                          right: {($ Id.VSub_DollarName N2L_DMN_CNT)}
                        )
                      redirects: []
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName _ARRAY))}
                      arms: [
                        (case_arm
                          pat_list: [{<ALL_MAPS>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_LIST='> name:_LIST)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (braced_var_sub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name ALL_MAPS>
                                        var_name: ALL_MAPS
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: {($ Id.VSub_DollarName count)}
                                          )
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                  spids: [10521]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [10517 10519 10529 -1]
                        )
                        (case_arm
                          pat_list: [{<DEF_MAPS>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_LIST='> name:_LIST)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (braced_var_sub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name DEF_MAPS>
                                        var_name: DEF_MAPS
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: {($ Id.VSub_DollarName count)}
                                          )
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                  spids: [10536]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [10532 10534 10544 -1]
                        )
                        (case_arm
                          pat_list: [{<CUST_MAPS>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_LIST='> name:_LIST)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (braced_var_sub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name CUST_MAPS>
                                        var_name: CUST_MAPS
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: {($ Id.VSub_DollarName count)}
                                          )
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                  spids: [10551]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [10547 10549 10559 -1]
                        )
                        (case_arm
                          pat_list: [{<AUTO_CUST_MAPS>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_LIST='> name:_LIST)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (braced_var_sub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name AUTO_CUST_MAPS>
                                        var_name: AUTO_CUST_MAPS
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: {($ Id.VSub_DollarName count)}
                                          )
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                  spids: [10566]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [10562 10564 10574 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (C {<echo>} 
                              {
                                (DQ <'Invalid value: '> 
                                  (word_part.EscapedLiteral
                                    token: <Id.Lit_EscapedChar '\\"'>
                                    ch: '"'
                                  ) (${ Id.VSub_Name _ARRAY) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'. '> 
                                  <Id.Lit_BadBackslash '\\'> <c>
                                )
                              }
                            )
                          ]
                          spids: [10577 10579 10596 -1]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<present>} {($ Id.VSub_DollarName _MAP)} 
                                  {($ Id.VSub_DollarName _LIST)}
                                )
                              ]
                            )
                          action: [
                            (C {<let>} 
                              {<Id.Lit_VarLike 'PRESENT_COUNT='> 
                                (DQ ($ Id.VSub_DollarName PRESENT_COUNT) <' + 1'>)
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'PRESENT_IN_DOMAINS='>
                                      name: PRESENT_IN_DOMAINS
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName PRESENT_IN_DOMAINS) <' '> 
                                        (braced_var_sub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name N2L_DMN_LIST>
                                          var_name: N2L_DMN_LIST
                                          bracket_op: 
                                            (bracket_op.ArrayIndex
                                              expr: ($ Id.Lit_ArithVarLike count)
                                            )
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                  spids: [10624]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [10603 10612]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (C {<let>} {<Id.Lit_VarLike 'count='> (DQ <'count + 1'>)})
                  ]
                )
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<echo>} {(DQ <'PRESENT_COUNT = '> ($ Id.VSub_DollarName PRESENT_COUNT))})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<echo>} {(DQ <'PRESENT_IN_DOMAINS = '> ($ Id.VSub_DollarName PRESENT_IN_DOMAINS))})
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: find_map_presence_details
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_MAP='> name:_MAP)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                  spids: [10721]
                )
              ]
              redirects: []
            )
            (C {<let>} {<Id.Lit_VarLike 'PRESENT_COUNT='> <0>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'PRESENT_IN_LIST='>
                      name: PRESENT_IN_LIST
                    )
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [10730]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'PRESENT_IN_DOMAINS='>
                      name: PRESENT_IN_DOMAINS
                    )
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [10734]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          children: [
                            (C {<present>} {($ Id.VSub_DollarName _MAP)} 
                              {($ Id.VSub_DollarName ALL_DMN_ALL_MAPLIST)}
                            )
                          ]
                          negated: T
                          stderr_indices: []
                        )
                      ]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})]
                  spids: [10752 10762]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<present>} {($ Id.VSub_DollarName _MAP)} 
                          {($ Id.VSub_DollarName ALL_DMN_DEF_MAPLIST)}
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'PRESENT_IN_LIST='>
                              name: PRESENT_IN_LIST
                            )
                          op: assign_op.Equal
                          rhs: {(DQ <DEF_MAPS>)}
                          spids: [10781]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [10770 10778]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<present>} {($ Id.VSub_DollarName _MAP)} 
                          {($ Id.VSub_DollarName ALL_DMN_CUST_MAPLIST)}
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'PRESENT_IN_LIST='>
                              name: PRESENT_IN_LIST
                            )
                          op: assign_op.Equal
                          rhs: {(DQ <CUST_MAPS>)}
                          spids: [10798]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [10787 10795]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'PRESENT_IN_LIST='>
                          name: PRESENT_IN_LIST
                        )
                      op: assign_op.Equal
                      rhs: {(DQ <AUTO_CUST_MAPS>)}
                      spids: [10815]
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (C {<find_domains>} {($ Id.VSub_DollarName _MAP)} {($ Id.VSub_DollarName PRESENT_IN_LIST)})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<echo>} {(DQ <'PRESENT_IN_LIST = '> ($ Id.VSub_DollarName PRESENT_IN_LIST))})
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: valid_comment_char
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'COMMENT_CHAR_LENGTH='>
                      name: COMMENT_CHAR_LENGTH
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {(DQ (${ Id.VSub_Name COMMENT_CHAR))})
                              (C {<wc>} {<-c>})
                            ]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [10890]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName COMMENT_CHAR_LENGTH)} 
                              {<-gt>} {<2>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<echo>} 
                      {(DQ <' Comment character has to be a blank or single character; try again.'>)}
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [10913 10926]
                )
              ]
              else_action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_comment_char
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_MAP='> name:_MAP)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                  spids: [10971]
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
              body: 
                (command.DoGroup
                  children: [
                    (C {<get_ans>} 
                      {(DQ <'Specify the comment character for '> ($ Id.VSub_DollarName _MAP) <' :'>)}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'COMMENT_CHAR='>
                              name: COMMENT_CHAR
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName ANS)}
                          spids: [10991]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {<valid_comment_char>})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                          spids: [10996 11001]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'nisLDAPcommentChar '> ($ Id.VSub_DollarName _MAP) <' : \''> 
                    (${ Id.VSub_Name COMMENT_CHAR) <'\''>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_comment_char_per_domain
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_MAP='> name:_MAP)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                  spids: [11053]
                )
              ]
              redirects: []
            )
            (C {<shift>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_DOMAIN_LIST='> name:_DOMAIN_LIST)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_At '@'))}
                  spids: [11058]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [_DMN]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName _DOMAIN_LIST)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<get_ans>} 
                              {
                                (DQ <'Specify the comment character for '> ($ Id.VSub_DollarName _MAP) 
                                  <','> (${ Id.VSub_Name _DMN) <' :'>
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'COMMENT_CHAR='>
                                      name: COMMENT_CHAR
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName ANS)}
                                  spids: [11098]
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: (C {<valid_comment_char>})
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                                  spids: [11103 11108]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                        )
                      redirects: []
                    )
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (DQ <'nisLDAPcommentChar '> ($ Id.VSub_DollarName _MAP) <','> 
                            (${ Id.VSub_Name _DMN) <' : \''> (${ Id.VSub_Name COMMENT_CHAR) <'\''>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_custom_nisLDAPcommentChar
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ForEach
              iter_names: [MAP]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name ALL_DMN_AUTO_CUST_MAPS>
                        var_name: ALL_DMN_AUTO_CUST_MAPS
                        bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {(DQ <'nisLDAPcommentChar '> ($ Id.VSub_DollarName MAP) <' : \'#\''>)}
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                )
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<CUST_MAP_NEEDED>} {<-eq>} {<1>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<get_confirm>} 
                      {
                        (DQ 
                          <
'Do you wish to specify the comment character for any custom map (y/n/h)?'
                          >
                        )
                      } {(DQ <n>)} {(DQ <custom_map_comment_char_help>)}
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<1>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ForEach
                              iter_names: [MAP]
                              iterable: 
                                (for_iter.Words
                                  words: [
                                    {
                                      (braced_var_sub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name ALL_DMN_CUST_MAPS>
                                        var_name: ALL_DMN_CUST_MAPS
                                        bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                  ]
                                )
                              body: 
                                (command.DoGroup
                                  children: [
                                    (C {<get_confirm>} 
                                      {
                                        (DQ <'Do you wish to specify comment character for '> 
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\"'>
                                            ch: '"'
                                          ) ($ Id.VSub_DollarName MAP) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                                          <' (y/n/h)?'>
                                        )
                                      } {(DQ <n>)} {(DQ <custom_map_comment_char_help>)}
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} 
                                                      {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (C {<find_domains>} {($ Id.VSub_DollarName MAP)} 
                                              {<CUST_MAPS>}
                                            )
                                            (command.If
                                              arms: [
                                                (if_arm
                                                  cond: 
                                                    (condition.Shell
                                                      commands: [
                                                        (command.Sentence
                                                          child: 
                                                            (C {<Id.Lit_LBracket '['>} 
                                                              {($ Id.VSub_DollarName PRESENT_COUNT)} {<-gt>} {<1>} {<Id.Lit_RBracket ']'>}
                                                            )
                                                          terminator: <Id.Op_Semi _>
                                                        )
                                                      ]
                                                    )
                                                  action: [
                                                    (C {<echo>} 
                                                      {
                                                        (DQ <'Map '> 
                                                          (word_part.EscapedLiteral
                                                            token: <Id.Lit_EscapedChar '\\"'>
                                                            ch: '"'
                                                          ) ($ Id.VSub_DollarName MAP) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                                                          <' is present in these domains : '> ($ Id.VSub_DollarName PRESENT_IN_DOMAINS)
                                                        )
                                                      }
                                                    )
                                                    (C {<get_confirm>} 
                                                      {
                                                        (DQ <'For '> 
                                                          (word_part.EscapedLiteral
                                                            token: <Id.Lit_EscapedChar '\\"'>
                                                            ch: '"'
                                                          ) ($ Id.VSub_DollarName MAP) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                                                          <
', should the same comment character be set for all the domains (y/n/h)?'
                                                          >
                                                        )
                                                      } {(DQ <y>)} {(DQ <same_comment_char_help>)}
                                                    )
                                                    (command.If
                                                      arms: [
                                                        (if_arm
                                                          cond: 
                                                            (condition.Shell
                                                              commands: [
                                                                (command.Sentence
                                                                  child: 
                                                                    (C {<Id.Lit_LBracket '['>} 
                                                                      {($ Id.VSub_QMark '?')} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                                                                    )
                                                                  terminator: <Id.Op_Semi _>
                                                                )
                                                              ]
                                                            )
                                                          action: [
                                                            (C {<get_comment_char>} 
                                                              {($ Id.VSub_DollarName MAP)}
                                                            )
                                                          ]
                                                          spids: [11372 11385]
                                                        )
                                                      ]
                                                      else_action: [
                                                        (C {<get_comment_char_per_domain>} 
                                                          {($ Id.VSub_DollarName MAP)} {(DQ ($ Id.VSub_DollarName PRESENT_IN_DOMAINS))}
                                                        )
                                                      ]
                                                      redirects: []
                                                    )
                                                  ]
                                                  spids: [11321 11334]
                                                )
                                              ]
                                              else_action: [
                                                (C {<get_comment_char>} {($ Id.VSub_DollarName MAP)})
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          spids: [11298 11311]
                                        )
                                      ]
                                      else_action: []
                                      redirects: []
                                    )
                                  ]
                                )
                              redirects: []
                            )
                          ]
                          spids: [11242 11255]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [11208 11221]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: create_nisLDAPcommentChar
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [{<echo>} {(DQ <'# Specify the character representing the start of comments.\n'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<CUST_CMT_NEEDED>} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>})
                (command.Simple
                  words: [
                    {<echo>}
                    {
                      (DQ 
                        <
'# The comment character represents the start of the special \'comment\'\n'
                        > <'# field in a given NIS map. If this attribute is not present then the\n'> 
                        <
'# default comment character \'#\' is used. If a map cannot contain comments\n'
                        > <'# then the NULL (\'\') comment character should be specified. The format to\n'> 
                        <'# specify the comment character is :\n'> <'# nisLDAPcommentChar MAP[,DOMAIN] : \'single_comment_char\'\n'>
                      )
                    }
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_DGreat '>>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_DollarName MAP_FILE)}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'nisLDAPcommentChar group : \'\'\n'> <'nisLDAPcommentChar passwd : \'\'\n'> 
                    <'nisLDAPcommentChar ageing.byname : \'\'\n'> <'nisLDAPcommentChar audit_user : \'\'\n'> <'nisLDAPcommentChar auth_attr : \'\'\n'> 
                    <'nisLDAPcommentChar exec_attr : \'\'\n'> <'nisLDAPcommentChar user_attr : \'\'\n'> <'nisLDAPcommentChar bootparams : \'\'\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_MAP='> name:_MAP)
                  op: assign_op.Equal
                  rhs: {<passwd.adjunct.byname>}
                  spids: [11509]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          children: [
                            (C {<present>} {($ Id.VSub_DollarName _MAP)} 
                              {($ Id.VSub_DollarName ALL_DMN_DEF_MAPLIST)}
                            )
                          ]
                          negated: T
                          stderr_indices: []
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'#nisLDAPcommentChar passwd.adjunct.byname: \'\''>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [11512 11522]
                )
              ]
              else_action: [
                (C {<find_domains>} {($ Id.VSub_DollarName _MAP)} {<DEF_MAPS>})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName PRESENT_COUNT)} {<-eq>} 
                              {($ Id.VSub_DollarName N2L_DMN_CNT)} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (command.Simple
                          words: [{<echo>} {(DQ <'nisLDAPcommentChar passwd.adjunct.byname: \'\''>)}]
                          redirects: [
                            (redir
                              op: <Id.Redir_DGreat '>>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {($ Id.VSub_DollarName MAP_FILE)}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                      spids: [11553 11566]
                    )
                  ]
                  else_action: [
                    (command.ForEach
                      iter_names: [_DMN]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName PRESENT_IN_DOMAINS)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ <'nisLDAPcommentChar passwd.adjunct.byname,'> 
                                    (${ Id.VSub_Name _DMN) <': \'\''>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                        )
                      redirects: []
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_MAP='> name:_MAP)
                  op: assign_op.Equal
                  rhs: {<group.adjunct.byname>}
                  spids: [11633]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          children: [
                            (C {<present>} {($ Id.VSub_DollarName _MAP)} 
                              {($ Id.VSub_DollarName ALL_DMN_DEF_MAPLIST)}
                            )
                          ]
                          negated: T
                          stderr_indices: []
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'#nisLDAPcommentChar group.adjunct.byname: \'\''>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [11636 11646]
                )
              ]
              else_action: [
                (C {<find_domains>} {($ Id.VSub_DollarName _MAP)} {<DEF_MAPS>})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName PRESENT_COUNT)} {<-eq>} 
                              {($ Id.VSub_DollarName N2L_DMN_CNT)} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (command.Simple
                          words: [{<echo>} {(DQ <'nisLDAPcommentChar group.adjunct.byname: \'\''>)}]
                          redirects: [
                            (redir
                              op: <Id.Redir_DGreat '>>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {($ Id.VSub_DollarName MAP_FILE)}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                      spids: [11677 11690]
                    )
                  ]
                  else_action: [
                    (command.ForEach
                      iter_names: [_DMN]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName PRESENT_IN_DOMAINS)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ <'nisLDAPcommentChar group.adjunct.byname,'> 
                                    (${ Id.VSub_Name _DMN) <': \'\''>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                        )
                      redirects: []
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [{<echo>} {(DQ )}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<get_custom_nisLDAPcommentChar>})
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'#\n'> 
                    <
'#------------------------------------------------------------------------------\n'
                    > <'#\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: create_secure_flag_entries
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [{<echo>} {(DQ <'# Specify YP_SECURE flags\n'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<CUST_CMT_NEEDED>} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>})
                (command.Simple
                  words: [
                    {<echo>}
                    {
                      (DQ <'# If a map is secure, then it needs to be mentioned here\n'> 
                        <'# in the following format :\n'> <'# nisLDAPmapFlags mapname : s\n'>
                      )
                    }
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_DGreat '>>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_DollarName MAP_FILE)}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_MAP='> name:_MAP)
                  op: assign_op.Equal
                  rhs: {<passwd.adjunct.byname>}
                  spids: [11841]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          children: [
                            (C {<present>} {($ Id.VSub_DollarName _MAP)} 
                              {($ Id.VSub_DollarName ALL_DMN_DEF_MAPLIST)}
                            )
                          ]
                          negated: T
                          stderr_indices: []
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'#nisLDAPmapFlags passwd.adjunct.byname : s'>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [11844 11854]
                )
              ]
              else_action: [
                (C {<find_domains>} {($ Id.VSub_DollarName _MAP)} {<DEF_MAPS>})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName PRESENT_COUNT)} {<-eq>} 
                              {($ Id.VSub_DollarName N2L_DMN_CNT)} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (command.Simple
                          words: [{<echo>} {(DQ <'nisLDAPmapFlags passwd.adjunct.byname : s'>)}]
                          redirects: [
                            (redir
                              op: <Id.Redir_DGreat '>>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {($ Id.VSub_DollarName MAP_FILE)}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                      spids: [11885 11898]
                    )
                  ]
                  else_action: [
                    (command.ForEach
                      iter_names: [_DMN]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName PRESENT_IN_DOMAINS)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ <'nisLDAPmapFlags passwd.adjunct.byname,'> 
                                    (${ Id.VSub_Name _DMN) <' : s'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                        )
                      redirects: []
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_MAP='> name:_MAP)
                  op: assign_op.Equal
                  rhs: {<group.adjunct.byname>}
                  spids: [11961]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          children: [
                            (C {<present>} {($ Id.VSub_DollarName _MAP)} 
                              {($ Id.VSub_DollarName ALL_DMN_DEF_MAPLIST)}
                            )
                          ]
                          negated: T
                          stderr_indices: []
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'#nisLDAPmapFlags group.adjunct.byname : s'>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [11964 11974]
                )
              ]
              else_action: [
                (C {<find_domains>} {($ Id.VSub_DollarName _MAP)} {<DEF_MAPS>})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName PRESENT_COUNT)} {<-eq>} 
                              {($ Id.VSub_DollarName N2L_DMN_CNT)} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (command.Simple
                          words: [{<echo>} {(DQ <'nisLDAPmapFlags group.adjunct.byname : s'>)}]
                          redirects: [
                            (redir
                              op: <Id.Redir_DGreat '>>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {($ Id.VSub_DollarName MAP_FILE)}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                      spids: [12005 12018]
                    )
                  ]
                  else_action: [
                    (command.ForEach
                      iter_names: [_DMN]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName PRESENT_IN_DOMAINS)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ <'nisLDAPmapFlags group.adjunct.byname,'> (${ Id.VSub_Name _DMN) 
                                    <' : s'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                        )
                      redirects: []
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [{<echo>} {(DQ )}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STR='> name:STR)
                  op: assign_op.Equal
                  rhs: {(DQ <any>)}
                  spids: [12088]
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
              body: 
                (command.DoGroup
                  children: [
                    (C {<get_confirm>} 
                      {
                        (DQ <'Do you wish to set the secure flag for '> ($ Id.VSub_DollarName STR) 
                          <' map (y/n/h)?'>
                        )
                      } {(DQ <n>)} {(DQ <secure_flag_on_help>)}
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [12123 12136]
                        )
                      ]
                      else_action: [
                        (C {<get_ans>} {(DQ <'Enter the MAP name :'>)})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MAP='> name:MAP)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_DollarName ANS)}
                              spids: [12155]
                            )
                          ]
                          redirects: []
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (command.DBracket
                                          expr: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_GlobEqual
                                              left: {($ Id.VSub_DollarName MAP)}
                                              right: {(DQ )}
                                            )
                                          redirects: []
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (C {<echo>} {(DQ <' Error : BLANK map name not allowed; try again'>)})
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Continue continue>
                                )
                              ]
                              spids: [12161 12175]
                            )
                          ]
                          else_action: []
                          redirects: []
                        )
                        (C {<find_map_presence_details>} {($ Id.VSub_DollarName MAP)})
                        (command.Case
                          to_match: {($ Id.VSub_DollarName PRESENT_COUNT)}
                          arms: [
                            (case_arm
                              pat_list: [{<0>}]
                              action: [
                                (C {<echo>} 
                                  {
                                    (DQ <' Error : '> ($ Id.VSub_DollarName MAP) 
                                      <' not found in any domain; try again'>
                                    )
                                  }
                                )
                              ]
                              spids: [12215 12217 12228 -1]
                            )
                            (case_arm
                              pat_list: [{<1>}]
                              action: [
                                (command.Simple
                                  words: [
                                    {<echo>}
                                    {(DQ <'nisLDAPmapFlags '> ($ Id.VSub_DollarName MAP) <' : s'>)}
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_DGreat '>>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {($ Id.VSub_DollarName MAP_FILE)}
                                    )
                                  ]
                                  more_env: []
                                  do_fork: T
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STR='> name:STR)
                                      op: assign_op.Equal
                                      rhs: {(DQ <another>)}
                                      spids: [12253]
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              spids: [12232 12234 12262 -1]
                            )
                            (case_arm
                              pat_list: [{<Id.Lit_Star '*'>}]
                              action: [
                                (C {<echo>} 
                                  {
                                    (DQ <'Map '> 
                                      (word_part.EscapedLiteral
                                        token: <Id.Lit_EscapedChar '\\"'>
                                        ch: '"'
                                      ) ($ Id.VSub_DollarName MAP) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                                      <' is present in these domains : '> ($ Id.VSub_DollarName PRESENT_IN_DOMAINS)
                                    )
                                  }
                                )
                                (C {<get_confirm>} 
                                  {
                                    (DQ 
                                      <
'For this map, do you wish to set this flag for all the domains (y/n/h)?'
                                      >
                                    )
                                  } {(DQ <y>)} {(DQ <secure_flag_all_domains_help>)}
                                )
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} 
                                                  {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      action: [
                                        (command.Simple
                                          words: [
                                            {<echo>}
                                            {
                                              (DQ <'nisLDAPmapFlags '> ($ Id.VSub_DollarName MAP) 
                                                <' : s'>
                                              )
                                            }
                                          ]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_DGreat '>>'>
                                              loc: (redir_loc.Fd fd:1)
                                              arg: {($ Id.VSub_DollarName MAP_FILE)}
                                            )
                                          ]
                                          more_env: []
                                          do_fork: T
                                        )
                                      ]
                                      spids: [12310 12323]
                                    )
                                  ]
                                  else_action: [
                                    (command.ForEach
                                      iter_names: [_DMN]
                                      iterable: 
                                        (for_iter.Words
                                          words: [{($ Id.VSub_DollarName PRESENT_IN_DOMAINS)}]
                                        )
                                      body: 
                                        (command.DoGroup
                                          children: [
                                            (C {<get_confirm_nodef>} 
                                              {
                                                (DQ <'Set secure flag for '> 
                                                  ($ Id.VSub_DollarName MAP) <','> (${ Id.VSub_Name _DMN) <' (y/n)?'>
                                                )
                                              }
                                            )
                                            (command.If
                                              arms: [
                                                (if_arm
                                                  cond: 
                                                    (condition.Shell
                                                      commands: [
                                                        (command.Sentence
                                                          child: 
                                                            (C {<Id.Lit_LBracket '['>} 
                                                              {($ Id.VSub_QMark '?')} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                                                            )
                                                          terminator: <Id.Op_Semi _>
                                                        )
                                                      ]
                                                    )
                                                  action: [
                                                    (command.Simple
                                                      words: [
                                                        {<echo>}
                                                        {
                                                          (DQ <'nisLDAPmapFlags '> 
                                                            ($ Id.VSub_DollarName MAP) <','> (${ Id.VSub_Name _DMN) <' : s'>
                                                          )
                                                        }
                                                      ]
                                                      redirects: [
                                                        (redir
                                                          op: <Id.Redir_DGreat '>>'>
                                                          loc: (redir_loc.Fd fd:1)
                                                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                                                        )
                                                      ]
                                                      more_env: []
                                                      do_fork: T
                                                    )
                                                  ]
                                                  spids: [12370 12383]
                                                )
                                              ]
                                              else_action: []
                                              redirects: []
                                            )
                                          ]
                                        )
                                      redirects: []
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STR='> name:STR)
                                      op: assign_op.Equal
                                      rhs: {(DQ <another>)}
                                      spids: [12413]
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              spids: [12266 12268 12422 -1]
                            )
                          ]
                          redirects: []
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: create_interdomain_flag_entries
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'INTERDOMAIN_MAP_LIST='>
                      name: INTERDOMAIN_MAP_LIST
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'ipnodes\n'> <'                       multiipnodes\n'> 
                        <'                       hosts\n'> <'                       multihosts\n'> <'                       services.byservicename'>
                      )
                    }
                  spids: [12454]
                )
              ]
              redirects: []
            )
            (command.ShFunction
              name: print_interdomain_entries
              body: 
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.ForEach
                      iter_names: [_MAP]
                      iterable: 
                        (for_iter.Words
                          words: [{($ Id.VSub_DollarName INTERDOMAIN_MAP_LIST)}]
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {(DQ <'nisLDAPmapFlags '> (${ Id.VSub_Name _MAP) <' : b'>)}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                        )
                      redirects: []
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
            )
            (command.Simple
              words: [{<echo>} {(DQ <'\n'> <'# Specify YP_INTERDOMAIN flags\n'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<CUST_CMT_NEEDED>} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>})
                (command.Simple
                  words: [
                    {<echo>}
                    {
                      (DQ 
                        <
'# It is used to indicate NIS servers to use the domain name resolver for\n'
                        > <'# host name and address lookups for hosts not found in the maps.\n'> 
                        <
'# If set, it adds YP_INTERDOMAIN entries in these maps when converting \n'
                        > <'# data from LDAP to YP. It needs to be set in the following format :\n'> 
                        <'# nisLDAPmapFlags mapname : b\n'>
                      )
                    }
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_DGreat '>>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_DollarName MAP_FILE)}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'# If '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                    <'B is set in /var/yp/Makefile, then this flag should be\n'> <'# set for following maps :'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.ForEach
              iter_names: [_MAP]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName INTERDOMAIN_MAP_LIST)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'# nisLDAPmapFlags '> (${ Id.VSub_Name _MAP) <' : b'>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                )
              redirects: []
            )
            (command.Simple
              words: [{<echo>}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<get_confirm>} 
              {
                (DQ <'Do you wish to set the '> 
                  (word_part.EscapedLiteral
                    token: <Id.Lit_EscapedChar '\\"'>
                    ch: '"'
                  ) <interdomain> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                  <' flag for any domain (y/n/h)?'>
                )
              } {(DQ <n>)} {(DQ <interdomain_flag_on_help>)}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<1>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName N2L_DMN_CNT)} 
                                      {<-gt>} {<1>} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<get_confirm>} 
                              {
                                (DQ <'Should '> 
                                  (word_part.EscapedLiteral
                                    token: <Id.Lit_EscapedChar '\\"'>
                                    ch: '"'
                                  ) <interdomain> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                                  <' flag be set for all domain (y/n/h)?'>
                                )
                              } {(DQ <y>)} {(DQ <interdomain_flag_all_domains_help>)}
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} 
                                              {<1>} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [(C {<print_interdomain_entries>})]
                                  spids: [12688 12701]
                                )
                              ]
                              else_action: [
                                (command.ForEach
                                  iter_names: [_DMN]
                                  iterable: 
                                    (for_iter.Words
                                      words: [
                                        {
                                          (braced_var_sub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Name N2L_DMN_LIST>
                                            var_name: N2L_DMN_LIST
                                            bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                                            right: <Id.Right_DollarBrace '}'>
                                          )
                                        }
                                      ]
                                    )
                                  body: 
                                    (command.DoGroup
                                      children: [
                                        (C {<get_confirm_nodef>} 
                                          {
                                            (DQ <'Set interdomain flag for '> (${ Id.VSub_Name _DMN) 
                                              <' (y/n)?'>
                                            )
                                          }
                                        )
                                        (command.If
                                          arms: [
                                            (if_arm
                                              cond: 
                                                (condition.Shell
                                                  commands: [
                                                    (command.Sentence
                                                      child: 
                                                        (C {<Id.Lit_LBracket '['>} 
                                                          {($ Id.VSub_QMark '?')} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                                                        )
                                                      terminator: <Id.Op_Semi _>
                                                    )
                                                  ]
                                                )
                                              action: [
                                                (command.ForEach
                                                  iter_names: [_MAP]
                                                  iterable: 
                                                    (for_iter.Words
                                                      words: [
                                                        {($ Id.VSub_DollarName INTERDOMAIN_MAP_LIST)}
                                                      ]
                                                    )
                                                  body: 
                                                    (command.DoGroup
                                                      children: [
                                                        (command.Simple
                                                          words: [
                                                            {<echo>}
                                                            {
                                                              (DQ <'nisLDAPmapFlags '> 
                                                                (${ Id.VSub_Name _MAP) <','> (${ Id.VSub_Name _DMN) <' : b'>
                                                              )
                                                            }
                                                          ]
                                                          redirects: [
                                                            (redir
                                                              op: <Id.Redir_DGreat '>>'>
                                                              loc: (redir_loc.Fd fd:1)
                                                              arg: {($ Id.VSub_DollarName MAP_FILE)}
                                                            )
                                                          ]
                                                          more_env: []
                                                          do_fork: T
                                                        )
                                                      ]
                                                    )
                                                  redirects: []
                                                )
                                              ]
                                              spids: [12740 12753]
                                            )
                                          ]
                                          else_action: []
                                          redirects: []
                                        )
                                      ]
                                    )
                                  redirects: []
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [12649 12662]
                        )
                      ]
                      else_action: [(C {<print_interdomain_entries>})]
                      redirects: []
                    )
                  ]
                  spids: [12632 12645]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'#\n'> 
                    <
'#------------------------------------------------------------------------------\n'
                    > <'#\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: create_nisLDAPmapFlags
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [(C {<create_secure_flag_entries>}) (C {<create_interdomain_flag_entries>})]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: print_one_map_ttl_entry
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_Map='> name:_Map)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                  spids: [12872]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_iTtlLo='> name:_iTtlLo)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 2)}
                  spids: [12875]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_iTtlHi='> name:_iTtlHi)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 3)}
                  spids: [12878]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_runTtl='> name:_runTtl)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 4)}
                  spids: [12881]
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'nisLDAPentryTtl        '> (${ Id.VSub_Name _Map) <':'> (${ Id.VSub_Name _iTtlLo) 
                    <':'> (${ Id.VSub_Name _iTtlHi) <':'> (${ Id.VSub_Name _runTtl)
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: print_all_same_ttl_entries
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_iTTLlo='> name:_iTTLlo)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                  spids: [12939]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_iTTLhi='> name:_iTTLhi)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 2)}
                  spids: [12942]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_runTTL='> name:_runTTL)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 3)}
                  spids: [12945]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [_MAP]
              iterable: 
                (for_iter.Words
                  words: [
                    {(${ Id.VSub_Name DEF_TTL_MAPLIST)}
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name ALL_DMN_CUST_MAPS>
                        var_name: ALL_DMN_CUST_MAPS
                        bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name ALL_DMN_AUTO_CUST_MAPS>
                        var_name: ALL_DMN_AUTO_CUST_MAPS
                        bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.AndOr
                                  ops: [Id.Op_DAmp]
                                  children: [
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName _MAP))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <passwd.adjunct.byname>)} {<Id.Lit_RBracket ']'>}
                                    )
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName _MAP))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <group.adjunct.byname>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              ]
                            )
                          action: [
                            (C {<print_one_map_ttl_entry>} {($ Id.VSub_DollarName _MAP)} 
                              {($ Id.VSub_DollarName _iTTLlo)} {($ Id.VSub_DollarName _iTTLhi)} {($ Id.VSub_DollarName _runTTL)}
                            )
                          ]
                          spids: [12979 13016]
                        )
                      ]
                      else_action: [
                        (C {<find_domains>} {($ Id.VSub_DollarName _MAP)} {<DEF_MAPS>})
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName PRESENT_COUNT)} 
                                      {<-eq>} {($ Id.VSub_DollarName N2L_DMN_CNT)} {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (C {<print_one_map_ttl_entry>} {($ Id.VSub_DollarName _MAP)} 
                                  {($ Id.VSub_DollarName _iTTLlo)} {($ Id.VSub_DollarName _iTTLhi)} {($ Id.VSub_DollarName _runTTL)}
                                )
                              ]
                              spids: [13047 13060]
                            )
                          ]
                          else_action: [
                            (command.ForEach
                              iter_names: [_DMN_]
                              iterable: 
                                (for_iter.Words
                                  words: [{($ Id.VSub_DollarName PRESENT_IN_DOMAINS)}]
                                )
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike '_STR='>
                                              name: _STR
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ (${ Id.VSub_Name _MAP) <','> (${ Id.VSub_Name _DMN_))
                                            }
                                          spids: [13096]
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (C {<print_one_map_ttl_entry>} {($ Id.VSub_DollarName _STR)} 
                                      {($ Id.VSub_DollarName _iTTLlo)} {($ Id.VSub_DollarName _iTTLhi)} {($ Id.VSub_DollarName _runTTL)}
                                    )
                                  ]
                                )
                              redirects: []
                            )
                          ]
                          redirects: []
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_ittl_lo
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<get_pos_int>} {(DQ <'Lower limit for initial TTL (in seconds) (h=help):'>)} 
              {(DQ ($ Id.VSub_DollarName DEF_iTTLlo))} {(DQ <initialTTLlo_help>)}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'iTTLlo='> name:iTTLlo)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name NUM)}
                  spids: [13170]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_ittl_hi
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<get_pos_int>} {(DQ <'Higher limit for initial TTL (in seconds) (h=help):'>)} 
              {(DQ ($ Id.VSub_DollarName DEF_iTTLhi))} {(DQ <initialTTLhi_help>)}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'iTTLhi='> name:iTTLhi)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name NUM)}
                  spids: [13211]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_run_ttl
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<get_pos_int>} {(DQ <'Runtime TTL (in seconds) (h=help):'>)} 
              {(DQ ($ Id.VSub_DollarName DEF_runTTL))} {(DQ <runningTTL_help>)}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'runTTL='> name:runTTL)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name NUM)}
                  spids: [13252]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: read_one_ttl_triplet
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<get_ittl_lo>})
            (C {<get_ittl_hi>})
            (C {<get_run_ttl>})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<echo>} 
                  {
                    (DQ <'TTL = '> (${ Id.VSub_Name iTTLlo) <':'> (${ Id.VSub_Name iTTLhi) <':'> 
                      (${ Id.VSub_Name runTTL)
                    )
                  }
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: process_one_map_ttl_value
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_Map_='> name:_Map_)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 1))}
                  spids: [13348]
                )
              ]
              redirects: []
            )
            (C {<get_confirm>} 
              {
                (DQ <'Retain the default TTL values ['> ($ Id.VSub_DollarName DEF_iTTLlo) <':'> 
                  ($ Id.VSub_DollarName DEF_iTTLhi) <':'> ($ Id.VSub_DollarName DEF_runTTL) <'] for '> 
                  (word_part.EscapedLiteral
                    token: <Id.Lit_EscapedChar '\\"'>
                    ch: '"'
                  ) ($ Id.VSub_DollarName _Map_) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                  <' (y/n/h) ?'>
                )
              } {(DQ <y>)} {(DQ <default_different_ttl_help>)}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<1>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<print_one_map_ttl_entry>} {($ Id.VSub_DollarName _Map_)} 
                      {($ Id.VSub_DollarName DEF_iTTLlo)} {($ Id.VSub_DollarName DEF_iTTLhi)} {($ Id.VSub_DollarName DEF_runTTL)}
                    )
                  ]
                  spids: [13381 13394]
                )
              ]
              else_action: [
                (C {<echo>} {(DQ <'Reading TTL values for '> ($ Id.VSub_DollarName _Map_) <' :'>)})
                (C {<read_one_ttl_triplet>})
                (C {<print_one_map_ttl_entry>} {($ Id.VSub_DollarName _Map_)} 
                  {($ Id.VSub_DollarName iTTLlo)} {($ Id.VSub_DollarName iTTLhi)} {($ Id.VSub_DollarName runTTL)}
                )
              ]
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: read_all_maps_ttl_values_no_multiple_domain_issue
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ForEach
              iter_names: [_MAP]
              iterable: 
                (for_iter.Words
                  words: [
                    {(${ Id.VSub_Name DEF_TTL_MAPLIST)}
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name ALL_DMN_CUST_MAPS>
                        var_name: ALL_DMN_CUST_MAPS
                        bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name ALL_DMN_AUTO_CUST_MAPS>
                        var_name: ALL_DMN_AUTO_CUST_MAPS
                        bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.AndOr
                                  ops: [Id.Op_DAmp]
                                  children: [
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName _MAP))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <passwd.adjunct.byname>)} {<Id.Lit_RBracket ']'>}
                                    )
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName _MAP))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <group.adjunct.byname>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              ]
                            )
                          action: [(C {<process_one_map_ttl_value>} {($ Id.VSub_DollarName _MAP)})]
                          spids: [13497 13535]
                        )
                      ]
                      else_action: [
                        (C {<find_domains>} {($ Id.VSub_DollarName _MAP)} {<DEF_MAPS>})
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName PRESENT_COUNT)} 
                                      {<-eq>} {($ Id.VSub_DollarName N2L_DMN_CNT)} {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [(C {<process_one_map_ttl_value>} {($ Id.VSub_DollarName _MAP)})]
                              spids: [13560 13573]
                            )
                          ]
                          else_action: [
                            (command.ForEach
                              iter_names: [_DMN_]
                              iterable: 
                                (for_iter.Words
                                  words: [{($ Id.VSub_DollarName PRESENT_IN_DOMAINS)}]
                                )
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike '_STR='>
                                              name: _STR
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ (${ Id.VSub_Name _MAP) <','> (${ Id.VSub_Name _DMN_))
                                            }
                                          spids: [13603]
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (C {<process_one_map_ttl_value>} {($ Id.VSub_DollarName _STR)})
                                  ]
                                )
                              redirects: []
                            )
                          ]
                          redirects: []
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: read_default_maps_ttl_values_with_multi_domain_issue
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ForEach
              iter_names: [_MAP_]
              iterable: (for_iter.Words words:[{(${ Id.VSub_Name DEF_TTL_MAPLIST)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.AndOr
                                  ops: [Id.Op_DAmp]
                                  children: [
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName _MAP_))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <passwd.adjunct.byname>)} {<Id.Lit_RBracket ']'>}
                                    )
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName _MAP_))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <group.adjunct.byname>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              ]
                            )
                          action: [
                            (command.ForEach
                              iter_names: [_DMN_]
                              iterable: 
                                (for_iter.Words
                                  words: [
                                    {
                                      (braced_var_sub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name N2L_DMN_LIST>
                                        var_name: N2L_DMN_LIST
                                        bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                  ]
                                )
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike '_STR_='>
                                              name: _STR_
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ (${ Id.VSub_Name _MAP_) <','> (${ Id.VSub_Name _DMN_))
                                            }
                                          spids: [13730]
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (C {<process_one_map_ttl_value>} {(DQ ($ Id.VSub_DollarName _STR_))})
                                  ]
                                )
                              redirects: []
                            )
                          ]
                          spids: [13672 13709]
                        )
                      ]
                      else_action: [
                        (C {<find_domains>} {($ Id.VSub_DollarName _MAP_)} {<DEF_MAPS>})
                        (command.ForEach
                          iter_names: [_DMN_]
                          iterable: 
                            (for_iter.Words
                              words: [{($ Id.VSub_DollarName PRESENT_IN_DOMAINS)}]
                            )
                          body: 
                            (command.DoGroup
                              children: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike '_STR_='>
                                          name: _STR_
                                        )
                                      op: assign_op.Equal
                                      rhs: {(DQ (${ Id.VSub_Name _MAP_) <','> (${ Id.VSub_Name _DMN_))}
                                      spids: [13783]
                                    )
                                  ]
                                  redirects: []
                                )
                                (C {<process_one_map_ttl_value>} {(DQ ($ Id.VSub_DollarName _STR_))})
                              ]
                            )
                          redirects: []
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: read_custom_maps_ttl_values_with_multi_domain_issue
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ForEach
              iter_names: [_MAP_]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name ALL_DMN_CUST_MAPS>
                        var_name: ALL_DMN_CUST_MAPS
                        bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name ALL_DMN_AUTO_CUST_MAPS>
                        var_name: ALL_DMN_AUTO_CUST_MAPS
                        bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (C {<find_map_presence_details>} {($ Id.VSub_DollarName _MAP_)})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName PRESENT_COUNT)} 
                                      {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(C {<process_one_map_ttl_value>} {($ Id.VSub_DollarName _MAP_)})]
                          spids: [13867 13880]
                        )
                      ]
                      else_action: [
                        (C {<echo>} 
                          {
                            (DQ <'Map '> 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\"'>
                                ch: '"'
                              ) (${ Id.VSub_Name _MAP_) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                              <' is present in these domains : '> ($ Id.VSub_DollarName PRESENT_IN_DOMAINS)
                            )
                          }
                        )
                        (C {<get_confirm>} 
                          {
                            (DQ 
                              <
'For this map, do you wish to use the same TTL values for all the domains (y/n/h) ?'
                              >
                            )
                          } {(DQ <y>)} {(DQ <same_ttl_across_domains_help>)}
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<1>} 
                                          {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [(C {<process_one_map_ttl_value>} {($ Id.VSub_DollarName _MAP_)})]
                              spids: [13941 13954]
                            )
                          ]
                          else_action: [
                            (command.ForEach
                              iter_names: [_DMN_]
                              iterable: 
                                (for_iter.Words
                                  words: [{($ Id.VSub_DollarName PRESENT_IN_DOMAINS)}]
                                )
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike '_STR='>
                                              name: _STR
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ (${ Id.VSub_Name _MAP_) <','> (${ Id.VSub_Name _DMN_))
                                            }
                                          spids: [13989]
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (C {<process_one_map_ttl_value>} {(DQ ($ Id.VSub_DollarName _STR))})
                                  ]
                                )
                              redirects: []
                            )
                          ]
                          redirects: []
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: create_nisLDAPentryTtl
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [{<echo>} {(DQ <'# Associate TTLs with NIS entries derived from LDAP\n'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<CUST_CMT_NEEDED>} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>})
                (command.Simple
                  words: [
                    {<echo>}
                    {
                      (DQ <'# Each map has three TTL values which are specified in seconds.\n'> 
                        <'# 1. initialTTLlo (default '> ($ Id.VSub_DollarName DEF_iTTLlo) <' sec) The lower limit for the initial\n'> 
                        <'#    TTL (in seconds) for data read from disk when the ypserv starts.\n'> <'#\n'> <'# 2. initialTTLhi (default '> ($ Id.VSub_DollarName DEF_iTTLhi) 
                        <' sec) The upper limit for initial TTL.\n'> <'#\n'> <'# 3. runningTTL   (default '> ($ Id.VSub_DollarName DEF_runTTL) 
                        <' sec) The TTL (in seconds) for data \n'> <'#    retrieved from LDAP while the ypserv is running.\n'> <'#\n'> 
                        <'# If any value is not specified, then default value is used.\n'> <'# The format of TTL entry is :\n'> 
                        <'# nisLDAPentryTtl   MAP[,DOMAIN]:initialTTLlo:initialTTLhi:runningTTL\n'>
                      )
                    }
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_DGreat '>>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_DollarName MAP_FILE)}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} 
                  {
                    (braced_var_sub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name ALL_DMN_ALL_MAPS>
                      var_name: ALL_DMN_ALL_MAPS
                      prefix_op: <Id.VSub_Pound '#'>
                      bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                      right: <Id.Right_DollarBrace '}'>
                    )
                  } {<-eq>} {<0>} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (C {<echo>} 
              {
                (DQ <'The default TTL for each map is set to '> (${ Id.VSub_Name DEF_iTTLlo) <':'> 
                  (${ Id.VSub_Name DEF_iTTLhi) <':'> (${ Id.VSub_Name DEF_runTTL)
                )
              }
            )
            (C {<get_confirm>} {(DQ <'Do you wish to change the TTL values for any map (y/n/h) ?'>)} 
              {(DQ <n>)} {(DQ <default_ttl_help>)}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<print_all_same_ttl_entries>} {($ Id.VSub_DollarName DEF_iTTLlo)} 
                      {($ Id.VSub_DollarName DEF_iTTLhi)} {($ Id.VSub_DollarName DEF_runTTL)}
                    )
                  ]
                  spids: [14162 14175]
                )
              ]
              else_action: [
                (C {<echo>} {(DQ <'You would be allowed to enter the new TTL values.'>)})
                (C {<get_confirm>} 
                  {(DQ <'Do you wish to use the same TTL values for all the maps (y/n/h) ?'>)} {(DQ <y>)} {(DQ <non_default_same_ttl_help>)}
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<1>} 
                                  {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (C {<echo>} {(DQ <'Enter the new TTL values :'>)})
                        (C {<read_one_ttl_triplet>})
                        (C {<print_all_same_ttl_entries>} {($ Id.VSub_DollarName iTTLlo)} 
                          {($ Id.VSub_DollarName iTTLhi)} {($ Id.VSub_DollarName runTTL)}
                        )
                      ]
                      spids: [14224 14237]
                    )
                  ]
                  else_action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName N2L_DMN_CNT)} 
                                      {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(C {<read_all_maps_ttl_values_no_multiple_domain_issue>})]
                          spids: [14279 14292]
                        )
                      ]
                      else_action: [
                        (C {<echo>} 
                          {(DQ <'You would be allowed to enter different TTL values for each map.'>)}
                        )
                        (C {<get_confirm>} 
                          {
                            (DQ 
                              <
'For a given map, do you wish to use the same TTL values for all the domains (y/n/h) ?'
                              >
                            )
                          } {(DQ <y>)} {(DQ <non_default_different_ttl_help>)}
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<1>} 
                                          {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [(C {<read_all_maps_ttl_values_no_multiple_domain_issue>})]
                              spids: [14356 14369]
                            )
                          ]
                          else_action: [
                            (C {<read_default_maps_ttl_values_with_multi_domain_issue>})
                            (C {<read_custom_maps_ttl_values_with_multi_domain_issue>})
                          ]
                          redirects: []
                        )
                      ]
                      redirects: []
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'#\n'> 
                    <
'#------------------------------------------------------------------------------\n'
                    > <'#\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: ask_user_to_update_the_custom_map_entries_too
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {
                                (braced_var_sub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name ALL_DMN_CUST_MAPS>
                                  var_name: ALL_DMN_CUST_MAPS
                                  prefix_op: <Id.VSub_Pound '#'>
                                  bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              } {<-gt>} {<0>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (DQ <'\n'> <'# Similar entries need to be created\n'> 
                            <'# for following custom maps too :'>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.ForEach
                      iter_names: [_MAP]
                      iterable: 
                        (for_iter.Words
                          words: [
                            {
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name ALL_DMN_CUST_MAPS>
                                var_name: ALL_DMN_CUST_MAPS
                                bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          ]
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Simple
                              words: [{<echo>} {(DQ <'# '> ($ Id.VSub_DollarName _MAP))}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                        )
                      redirects: []
                    )
                  ]
                  spids: [14458 14477]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: put_default_nisLDAPnameFields
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [
                {<echo>}
                {
                  (SQ <'\n'> 
                    <'# Associate names with fields in the maps. Must be same for all domains.\n'> <'nisLDAPnameFields audit_user: \\\n'> 
                    <'\t\t\t("%s:%s:%s", name, alwaysAuditFlags, neverAuditFlags)\n'> <'\n'> <'nisLDAPnameFields auto.home: \\\n'> <'\t\t\t("%s",value)\n'> <'\n'> 
                    <'nisLDAPnameFields auto.master: \\\n'> <'\t\t\t("%s",value)\n'> <'\n'> <'nisLDAPnameFields auth_attr: \\\n'> 
                    <'\t\t\t("%s:%s:%s:%s:%s:%s", \\\n'> <'\t\t\tname, res1, res2, short_desc, long_desc, attrs )\n'> <'\n'> 
                    <'nisLDAPnameFields bootparams: \\\n'> <'\t\t\t("%s", params)\n'> <'\n'> <'nisLDAPnameFields ethers: \\\n'> <'\t\t\t("%s %s", addr, name)\n'> 
                    <'\n'> <'nisLDAPnameFields exec_attr: \\\n'> <'\t\t\t("%s:%s:%s:%s:%s:%s:%s", \\\n'> 
                    <'\t\t\tname, policy, type, res1, res2, id, attrs)\n'> <'\n'> <'nisLDAPnameFields group: \\\n'> <'\t\t\t("%s:%s:%s:%s", name, passwd, gid, users)\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_MAP='> name:_MAP)
                  op: assign_op.Equal
                  rhs: {<group.adjunct.byname>}
                  spids: [14580]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          children: [
                            (C {<present>} {($ Id.VSub_DollarName _MAP)} 
                              {($ Id.VSub_DollarName ALL_DMN_DEF_MAPLIST)}
                            )
                          ]
                          negated: T
                          stderr_indices: []
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (SQ <'#nisLDAPnameFields group.adjunct.byname: \\\n'> 
                            <'#\t\t\t("%s:%s", name, passwd)\n'>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [14583 14593]
                )
              ]
              else_action: [
                (C {<find_domains>} {($ Id.VSub_DollarName _MAP)} {<DEF_MAPS>})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName PRESENT_COUNT)} {<-eq>} 
                              {($ Id.VSub_DollarName N2L_DMN_CNT)} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (command.Simple
                          words: [
                            {<echo>}
                            {
                              (SQ <'nisLDAPnameFields group.adjunct.byname: \\\n'> 
                                <'\t\t\t("%s:%s", name, passwd)\n'>
                              )
                            }
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_DGreat '>>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {($ Id.VSub_DollarName MAP_FILE)}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                      spids: [14625 14638]
                    )
                  ]
                  else_action: [
                    (command.ForEach
                      iter_names: [_DMN]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName PRESENT_IN_DOMAINS)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ <'nisLDAPnameFields group.adjunct.byname,'> 
                                    (${ Id.VSub_Name _DMN) <': '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> <'\t\t\t('> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\"'>
                                      ch: '"'
                                    ) <'%s:%s'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <', name, passwd)\n'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                        )
                      redirects: []
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (SQ <'nisLDAPnameFields keys.host: \\\n'> 
                    <'\t\t\t("%s:%s", publicKey ,secretKey)\n'> <'\n'> <'nisLDAPnameFields keys.pass: \\\n'> <'\t\t\t("%s:%s", publicKey ,secretKey)\n'> <'\n'> 
                    <'nisLDAPnameFields keys.nobody: \\\n'> <'\t\t\t("%s:%s", publicKey ,secretKey)\n'> <'\n'> <'nisLDAPnameFields hosts: \\\n'> 
                    <'\t\t\t("%a %s %s", addr, canonicalName, aliases)\n'> <'\n'> <'nisLDAPnameFields multihosts: \\\n'> <'\t\t\t("%a %s %s", addr, canonicalName, aliases)\n'> 
                    <'\n'> <'nisLDAPnameFields ipnodes: \\\n'> <'\t\t\t("%a %s %s", addr, canonicalName, aliases)\n'> <'\n'> 
                    <'nisLDAPnameFields multiipnodes: \\\n'> <'\t\t\t("%a %s %s", addr, canonicalName, aliases)\n'> <'\n'> <'nisLDAPnameFields mail.aliases: \\\n'> 
                    <'\t\t\t("%s", addresses)\n'> <'\n'> <'nisLDAPnameFields mail.mapping: \\\n'> <'\t\t\t("%s", address)\n'> <'\n'> 
                    <'# memberTriples\tis split into sub-fields by a latter nisLDAPsplitField\n'> <'# attribute.\n'> <'nisLDAPnameFields netgroup: \\\n'> <'\t\t\t("%s", memberTriples)\n'> <'\n'> 
                    <'nisLDAPnameFields netid.host: \\\n'> <'\t\t\t("%s:%s", number, data)\n'> <'\n'> <'nisLDAPnameFields netid.pass: \\\n'> 
                    <'\t\t\t("%s:%s", number, data)\n'> <'\n'> <'nisLDAPnameFields netmasks.byaddr: \\\n'> <'\t\t\t("%a", mask)\n'> <'\n'> 
                    <'nisLDAPnameFields networks: \\\n'> <'\t\t\t("%s %s %s", name, number, aliases)\n'> <'\n'> <'nisLDAPnameFields project: \\\n'> 
                    <'\t\t\t("%s:%s:%s:%s:%s:%s", \\\n'> <'\t\t\tname, projID, comment, users, groups, attrs)\n'> <'\n'> <'nisLDAPnameFields protocols:\t\\\n'> 
                    <'\t\t\t("%s %s %s", name, number, aliases)\n'> <'\n'> <'nisLDAPnameFields rpc.bynumber:\t\\\n'> <'\t\t\t("%s %s %s", name, number, aliases)\n'> <'\n'> 
                    <'nisLDAPnameFields passwd: \\\n'> <'\t\t\t("%s:%s:%s:%s:%s:%s:%s", \\\n'> <'\t\t\tname, passwd, uid, gid, gecos, home, shell)\n'> <'\n'> 
                    <
'# It is not obvious what the fields in passwd.adjunct are for. They are not\n'
                    > <'# the same as the shadow map. The following is based on information in:-\n'> <'#\n'> 
                    <'#\tlib/libbc/inc/include/pwdadj.h.\n'> <'#\n'> <'# This file implies that these are documented in getpwaent(3) but this man page\n'> 
                    <'# does not seem to exist.\n'> <'#\t\t\t\n'> <'# It is believed that '>
                  ) <min> (SQ <','>) <max> (SQ <' and '>) <def> 
                  (SQ <' labels were reserved fields in \n'> <'# SunOS 4.x and are now unused.  '>) <always> (SQ <' and '>) <never> 
                  (SQ <' audit information is \n'> 
                    <'# now contained in audit_user(4) so is now unused.\n'> <'#\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_MAP='> name:_MAP)
                  op: assign_op.Equal
                  rhs: {<passwd.adjunct.byname>}
                  spids: [14811]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          children: [
                            (C {<present>} {($ Id.VSub_DollarName _MAP)} 
                              {($ Id.VSub_DollarName ALL_DMN_DEF_MAPLIST)}
                            )
                          ]
                          negated: T
                          stderr_indices: []
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (SQ <'#nisLDAPnameFields passwd.adjunct.byname: \\\n'> 
                            <'#\t\t\t("%s:%s:%s:%s:%s:%s:%s", \\\n'> <'#\t\t\tname, passwd, min, max, def, always, \\\n'> <'#\t\t\tnever)\n'>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [14814 14824]
                )
              ]
              else_action: [
                (C {<find_domains>} {($ Id.VSub_DollarName _MAP)} {<DEF_MAPS>})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName PRESENT_COUNT)} {<-eq>} 
                              {($ Id.VSub_DollarName N2L_DMN_CNT)} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (command.Simple
                          words: [
                            {<echo>}
                            {
                              (SQ <'nisLDAPnameFields passwd.adjunct.byname: \\\n'> 
                                <'\t\t\t("%s:%s:%s:%s:%s:%s:%s", \\\n'> <'\t\t\tname, passwd, min, max, def, always, \\\n'> <'\t\t\tnever)\n'>
                              )
                            }
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_DGreat '>>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {($ Id.VSub_DollarName MAP_FILE)}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                      spids: [14859 14872]
                    )
                  ]
                  else_action: [
                    (command.ForEach
                      iter_names: [_DMN]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName PRESENT_IN_DOMAINS)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ <'nisLDAPnameFields passwd.adjunct.byname,'> 
                                    (${ Id.VSub_Name _DMN) <': '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> <'\t\t\t('> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\"'>
                                      ch: '"'
                                    ) <'%s:%s:%s:%s:%s:%s:%s'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <', '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\\\'>
                                      ch: '\\'
                                    ) <'\n'> <'                        name, passwd, min, max, def, always, '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\\\'>
                                      ch: '\\'
                                    ) <'\n'> <'                        never)\n'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                        )
                      redirects: []
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (SQ <'\n'> <'nisLDAPnameFields printers.conf.byname: \\\n'> 
                    <'\t\t\t("%s:%s", names, values)\n'> <'\n'> <'nisLDAPnameFields prof_attr: \\\n'> <'\t\t\t("%s:%s:%s:%s:%s", \\\n'> 
                    <'\t\t\tname, res1, res2, desc, attrs)\n'> <'\n'> <'nisLDAPnameFields services: \\\n'> <'\t\t\t("%s %s/%s %s", name, port, protocol, aliases)\n'> 
                    <'\n'> <'# This map is never created but yppasswd uses the mapping to extract password\n'> 
                    <
'# ageing information from the DIT. The password itself is not required by this\n'
                    > <'# mechanism so is not included in the ageing mapping.\n'> <'nisLDAPnameFields ageing.byname: \\\n'> 
                    <'\t\t\t("%s:%s:%s:%s:%s:%s:%s:%s", \\\n'> <'\t\t\tname, lastchg, min, max, warn, inactive, \\\n'> <'\t\t\texpire, flag)\n'> <'\n'> 
                    <'nisLDAPnameFields timezone.byname: \\\n'> <'\t\t\t("%s %s", zoneName, hostName)\n'> <'\n'> <'nisLDAPnameFields user_attr: \\\n'> 
                    <'\t\t\t("%s:%s:%s:%s:%s", user, qualifier, res1, res2, attrs)\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: put_auto_and_custom_map_nisLDAPnameFields
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ForEach
              iter_names: [_MAP]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name ALL_DMN_AUTO_CUST_MAPS>
                        var_name: ALL_DMN_AUTO_CUST_MAPS
                        bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name ALL_DMN_CUST_MAPS>
                        var_name: ALL_DMN_CUST_MAPS
                        bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (DQ <'nisLDAPnameFields '> (${ Id.VSub_Name _MAP) <': '> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\\\'>
                              ch: '\\'
                            ) <'\n'> <'                      ('> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                            <'%s'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <',value)\n'>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: create_nisLDAPnameFields
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<CUST_CMT_NEEDED>} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>})
                (command.Simple
                  words: [
                    {<echo>}
                    {
                      (SQ <'\n'> 
                        <'# "nisLDAPnameFields" specifies the content of entries in a NIS map\n'> <'# and how they should be broken into named fields. It is required as,\n'> 
                        <'# unlike NIS+, NIS maps do not store information in named fields.\n'> <'#\n'> <'# Following is the syntax for nisLDAPnameFields :\n'> <'#\n'> 
                        <'# "nisLDAPnameFields" mapName ":" "(" matchspec "," fieldNames ")"\n'> <'# fieldName       = nameOrArrayName[","...]\n'> <'# nameOrArrayName = Name of field or '>
                      ) <array> (SQ <' of repeated fields.\n'> <'# matchspec       = \\" formatString \\"\n'>)
                    }
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_DGreat '>>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_DollarName MAP_FILE)}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
            )
            (C {<put_default_nisLDAPnameFields>})
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'# With the assumption that all the custom maps are simple, single\n'> 
                    <'# map (single key-value pair type), below is the nisLDAPnameFields\n'> <'# information for all the custom and non-default auto.* maps. If\n'> 
                    <'# this assumption is not valid, then refer to the NISLDAPmapping\n'> <'# man page for information on how to customize this section.\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<put_auto_and_custom_map_nisLDAPnameFields>})
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'#\n'> 
                    <
'#------------------------------------------------------------------------------\n'
                    > <'#\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: create_nisLDAPrepeatedFieldSeparators
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<CUST_CMT_NEEDED>} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>})
                (command.Simple
                  words: [
                    {<echo>}
                    {
                      (DQ <'\n'> 
                        <'# nisLDAPrepeatedFieldSeparators : It is a character which separates\n'> <'# the repeatable instnaces of splitable fields. It\'s format is :\n'> <'#\n'> 
                        <'# nisLDAPrepeatedFieldSeparators fieldName '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'sepChar[...]'> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\"'>
                          ch: '"'
                        ) <'\n'> <'#               sepChar = A separator character.\n'> 
                        <'#               Default value is space or tab.\n'>
                      )
                    }
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_DGreat '>>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_DollarName MAP_FILE)}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'#nisLDAPrepeatedFieldSeparators memberTriples: '> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\"'>
                      ch: '"'
                    ) <' '> <Id.Lit_BadBackslash '\\'> <t> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                    <'\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: create_nisLDAPsplitField
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<CUST_CMT_NEEDED>} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>})
                (command.Simple
                  words: [
                    {<echo>}
                    {
                      (SQ <'\n'> 
                        <'# nisLDAPsplitFields : It defines how a field, or list of fields,\n'> <'# named by nisLDAPnameFields is split into sub fields. The original\n'> 
                        <
'# field is compared with each line of this attribute until one matches.\n'
                        > <'# When a match is found named sub-fields are generated. In latter\n'> 
                        <'# operations sub-field names can be used in the same way as other\n'> <'# field names. The format of nisLDAPsplitFields is :\n'> <'#\n'> 
                        <'# "nisLDAPsplitFields" fieldName ":" splitSpec[","...]\n'> <'# splitSpec       = "(" matchspec "," subFieldNames ")"\n'> 
                        <'# fieldName       = Name of a field from nisLDAPnameFields\n'> <'# subFieldNames   = subFieldname[","...]\n'> <'# matchspec       = \\" formatString \\"  \n'>
                      )
                    }
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_DGreat '>>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_DollarName MAP_FILE)}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (SQ <'\n'> <'nisLDAPsplitField memberTriples: \\\n'> 
                    <'\t\t\t("(%s,%s,%s)", host, user, domain), \\\n'> <'\t\t\t("%s", group)\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: create_split_field_and_repeatedfield_seperators
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [{<echo>} {(DQ <'# Specify how to break fields up into sub fields.\n'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<create_nisLDAPrepeatedFieldSeparators>})
            (C {<create_nisLDAPsplitField>})
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'#\n'> 
                    <
'#------------------------------------------------------------------------------\n'
                    > <'#\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: list_default_nisLDAPobjectDN
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [
                {<echo>}
                {
                  (SQ <'\n'> 
                    <'# Associate maps with RDNs and object classes. Base DN comes from the \n'> <'# nisLDAPdomainContext.\n'> <'#\n'> 
                    <
'# As supplied this file gives only the most derived objectClass for each map.\n'
                    > <'# For some servers it may be necessary to add "objectClass=" statements for \n'> 
                    <'# all the superclasses. This should be done here.\n'> <'\n'> <'nisLDAPobjectDN\tauto.home: \\\n'> <'\t\t\tautomountmapname=auto_home,?one? \\\n'> 
                    <'\t\t\tobjectClass=automount:\n'> <'\n'> <'nisLDAPobjectDN\tauto.master: \\\n'> <'\t\t\tautomountmapname=auto_master,?one? \\\n'> 
                    <'\t\t\tobjectClass=automount:\n'> <'\n'> <'nisLDAPobjectDN\tauth_attr: \\\n'> <'\t\t\tou=SolarisAuthAttr,?one? \\\n'> 
                    <'\t\t\tobjectClass=SolarisAuthAttr:\n'> <'\n'> <'nisLDAPobjectDN\tbootparams: \\\n'> <'\t\t\tou=ethers,?one? \\\n'> 
                    <'\t\t\tobjectClass=bootableDevice, \\\n'> <'\t\t\tbootParameter=*:\\\n'> <'\t\t\tou=ethers,?one? \\\n'> <'\t\t\tobjectClass=device, \\\n'> 
                    <'\t\t\tobjectClass=bootableDevice \n'> <'\n'> <'\n'> <'nisLDAPobjectDN exec_attr:\\\n'> 
                    <'\t\t\tou=SolarisProfAttr,?one?objectClass=SolarisExecAttr,\\\n'> <'\t\t\t\tSolarisKernelSecurityPolicy=*:\\\n'> 
                    <'\t\t\tou=SolarisProfAttr,?one?objectClass=SolarisExecAttr,\\\n'> <'\t\t\t\tobjectClass=SolarisProfAttr,\\\n'> <'\t\t\t\tobjectClass=top\n'> <'\n'> 
                    <'nisLDAPobjectDN\tethers: \\\n'> <'\t\t\tou=ethers,?one? \\\n'> <'\t\t\tobjectClass=ieee802Device, \\\n'> <'\t\t\tmacAddress=*:\\\n'> 
                    <'\t\t\tou=ethers,?one? \\\n'> <'\t\t\tobjectClass=device, \\\n'> <'\t\t\tobjectClass=ieee802Device\n'> <'\n'> 
                    <'nisLDAPobjectDN\tgroup: \\\n'> <'\t\t\tou=group,?one? \\\n'> <'\t\t\tobjectClass=posixGroup:\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_MAP='> name:_MAP)
                  op: assign_op.Equal
                  rhs: {<group.adjunct.byname>}
                  spids: [15413]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          children: [
                            (C {<present>} {($ Id.VSub_DollarName _MAP)} 
                              {($ Id.VSub_DollarName ALL_DMN_DEF_MAPLIST)}
                            )
                          ]
                          negated: T
                          stderr_indices: []
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (SQ <'#nisLDAPobjectDN group.adjunct.byname: \\\n'> 
                            <'#\t\t\tou=group,?one? \\\n'> <'#\t\t\tobjectClass=posixGroup:\n'>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [15416 15426]
                )
              ]
              else_action: [
                (C {<find_domains>} {($ Id.VSub_DollarName _MAP)} {<DEF_MAPS>})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName PRESENT_COUNT)} {<-eq>} 
                              {($ Id.VSub_DollarName N2L_DMN_CNT)} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (command.Simple
                          words: [
                            {<echo>}
                            {
                              (SQ <'nisLDAPobjectDN group.adjunct.byname: \\\n'> 
                                <'\t\t\tou=group,?one? \\\n'> <'\t\t\tobjectClass=posixGroup:\n'>
                              )
                            }
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_DGreat '>>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {($ Id.VSub_DollarName MAP_FILE)}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                      spids: [15459 15472]
                    )
                  ]
                  else_action: [
                    (command.ForEach
                      iter_names: [_DMN]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName PRESENT_IN_DOMAINS)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ <'nisLDAPobjectDN group.adjunct.byname,'> (${ Id.VSub_Name _DMN) 
                                    <': '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> <'\t\t\tou=group,?one? '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\\\'>
                                      ch: '\\'
                                    ) <'\n'> <'\t\t\tobjectClass=posixGroup:\n'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                        )
                      redirects: []
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (SQ <'nisLDAPobjectDN\thosts: \\\n'> <'\t\t\tou=hosts,?one? \\\n'> 
                    <'\t\t\tobjectClass=ipHost:\\\n'> <'\t\t\tou=hosts,?one? \\\n'> <'\t\t\tobjectClass=device, \\\n'> <'\t\t\tobjectClass=ipHost\n'> <'\n'> 
                    <'nisLDAPobjectDN multihosts: \\\n'> <'\t\t\tou=hosts,?one? \\\n'> <'\t\t\tobjectClass=ipHost, \\\n'> <'\t\t\tipHostNumber=*.*\n'> <'\n'> 
                    <'nisLDAPobjectDN\tipnodes: \\\n'> <'\t\t\tou=hosts,?one? \\\n'> <'\t\t\tobjectClass=ipHost:\\\n'> <'\t\t\tou=hosts,?one? \\\n'> 
                    <'\t\t\tobjectClass=device, \\\n'> <'\t\t\tobjectClass=ipHost\n'> <'\n'> <'nisLDAPobjectDN multiipnodes: \\\n'> 
                    <'\t\t\tou=hosts,?one? \\\n'> <'\t\t\tobjectClass=ipHost, \\\n'> <'\t\t\tipHostNumber=*\\:*\n'> <'\n'> 
                    <'nisLDAPobjectDN\tmail.aliases: \\\n'> <'\t\t\tou=aliases,?one? \\\n'> <'\t\t\tobjectClass=mailGroup:\n'> <'\n'> 
                    <'nisLDAPobjectDN\tmail.mapping: \\\n'> <'\t\t\tou=aliases,?one? \\\n'> <'\t\t\tobjectClass=mailGroup\n'> <'\n'> 
                    <'nisLDAPobjectDN\tnetgroup: \\\n'> <'\t\t\tou=netgroup,?one? \\\n'> <'\t\t\tobjectClass=nisNetgroup:\n'> <'\n'> 
                    <'nisLDAPobjectDN\tnetworks: \\\n'> <'\t\t\tou=networks,?one? \\\n'> <'\t\t\tobjectClass=ipNetwork, \\\n'> <'\t\t\tcn=*:\n'> <'\n'> 
                    <'# Must come after networks (or equivalent) that creates ipNetworks\n'> <'nisLDAPobjectDN netmasks.byaddr: \\\n'> <'\t\t\tou=networks,?one? \\\n'> 
                    <'\t\t\tobjectClass=ipNetwork, \\\n'> <'\t\t\tipNetMaskNumber=*:\n'> <'\n'> <'nisLDAPobjectDN\tpasswd: \\\n'> <'\t\t\tou=people,?one? \\\n'> 
                    <'\t\t\tobjectClass=posixAccount:\\\n'> <'\t\t\tou=people,?one? \\\n'> <'\t\t\tobjectClass=account, \\\n'> 
                    <'\t\t\tobjectClass=shadowAccount, \\\n'> <'\t\t\tobjectClass=posixAccount\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_MAP='> name:_MAP)
                  op: assign_op.Equal
                  rhs: {<passwd.adjunct.byname>}
                  spids: [15610]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          children: [
                            (C {<present>} {($ Id.VSub_DollarName _MAP)} 
                              {($ Id.VSub_DollarName ALL_DMN_DEF_MAPLIST)}
                            )
                          ]
                          negated: T
                          stderr_indices: []
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (SQ <'#nisLDAPobjectDN passwd.adjunct.byname: \\\n'> 
                            <'#\t\t\tou=people,?one? \\\n'> <'#\t\t\tobjectClass=posixAccount:\\\n'> <'#\t\t\tou=people,?one? \\\n'> 
                            <'#\t\t\tobjectClass=account, \\\n'> <'#\t\t\tobjectClass=shadowAccount, \\\n'> <'#\t\t\tobjectClass=posixAccount\n'>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [15613 15623]
                )
              ]
              else_action: [
                (C {<find_domains>} {($ Id.VSub_DollarName _MAP)} {<DEF_MAPS>})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName PRESENT_COUNT)} {<-eq>} 
                              {($ Id.VSub_DollarName N2L_DMN_CNT)} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (command.Simple
                          words: [
                            {<echo>}
                            {
                              (SQ <'nisLDAPobjectDN passwd.adjunct.byname: \\\n'> 
                                <'\t\t\tou=people,?one? \\\n'> <'\t\t\tobjectClass=posixAccount:\\\n'> <'\t\t\tou=people,?one? \\\n'> 
                                <'\t\t\tobjectClass=account, \\\n'> <'\t\t\tobjectClass=shadowAccount, \\\n'> <'\t\t\tobjectClass=posixAccount\n'>
                              )
                            }
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_DGreat '>>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {($ Id.VSub_DollarName MAP_FILE)}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                      spids: [15660 15673]
                    )
                  ]
                  else_action: [
                    (command.ForEach
                      iter_names: [_DMN]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName PRESENT_IN_DOMAINS)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ <'nisLDAPobjectDN passwd.adjunct.byname,'> 
                                    (${ Id.VSub_Name _DMN) <': '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> 
                                    <'\t\t\tou=people,?one? '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> 
                                    <'\t\t\tobjectClass=posixAccount:'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> <'\t\t\tou=people,?one? '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\\\'>
                                      ch: '\\'
                                    ) <'\n'> <'\t\t\tobjectClass=account, '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\\\'>
                                      ch: '\\'
                                    ) <'\n'> <'\t\t\tobjectClass=shadowAccount, '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\\\'>
                                      ch: '\\'
                                    ) <'\n'> <'\t\t\tobjectClass=posixAccount\n'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                        )
                      redirects: []
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (SQ <'# Must follow passwd\n'> <'nisLDAPobjectDN netid.pass: \\\n'> 
                    <'\t\t\tou=people,?one? \\\n'> <'\t\t\tobjectClass=posixAccount\n'> <'\n'> <'# Must follow hosts\n'> 
                    <'nisLDAPobjectDN netid.host: \\\n'> <'\t\t\tou=hosts,?one? \\\n'> <'\t\t\tobjectClass=ipHost\n'> <'\n'> 
                    <'nisLDAPobjectDN\tprinters.conf.byname: \\\n'> <'\t\t\tou=printers,?one? \\\n'> <'\t\t\t\tobjectClass=printerService:\\\n'> 
                    <'\t\t\tou=printers,?one? \\\n'> <'\t\t\t\tobjectClass=sunPrinter, \\\n'> <'\t\t\t\tobjectClass=printerService, \\\n'> 
                    <'\t\t\t\tobjectClass=printerLPR, \\\n'> <'\t\t\t\tobjectClass=printerAbstract\n'> <'\n'> <'nisLDAPobjectDN prof_attr:\\\n'> 
                    <'\t\t\tou=SolarisProfAttr,?one?objectClass=SolarisProfAttr,\\\n'> <'\t\t\t\tSolarisAttrLongDesc=*:\\\n'> 
                    <'\t\t\tou=SolarisProfAttr,?one?objectClass=SolarisProfAttr,\\\n'> <'\t\t\t\tobjectClass=SolarisExecAttr,\\\n'> <'\t\t\t\tobjectClass=top\n'> 
                    <'nisLDAPobjectDN project: \\\n'> <'\t\t\tou=project,?one? \\\n'> <'\t\t\tobjectClass=SolarisProject:\n'> <'\n'> 
                    <'nisLDAPobjectDN\tprotocols: \\\n'> <'\t\t\tou=protocols,?one? \\\n'> <'\t\t\tobjectClass=ipProtocol:\n'> <'\n'> 
                    <'nisLDAPobjectDN rpc.bynumber: \\\n'> <'\t\t\tou=rpc,?one? \\\n'> <'\t\t\tobjectClass=oncRpc:\n'> <'\n'> 
                    <'nisLDAPobjectDN\tservices.byname: \\\n'> <'\t\t\tou=services,?one? \\\n'> <'\t\t\tobjectClass=ipService:\n'> <'\n'> 
                    <'# Because services.byservicename contains keys of form both '>
                  ) <name> (SQ <'\n'> <'# and '>) <'name/protocol'> 
                  (SQ <' we generate the DIT just from services.byname.\n'> 
                    <'# Hence, write-disabled for services.byservicename\n'> <'nisLDAPobjectDN\tservices.byservicename: \\\n'> <'\t\t\tou=services,?one? \\\n'> 
                    <'\t\t\tobjectClass=ipService\n'> <'\n'> <'# This map is never created but yppasswd uses the mapping to extract password\n'> 
                    <'# aging information from the DIT.\t\t\t\n'> <'nisLDAPobjectDN\tageing.byname: \\\n'> <'\t\t\tou=people,?one? \\\n'> 
                    <'\t\t\tobjectClass=shadowAccount:\n'> <'\n'> <'# Using nisplusTimeZoneData objectClass for compatibility with nis+2ldap\n'> 
                    <'nisLDAPobjectDN\ttimezone.byname: \\\n'> <'\t\t\tou=Timezone,?one? \\\n'> <'\t\t\tobjectClass=nisplusTimeZoneData:\n'> <'\n'> 
                    <'nisLDAPobjectDN\tuser_attr: \\\n'> <'\t\t\tou=people,?one? \\\n'> <'\t\t\tobjectClass=SolarisUserAttr:\n'> <'\n'> 
                    <'# Must come after passwd (or equivalent) that creates posixAccounts\n'> <'nisLDAPobjectDN\taudit_user: \\\n'> <'\t\t\tou=people,?one? \\\n'> 
                    <'\t\t\tobjectClass=SolarisAuditUser:\n'> <'\n'> <'# Must come after hosts + passwd.\n'> <'nisLDAPobjectDN keys.host: \\\n'> 
                    <'\t\t\tou=hosts,?one? \\\n'> <'\t\t\tobjectClass=NisKeyObject:\n'> <'\n'> <'nisLDAPobjectDN keys.pass: \\\n'> 
                    <'\t\t\tou=people,?one? \\\n'> <'\t\t\tobjectClass=NisKeyObject:\n'> <'\n'> <'nisLDAPobjectDN keys.nobody: \\\n'> 
                    <'\t\t\tou=people,?one? \\\n'> <'\t\t\tobjectClass=NisKeyObject:\\\n'> <'\t\t\tou=people,?one? \\\n'> 
                    <'\t\t\tobjectClass=account, \\\n'> <'\t\t\tobjectClass=NisKeyObject\n'> <'\t\t\t\n'> <'nisLDAPobjectDN ypservers: \\\n'> 
                    <'\t\t\tou=ypservers,?one? \\\n'> <'\t\t\tobjectClass=device:\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: list_auto_custom_nisLDAPobjectDN
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {
                                (braced_var_sub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name ALL_DMN_AUTO_CUST_MAPS>
                                  var_name: ALL_DMN_AUTO_CUST_MAPS
                                  prefix_op: <Id.VSub_Pound '#'>
                                  bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              } {<-gt>} {<0>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (DQ <'# Non-default custom auto maps (auto.*)'> <Id.Lit_BadBackslash '\\'> 
                            <n>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.ForEach
                      iter_names: [_MAP]
                      iterable: 
                        (for_iter.Words
                          words: [
                            {
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name ALL_DMN_AUTO_CUST_MAPS>
                                var_name: ALL_DMN_AUTO_CUST_MAPS
                                bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          ]
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_MAP_UNDERSCORE='>
                                      name: _MAP_UNDERSCORE
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {<echo>} {($ Id.VSub_DollarName _MAP)})
                                              (C {<sed>} 
                                                {
                                                  (DQ <'s/auto'> <Id.Lit_BadBackslash '\\'> 
                                                    <'./auto_/'>
                                                  )
                                                }
                                              )
                                            ]
                                            negated: F
                                            stderr_indices: []
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                  spids: [15941]
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ <'nisLDAPobjectDN '> (${ Id.VSub_Name _MAP) <': '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\\\'>
                                      ch: '\\'
                                    ) <'\n'> <'                      automountmapname='> (${ Id.VSub_Name _MAP_UNDERSCORE) <',?one? '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\\\'>
                                      ch: '\\'
                                    ) <'\n'> <'                      objectClass=automount:\n'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                        )
                      redirects: []
                    )
                  ]
                  spids: [15878 15897]
                )
              ]
              else_action: []
              redirects: []
            )
            (C {<ask_user_to_update_the_custom_map_entries_too>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: create_nisLDAPobjectDN
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<CUST_CMT_NEEDED>} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>})
                (command.Simple
                  words: [
                    {<echo>}
                    {
                      (SQ <'\n'> 
                        <'# nisLDAPobjectDN : It specifies the connection between group of NIS\n'> <'# maps and the LDAP directory. This attribute also defines the '>
                      ) <order> 
                      (SQ <'\n'> 
                        <'# of the NIS maps. When NIS maps are bulk copied to or from the DIT\n'> <'# they are processed in the same order as related nisLDAPobjectDN\n'> 
                        <'# attributes appear in /var/yp/NISLDAPmapping.\n'> <'# The format of "nisLDAPobjectDN" is :\n'> <'# \n'> 
                        <'# mapName[" "...] ":" objectDN *( ";" objectDN )\n'> <'# \n'> <'# where:\n'> <'# \n'> <'# objectDN        = readObjectSpec [":"[writeObjectSpec]]\n'> 
                        <'# readObjectSpec  = [baseAndScope [filterAttrValList]]\n'> <'# writeObjectSpec = [baseAndScope [attrValList]]\n'> 
                        <'# baseAndScope    = [baseDN] ["?" [scope]]\n'> <'# filterAttrValList = ["?" [filter | attrValList]]]\n'> 
                        <'# scope           = "base" | "one" | "sub"\n'> <'# attrValList     = attribute "=" value\n'> <'#                       *("," attribute "=" value)\n'>
                      )
                    }
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_DGreat '>>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_DollarName MAP_FILE)}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
            )
            (C {<list_default_nisLDAPobjectDN>})
            (C {<list_auto_custom_nisLDAPobjectDN>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: list_default_nisLDAPattributeFromField
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [
                {<echo>}
                {
                  (SQ <'\n'> <'# Describe how named fields are mapped to DIT entries.\n'> <'\n'> 
                    <'# audit_user\n'> <'nisLDAPattributeFromField audit_user: \\\n'> <'\t\t\tdn=("uid=%s,", rf_key ), \\\n'> 
                    <'\t\t\tSolarisAuditAlways=alwaysAuditFlags, \\\n'> <'\t\t\tSolarisAuditNever=neverAuditFlags\n'> <'\n'> <'# auto.home\n'> 
                    <'nisLDAPattributeFromField auto.home: \\\n'> <'\t\t\tdn=("automountKey=%s,", rf_key ), \\\n'> <'\t\t\tautomountKey=rf_key, \\\n'> 
                    <'\t\t\tautomountInformation=value\n'> <'\n'> <'# auto.master\n'> <'nisLDAPattributeFromField auto.master: \\\n'> 
                    <'\t\t\tdn=("automountKey=%s,", rf_key ), \\\n'> <'\t\t\tautomountKey=rf_key, \\\n'> <'\t\t\tautomountInformation=value\n'> <'\n'> <'# auth_attr\n'> 
                    <'nisLDAPattributeFromField auth_attr: \\\n'> <'\t\t\tdn=("cn=%s,", rf_key ), \\\n'> <'\t\t\tcn=name, \\\n'> 
                    <'\t\t\tSolarisAttrReserved1=res1, \\\n'> <'\t\t\tSolarisAttrReserved2=res2, \\\n'> <'\t\t\tSolarisAttrShortDesc=short_desc, \\\n'> 
                    <'\t\t\tSolarisAttrLongDesc=long_desc, \\\n'> <'\t\t\tSolarisAttrKeyValue=attrs\n'> <'\n'> 
                    <
'# exec_attr. Because of the messy NIS keys special handling is required here\n'
                    > <'nisLDAPattributeFromField exec_attr: \\\n'> <'\t\t\tdn=("cn=%s+SolarisKernelSecurityPolicy=%s\\\n'> 
                    <'\t\t\t\t+SolarisProfileType=%s+SolarisProfileID=%s,", \\\n'> <'\t\t\t\tname, policy,type,id), \\\n'> <'\t\t\t("%s:*", cn)=rf_key, \\\n'> 
                    <'\t\t\t("*:%s:*", SolarisKernelSecurityPolicy)=rf_key, \\\n'> <'\t\t\t("*:*:%s", SolarisProfileId)=rf_key, \\\n'> <'\t\t\tsolarisProfileType=type, \\\n'> 
                    <'\t\t\tsolarisAttrReserved1=res1, \\\n'> <'\t\t\tSolarisAttrReserved2=res2, \\\n'> <'\t\t\tsolarisAttrKeyValue=attrs\n'> <'\n'> <'# ethers\n'> 
                    <'nisLDAPattributeFromField ethers.byname: \\\n'> <'\t\t\tdn=("cn=%s,", rf_key ), \\\n'> <'\t\t\tmacAddress=addr\n'> 
                    <'nisLDAPattributeFromField ethers.byaddr: \\\n'> <'\t\t\tdn=("cn=%s,", name ), \\\n'> <'\t\t\tmacAddress=rf_key\n'> 
                    <'nisLDAPattributeFromField ethers: \\\n'> <'\t\t\tcn=name, \\\n'> <'\t\t\tdescription=rf_comment\n'> <'\n'> 
                    <'# bootparams. Must be done after ethers\n'> <'nisLDAPattributeFromField bootparams: \\\n'> <'\t\t\tdn=("cn=%s,", rf_key ), \\\n'> 
                    <'\t\t\tcn=rf_key, \\\n'> <'\t\t\t(bootParameter)=(params, " ")\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_MAP='> name:_MAP)
                  op: assign_op.Equal
                  rhs: {<group.adjunct.byname>}
                  spids: [16181]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          children: [
                            (C {<present>} {($ Id.VSub_DollarName _MAP)} 
                              {($ Id.VSub_DollarName ALL_DMN_DEF_MAPLIST)}
                            )
                          ]
                          negated: T
                          stderr_indices: []
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (SQ <'# group\n'> <'nisLDAPattributeFromField group.byname: \\\n'> 
                            <'\t\t\tdn=("cn=%s,", rf_key ), \\\n'> <'                        gidNumber=gid\n'> <'nisLDAPattributeFromField group.bygid: \\\n'> 
                            <'\t\t        dn=("cn=%s,", name ), \\\n'> <'                        gidNumber=rf_key\n'> <'nisLDAPattributeFromField group: \\\n'> 
                            <'                        cn=name, \\\n'> <'                        userPassword=("{crypt}%s",passwd), \\\n'> 
                            <'                        (memberUid)=(users, ",")\n'> <'\n'> <'#\n'> <'# If you are using group.adjunct, comment the group section above\n'> 
                            <'# and uncomment the following group and group.adjunct sections\n'> <'#\n'> <'# group\n'> <'#nisLDAPattributeFromField group.byname: \\\n'> 
                            <'#\t\t\tdn=("cn=%s,", rf_key ), \\\n'> <'#\t\t\tgidNumber=gid\n'> <'#nisLDAPattributeFromField group.bygid: \\\n'> 
                            <'#\t\t\tdn=("cn=%s,", name ), \\\n'> <'#\t\t\tgidNumber=rf_key\n'> <'#nisLDAPattributeFromField group: \\\n'> <'#\t\t\tcn=name, \\\n'> 
                            <'#\t\t\t(memberUid)=(users, ",")\n'> <'\n'> <'# group.adjunct\n'> <'#nisLDAPattributeFromField group.adjunct.byname: \\\n'> 
                            <'#\t\t\tdn=("cn=%s,", rf_key ), \\\n'> <'#\t\t\tcn=name, \\\n'> <'#\t\t\tuserPassword=("{crypt}%s",passwd)\n'>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [16185 16195]
                )
              ]
              else_action: [
                (C {<find_domains>} {($ Id.VSub_DollarName _MAP)} {<DEF_MAPS>})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName PRESENT_COUNT)} {<-eq>} 
                              {($ Id.VSub_DollarName N2L_DMN_CNT)} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (command.Simple
                          words: [
                            {<echo>}
                            {
                              (SQ <'# group\n'> <'#nisLDAPattributeFromField group.byname: \\\n'> 
                                <'#\t\t\tdn=("cn=%s,", rf_key ), \\\n'> <'#\t\t\tgidNumber=gid\n'> <'#nisLDAPattributeFromField group.bygid: \\\n'> 
                                <'#\t\t\tdn=("cn=%s,", name ), \\\n'> <'#\t\t\tgidNumber=rf_key\n'> <'#nisLDAPattributeFromField group: \\\n'> <'#\t\t\tcn=name, \\\n'> 
                                <'#\t\t\tuserPassword=("{crypt}%s",passwd), \\\n'> <'#\t\t\t(memberUid)=(users, ",")\n'> <'\n'> 
                                <
'# If you are not using group.adjunct, uncomment the group section above\n'
                                > <'# and comment the following group and group.adjunct sections\n'> <'#\n'> <'# group\n'> 
                                <'nisLDAPattributeFromField group.byname: \\\n'> <'\t\t\tdn=("cn=%s,", rf_key ), \\\n'> <'\t\t\tgidNumber=gid\n'> 
                                <'nisLDAPattributeFromField group.bygid: \\\n'> <'\t\t\tdn=("cn=%s,", name ), \\\n'> <'\t\t\tgidNumber=rf_key\n'> 
                                <'nisLDAPattributeFromField group: \\\n'> <'\t\t\tcn=name, \\\n'> <'\t\t\t(memberUid)=(users, ",")\n'> <'\n'> <'# group.adjunct\n'> 
                                <'nisLDAPattributeFromField group.adjunct.byname: \\\n'> <'\t\t\tdn=("cn=%s,", rf_key ), \\\n'> <'\t\t\tcn=name, \\\n'> 
                                <'\t\t\tuserPassword=("{crypt}%s",passwd)\n'>
                              )
                            }
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_DGreat '>>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {($ Id.VSub_DollarName MAP_FILE)}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                      spids: [16262 16275]
                    )
                  ]
                  else_action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'# group'>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.ForEach
                      iter_names: [_DMN]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName PRESENT_IN_DOMAINS)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ <'# domain-specific group\n'> 
                                    <'nisLDAPattributeFromField group.byname,'> (${ Id.VSub_Name _DMN) <': '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') 
                                    <'\n'> <'\t\t\tdn=('> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'cn=%s,'> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\"'>
                                      ch: '"'
                                    ) <', rf_key ), '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> 
                                    <'\t\t\tgidNumber=gid\n'> <'nisLDAPattributeFromField group.bygid,'> (${ Id.VSub_Name _DMN) <': '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\\\'>
                                      ch: '\\'
                                    ) <'\n'> <'\t\t\tdn=('> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'cn=%s,'> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\"'>
                                      ch: '"'
                                    ) <', name ), '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> 
                                    <'\t\t\tgidNumber=rf_key\n'> <'nisLDAPattributeFromField group,'> (${ Id.VSub_Name _DMN) <': '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\\\'>
                                      ch: '\\'
                                    ) <'\n'> <'\t\t\tcn=name, '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> 
                                    <'\t\t\t(memberUid)=(users, '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <','> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\"'>
                                      ch: '"'
                                    ) <')\n'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                        )
                      redirects: []
                    )
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (SQ <'\n'> <'nisLDAPattributeFromField group.byname: \\\n'> 
                            <'\t\t\tdn=("cn=%s,", rf_key ), \\\n'> <'\t\t\tgidNumber=gid\n'> <'nisLDAPattributeFromField group.bygid: \\\n'> 
                            <'\t\t\tdn=("cn=%s,", name ), \\\n'> <'\t\t\tgidNumber=rf_key\n'> <'nisLDAPattributeFromField group: \\\n'> <'\t\t\tcn=name, \\\n'> 
                            <'\t\t\tuserPassword=("{crypt}%s",passwd), \\\n'> <'\t\t\t(memberUid)=(users, ",")\n'>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<echo>} {(DQ <'# group.adjunct'>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.ForEach
                      iter_names: [_DMN]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName PRESENT_IN_DOMAINS)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ <'nisLDAPattributeFromField group.adjunct.byname,'> 
                                    (${ Id.VSub_Name _DMN) <': '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> <'\t\t\tdn=('> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\"'>
                                      ch: '"'
                                    ) <'cn=%s,'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <', rf_key ), '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\\\'>
                                      ch: '\\'
                                    ) <'\n'> <'\t\t\tcn=name, '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> 
                                    <'\t\t\tuserPassword=('> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'{crypt}%s'> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\"'>
                                      ch: '"'
                                    ) <',passwd)\n'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                        )
                      redirects: []
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (SQ <'\n'> <'# hosts\n'> 
                    <
'# Cannot forward map hosts.byname key as the YP_MULTI entries will not work.\n'
                    > <'nisLDAPattributeFromField hosts.byname: \\\n'> <'                        cn=rf_searchkey\n'> 
                    <'nisLDAPattributeFromField hosts.byaddr: \\\n'> <'                        ipHostNumber=rf_searchipkey\n'> <'nisLDAPattributeFromField hosts: \\\n'> 
                    <'                        ipHostNumber=addr, \\\n'> <'\t\t\tdn=("cn=%s+ipHostNumber=%s,", canonicalName, addr), \\\n'> 
                    <'                        cn=canonicalName, \\\n'> <'                        (cn)=(aliases, " "), \\\n'> 
                    <'                        description=rf_comment\n'> <'\n'> <'nisLDAPattributeFromField multihosts: \\\n'> <'\t\t\t("YP_MULTI_%s", cn)=rf_searchkey\n'> 
                    <'\n'> <'# ipnodes\n'> <'# Cannot forward map ipnodes.byname key as the YP_MULTI entries will not work.\n'> 
                    <'nisLDAPattributeFromField ipnodes.byname: \\\n'> <'                        cn=rf_searchkey\n'> <'nisLDAPattributeFromField ipnodes.byaddr: \\\n'> 
                    <'                        ipHostNumber=rf_searchipkey\n'> <'nisLDAPattributeFromField ipnodes: \\\n'> <'                        ipHostNumber=addr, \\\n'> 
                    <'\t\t\tdn=("cn=%s+ipHostNumber=%s,", canonicalName, addr), \\\n'> <'\t\t\tcn=canonicalName, \\\n'> <'                        (cn)=(aliases, " "), \\\n'> 
                    <'                        description=rf_comment\n'> <'\n'> <'nisLDAPattributeFromField multiipnodes: \\\n'> <'\t\t\t("YP_MULTI_%s", cn)=rf_searchkey\n'> 
                    <'\n'> <'#mail.aliases\n'> <'nisLDAPattributeFromField mail.aliases: \\\n'> 
                    <'\t\t\tdn=("mail=%s,", rf_key), \\\n'> <'\t\t\tmail=rf_key, \\\n'> <'\t\t\t(mgrprfc822mailmember)=(addresses, ",")\n'> <'\n'> 
                    <'#mail.mapping\n'> <'#Commented out because all NIS->LDAP mappings are done by mail.aliases\n'> 
                    <'#nisLDAPattributeFromField mail.mapping: \\\n'> <'#\t\t\tdn=("mail=%s,", address), \\\n'> <'#\t\t\tmail=address, \\\n'> 
                    <'#\t\t\tmgrprfc822mailmember=rf_key\n'> <'nisLDAPattributeFromField mail.mapping: \\\n'> <'\t\t\tmgrprfc822mailmember=rf_searchkey\n'> <'\n'> 
                    <'# netgroup.\n'> <'#\n'> <'# Only need to create DIT entries for netgroup. This contains a superset of\n'> 
                    <'# the information in netgroup.byhost and netgroup.byuser\n'> <'nisLDAPattributeFromField netgroup: \\\n'> <'\t\t\tdn=("cn=%s,", rf_key ), \\\n'> 
                    <'\t\t\t(memberNisNetgroup)=group, \\\n'> <'\t\t\t(nisNetgroupTriple)= \\\n'> <'\t\t\t\t\t("(%s,%s,%s)", host, user, domain), \\\n'> 
                    <'\t\t\tcn=rf_key, \\\n'> <'\t\t\tdescription=rf_comment\n'> <'\n'> <'# netid.pass\n'> <'#\n'> 
                    <'# Commented out because, unless remote domains (and thus /etc/netid) is\n'> <'# supported, all NIS->LDAP mappings are set up from passwd.\n'> 
                    <'#nisLDAPattributeFromField netid.pass: \\\n'> <'#\t\t\t("unix.%s@*", uidNumber)=rf_key, \\\n'> <'#\t\t\t(gidNumber)=("%s", (data), " "), \\\n'> 
                    <'#\t\t\tdescription=rf_comment\n'> <'nisLDAPattributeFromField netid.pass: \\\n'> <'\t\t\t("unix.%s@*", uidNumber)=rf_searchkey\n'> <'\n'> 
                    <'# netid.host\n'> <'#\n'> <'# Commented out because, unless remote domains (and thus /etc/netid) is\n'> 
                    <'# supported, all NIS->LDAP mappings are set up from hosts.\n'> <'#nisLDAPattributeFromField netid.host: \\\n'> <'#\t\t\tdn=("cn=%s+ipHostNumber=%s,", data, \\\n'> 
                    <'#\t\t\t        ldap:ipHostNumber:?one?("cn=%s", data)), \\\n'> <'#\t\t\tipHostNumber=ldap:ipHostNumber:?one?("cn=%s", data), \\\n'> 
                    <'#\t\t\t("unix.%s@*", cn)=rf_key, \\\n'> <'#\t\t\tdescription=rf_comment\n'> <'nisLDAPattributeFromField netid.host: \\\n'> 
                    <'\t\t\t("unix.%s@*", cn)=rf_searchkey\n'> <'\n'> <'# netmasks.byaddr\n'> <'nisLDAPattributeFromField netmasks.byaddr: \\\n'> 
                    <'\t\t\tdn=("ipNetworkNumber=%s,", rf_ipkey ), \\\n'> <'\t\t\tipNetworkNumber=rf_ipkey, \\\n'> <'\t\t\tipNetmaskNumber=mask, \\\n'> 
                    <'\t\t\tdescription=rf_comment\n'> <'\n'> <'# networks.\n'> <'nisLDAPattributeFromField networks.byname: \\\n'> 
                    <'\t\t\tdn=("ipNetworkNumber=%s,", number ), \\\n'> <'\t\t\tcn=name, \\\n'> <'\t\t\tcn=rf_key\n'> <'nisLDAPattributeFromField networks.byaddr: \\\n'> 
                    <'\t\t\tdn=("ipNetworkNumber=%s,", rf_key ), \\\n'> <'\t\t\tcn=name\n'> <'nisLDAPattributeFromField networks: \\\n'> <'\t\t\t(cn)=(aliases, " "), \\\n'> 
                    <'\t\t\tipNetworkNumber=number, \\\n'> <'\t\t\tdescription=rf_comment\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_MAP='> name:_MAP)
                  op: assign_op.Equal
                  rhs: {<passwd.adjunct.byname>}
                  spids: [16659]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          children: [
                            (C {<present>} {($ Id.VSub_DollarName _MAP)} 
                              {($ Id.VSub_DollarName ALL_DMN_DEF_MAPLIST)}
                            )
                          ]
                          negated: T
                          stderr_indices: []
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (SQ <'# passwd\n'> <'nisLDAPattributeFromField passwd.byname: \\\n'> 
                            <'\t\t\tdn=("uid=%s,", rf_key ), \\\n'> <'\t\t\tuid=rf_key, \\\n'> <'\t\t\tuidNumber=uid\n'> <'nisLDAPattributeFromField passwd.byuid: \\\n'> 
                            <'\t\t\tdn=("uid=%s,", name ), \\\n'> <'\t\t\tuidNumber=rf_key, \\\n'> <'\t\t\tuid=name\n'> <'nisLDAPattributeFromField passwd: \\\n'> 
                            <'\t\t\tcn=name, \\\n'> <'\t\t\tuserPassword=("{crypt}%s",passwd), \\\n'> <'\t\t\tgidNumber=gid, \\\n'> 
                            <'\t\t\tgecos=gecos, \\\n'> <'\t\t\thomeDirectory=home, \\\n'> <'\t\t\tloginShell=shell\n'> <'\n'> <'#\n'> 
                            <
'# If you are using passwd.adjunct, comment the passwd section above\n'
                            > <'# and uncomment the following passwd and passwd.adjunct sections\n'> <'#\n'> <'# passwd\n'> 
                            <'#nisLDAPattributeFromField passwd.byname: \\\n'> <'#\t\t\tdn=("uid=%s,", rf_key ), \\\n'> <'#\t\t\tuid=rf_key, \\\n'> <'#\t\t\tuidNumber=uid\n'> 
                            <'#nisLDAPattributeFromField passwd.byuid: \\\n'> <'#\t\t\tdn=("uid=%s,", name ), \\\n'> <'#\t\t\tuidNumber=rf_key, \\\n'> <'#\t\t\tuid=name\n'> 
                            <'#nisLDAPattributeFromField passwd: \\\n'> <'#\t\t\tcn=name, \\\n'> <'#\t\t\tgidNumber=gid, \\\n'> <'#\t\t\tgecos=gecos, \\\n'> 
                            <'#\t\t\thomeDirectory=home, \\\n'> <'#\t\t\tloginShell=shell\n'> <'\n'> <'# passwd.adjunct\n'> 
                            <'#nisLDAPattributeFromField passwd.adjunct.byname: \\\n'> <'#\t\t\tdn=("uid=%s,", rf_key ), \\\n'> <'#\t\t\tuid=name, \\\n'> 
                            <'#\t\t\tuserPassword=("{crypt}%s",passwd)\n'>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [16663 16673]
                )
              ]
              else_action: [
                (C {<find_domains>} {($ Id.VSub_DollarName _MAP)} {<DEF_MAPS>})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName PRESENT_COUNT)} {<-eq>} 
                              {($ Id.VSub_DollarName N2L_DMN_CNT)} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (command.Simple
                          words: [
                            {<echo>}
                            {
                              (SQ <'# passwd\n'> <'#nisLDAPattributeFromField passwd.byname: \\\n'> 
                                <'#\t\t\tdn=("uid=%s,", rf_key ), \\\n'> <'#\t\t\tuid=rf_key, \\\n'> <'#\t\t\tuidNumber=uid\n'> 
                                <'#nisLDAPattributeFromField passwd.byuid: \\\n'> <'#\t\t\tdn=("uid=%s,", name ), \\\n'> <'#\t\t\tuidNumber=rf_key, \\\n'> <'#\t\t\tuid=name\n'> 
                                <'#nisLDAPattributeFromField passwd: \\\n'> <'#\t\t\tcn=name, \\\n'> <'#\t\t\tuserPassword=("{crypt}%s",passwd), \\\n'> 
                                <'#\t\t\tgidNumber=gid, \\\n'> <'#\t\t\tgecos=gecos, \\\n'> <'#\t\t\thomeDirectory=home, \\\n'> <'#\t\t\tloginShell=shell\n'> <'\n'> 
                                <
'# If you are not using passwd.adjunct, uncomment the passwd section above\n'
                                > <'# and comment the following passwd and passwd.adjunct sections\n'> <'#\n'> <'# passwd\n'> 
                                <'nisLDAPattributeFromField passwd.byname: \\\n'> <'\t\t\tdn=("uid=%s,", rf_key ), \\\n'> <'\t\t\tuid=rf_key, \\\n'> <'\t\t\tuidNumber=uid\n'> 
                                <'nisLDAPattributeFromField passwd.byuid: \\\n'> <'\t\t\tdn=("uid=%s,", name ), \\\n'> <'\t\t\tuidNumber=rf_key, \\\n'> <'\t\t\tuid=name\n'> 
                                <'nisLDAPattributeFromField passwd: \\\n'> <'\t\t\tcn=name, \\\n'> <'\t\t\tgidNumber=gid, \\\n'> <'\t\t\tgecos=gecos, \\\n'> 
                                <'\t\t\thomeDirectory=home, \\\n'> <'\t\t\tloginShell=shell\n'> <'\n'> <'# passwd.adjunct\n'> 
                                <'nisLDAPattributeFromField passwd.adjunct.byname: \\\n'> <'\t\t\tdn=("uid=%s,", rf_key ), \\\n'> <'\t\t\tuid=name, \\\n'> 
                                <'\t\t\tuserPassword=("{crypt}%s",passwd)\n'>
                              )
                            }
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_DGreat '>>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {($ Id.VSub_DollarName MAP_FILE)}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                      spids: [16750 16763]
                    )
                  ]
                  else_action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'# passwd'>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.ForEach
                      iter_names: [_DMN]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName PRESENT_IN_DOMAINS)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ <'nisLDAPattributeFromField passwd.byname,'> 
                                    (${ Id.VSub_Name _DMN) <': '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> <'\t\t\tdn=('> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\"'>
                                      ch: '"'
                                    ) <'uid=%s,'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <', rf_key ), '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\\\'>
                                      ch: '\\'
                                    ) <'\n'> <'\t\t\tuid=rf_key, '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') 
                                    <'\n'> <'\t\t\tuidNumber=uid\n'> <'nisLDAPattributeFromField passwd.byuid,'> (${ Id.VSub_Name _DMN) <': '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\\\'>
                                      ch: '\\'
                                    ) <'\n'> <'\t\t\tdn=('> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'uid=%s,'> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\"'>
                                      ch: '"'
                                    ) <', name ), '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> 
                                    <'\t\t\tuidNumber=rf_key, '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> <'\t\t\tuid=name\n'> 
                                    <'nisLDAPattributeFromField passwd,'> (${ Id.VSub_Name _DMN) <': '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') 
                                    <'\n'> <'\t\t\tcn=name, '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> 
                                    <'\t\t\tgidNumber=gid, '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> <'\t\t\tgecos=gecos, '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\\\'>
                                      ch: '\\'
                                    ) <'\n'> <'\t\t\thomeDirectory=home, '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\\\'>
                                      ch: '\\'
                                    ) <'\n'> <'\t\t\tloginShell=shell\n'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                        )
                      redirects: []
                    )
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (SQ <'\n'> <'nisLDAPattributeFromField passwd.byname: \\\n'> 
                            <'\t\t\tdn=("uid=%s,", rf_key ), \\\n'> <'\t\t\tuid=rf_key, \\\n'> <'\t\t\tuidNumber=uid\n'> <'nisLDAPattributeFromField passwd.byuid: \\\n'> 
                            <'\t\t\tdn=("uid=%s,", name ), \\\n'> <'\t\t\tuidNumber=rf_key, \\\n'> <'\t\t\tuid=name\n'> <'nisLDAPattributeFromField passwd: \\\n'> 
                            <'\t\t\tcn=name, \\\n'> <'\t\t\tuserPassword=("{crypt}%s",passwd), \\\n'> <'\t\t\tgidNumber=gid, \\\n'> 
                            <'\t\t\tgecos=gecos, \\\n'> <'\t\t\thomeDirectory=home, \\\n'> <'\t\t\tloginShell=shell\n'>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<echo>} {(DQ <'# passwd.adjunct'>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.ForEach
                      iter_names: [_DMN]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName PRESENT_IN_DOMAINS)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ <'nisLDAPattributeFromField passwd.adjunct.byname,'> 
                                    (${ Id.VSub_Name _DMN) <': '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> <'\t\t\tdn=('> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\"'>
                                      ch: '"'
                                    ) <'uid=%s,'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <', rf_key ), '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\\\'>
                                      ch: '\\'
                                    ) <'\n'> <'\t\t\tuid=name, '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> 
                                    <'\t\t\tuserPassword=('> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'{crypt}%s'> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\"'>
                                      ch: '"'
                                    ) <',passwd)\n'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                        )
                      redirects: []
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (SQ <'\n'> 
                    <
'# This map is never created but yppasswd uses the mapping to extract password\n'
                    > <'# aging information from the DIT.\t\n'> <'nisLDAPattributeFromField ageing.byname: \\\n'> 
                    <'\t\t\tdn=("uid=%s,", rf_key ), \\\n'> <'\t\t\tuid=name, \\\n'> <'\t\t\tshadowLastChange=lastchg, \\\n'> <'\t\t\tshadowMin=min, \\\n'> 
                    <'\t\t\tshadowMax=max, \\\n'> <'\t\t\tshadowWarning=warn, \\\n'> <'\t\t\tshadowInactive=inactive, \\\n'> 
                    <'\t\t\tshadowExpire=expire, \\\n'> <'\t\t\tshadowFlag=flag\n'> <'\n'> <'# printers.conf.byname\n'> 
                    <'nisLDAPattributeFromField printers.conf.byname: \\\n'> <'\t\t\tdn=("printer-uri=%s,", rf_key ), \\\n'> <'\t\t\tprinter-name=rf_key, \\\n'> 
                    <'\t\t\t(printer-aliases)=(names, "|"), \\\n'> <'\t\t\tsun-printer-bsdaddr=(values, "*bsdaddr=%s:*"), \\\n'> 
                    <'\t\t\t(sun-printer-kvp)=(values,":"), \\\n'> <'\t\t\tdescription=rf_comment \n'> <'\n'> <'# prof_attr\n'> 
                    <'nisLDAPattributeFromField prof_attr: \\\n'> <'\t\t\tdn=("cn=%s,", rf_key ), \\\n'> <'\t\t\tcn=name, \\\n'> 
                    <'\t\t\tSolarisAttrReserved1=res1, \\\n'> <'\t\t\tSolarisAttrReserved2=res2, \\\n'> <'\t\t\tSolarisAttrLongDesc=desc, \\\n'> 
                    <'\t\t\tSolarisAttrKeyValue=attrs\n'> <'\n'> <'# project\n'> <'nisLDAPattributeFromField project.byname: \\\n'> 
                    <'\t\t\tdn=("SolarisProjectName=%s,", rf_key )\n'> <'nisLDAPattributeFromField project.byprojid: \\\n'> 
                    <'\t\t\tdn=("SolarisProjectName=%s,", name ), \\\n'> <'\t\t\tSolarisProjectID=rf_searchkey\n'> <'nisLDAPattributeFromField project: \\\n'> 
                    <'\t\t\tSolarisProjectName=name, \\\n'> <'\t\t\tSolarisProjectID=projID, \\\n'> <'\t\t\t(memberUid)=(users, ","), \\\n'> 
                    <'\t\t\t(memberGid)=(groups, ","), \\\n'> <'\t\t\t(SolarisProjectAttr)=(attrs, ";"), \\\n'> <'\t\t\tdescription=comment\n'> <'\n'> 
                    <'# protocols\n'> <'nisLDAPattributeFromField protocols.byname: \\\n'> 
                    <'                        ipProtocolNumber=number, \\\n'> <'                        cn=rf_searchkey\n'> <'nisLDAPattributeFromField protocols.bynumber: \\\n'> 
                    <'                        ipProtocolNumber=rf_key, \\\n'> <'                        description=rf_comment\n'> <'nisLDAPattributeFromField protocols: \\\n'> 
                    <'\t\t\tdn=("cn=%s,", name ), \\\n'> <'                        (cn)=(aliases, " "), \\\n'> <'\t\t\tcn=name\n'> <'\n'> <'# rpc.bynumber\n'> 
                    <'nisLDAPattributeFromField rpc.bynumber: \\\n'> <'\t\t\tdn=("cn=%s,", name ), \\\n'> <'\t\t\toncRpcNumber=rf_key, \\\n'> 
                    <'                        (cn)=(aliases, " "), \\\n'> <'\t\t\tcn=name, \\\n'> <'\t\t\tdescription=rf_comment \n'> <'\n'> <'# services\n'> 
                    <'# services.byservicename rule is only used to speed single search\n'> <'nisLDAPattributeFromField services.byservicename: \\\n'> 
                    <'\t\t\t("%s/%s", cn, ipServiceProtocol) = rf_searchkey\n'> <'\n'> <'nisLDAPattributeFromField services.byname: \\\n'> 
                    <'\t\t\tdn=("cn=%s+ipServiceProtocol=%s,", name, protocol ), \\\n'> <'     \t\t\t("*/%s", ipServiceProtocol)=rf_key, \\\n'> 
                    <'     \t\t\t("%s/*", ipServicePort)=rf_key, \\\n'> <'                        (cn)=(aliases, " "), \\\n'> <'\t\t\tcn=name, \\\n'> 
                    <'                        description=rf_comment\n'> <'\n'> <'# timezone.byname\n'> <'nisLDAPattributeFromField timezone.byname: \\\n'> 
                    <'\t\t\tdn=("cn=%s,", rf_key ), \\\n'> <'\t\t\tcn=hostName, \\\n'> <'\t\t\tnisplusTimeZone=zoneName, \\\n'> <'\t\t\tdescription=comment\n'> 
                    <'\n'> <'# user_attr\n'> <'nisLDAPattributeFromField user_attr: \\\n'> <'\t\t\tdn=("uid=%s,", rf_key ), \\\n'> 
                    <'\t\t\tuid=rf_key, \\\n'> <'\t\t\tSolarisUserAttr=qualifier, \\\n'> <'\t\t\tSolarisUserReserved1=res1, \\\n'> 
                    <'\t\t\tSolarisUserReserved2=res2, \\\n'> <'\t\t\tSolarisAttrKeyValue=attrs\n'> <'\n'> <'# publickey.byname\n'> 
                    <'nisLDAPattributeFromField keys.host: \\\n'> <'\t\t\tdn=("%s", ldap:dn:?one?("cn=%s", (yp:rf_key, "unix.%s@*"))), \\\n'> 
                    <'\t\t\tnisPublicKey=publicKey, \\\n'> <'\t\t\tnisSecretKey=secretKey\n'> <'\n'> <'nisLDAPattributeFromField keys.pass: \\\n'> 
                    <
'\t\t\tdn=("%s", ldap:dn:?one?("uidNumber=%s", (yp:rf_key, "unix.%s@*"))), \\\n'
                    > <'\t\t\tnisPublicKey=publicKey, \\\n'> <'\t\t\tnisSecretKey=secretKey\n'> <'\n'> 
                    <'nisLDAPattributeFromField keys.nobody: \\\n'> <'\t\t\tdn=("uid=%s,",yp:rf_key), \\\n'> <'\t\t\tcn=rf_key, \\\n'> 
                    <'\t\t\tnisPublicKey=publicKey, \\\n'> <'\t\t\tnisSecretKey=secretKey\n'> <'\n'> 
                    <'# ypservers. This derived from IPlanet implementation not RFC.\n'> <'nisLDAPattributeFromField ypservers: \\\n'> <'\t\t\tdn=("cn=%s,", rf_key), \\\n'> 
                    <'\t\t\tcn=rf_key\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: list_auto_and_custom_nisLDAPattributeFromField
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {
                                (braced_var_sub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name ALL_DMN_AUTO_CUST_MAPS>
                                  var_name: ALL_DMN_AUTO_CUST_MAPS
                                  prefix_op: <Id.VSub_Pound '#'>
                                  bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              } {<-gt>} {<0>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (DQ <'# Non-default custom auto maps (auto.*)'> <Id.Lit_BadBackslash '\\'> 
                            <n>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [17202 17221]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ForEach
              iter_names: [_MAP]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name ALL_DMN_AUTO_CUST_MAPS>
                        var_name: ALL_DMN_AUTO_CUST_MAPS
                        bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (DQ <'# '> (${ Id.VSub_Name _MAP) <'\n'> <'nisLDAPattributeFromField '> 
                            (${ Id.VSub_Name _MAP) <': '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> 
                            <'                        dn=('> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'automountKey=%s,'> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\"'>
                              ch: '"'
                            ) <', rf_key ), '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> 
                            <'                        automountKey=rf_key, '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> 
                            <'                        automountInformation=value\n'>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                )
              redirects: []
            )
            (C {<ask_user_to_update_the_custom_map_entries_too>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: create_nisLDAPattributeFromField
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<CUST_CMT_NEEDED>} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>})
                (command.Simple
                  words: [
                    {<echo>}
                    {
                      (SQ <'\n'> 
                        <'# nisLDAPattributeFromField : It specifies how an LDAP attribute\n'> <'# value is derived from a NIS entries field values.\n'> <'# \n'> 
                        <'# The format of nisLDAPattributeFromField entry is :\n'> <'# mapName ":" fieldattrspec *("," fieldattrspec )\n'>
                      )
                    }
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_DGreat '>>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_DollarName MAP_FILE)}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
            )
            (C {<list_default_nisLDAPattributeFromField>})
            (C {<list_auto_and_custom_nisLDAPattributeFromField>})
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'#\n'> 
                    <
'#------------------------------------------------------------------------------\n'
                    > <'#\t\t\t \n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: list_default_nisLDAPfieldFromAttribute
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [
                {<echo>}
                {
                  (SQ <'\n'> <'# Describe how named fields are mapped from DIT entries.\n'> <'\n'> 
                    <'# audit_user\n'> <'nisLDAPfieldFromAttribute audit_user: \\\n'> <'\t\t\t("uid=%s,*", rf_key)=dn, \\\n'> 
                    <'\t\t\t("uid=%s,*", name)=dn, \\\n'> <'\t\t\talwaysAuditFlags=SolarisAuditAlways, \\\n'> <'\t\t\tneverAuditFlags=SolarisAuditNever\n'> 
                    <'\n'> <'# auto.home\n'> <'nisLDAPfieldFromAttribute auto.home: \\\n'> <'\t\t\trf_key=automountKey, \\\n'> 
                    <'\t\t\tvalue=automountInformation\n'> <'\n'> <'# auto.master\n'> <'nisLDAPfieldFromAttribute auto.master: \\\n'> 
                    <'\t\t\trf_key=automountKey, \\\n'> <'\t\t\tvalue=automountInformation\n'> <'\n'> <'# auth_attr\n'> 
                    <'nisLDAPfieldFromAttribute auth_attr: \\\n'> <'\t\t\trf_key=cn, \\\n'> <'\t\t\tname=cn, \\\n'> <'\t\t\tres1=SolarisAttrReserved1, \\\n'> 
                    <'\t\t\tres2=SolarisAttrReserved2, \\\n'> <'\t\t\tshort_desc=SolarisAttrShortDesc, \\\n'> <'\t\t\tlong_desc=SolarisAttrLongDesc, \\\n'> 
                    <'\t\t\tattrs=SolarisAttrKeyValue\n'> <'\n'> <'# Exec_attr. Because of messy NIS keys special handlind is required here\n'> 
                    <'nisLDAPfieldFromAttribute exec_attr: \\\n'> <'\t\t\trf_key=("%s:%s:%s",cn,SolarisKernelSecurityPolicy, \\\n'> <'\t\t\t\tsolarisProfileId), \\\n'> 
                    <'\t\t\tname=cn, \\\n'> <'\t\t\tpolicy=SolarisKernelSecurityPolicy, \\\n'> <'\t\t\ttype=SolarisProfileType, \\\n'> 
                    <'\t\t\tres1=SolarisAttrReserved1, \\\n'> <'\t\t\tres2=SolarisAttrReserved2, \\\n'> <'\t\t\tid=SolarisProfileId, \\\n'> 
                    <'\t\t\tattrs=SolarisAttrKeyValue\n'> <'\n'> <'\n'> <'# ethers\n'> <'nisLDAPfieldFromAttribute ethers.byname: \\\n'> <'\t\t\trf_key=cn\n'> 
                    <'nisLDAPfieldFromAttribute ethers.byaddr: \\\n'> <'\t\t\trf_key=macAddress\n'> <'nisLDAPfieldFromAttribute ethers: \\\n'> <'\t\t\tname=cn, \\\n'> 
                    <'\t\t\taddr=macAddress, \\\n'> <'\t\t\trf_comment=description\n'> <'\n'> <'# bootparams. Must be done after ethers\n'> 
                    <'nisLDAPfieldFromAttribute bootparams: \\\n'> <'\t\t\trf_key=cn, \\\n'> <'\t\t\tparams=("%s ", (bootParameter), " ")\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_MAP='> name:_MAP)
                  op: assign_op.Equal
                  rhs: {<group.adjunct.byname>}
                  spids: [17470]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          children: [
                            (C {<present>} {($ Id.VSub_DollarName _MAP)} 
                              {($ Id.VSub_DollarName ALL_DMN_DEF_MAPLIST)}
                            )
                          ]
                          negated: T
                          stderr_indices: []
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (SQ <'# group\n'> <'nisLDAPfieldFromAttribute group.byname: \\\n'> 
                            <'\t\t\trf_key=cn\n'> <'nisLDAPfieldFromAttribute group.bygid: \\\n'> <'                        rf_key=gidNumber\n'> 
                            <'nisLDAPfieldFromAttribute group: \\\n'> <'                        gid=gidNumber, \\\n'> <'                        name=cn, \\\n'> 
                            <'\t\t\t("{crypt}%s", passwd)=userPassword, \\\n'> <'\t\t\tusers=("%s,", (memberUid), ",")\n'> <'\n'> <'#\n'> 
                            <'# If you are using group.adjunct, comment the group section above\n'> <'# and uncomment the following group and group.adjunct section\n'> <'#\t\t\t\n'> <'# group\n'> 
                            <'#nisLDAPfieldFromAttribute group.byname: \\\n'> <'#\t\t\trf_key=cn\n'> <'#nisLDAPfieldFromAttribute group.bygid: \\\n'> <'#\t\t\trf_key=gidNumber\n'> 
                            <'#nisLDAPfieldFromAttribute group: \\\n'> <'#\t\t\tgid=gidNumber, \\\n'> <'#\t\t\tname=cn, \\\n'> <'#\t\t\tpasswd=("#$%s", cn), \\\n'> 
                            <'#\t\t\tusers=("%s,", (memberUid), ",")\n'> <'\n'> <'# group.adjunct\n'> <'#nisLDAPfieldFromAttribute group.adjunct.byname: \\\n'> 
                            <'#\t\t\trf_key=cn, \\\n'> <'#\t\t\tname=cn, \\\n'> <'#\t\t\t("{crypt}%s", passwd)=userPassword\n'>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [17474 17484]
                )
              ]
              else_action: [
                (C {<find_domains>} {($ Id.VSub_DollarName _MAP)} {<DEF_MAPS>})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName PRESENT_COUNT)} {<-eq>} 
                              {($ Id.VSub_DollarName N2L_DMN_CNT)} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (command.Simple
                          words: [
                            {<echo>}
                            {
                              (SQ <'# group\n'> <'#nisLDAPfieldFromAttribute group.byname: \\\n'> 
                                <'#\t\t\trf_key=cn\n'> <'#nisLDAPfieldFromAttribute group.bygid: \\\n'> <'#                        rf_key=gidNumber\n'> 
                                <'#nisLDAPfieldFromAttribute group: \\\n'> <'#                        gid=gidNumber, \\\n'> <'#                        name=cn, \\\n'> 
                                <'#\t\t\t("{crypt}%s", passwd)=userPassword, \\\n'> <'#\t\t\tusers=("%s,", (memberUid), ",")\n'> <'\n'> <'#\n'> 
                                <
'# If you are not using group.adjunct, comment the group section above\n'
                                > <'# and uncomment the following group and group.adjunct sections\n'> <'#\t\t\t\n'> <'# group \n'> 
                                <'nisLDAPfieldFromAttribute group.byname: \\\n'> <'\t\t\trf_key=cn\n'> <'nisLDAPfieldFromAttribute group.bygid: \\\n'> <'\t\t\trf_key=gidNumber\n'> 
                                <'nisLDAPfieldFromAttribute group: \\\n'> <'\t\t\tgid=gidNumber, \\\n'> <'\t\t\tname=cn, \\\n'> <'\t\t\tpasswd=("#$%s", cn), \\\n'> 
                                <'\t\t\tusers=("%s,", (memberUid), ",")\n'> <'\n'> <'#\n'> <'# group.adjunct\n'> <'nisLDAPfieldFromAttribute group.adjunct.byname: \\\n'> 
                                <'\t\t\trf_key=cn, \\\n'> <'\t\t\tname=cn, \\\n'> <'\t\t\t("{crypt}%s", passwd)=userPassword\n'>
                              )
                            }
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_DGreat '>>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {($ Id.VSub_DollarName MAP_FILE)}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                      spids: [17550 17563]
                    )
                  ]
                  else_action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'# group'>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.ForEach
                      iter_names: [_DMN]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName PRESENT_IN_DOMAINS)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ <'nisLDAPfieldFromAttribute group.byname,'> 
                                    (${ Id.VSub_Name _DMN) <': '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> <'\t\t\trf_key=cn\n'> 
                                    <'nisLDAPfieldFromAttribute group.bygid,'> (${ Id.VSub_Name _DMN) <': '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') 
                                    <'\n'> <'\t\t\trf_key=gidNumber\n'> <'nisLDAPfieldFromAttribute group,'> (${ Id.VSub_Name _DMN) <': '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\\\'>
                                      ch: '\\'
                                    ) <'\n'> <'\t\t\tgid=gidNumber, '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') 
                                    <'\n'> <'\t\t\tname=cn, '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> 
                                    <'\t\t\tpasswd=('> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'#'> <Id.Lit_Dollar '$'> <'%s'> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\"'>
                                      ch: '"'
                                    ) <', cn), '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> 
                                    <'\t\t\tusers=('> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'%s,'> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\"'>
                                      ch: '"'
                                    ) <', (memberUid), '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <','> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\"'>
                                      ch: '"'
                                    ) <')\n'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                        )
                      redirects: []
                    )
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (SQ <'\n'> <'nisLDAPfieldFromAttribute group.byname: \\\n'> 
                            <'\t\t\trf_key=cn\n'> <'nisLDAPfieldFromAttribute group.bygid: \\\n'> <'                        rf_key=gidNumber\n'> 
                            <'nisLDAPfieldFromAttribute group: \\\n'> <'                        gid=gidNumber, \\\n'> <'                        name=cn, \\\n'> 
                            <'\t\t\t("{crypt}%s", passwd)=userPassword, \\\n'> <'\t\t\tusers=("%s,", (memberUid), ",")\n'>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<echo>} {(DQ <'#\n'> <'# group.adjunct\n'> <'# '>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.ForEach
                      iter_names: [_DMN]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName PRESENT_IN_DOMAINS)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ <'nisLDAPfieldFromAttribute group.adjunct.byname,'> 
                                    (${ Id.VSub_Name _DMN) <': '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> <'\t\t\trf_key=cn, '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\\\'>
                                      ch: '\\'
                                    ) <'\n'> <'\t\t\tname=cn, '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> 
                                    <'\t\t\t('> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'{crypt}%s'> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\"'>
                                      ch: '"'
                                    ) <', passwd)=userPassword\n'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                        )
                      redirects: []
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (SQ <'\n'> <'# hosts\n'> <'nisLDAPfieldFromAttribute hosts.byaddr: \\\n'> 
                    <'                        rf_ipkey=ipHostNumber\n'> <'nisLDAPfieldFromAttribute hosts.byname: \\\n'> <'\t\t\t(rf_key)=(cn)\n'> 
                    <'nisLDAPfieldFromAttribute hosts: \\\n'> <'\t\t\t("cn=%s+ipHostNumber=*", canonicalName)=dn, \\\n'> 
                    <'                        addr=ipHostNumber, \\\n'> <'\t\t\taliases=("%s ", (cn) - yp:canonicalName, " "), \\\n'> 
                    <'                        rf_comment=description\n'> <'\n'> <'nisLDAPfieldFromAttribute multihosts: \\\n'> 
                    <'\t\t\t("cn=%s+ipHostNumber=*", canonicalName)=dn, \\\n'> <'\t\t\t(rf_key)=("YP_MULTI_%s", cn), \\\n'> 
                    <'\t\t\taliases=("%s ", (cn) - yp:canonicalName, " "), \\\n'> <'\t\t\trf_comment=description, \\\n'> <'\t\t\t(tmp)=("%s", ipHostNumber:?one?("(&(cn=%s) \\\n'> 
                    <'\t\t\t\t(ipHostNumber=*.*))", yp:canonicalName)), \\\n'> <'\t\t\taddr=("%s,", (yp:tmp), ",")\n'> <'\n'> <'# ipnodes\n'> 
                    <'nisLDAPfieldFromAttribute ipnodes.byaddr: \\\n'> <'                        rf_ipkey=ipHostNumber\n'> <'nisLDAPfieldFromAttribute ipnodes.byname: \\\n'> 
                    <'\t\t\t(rf_key)=(cn)\n'> <'nisLDAPfieldFromAttribute ipnodes: \\\n'> <'\t\t\t("cn=%s+ipHostNumber=*", canonicalName)=dn, \\\n'> 
                    <'                        addr=ipHostNumber, \\\n'> <'\t\t\taliases=("%s ", (cn) - yp:canonicalName, " "), \\\n'> 
                    <'                        rf_comment=description\n'> <'\n'> <'nisLDAPfieldFromAttribute multiipnodes: \\\n'> 
                    <'\t\t\t("cn=%s+ipHostNumber=*", canonicalName)=dn, \\\n'> <'\t\t\t(rf_key)=("YP_MULTI_%s", cn), \\\n'> 
                    <'\t\t\taliases=("%s ", (cn) - yp:canonicalName, " "), \\\n'> <'\t\t\trf_comment=description, \\\n'> <'\t\t\t(tmp)=("%s", ipHostNumber:?one?("(&(cn=%s) \\\n'> 
                    <'\t\t\t\t(ipHostNumber=*:*))", yp:canonicalName)), \\\n'> <'\t\t\taddr=("%s,", (yp:tmp), ",")\n'> <'\n'> <'#mail.aliases\n'> 
                    <'nisLDAPfieldFromAttribute mail.aliases: \\\n'> <'\t\t\trf_key=mail, \\\n'> <'\t\t\taddresses= ("%s,", (mgrprfc822mailmember), ","), \\\n'> 
                    <'\t\t\trf_comment=description\n'> <'\n'> <'#mail.mapping\n'> <'nisLDAPfieldFromAttribute mail.mapping: \\\n'> 
                    <'\t\t\trf_key=mgrprfc822mailmember, \\\n'> <'\t\t\taddress=mail, \\\n'> <'\t\t\trf_comment=description\n'> <'\n'> <'# netgroup.\n'> 
                    <'nisLDAPfieldFromAttribute netgroup: \\\n'> <'\t\t\trf_key=cn, \\\n'> <'\t\t\t(group)=(memberNisNetgroup), \\\n'> 
                    <'\t\t\t("(%s,%s,%s)", host, user, domain)= \\\n'> <'\t\t\t\t\t\t(nisNetgroupTriple), \\\n'> <'\t\t\trf_comment=description\n'> <'\n'> <'# netid.pass\n'> 
                    <'nisLDAPfieldFromAttribute netid.pass: \\\n'> <'\t\t\tnumber=uidNumber, \\\n'> <'\t\t\t(tmp)=("%s", gidNumber:ou=group,?one?\\\n'> 
                    <'\t\t\t\t("memberUid=%s", ldap:uid)), \\\n'> <'\t\t\tsgid=("%s,", (yp:tmp) - gidNumber, ","), \\\n'> 
                    <'\t\t\tdata=("%s,%s", gidNumber, yp:sgid), \\\n'> <'\t\t\tdata=gidNumber, \\\n'> <'\t\t\t(rf_key)=("unix.%s@%s", yp:number, yp:rf_domain)\n'> <'\n'> 
                    <'# netid.host\n'> <'nisLDAPfieldFromAttribute netid.host: \\\n'> <'\t\t\t("cn=%s+ipHostNumber=*", data)=dn, \\\n'> 
                    <'\t\t\tnumber=("0"), \\\n'> <'\t\t\t(rf_key)=("unix.%s@%s", yp:data, yp:rf_domain)\n'> <'\n'> <'# netmasks.byaddr\n'> 
                    <'nisLDAPfieldFromAttribute netmasks.byaddr: \\\n'> <'\t\t\t("ipNetworkNumber=%s,*", rf_ipkey)=dn, \\\n'> <'\t\t\tmask=ipNetmaskNumber, \\\n'> 
                    <'\t\t\trf_comment=description\n'> <'\n'> <'# networks.\n'> <'nisLDAPfieldFromAttribute networks.byname: \\\n'> <'\t\t\t(rf_key)=(cn)\n'> 
                    <'nisLDAPfieldFromAttribute networks.byaddr: \\\n'> <'\t\t\t("ipNetworkNumber=%s,*", rf_key)=dn\n'> <'nisLDAPfieldFromAttribute networks: \\\n'> 
                    <'\t\t\tname=cn, \\\n'> <'\t\t\taliases=("%s ", (cn) - yp:name, " "), \\\n'> <'\t\t\tnumber=ipNetworkNumber, \\\n'> 
                    <'\t\t\trf_comment=description\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_MAP='> name:_MAP)
                  op: assign_op.Equal
                  rhs: {<passwd.adjunct.byname>}
                  spids: [17927]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          children: [
                            (C {<present>} {($ Id.VSub_DollarName _MAP)} 
                              {($ Id.VSub_DollarName ALL_DMN_DEF_MAPLIST)}
                            )
                          ]
                          negated: T
                          stderr_indices: []
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (SQ <'# passwd\n'> <'nisLDAPfieldFromAttribute passwd.byname: \\\n'> 
                            <'\t\t\trf_key=uid\n'> <'nisLDAPfieldFromAttribute passwd.byuid: \\\n'> <'\t\t\trf_key=uidNumber\n'> 
                            <'nisLDAPfieldFromAttribute passwd: \\\n'> <'\t\t\tname=uid, \\\n'> <'\t\t\tuid=uidNumber, \\\n'> 
                            <'\t\t\t("{crypt}%s", passwd)=userPassword, \\\n'> <'\t\t\tgid=gidNumber, \\\n'> <'\t\t\tgecos=gecos, \\\n'> <'\t\t\thome=homeDirectory, \\\n'> 
                            <'\t\t\tshell=loginShell \n'> <'\n'> <'#\n'> <'# If you are using passwd.adjunct, comment the passwd section above\n'> 
                            <'# and uncomment the following passwd and passwd.adjunct sections\n'> <'#\t\t\t\n'> <'# passwd\n'> <'#nisLDAPfieldFromAttribute passwd.byname: \\\n'> <'#\t\t\trf_key=uid\n'> 
                            <'#nisLDAPfieldFromAttribute passwd.byuid: \\\n'> <'#\t\t\trf_key=uidNumber\n'> <'#nisLDAPfieldFromAttribute passwd: \\\n'> <'#\t\t\tname=uid, \\\n'> 
                            <'#\t\t\tuid=uidNumber, \\\n'> <'#\t\t\tpasswd=("##%s", uid), \\\n'> <'#\t\t\tgid=gidNumber, \\\n'> <'#\t\t\tgecos=gecos, \\\n'> 
                            <'#\t\t\thome=homeDirectory, \\\n'> <'#\t\t\tshell=loginShell\n'> <'\n'> <'# passwd.adjunct\n'> 
                            <'#nisLDAPfieldFromAttribute passwd.adjunct.byname: \\\n'> <'#\t\t\trf_key=uid, \\\n'> <'#\t\t\tname=uid, \\\n'> <'#\t\t\t("{crypt}%s", passwd)=userPassword\n'>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [17931 17941]
                )
              ]
              else_action: [
                (C {<find_domains>} {($ Id.VSub_DollarName _MAP)} {<DEF_MAPS>})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName PRESENT_COUNT)} {<-eq>} 
                              {($ Id.VSub_DollarName N2L_DMN_CNT)} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (command.Simple
                          words: [
                            {<echo>}
                            {
                              (SQ <'# passwd\n'> <'#nisLDAPfieldFromAttribute passwd.byname: \\\n'> 
                                <'#\t\t\trf_key=uid\n'> <'#nisLDAPfieldFromAttribute passwd.byuid: \\\n'> <'#\t\t\trf_key=uidNumber\n'> 
                                <'#nisLDAPfieldFromAttribute passwd: \\\n'> <'#\t\t\tname=uid, \\\n'> <'#\t\t\tuid=uidNumber, \\\n'> 
                                <'#\t\t\t("{crypt}%s", passwd)=userPassword, \\\n'> <'#\t\t\tgid=gidNumber, \\\n'> <'#\t\t\tgecos=gecos, \\\n'> <'#\t\t\thome=homeDirectory, \\\n'> 
                                <'#\t\t\tshell=loginShell \n'> <'\n'> <'#\n'> <'# If you are not using passwd.adjunct, uncomment the passwd section\n'> 
                                <
'# above and comment the following passwd and passwd.adjunct sections\n'
                                > <'#\t\t\t\n'> <'# passwd\n'> <'nisLDAPfieldFromAttribute passwd.byname: \\\n'> <'\t\t\trf_key=uid\n'> 
                                <'nisLDAPfieldFromAttribute passwd.byuid: \\\n'> <'\t\t\trf_key=uidNumber\n'> <'nisLDAPfieldFromAttribute passwd: \\\n'> <'\t\t\tname=uid, \\\n'> 
                                <'\t\t\tuid=uidNumber, \\\n'> <'\t\t\tpasswd=("##%s", uid), \\\n'> <'\t\t\tgid=gidNumber, \\\n'> <'\t\t\tgecos=gecos, \\\n'> 
                                <'\t\t\thome=homeDirectory, \\\n'> <'\t\t\tshell=loginShell\n'> <'\n'> <'#\n'> <'# passwd.adjunct Must follow passwd\n'> <'#\n'> 
                                <'nisLDAPfieldFromAttribute passwd.adjunct.byname: \\\n'> <'\t\t\trf_key=uid, \\\n'> <'\t\t\tname=uid, \\\n'> <'\t\t\t("{crypt}%s", passwd)=userPassword\n'>
                              )
                            }
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_DGreat '>>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {($ Id.VSub_DollarName MAP_FILE)}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                      spids: [18013 18026]
                    )
                  ]
                  else_action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'# passwd'>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.ForEach
                      iter_names: [_DMN]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName PRESENT_IN_DOMAINS)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ <'nisLDAPfieldFromAttribute passwd.byname,'> 
                                    (${ Id.VSub_Name _DMN) <': '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> 
                                    <'\t\t\trf_key=uid\n'> <'nisLDAPfieldFromAttribute passwd.byuid,'> (${ Id.VSub_Name _DMN) <': '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\\\'>
                                      ch: '\\'
                                    ) <'\n'> <'\t\t\trf_key=uidNumber\n'> <'nisLDAPfieldFromAttribute passwd,'> (${ Id.VSub_Name _DMN) <': '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\\\'>
                                      ch: '\\'
                                    ) <'\n'> <'\t\t\tname=uid, '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> 
                                    <'\t\t\tuid=uidNumber, '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> <'\t\t\tpasswd=('> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\"'>
                                      ch: '"'
                                    ) <'##%s'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <', uid), '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\\\'>
                                      ch: '\\'
                                    ) <'\n'> <'\t\t\tgid=gidNumber, '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') 
                                    <'\n'> <'\t\t\tgecos=gecos, '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> 
                                    <'\t\t\thome=homeDirectory, '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> 
                                    <'\t\t\tshell=loginShell\n'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                        )
                      redirects: []
                    )
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (SQ <'\n'> <'nisLDAPfieldFromAttribute passwd.byname: \\\n'> 
                            <'\t\t\trf_key=uid\n'> <'nisLDAPfieldFromAttribute passwd.byuid: \\\n'> <'\t\t\trf_key=uidNumber\n'> 
                            <'nisLDAPfieldFromAttribute passwd: \\\n'> <'\t\t\tname=uid, \\\n'> <'\t\t\tuid=uidNumber, \\\n'> 
                            <'\t\t\t("{crypt}%s", passwd)=userPassword, \\\n'> <'\t\t\tgid=gidNumber, \\\n'> <'\t\t\tgecos=gecos, \\\n'> <'\t\t\thome=homeDirectory, \\\n'> 
                            <'\t\t\tshell=loginShell \n'>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<echo>} {(DQ <'#\n'> <'# passwd.adjunct Must follow passwd\n'> <'# '>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.ForEach
                      iter_names: [_DMN]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName PRESENT_IN_DOMAINS)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ <'nisLDAPfieldFromAttribute passwd.adjunct.byname,'> 
                                    (${ Id.VSub_Name _DMN) <': '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> 
                                    <'\t\t\trf_key=uid, '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> <'\t\t\tname=uid, '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\\\'>
                                      ch: '\\'
                                    ) <'\n'> <'\t\t\t('> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'{crypt}%s'> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\"'>
                                      ch: '"'
                                    ) <', passwd)=userPassword\n'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                        )
                      redirects: []
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (SQ <'\n'> 
                    <
'# This map is never created but yppasswd uses the mapping to extract password\n'
                    > <'# ageing information from the DIT.\t\n'> <'nisLDAPfieldFromAttribute ageing.byname: \\\n'> 
                    <'\t\t\trf_key=uid, \\\n'> <'\t\t\tname=uid, \\\n'> <'\t\t\tlastchg=shadowLastChange, \\\n'> <'\t\t\tmin=shadowMin, \\\n'> 
                    <'\t\t\tmax=shadowMax, \\\n'> <'\t\t\twarn=shadowWarning, \\\n'> <'\t\t\tinactive=shadowInactive, \\\n'> 
                    <'\t\t\texpire=shadowExpire, \\\n'> <'\t\t\tflag=shadowFlag\n'> <'\n'> <'# printers.conf.byname\n'> 
                    <'nisLDAPfieldFromAttribute printers.conf.byname: \\\n'> <'\t\t\trf_key=printer-uri, \\\n'> <'\t\t\tnames=("%s|", (printer-aliases), "|"), \\\n'> 
                    <'\t\t\tbsdaddr=("bsdaddr=%s", sun-printer-bsdaddr), \\\n'> <'\t\t\tkvps=("%s:", (sun-printer-kvp) - yp:bsdaddr), \\\n'> 
                    <'\t\t\tvalues=("%s:%s", yp:bsdaddr, yp:kvps), \\\n'> <'\t\t\tvalues=("%s:", yp:bsdaddr), \\\n'> <'\t\t\tvalues=yp:kvps, \\\n'> 
                    <'                        rf_comment=description\n'> <'\n'> <'# prof_attr\n'> <'nisLDAPfieldFromAttribute prof_attr: \\\n'> <'\t\t\trf_key=cn, \\\n'> 
                    <'\t\t\tname=cn, \\\n'> <'\t\t\tres1=SolarisAttrReserved1, \\\n'> <'\t\t\tres2=SolarisAttrReserved2, \\\n'> 
                    <'\t\t\tdesc=SolarisAttrLongDesc, \\\n'> <'\t\t\tattrs=SolarisAttrKeyValue\n'> <'\n'> <'# project\n'> 
                    <'nisLDAPfieldFromAttribute project.byname: \\\n'> <'\t\t\trf_key=SolarisProjectName\n'> <'nisLDAPfieldFromAttribute project.byprojid: \\\n'> 
                    <'\t\t\trf_key=SolarisProjectID\n'> <'nisLDAPfieldFromAttribute project: \\\n'> <'\t\t\tname=SolarisProjectName, \\\n'> 
                    <'\t\t\tprojID=SolarisProjectID, \\\n'> <'\t\t\tcomment=description, \\\n'> <'\t\t\tusers=("%s,", (memberUid), ","), \\\n'> 
                    <'\t\t\tgroups=("%s,", (memberGid), ","), \\\n'> <'\t\t\tattrs=("%s;", (SolarisProjectAttr), ";")\n'> <'\n'> <'# protocols\n'> 
                    <'nisLDAPfieldFromAttribute protocols.byname: \\\n'> <'\t\t\t("cn=%s,*", rf_key)=dn, \\\n'> <'\t\t\t(rf_key)=(cn)\n'> 
                    <'nisLDAPfieldFromAttribute protocols.bynumber: \\\n'> <'                        rf_key=ipProtocolNumber, \\\n'> 
                    <'                        rf_comment=description\n'> <'nisLDAPfieldFromAttribute protocols: \\\n'> <'\t\t\t("cn=%s,*", name)=dn, \\\n'> 
                    <'                        number=ipProtocolNumber, \\\n'> <'                        aliases=("%s ", (cn) - yp:name, " ")\n'> <'\n'> <'# rpc.bynumber\n'> 
                    <'nisLDAPfieldFromAttribute rpc.bynumber: \\\n'> <'\t\t\trf_key=oncRpcNumber, \\\n'> <'\t\t\tnumber=oncRpcNumber, \\\n'> 
                    <'\t\t\t("cn=%s,*", name)=dn, \\\n'> <'                        aliases=("%s ", (cn) - yp:name, " "), \\\n'> 
                    <'\t\t\trf_comment=description\n'> <'\n'> <'# services\n'> <'nisLDAPfieldFromAttribute services.byname: \\\n'> 
                    <'\t\t\trf_key = ("%s/%s", ipServicePort, ipServiceProtocol)\n'> <'nisLDAPfieldFromAttribute services.byservicename: \\\n'> 
                    <'\t\t\t(rf_key)=("%s/%s", cn, ipServiceProtocol), \\\n'> <'\t\t\t(rf_key)=(cn)\n'> <'nisLDAPfieldFromAttribute services: \\\n'> 
                    <'\t\t\t("cn=%s+ipServiceProtocol=*", name)=dn, \\\n'> <'     \t\t\tprotocol=ipServiceProtocol, \\\n'> <'     \t\t\tport=ipServicePort, \\\n'> 
                    <'                        aliases=("%s ", (cn) - yp:name, " "), \\\n'> <'                        rf_comment=description\n'> <'\n'> <'# timezone.byname\n'> 
                    <'nisLDAPfieldFromAttribute timezone.byname: \\\n'> <'\t\t\trf_key=cn, \\\n'> <'\t\t\thostName=cn, \\\n'> <'\t\t\tzoneName=nisplusTimeZone, \\\n'> 
                    <'\t\t\trf_comment=description\n'> <'\n'> <'# user_attr\n'> <'nisLDAPfieldFromAttribute user_attr: \\\n'> 
                    <'\t\t\t("uid=%s,*", rf_key)=dn, \\\n'> <'\t\t\t("uid=%s,*", user)=dn, \\\n'> <'\t\t\tqualifier=SolarisUserAttr, \\\n'> 
                    <'\t\t\tres1=SolarisUserReserved1, \\\n'> <'\t\t\tres2=SolarisUserReserved2, \\\n'> <'\t\t\tattrs=SolarisAttrKeyValue\n'> <'\n'> 
                    <'# publickey.byname\n'> <'nisLDAPfieldFromAttribute keys.host: \\\n'> <'\t\t\t("cn=%s+ipHostNumber=*", cname)=dn, \\\n'> 
                    <'\t\t\trf_key=("unix.%s@%s", yp:cname, yp:rf_domain), \\\n'> <'\t\t\tpublicKey=nisPublicKey, \\\n'> <'\t\t\tsecretKey=nisSecretKey\n'> <'\n'> 
                    <'nisLDAPfieldFromAttribute keys.pass: \\\n'> <'\t\t\trf_key=("unix.%s@%s", uidNumber, yp:rf_domain), \\\n'> <'\t\t\tpublicKey=nisPublicKey, \\\n'> 
                    <'\t\t\tsecretKey=nisSecretKey\n'> <'\n'> <'nisLDAPfieldFromAttribute keys.nobody: \\\n'> <'\t\t\trf_key=uid, \\\n'> 
                    <'\t\t\tpublicKey=nisPublicKey, \\\n'> <'\t\t\tsecretKey=nisSecretKey\n'> <'\n'> 
                    <'# ypservers. This derived from IPlanet implementation not RFC.\n'> <'nisLDAPfieldFromAttribute ypservers: \\\n'> <'\t\t\trf_key=cn\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: list_auto_and_custom_nisLDAPfieldFromAttribute
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {
                                (braced_var_sub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name ALL_DMN_AUTO_CUST_MAPS>
                                  var_name: ALL_DMN_AUTO_CUST_MAPS
                                  prefix_op: <Id.VSub_Pound '#'>
                                  bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              } {<-gt>} {<0>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (DQ <'# Non-default custom auto maps (auto.*)'> <Id.Lit_BadBackslash '\\'> 
                            <n>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [18450 18469]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ForEach
              iter_names: [_MAP]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name ALL_DMN_AUTO_CUST_MAPS>
                        var_name: ALL_DMN_AUTO_CUST_MAPS
                        bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (DQ <'# '> (${ Id.VSub_Name _MAP) <'\n'> <'nisLDAPfieldFromAttribute '> 
                            (${ Id.VSub_Name _MAP) <': '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> 
                            <'                        rf_key=automountKey, '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> 
                            <'                        value=automountInformation\n'>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName MAP_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                )
              redirects: []
            )
            (C {<ask_user_to_update_the_custom_map_entries_too>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: create_nisLDAPfieldFromAttribute
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<CUST_CMT_NEEDED>} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>})
                (command.Simple
                  words: [
                    {<echo>}
                    {
                      (SQ <'\n'> <'# nisLDAPfieldFromAttribute : It specifies how a NIS entries\n'> 
                        <'# field values  are derived from LDAP attribute values. \n'> <'# \n'> <'# The format of nisLDAPfieldFromAttribute is :\n'> 
                        <'# mapName ":" fieldattrspec *("," fieldattrspec)\n'>
                      )
                    }
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_DGreat '>>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_DollarName MAP_FILE)}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
            )
            (C {<list_default_nisLDAPfieldFromAttribute>})
            (C {<list_auto_and_custom_nisLDAPfieldFromAttribute>})
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'\n'> <'#\n'> 
                    <
'#------------------------------------------------------------------------------\n'
                    > <'#\t\t\t \n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName MAP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: create_mapping_file
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<create_n2l_domain_list>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName N2L_DMN_CNT)} {<-eq>} {<0>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<echo>} {(DQ <'There are no domains to serve. No mapping file generated.'>)})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [18641 18654]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
              body: 
                (command.DoGroup
                  children: [
                    (C {<get_ans>} {(DQ <'Enter the mapping file name (h=help):'>)} 
                      {(DQ (${ Id.VSub_Name MAP_FILE))}
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName ANS))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {<Id.Lit_LBracket '['> <Hh> <Id.Lit_RBracket ']'>}
                            {<help>}
                            {<Help>}
                            {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\?'> ch:'?')}
                          ]
                          action: [(C {<display_msg>} {<new_mapping_file_name_help>})]
                          spids: [18705 18720 18726 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                          spids: [18729 18731 18735 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MAP_FILE='> name:MAP_FILE)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name ANS)}
                  spids: [18743]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<MAP_FILE>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName MAP_FILE)})
              ]
            )
            (C {<check_back_mapping_file>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_MAP_FILE='> name:_MAP_FILE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName MAP_FILE)}
                  spids: [18789]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MAP_FILE='> name:MAP_FILE)
                  op: assign_op.Equal
                  rhs: 
                    {(${ Id.VSub_Name TMPDIR) <'/'> (${ Id.VSub_Name TMPMAP) <.> ($ Id.VSub_Dollar '$')}
                  spids: [18792]
                )
              ]
              redirects: []
            )
            (C {<echo>} 
              {
                (DQ <'Generating mapping file temporarily as '> 
                  (word_part.EscapedLiteral
                    token: <Id.Lit_EscapedChar '\\"'>
                    ch: '"'
                  ) (${ Id.VSub_Name MAP_FILE) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"')
                )
              }
            )
            (C {<put_mapping_file_copyright_info>})
            (C {<create_map_lists>})
            (C {<get_nisLDAPdomainContext>})
            (C {<get_nisLDAPyppasswddDomains>})
            (C {<create_nisLDAPdatabaseIdMapping>})
            (C {<create_nisLDAPcommentChar>})
            (C {<create_nisLDAPmapFlags>})
            (C {<create_nisLDAPentryTtl>})
            (C {<create_nisLDAPnameFields>})
            (C {<create_split_field_and_repeatedfield_seperators>})
            (C {<create_nisLDAPobjectDN>})
            (C {<create_nisLDAPattributeFromField>})
            (C {<create_nisLDAPfieldFromAttribute>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DIR_TO_CREATE='> name:DIR_TO_CREATE)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<dirname>} {(${ Id.VSub_Name _MAP_FILE)})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [18910]
                )
              ]
              redirects: []
            )
            (C {<mkdir>} {<-p>} {(${ Id.VSub_Name DIR_TO_CREATE)})
            (C {<echo>} 
              {
                (DQ <'Moving output from temporary file ('> ($ Id.VSub_DollarName MAP_FILE) 
                  <') to actual file ('> ($ Id.VSub_DollarName _MAP_FILE) <')'>
                )
              }
            )
            (C {<mv>} {($ Id.VSub_DollarName MAP_FILE)} {($ Id.VSub_DollarName _MAP_FILE)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MAP_FILE='> name:MAP_FILE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName _MAP_FILE)}
                  spids: [18950]
                )
              ]
              redirects: []
            )
            (C {<echo>} 
              {(DQ <'Finished creation of mapping file ( '> ($ Id.VSub_DollarName MAP_FILE) <' )'>)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: process_config_file
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName CONFIG_FILE_SPECIFIED)} 
                              {<-eq>} {<0>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<display_msg>} {<no_config_file_name_specified>})
                    (C {<get_confirm_nodef>} {(DQ <'Do you want to create the config file (y/n) ?'>)})
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<get_ans>} {(DQ <'Enter the config file name (h=help):'>)} 
                              {(DQ (${ Id.VSub_Name CONFIG_FILE))}
                            )
                            (command.Case
                              to_match: {(DQ ($ Id.VSub_DollarName ANS))}
                              arms: [
                                (case_arm
                                  pat_list: [
                                    {<Id.Lit_LBracket '['> <Hh> <Id.Lit_RBracket ']'>}
                                    {<help>}
                                    {<Help>}
                                    {
                                      (word_part.EscapedLiteral
                                        token: <Id.Lit_EscapedChar '\\?'>
                                        ch: '?'
                                      )
                                    }
                                  ]
                                  action: [(C {<display_msg>} {<new_config_file_name_help>})]
                                  spids: [19069 19084 19090 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'>}]
                                  action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                                  spids: [19093 19095 19099 -1]
                                )
                              ]
                              redirects: []
                            )
                          ]
                        )
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'CONFIG_FILE='>
                              name: CONFIG_FILE
                            )
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name ANS)}
                          spids: [19109]
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<1>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (C {<CONFIG_FILE>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName CONFIG_FILE)})
                      ]
                    )
                  ]
                  spids: [18985 18998]
                )
              ]
              else_action: []
              redirects: []
            )
            (C {<check_back_config_file>})
            (C {<create_config_file>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: process_mapping_file
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName MAPPING_FILE_SPECIFIED)} 
                              {<-eq>} {<0>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<display_msg>} {<no_mapping_file_name_specified>})
                    (C {<get_confirm_nodef>} {(DQ <'Do you want to create the mapping file (y/n) ?'>)})
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                    )
                  ]
                  spids: [19171 19184]
                )
              ]
              else_action: []
              redirects: []
            )
            (C {<create_mapping_file>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROG='> name:PROG)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: (C {<basename>} {($ Id.VSub_Number 0)})
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [19241]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ABS_PROG='> name:ABS_PROG)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number 0)}
          spids: [19253]
        )
      ]
      redirects: []
    )
    (C {<is_root_user>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<echo>} {(DQ <'ERROR : Only root can run '> ($ Id.VSub_DollarName PROG))})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [19265 19278]
        )
      ]
      else_action: []
      redirects: []
    )
    (C {<init>})
    (C {<parse_arg>} {($ Id.VSub_Star '*')})
    (C {<process_config_file>})
    (C {<process_mapping_file>})
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DEBUG)} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>})
        (C {<cleanup>})
      ]
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
  ]
)