Apache Cordova
Copyright 2014 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/legal/src-headers.html#notice-text)

This product includes MIT licesned code. Javascript Pretty Date. Copyright (c) 2011 John Resig (ejohn.org)
