Apache DeviceMap
Copyright <%= grunt.template.today('yyyy') %> The Apache Software Foundation

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

Apache DeviceMap includes subcomponents with separate copyright notices and
license terms. Your use of these subcomponents is subject to the terms
and conditions of those licenses.
