code: def app_authenticate(self, account=None, flush=True, bailout=False):
          
          with self._get_account(account) as account:
              user = account.get_name()
              password = account.get_password()
              self._dbg(1, "Attempting to app-authenticate %s." % user)
              self._app_authenticate(account, password, flush, bailout)
          self.app_authenticated = True
docs: Attempt to perform application-level authentication. Application
          level authentication is needed on devices where the username and
          password are requested from the user after the connection was
          already accepted by the remote device.
  
          The difference between app-level authentication and protocol-level
          authentication is that in the latter case, the prompting is handled
          by the client, whereas app-level authentication is handled by the
          remote device.
  
          App-level authentication comes in a large variety of forms, and
          while this method tries hard to support them all, there is no
          guarantee that it will always work.
  
          We attempt to smartly recognize the user and password prompts;
          for a list of supported operating systems please check the
          Exscript.protocols.drivers module.
  
          Returns upon finding the first command line prompt. Depending
          on whether the flush argument is True, it also removes the
          prompt from the incoming buffer.
  
          :type  account: Account
          :param account: An account object, like login().
          :type  flush: bool
          :param flush: Whether to flush the last prompt from the buffer.
          :type  bailout: bool
          :param bailout: Whether to wait for a prompt after sending the password.