Apache Quickstep (incubating)
Copyright 2017 The Apache Software Foundation.

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).

Portions Copyright (c) 2011-2015, Quickstep Technologies, LLC.
Portions Copyright (c) 2015-2016, Pivotal Software, Inc.