# elif active == 1
        ## Page 2
        
        # elif active == 2
        ## Page 3
        
          
          }) 
          ${dgettext('acct_mgr', 'Objective for Password Policy rules')}
          ${
            dgettext("acct_mgr",
                     "While AccountManagerPlugin does not enforce password rules in "
                     "general, there are some other ways to alter password handling.")
          }
          
          
            
            ${
              dgettext("acct_mgr",
                       "These passwords are used as alternative passwords on request.")
            }
           
          
            
          
        
        # elif active == 3
        
        
          
          }) 
          ${
            dgettext('acct_mgr', 'Objective for Account Registration and Verification rules')
          }
          ${
            dgettext("acct_mgr",
                     "You may require administrative approval of new accounts for the "
                     "user registration process. The ability to immediately ban existing "
                     "accounts is another, related but independent feature.")
          }
          
            
          
          
            
          
          
            
          
          ${
            dgettext('acct_mgr', 'Checks to use for validating Registration requests')
          }
          ${
            i18n_tag(
              dgettext(
                "acct_mgr",
                "All checks provided by AccountManagerPlugin are enabled per default, "
                "but some are configurable on their own.[1:]Currently configured: "
                "[2:%(check_list)s]"),
              'br',
              tag.em(title='[account-manager] register_check'),
              check_list=', '.join(register_check),
            )
          }
          ${
            i18n_tag(
              dgettext(
                "acct_mgr",
                "Checks like [1:BotTrapCheck] won't work at all without additional "
                "configuration."),
              'strong')
          }
          # if disabled_check
          
            
              ${
                i18n_tag(
                  dgettext("acct_mgr",
                           "Required disabled component(s): [1:%(components)s]"),
                  'em',
                  components=', '.join(disabled_check))
              }
            
           
          # endif
          ${
            dgettext("acct_mgr",
                     "Select one or more checks and configure related options. "
                     "Concurrent use of multiple registration checks is encouraged.")
          }
          ${
            dgettext("acct_mgr",
                     "Checks are applied in turn, so order matters. Note that "
                     "some checks are used to validate admin user actions too.")
          }
          # for section in check_list
          
            
            # if section.doc
            ${safe_wiki_to_html(context, section.doc)}
            # endif
            # for option in section.options
            
              
              # if option.doc
              
${option.doc}
              # endif
            
 
            # endfor
          
          # endfor
          ${dgettext('acct_mgr', 'Other Account Policy options')}
          
          
        
        # elif active == 4
        ## Page 5
        
          
          }) 
          ${dgettext('acct_mgr', 'Objective for Account Protection rules')}
          ${
            dgettext(
              "acct_mgr",
              "Passwords are often not constructed as carefully as they should be. "
              "And even a strong passphrase could be sift out, if an attacker is "
              "able to test millions of variants in hours, if not seconds. "
              "Firewalls and full-featured web-servers already offer sophisticated "
              "protection, if one can afford them, handle their installation, "
              "configuration and maintenance.")
          }
          ${
            i18n_tag(
              dgettext(
                "acct_mgr",
                "The [1:AccountGuard] component is another option. It is an add-on to "
                "AccountManagerPlugin's own [2:LoginModule] and provides account "
                "protection by discouraging brute-force login attempts."),
              'strong', 'strong')
          }
          
            
            # if not acctmgr_login
            
              ${dgettext('acct_mgr', "AccountManagerPlugin's LoginModule is disabled.")}
            
            # endif
          
 
          
            
            
              
                
                ${
                  i18n_tag(
                    dgettext("acct_mgr", "Zero means [1:unlimited] lock time here."),
                    'strong')
                }
               
              
                
                  
                  ${
                    dgettext("acct_mgr",
                             "Extend user account lock duration incrementally. "
                             "It uses logarithmic calculation with the factor "
                             "as exponent, accepting decimal numbers >= 1.")
                  }
                  ${
                    i18n_tag(
                      dgettext(
                        "acct_mgr",
                        "[1:Lock time will grow for any value > 1, if the failure "
                        "happens before lock expiration. I.e. value '2' means][2:"
                        "[3:[4:double lock time after 2nd failure,]]"
                        "[5:[6:four times the initial lock time after 3rd,]]"
                        "[7:[8:eight times as long after 4th failure, etc.]]"
                        "]",
                      ),
                      tag.p(class_='hint'),
                      'ul',
                      'li', tag.span(class_='hint'),
                      'li', tag.span(class_='hint'),
                      'li', tag.span(class_='hint'),
                    )
                  }
                  
