/*
 * weinre is available under *either* the terms of the modified BSD license *or* the
 * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
 * 
 * Copyright (c) 2010, 2011 IBM Corporation
 */

 if (typeof Weinre == "undefined") Weinre = {};
 
 Weinre.Versions = {
    weinre:   "@WEINRE_VERSION@", 
    build:    "@BUILD_NUMBER_DATE@", 
    jetty:    "@JETTY_VERSION@", 
    servlet:  "@JAVAX_SERVLET_VERSION@-@JAVAX_SERVLET_VERSION_IMPL@", 
    webkit:   "@WEBKIT_VERSION@",
    cli:      "@CLI_VERSION@",
    json4j:   "@JSON4J_VERSION@",
    swt:      "@SWT_VERSION@",
    modjewel: "@MODJEWEL_VERSION@",
    scooj:    "@SCOOJ_VERSION@"
 };
