# Copyright 2017 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""lucifer brings salvation to the Autotest code.

Lucifer is the Roman god of the morning star, the light-bringer.  This
code similarly brings light upon the twisted darkness of the Autotest
code.

Lucifer is sometimes known in Christian tradition as the name of Satan
before his fall from grace.  Let this be a warning lest this code suffer
a similar fall.
"""

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