${
                    dgettext("acct_mgr",
                             "At any time after lock expiration a login failure "
                             "will just trigger a lock and set a new lock timeout, "
                             "but not extend the total lock duration.")
                  }
                 
                ## Last value cache for JS code
                
                
                  
                  ${
                    dgettext('acct_mgr', 'This is relevant only with a progression factor > 1.')
                  }
                 
               
             
           
        
        # else
        ## Page 6
        
          
          # if not admin_available
          
            ${dgettext('acct_mgr', 'Objective for additional preparation')}
            ${
              dgettext('acct_mgr', 'Enable yourself to proceed beyond this initial setup.')
            }
            ${dgettext('acct_mgr', 'Initial Admin Account')}
            
              
              ${
                i18n_tag(
                  dgettext(
                    "acct_mgr",
                    "The user will get [1:TRAC_ADMIN] assigned, that inherits all "
                    "available permissions. One such account is required to configure Trac"
                    " via the admin web-UI. Create and manage more limited admin accounts "
                    "as well as actual user accounts on your own later via the Accounts "
                    "admin panel."),
                  'strong')
              }
              ${
                i18n_tag(
                  dgettext(
                    "acct_mgr",
                    "In detail: AccountManagerPlugin requires [1:ACCTMGR_USER_ADMIN] for "
                    "regular user administration, [2:ACCTMGR_CONFIG_ADMIN] for viewing "
                    "these pages and changing the configuration later. Both are inherited "
                    "by [3:ACCTMGR_ADMIN] permission. To assign permissions you'll need "
                    "[4:PERMISSION_GRANT] inherited by [5:PERMISSION_ADMIN] too."),
                  'strong', 'strong', 'strong', 'strong', 'strong')
              }
              
                
                # if ignore_auth_case
                
${
                  dgettext('acct_mgr', 'Only lowercase usernames allowed')
                }
                # endif
              
 
              
                
              
              
                
              
              # if not password_store
              ${
                dgettext("acct_mgr",
                         "Please take care, that the username is known by the "
                         "HTTP authentication provider.")
              }
              # elif not set_password
              ${
                dgettext("acct_mgr",
                         "Please take care for a valid username, because no configured "
                         "password store supports creating a new account.")
              }
              # endif
              
                
              
            
           
          # endif
          ${dgettext('acct_mgr', 'Check-up')}
          
            # for goal in completion.details
            - 
              # if goal.step
              
                ${goal.desc}
              
              # else
              ${goal.desc}
              # endif
            # endfor
# if admin_available and not completion.ready${
            dgettext('acct_mgr', 'Please resolve all issues marked as critical.')
          }
          # endif
          # if completion.ready
          
            ${
              i18n_tag(
                dgettext(
                  "acct_mgr",
                  "By now you did almost finish AccountManagerPlugin configuration, but "
                  "any changes are temporary yet. Please test and adjust the "
                  "configuration as required, or cancel to revert all changes. Apply "
                  "settings to [1:trac.ini] only if you really want to preserve them "
                  "permanently."),
                'em')
            }
            ## Final configuration preview listing
            
              
              
                # for section, options in roundup|dictsort
                [${section}]
                #   for option, value in options|sort(attribute=0)
                ${option} = ${value}
                #   endfor
                
                # endfor
              
            
           
          # endif
        
        # endif
        ## Bottom navigation