You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sn...@apache.org on 2014/08/04 21:57:31 UTC

[01/54] [abbrv] [partial] more updates to look and feel

Repository: incubator-usergrid
Updated Branches:
  refs/heads/master d61fba950 -> 9fc1ab408


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/apigee-sdk/apigee.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/apigee-sdk/apigee.js b/deleted/dist-cov/usergrid-portal/bower_components/apigee-sdk/apigee.js
deleted file mode 100644
index 3f843bc..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/apigee-sdk/apigee.js
+++ /dev/null
@@ -1,3260 +0,0 @@
-/*! apigee-javascript-sdk@2.0.5 2014-01-02 */
-/*
-*  This module is a collection of classes designed to make working with
-*  the Apigee App Services API as easy as possible.
-*  Learn more at http://apigee.com/docs/usergrid
-*
-*   Copyright 2012 Apigee Corporation
-*
-*  Licensed under the Apache License, Version 2.0 (the "License");
-*  you may not use this file except in compliance with the License.
-*  You may obtain a copy of the License at
-*
-*      http://www.apache.org/licenses/LICENSE-2.0
-*
-*  Unless required by applicable law or agreed to in writing, software
-*  distributed under the License is distributed on an "AS IS" BASIS,
-*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-*  See the License for the specific language governing permissions and
-*  limitations under the License.
-*
-*  @author rod simpson (rod@apigee.com)
-*  @author matt dobson (matt@apigee.com)
-*  @author ryan bridges (rbridges@apigee.com)
-*/
-(function() {
-    var name = "Usergrid", global = global || this, overwrittenName = global[name];
-    //authentication type constants for Node.js
-    var AUTH_CLIENT_ID = "CLIENT_ID";
-    var AUTH_APP_USER = "APP_USER";
-    var AUTH_NONE = "NONE";
-    if ("undefined" === typeof console) {
-        global.console = {
-            log: function() {},
-            warn: function() {},
-            error: function() {},
-            dir: function() {}
-        };
-    }
-    function Usergrid() {}
-    Usergrid.Client = function(options) {
-        //usergrid enpoint
-        this.URI = options.URI || "https://api.usergrid.com";
-        //Find your Orgname and Appname in the Admin portal (http://apigee.com/usergrid)
-        if (options.orgName) {
-            this.set("orgName", options.orgName);
-        }
-        if (options.appName) {
-            this.set("appName", options.appName);
-        }
-        if (options.appVersion) {
-            this.set("appVersion", options.appVersion);
-        }
-        //authentication data
-        this.authType = options.authType || AUTH_NONE;
-        this.clientId = options.clientId;
-        this.clientSecret = options.clientSecret;
-        this.setToken(options.token || null);
-        //other options
-        this.buildCurl = options.buildCurl || false;
-        this.logging = options.logging || false;
-        //timeout and callbacks
-        this._callTimeout = options.callTimeout || 3e4;
-        //default to 30 seconds
-        this._callTimeoutCallback = options.callTimeoutCallback || null;
-        this.logoutCallback = options.logoutCallback || null;
-    };
-    /*
-    *  Main function for making requests to the API using node.  
-    *  Use Usergrid.Client.prototype.request for cross-platform compatibility.
-
-    *
-    *  options object:
-    *  `method` - http method (GET, POST, PUT, or DELETE), defaults to GET
-    *  `qs` - object containing querystring values to be appended to the uri
-    *  `body` - object containing entity body for POST and PUT requests
-    *  `endpoint` - API endpoint, for example 'users/fred'
-    *  `mQuery` - boolean, set to true if running management query, defaults to false
-    *
-    *  @method _request_node
-    *  @public
-    *  @params {object} options
-    *  @param {function} callback
-    *  @return {callback} callback(err, data)
-    */
-    Usergrid.Client.prototype._request_node = function(options, callback) {
-        global.request = global.request || require("request");
-        var request = global.request;
-        var self = this;
-        var method = options.method || "GET";
-        var endpoint = options.endpoint;
-        var body = options.body || {};
-        var qs = options.qs || {};
-        var mQuery = options.mQuery || false;
-        //is this a query to the management endpoint?
-        var orgName = this.get("orgName");
-        var appName = this.get("appName");
-        if (!mQuery && !orgName && !appName) {
-            if (typeof this.logoutCallback === "function") {
-                return this.logoutCallback(true, "no_org_or_app_name_specified");
-            }
-        }
-        if (mQuery) {
-            uri = this.URI + "/" + endpoint;
-        } else {
-            uri = this.URI + "/" + orgName + "/" + appName + "/" + endpoint;
-        }
-        if (this.authType === AUTH_CLIENT_ID) {
-            qs.client_id = this.clientId;
-            qs.client_secret = this.clientSecret;
-        } else if (this.authType === AUTH_APP_USER) {
-            qs.access_token = self.getToken();
-        }
-        if (this.logging) {
-            console.log("calling: " + method + " " + uri);
-        }
-        this._start = new Date().getTime();
-        var callOptions = {
-            method: method,
-            uri: uri,
-            json: body,
-            qs: qs
-        };
-        request(callOptions, function(err, r, data) {
-            if (self.buildCurl) {
-                options.uri = r.request.uri.href;
-                self.buildCurlCall(options);
-            }
-            self._end = new Date().getTime();
-            if (r.statusCode === 200) {
-                if (self.logging) {
-                    console.log("success (time: " + self.calcTimeDiff() + "): " + method + " " + uri);
-                }
-                callback(err, data);
-            } else {
-                err = true;
-                if (r.error === "auth_expired_session_token" || r.error === "auth_missing_credentials" || r.error == "auth_unverified_oath" || r.error === "expired_token" || r.error === "unauthorized" || r.error === "auth_invalid") {
-                    //this error type means the user is not authorized. If a logout function is defined, call it
-                    var error = r.body.error;
-                    var errorDesc = r.body.error_description;
-                    if (self.logging) {
-                        console.log("Error (" + r.statusCode + ")(" + error + "): " + errorDesc);
-                    }
-                    //if the user has specified a logout callback:
-                    if (typeof self.logoutCallback === "function") {
-                        self.logoutCallback(err, data);
-                    } else if (typeof callback === "function") {
-                        callback(err, data);
-                    }
-                } else {
-                    var error = r.body.error;
-                    var errorDesc = r.body.error_description;
-                    if (self.logging) {
-                        console.log("Error (" + r.statusCode + ")(" + error + "): " + errorDesc);
-                    }
-                    if (typeof callback === "function") {
-                        callback(err, data);
-                    }
-                }
-            }
-        });
-    };
-    /*
-    *  Main function for making requests to the API using a browser.  
-    *  Use Usergrid.Client.prototype.request for cross-platform compatibility.
-
-    *
-    *  options object:
-    *  `method` - http method (GET, POST, PUT, or DELETE), defaults to GET
-    *  `qs` - object containing querystring values to be appended to the uri
-    *  `body` - object containing entity body for POST and PUT requests
-    *  `endpoint` - API endpoint, for example 'users/fred'
-    *  `mQuery` - boolean, set to true if running management query, defaults to false
-    *
-    *  @method _request_node
-    *  @public
-    *  @params {object} options
-    *  @param {function} callback
-    *  @return {callback} callback(err, data)
-    */
-    Usergrid.Client.prototype._request_xhr = function(options, callback) {
-        var self = this;
-        var method = options.method || "GET";
-        var endpoint = options.endpoint;
-        var body = options.body || {};
-        var qs = options.qs || {};
-        var mQuery = options.mQuery || false;
-        //is this a query to the management endpoint?
-        var orgName = this.get("orgName");
-        var appName = this.get("appName");
-        if (!mQuery && !orgName && !appName) {
-            if (typeof this.logoutCallback === "function") {
-                return this.logoutCallback(true, "no_org_or_app_name_specified");
-            }
-        }
-        var uri;
-        if (mQuery) {
-            uri = this.URI + "/" + endpoint;
-        } else {
-            uri = this.URI + "/" + orgName + "/" + appName + "/" + endpoint;
-        }
-        if (self.getToken()) {
-            qs.access_token = self.getToken();
-        }
-        //append params to the path
-        var encoded_params = encodeParams(qs);
-        if (encoded_params) {
-            uri += "?" + encoded_params;
-        }
-        //stringify the body object
-        body = JSON.stringify(body);
-        //so far so good, so run the query
-        var xhr = new XMLHttpRequest();
-        xhr.open(method, uri, true);
-        //add content type = json if there is a json payload
-        if (body) {
-            xhr.setRequestHeader("Content-Type", "application/json");
-            xhr.setRequestHeader("Accept", "application/json");
-        }
-        // Handle response.
-        xhr.onerror = function(response) {
-            self._end = new Date().getTime();
-            if (self.logging) {
-                console.log("success (time: " + self.calcTimeDiff() + "): " + method + " " + uri);
-            }
-            if (self.logging) {
-                console.log("Error: API call failed at the network level.");
-            }
-            //network error
-            clearTimeout(timeout);
-            var err = true;
-            if (typeof callback === "function") {
-                callback(err, response);
-            }
-        };
-        xhr.onload = function(response) {
-            //call timing, get time, then log the call
-            self._end = new Date().getTime();
-            if (self.logging) {
-                console.log("success (time: " + self.calcTimeDiff() + "): " + method + " " + uri);
-            }
-            //call completed
-            clearTimeout(timeout);
-            //decode the response
-            try {
-                response = JSON.parse(xhr.responseText);
-            } catch (e) {
-                response = {
-                    error: "unhandled_error",
-                    error_description: xhr.responseText
-                };
-                xhr.status = xhr.status === 200 ? 400 : xhr.status;
-                console.error(e);
-            }
-            if (xhr.status != 200) {
-                //there was an api error
-                var error = response.error;
-                var error_description = response.error_description;
-                if (self.logging) {
-                    console.log("Error (" + xhr.status + ")(" + error + "): " + error_description);
-                }
-                if (error == "auth_expired_session_token" || error == "auth_missing_credentials" || error == "auth_unverified_oath" || error == "expired_token" || error == "unauthorized" || error == "auth_invalid") {
-                    //these errors mean the user is not authorized for whatever reason. If a logout function is defined, call it
-                    //if the user has specified a logout callback:
-                    if (typeof self.logoutCallback === "function") {
-                        return self.logoutCallback(true, response);
-                    }
-                }
-                if (typeof callback === "function") {
-                    callback(true, response);
-                }
-            } else {
-                if (typeof callback === "function") {
-                    callback(false, response);
-                }
-            }
-        };
-        var timeout = setTimeout(function() {
-            xhr.abort();
-            if (self._callTimeoutCallback === "function") {
-                self._callTimeoutCallback("API CALL TIMEOUT");
-            } else {
-                self.callback("API CALL TIMEOUT");
-            }
-        }, self._callTimeout);
-        //set for 30 seconds
-        if (this.logging) {
-            console.log("calling: " + method + " " + uri);
-        }
-        if (this.buildCurl) {
-            var curlOptions = {
-                uri: uri,
-                body: body,
-                method: method
-            };
-            this.buildCurlCall(curlOptions);
-        }
-        this._start = new Date().getTime();
-        xhr.send(body);
-    };
-    /*
-    *  Main function for making requests to the API using node.  You may call this method directly
-    *
-    *  options object:
-    *  `method` - http method (GET, POST, PUT, or DELETE), defaults to GET
-    *  `qs` - object containing querystring values to be appended to the uri
-    *  `body` - object containing entity body for POST and PUT requests
-    *  `endpoint` - API endpoint, for example 'users/fred'
-    *  `mQuery` - boolean, set to true if running management query, defaults to false
-    *
-    *  @method _request_node
-    *  @public
-    *  @params {object} options
-    *  @param {function} callback
-    *  @return {callback} callback(err, data)
-    */
-    Usergrid.Client.prototype.request = function(options, callback) {
-        if ("undefined" !== typeof window) {
-            Usergrid.Client.prototype._request_xhr.apply(this, arguments);
-        } else {
-            Usergrid.Client.prototype._request_node.apply(this, arguments);
-        }
-    };
-    /*
-     *  function for building asset urls
-     *
-     *  @method buildAssetURL
-     *  @public
-     *  @params {string} uuid
-     *  @return {string} assetURL
-     */
-    Usergrid.Client.prototype.buildAssetURL = function(uuid) {
-        var self = this;
-        var qs = {};
-        var assetURL = this.URI + "/" + this.orgName + "/" + this.appName + "/assets/" + uuid + "/data";
-        if (self.getToken()) {
-            qs.access_token = self.getToken();
-        }
-        //append params to the path
-        var encoded_params = encodeParams(qs);
-        if (encoded_params) {
-            assetURL += "?" + encoded_params;
-        }
-        return assetURL;
-    };
-    /*
-     *  Main function for creating new groups. Call this directly.
-     *
-     *  @method createGroup
-     *  @public
-     *  @params {string} path
-     *  @param {function} callback
-     *  @return {callback} callback(err, data)
-     */
-    Usergrid.Client.prototype.createGroup = function(options, callback) {
-        var getOnExist = options.getOnExist || false;
-        options = {
-            path: options.path,
-            client: this,
-            data: options
-        };
-        var group = new Usergrid.Group(options);
-        group.fetch(function(err, data) {
-            var okToSave = err && "service_resource_not_found" === data.error || "no_name_specified" === data.error || "null_pointer" === data.error || !err && getOnExist;
-            if (okToSave) {
-                group.save(function(err, data) {
-                    if (typeof callback === "function") {
-                        callback(err, group);
-                    }
-                });
-            } else {
-                if (typeof callback === "function") {
-                    callback(err, group);
-                }
-            }
-        });
-    };
-    /*
-    *  Main function for creating new entities - should be called directly.
-    *
-    *  options object: options {data:{'type':'collection_type', 'key':'value'}, uuid:uuid}}
-    *
-    *  @method createEntity
-    *  @public
-    *  @params {object} options
-    *  @param {function} callback
-    *  @return {callback} callback(err, data)
-    */
-    Usergrid.Client.prototype.createEntity = function(options, callback) {
-        // todo: replace the check for new / save on not found code with simple save
-        // when users PUT on no user fix is in place.
-        /*
-    options = {
-      client:this,
-      data:options
-    }
-    var entity = new Usergrid.Entity(options);
-    entity.save(function(err, data) {
-      if (typeof(callback) === 'function') {
-      callback(err, entity);
-      }
-    });
-    */
-        var getOnExist = options.getOnExist || false;
-        //if true, will return entity if one already exists
-        options = {
-            client: this,
-            data: options
-        };
-        var entity = new Usergrid.Entity(options);
-        entity.fetch(function(err, data) {
-            //if the fetch doesn't find what we are looking for, or there is no error, do a save
-            var okToSave = err && "service_resource_not_found" === data.error || "no_name_specified" === data.error || "null_pointer" === data.error || !err && getOnExist;
-            if (okToSave) {
-                entity.set(options.data);
-                //add the data again just in case
-                entity.save(function(err, data) {
-                    if (typeof callback === "function") {
-                        callback(err, entity, data);
-                    }
-                });
-            } else {
-                if (typeof callback === "function") {
-                    callback(err, entity, data);
-                }
-            }
-        });
-    };
-    /*
-     *  Main function for getting existing entities - should be called directly.
-     *
-     *  You must supply a uuid or (username or name). Username only applies to users.
-     *  Name applies to all custom entities
-     *
-     *  options object: options {data:{'type':'collection_type', 'name':'value', 'username':'value'}, uuid:uuid}}
-     *
-     *  @method createEntity
-     *  @public
-     *  @params {object} options
-     *  @param {function} callback
-     *  @return {callback} callback(err, data)
-     */
-    Usergrid.Client.prototype.getEntity = function(options, callback) {
-        options = {
-            client: this,
-            data: options
-        };
-        var entity = new Usergrid.Entity(options);
-        entity.fetch(function(err, data) {
-            if (typeof callback === "function") {
-                callback(err, entity, data);
-            }
-        });
-    };
-    /*
-     *  Main function for restoring an entity from serialized data.
-     *
-     *  serializedObject should have come from entityObject.serialize();
-     *
-     *  @method restoreEntity
-     *  @public
-     *  @param {string} serializedObject
-     *  @return {object} Entity Object
-     */
-    Usergrid.Client.prototype.restoreEntity = function(serializedObject) {
-        var data = JSON.parse(serializedObject);
-        options = {
-            client: this,
-            data: data
-        };
-        var entity = new Usergrid.Entity(options);
-        return entity;
-    };
-    /*
-    *  Main function for creating new collections - should be called directly.
-    *
-    *  options object: options {client:client, type: type, qs:qs}
-    *
-    *  @method createCollection
-    *  @public
-    *  @params {object} options
-    *  @param {function} callback
-    *  @return {callback} callback(err, data)
-    */
-    Usergrid.Client.prototype.createCollection = function(options, callback) {
-        options.client = this;
-        var collection = new Usergrid.Collection(options, function(err, data) {
-            if (typeof callback === "function") {
-                callback(err, collection, data);
-            }
-        });
-    };
-    /*
-     *  Main function for restoring a collection from serialized data.
-     *
-     *  serializedObject should have come from collectionObject.serialize();
-     *
-     *  @method restoreCollection
-     *  @public
-     *  @param {string} serializedObject
-     *  @return {object} Collection Object
-     */
-    Usergrid.Client.prototype.restoreCollection = function(serializedObject) {
-        var data = JSON.parse(serializedObject);
-        data.client = this;
-        var collection = new Usergrid.Collection(data);
-        return collection;
-    };
-    /*
-     *  Main function for retrieving a user's activity feed.
-     *
-     *  @method getFeedForUser
-     *  @public
-     *  @params {string} username
-     *  @param {function} callback
-     *  @return {callback} callback(err, data, activities)
-     */
-    Usergrid.Client.prototype.getFeedForUser = function(username, callback) {
-        var options = {
-            method: "GET",
-            endpoint: "users/" + username + "/feed"
-        };
-        this.request(options, function(err, data) {
-            if (typeof callback === "function") {
-                if (err) {
-                    callback(err);
-                } else {
-                    callback(err, data, data.entities);
-                }
-            }
-        });
-    };
-    /*
-    *  Function for creating new activities for the current user - should be called directly.
-    *
-    *  //user can be any of the following: "me", a uuid, a username
-    *  Note: the "me" alias will reference the currently logged in user (e.g. 'users/me/activties')
-    *
-    *  //build a json object that looks like this:
-    *  var options =
-    *  {
-    *    "actor" : {
-    *      "displayName" :"myusername",
-    *      "uuid" : "myuserid",
-    *      "username" : "myusername",
-    *      "email" : "myemail",
-    *      "picture": "http://path/to/picture",
-    *      "image" : {
-    *          "duration" : 0,
-    *          "height" : 80,
-    *          "url" : "http://www.gravatar.com/avatar/",
-    *          "width" : 80
-    *      },
-    *    },
-    *    "verb" : "post",
-    *    "content" : "My cool message",
-    *    "lat" : 48.856614,
-    *    "lon" : 2.352222
-    *  }
-    *
-    *  @method createEntity
-    *  @public
-    *  @params {string} user // "me", a uuid, or a username
-    *  @params {object} options
-    *  @param {function} callback
-    *  @return {callback} callback(err, data)
-    */
-    Usergrid.Client.prototype.createUserActivity = function(user, options, callback) {
-        options.type = "users/" + user + "/activities";
-        options = {
-            client: this,
-            data: options
-        };
-        var entity = new Usergrid.Entity(options);
-        entity.save(function(err, data) {
-            if (typeof callback === "function") {
-                callback(err, entity);
-            }
-        });
-    };
-    /*
-     *  Function for creating user activities with an associated user entity.
-     *
-     *  user object:
-     *  The user object passed into this function is an instance of Usergrid.Entity.
-     *
-     *  @method createUserActivityWithEntity
-     *  @public
-     *  @params {object} user
-     *  @params {string} content
-     *  @param {function} callback
-     *  @return {callback} callback(err, data)
-     */
-    Usergrid.Client.prototype.createUserActivityWithEntity = function(user, content, callback) {
-        var username = user.get("username");
-        var options = {
-            actor: {
-                displayName: username,
-                uuid: user.get("uuid"),
-                username: username,
-                email: user.get("email"),
-                picture: user.get("picture"),
-                image: {
-                    duration: 0,
-                    height: 80,
-                    url: user.get("picture"),
-                    width: 80
-                }
-            },
-            verb: "post",
-            content: content
-        };
-        this.createUserActivity(username, options, callback);
-    };
-    /*
-    *  A private method to get call timing of last call
-    */
-    Usergrid.Client.prototype.calcTimeDiff = function() {
-        var seconds = 0;
-        var time = this._end - this._start;
-        try {
-            seconds = (time / 10 / 60).toFixed(2);
-        } catch (e) {
-            return 0;
-        }
-        return seconds;
-    };
-    /*
-     *  A public method to store the OAuth token for later use - uses localstorage if available
-     *
-     *  @method setToken
-     *  @public
-     *  @params {string} token
-     *  @return none
-     */
-    Usergrid.Client.prototype.setToken = function(token) {
-        this.set("token", token);
-    };
-    /*
-     *  A public method to get the OAuth token
-     *
-     *  @method getToken
-     *  @public
-     *  @return {string} token
-     */
-    Usergrid.Client.prototype.getToken = function() {
-        return this.get("token");
-    };
-    Usergrid.Client.prototype.setObject = function(key, value) {
-        if (value) {
-            value = JSON.stringify(value);
-        }
-        this.set(key, value);
-    };
-    Usergrid.Client.prototype.set = function(key, value) {
-        var keyStore = "apigee_" + key;
-        this[key] = value;
-        if (typeof Storage !== "undefined") {
-            if (value) {
-                localStorage.setItem(keyStore, value);
-            } else {
-                localStorage.removeItem(keyStore);
-            }
-        }
-    };
-    Usergrid.Client.prototype.getObject = function(key) {
-        return JSON.parse(this.get(key));
-    };
-    Usergrid.Client.prototype.get = function(key) {
-        var keyStore = "apigee_" + key;
-        if (this[key]) {
-            return this[key];
-        } else if (typeof Storage !== "undefined") {
-            return localStorage.getItem(keyStore);
-        }
-        return null;
-    };
-    /*
-     * A public facing helper method for signing up users
-     *
-     * @method signup
-     * @public
-     * @params {string} username
-     * @params {string} password
-     * @params {string} email
-     * @params {string} name
-     * @param {function} callback
-     * @return {callback} callback(err, data)
-     */
-    Usergrid.Client.prototype.signup = function(username, password, email, name, callback) {
-        var self = this;
-        var options = {
-            type: "users",
-            username: username,
-            password: password,
-            email: email,
-            name: name
-        };
-        this.createEntity(options, callback);
-    };
-    /*
-    *
-    *  A public method to log in an app user - stores the token for later use
-    *
-    *  @method login
-    *  @public
-    *  @params {string} username
-    *  @params {string} password
-    *  @param {function} callback
-    *  @return {callback} callback(err, data)
-    */
-    Usergrid.Client.prototype.login = function(username, password, callback) {
-        var self = this;
-        var options = {
-            method: "POST",
-            endpoint: "token",
-            body: {
-                username: username,
-                password: password,
-                grant_type: "password"
-            }
-        };
-        this.request(options, function(err, data) {
-            var user = {};
-            if (err && self.logging) {
-                console.log("error trying to log user in");
-            } else {
-                options = {
-                    client: self,
-                    data: data.user
-                };
-                user = new Usergrid.Entity(options);
-                self.setToken(data.access_token);
-            }
-            if (typeof callback === "function") {
-                callback(err, data, user);
-            }
-        });
-    };
-    Usergrid.Client.prototype.reAuthenticateLite = function(callback) {
-        var self = this;
-        var options = {
-            method: "GET",
-            endpoint: "management/me",
-            mQuery: true
-        };
-        this.request(options, function(err, response) {
-            if (err && self.logging) {
-                console.log("error trying to re-authenticate user");
-            } else {
-                //save the re-authed token and current email/username
-                self.setToken(response.access_token);
-            }
-            if (typeof callback === "function") {
-                callback(err);
-            }
-        });
-    };
-    Usergrid.Client.prototype.reAuthenticate = function(email, callback) {
-        var self = this;
-        var options = {
-            method: "GET",
-            endpoint: "management/users/" + email,
-            mQuery: true
-        };
-        this.request(options, function(err, response) {
-            var organizations = {};
-            var applications = {};
-            var user = {};
-            var data;
-            if (err && self.logging) {
-                console.log("error trying to full authenticate user");
-            } else {
-                data = response.data;
-                self.setToken(data.token);
-                self.set("email", data.email);
-                //delete next block and corresponding function when iframes are refactored
-                localStorage.setItem("accessToken", data.token);
-                localStorage.setItem("userUUID", data.uuid);
-                localStorage.setItem("userEmail", data.email);
-                //end delete block
-                var userData = {
-                    username: data.username,
-                    email: data.email,
-                    name: data.name,
-                    uuid: data.uuid
-                };
-                options = {
-                    client: self,
-                    data: userData
-                };
-                user = new Usergrid.Entity(options);
-                organizations = data.organizations;
-                var org = "";
-                try {
-                    //if we have an org stored, then use that one. Otherwise, use the first one.
-                    var existingOrg = self.get("orgName");
-                    org = organizations[existingOrg] ? organizations[existingOrg] : organizations[Object.keys(organizations)[0]];
-                    self.set("orgName", org.name);
-                } catch (e) {
-                    err = true;
-                    if (self.logging) {
-                        console.log("error selecting org");
-                    }
-                }
-                //should always be an org
-                applications = self.parseApplicationsArray(org);
-                self.selectFirstApp(applications);
-                self.setObject("organizations", organizations);
-                self.setObject("applications", applications);
-            }
-            if (typeof callback === "function") {
-                callback(err, data, user, organizations, applications);
-            }
-        });
-    };
-    /*
-    *  A public method to log in an app user with facebook - stores the token for later use
-    *
-    *  @method loginFacebook
-    *  @public
-    *  @params {string} username
-    *  @params {string} password
-    *  @param {function} callback
-    *  @return {callback} callback(err, data)
-    */
-    Usergrid.Client.prototype.loginFacebook = function(facebookToken, callback) {
-        var self = this;
-        var options = {
-            method: "GET",
-            endpoint: "auth/facebook",
-            qs: {
-                fb_access_token: facebookToken
-            }
-        };
-        this.request(options, function(err, data) {
-            var user = {};
-            if (err && self.logging) {
-                console.log("error trying to log user in");
-            } else {
-                var options = {
-                    client: self,
-                    data: data.user
-                };
-                user = new Usergrid.Entity(options);
-                self.setToken(data.access_token);
-            }
-            if (typeof callback === "function") {
-                callback(err, data, user);
-            }
-        });
-    };
-    /*
-    *  A public method to get the currently logged in user entity
-    *
-    *  @method getLoggedInUser
-    *  @public
-    *  @param {function} callback
-    *  @return {callback} callback(err, data)
-    */
-    Usergrid.Client.prototype.getLoggedInUser = function(callback) {
-        if (!this.getToken()) {
-            callback(true, null, null);
-        } else {
-            var self = this;
-            var options = {
-                method: "GET",
-                endpoint: "users/me"
-            };
-            this.request(options, function(err, data) {
-                if (err) {
-                    if (self.logging) {
-                        console.log("error trying to log user in");
-                    }
-                    if (typeof callback === "function") {
-                        callback(err, data, null);
-                    }
-                } else {
-                    var options = {
-                        client: self,
-                        data: data.entities[0]
-                    };
-                    var user = new Usergrid.Entity(options);
-                    if (typeof callback === "function") {
-                        callback(err, data, user);
-                    }
-                }
-            });
-        }
-    };
-    /*
-    *  A public method to test if a user is logged in - does not guarantee that the token is still valid,
-    *  but rather that one exists
-    *
-    *  @method isLoggedIn
-    *  @public
-    *  @return {boolean} Returns true the user is logged in (has token and uuid), false if not
-    */
-    Usergrid.Client.prototype.isLoggedIn = function() {
-        if (this.getToken() && this.getToken() != "null") {
-            return true;
-        }
-        return false;
-    };
-    /*
-    *  A public method to log out an app user - clears all user fields from client
-    *
-    *  @method logout
-    *  @public
-    *  @return none
-    */
-    Usergrid.Client.prototype.logout = function() {
-        this.setToken(null);
-    };
-    /*
-    *  A private method to build the curl call to display on the command line
-    *
-    *  @method buildCurlCall
-    *  @private
-    *  @param {object} options
-    *  @return {string} curl
-    */
-    Usergrid.Client.prototype.buildCurlCall = function(options) {
-        var curl = "curl";
-        var method = (options.method || "GET").toUpperCase();
-        var body = options.body || {};
-        var uri = options.uri;
-        //curl - add the method to the command (no need to add anything for GET)
-        if (method === "POST") {
-            curl += " -X POST";
-        } else if (method === "PUT") {
-            curl += " -X PUT";
-        } else if (method === "DELETE") {
-            curl += " -X DELETE";
-        } else {
-            curl += " -X GET";
-        }
-        //curl - append the path
-        curl += " " + uri;
-        //curl - add the body
-        if ("undefined" !== typeof window) {
-            body = JSON.stringify(body);
-        }
-        //only in node module
-        if (body !== '"{}"' && method !== "GET" && method !== "DELETE") {
-            //curl - add in the json obj
-            curl += " -d '" + body + "'";
-        }
-        //log the curl command to the console
-        console.log(curl);
-        return curl;
-    };
-    Usergrid.Client.prototype.getDisplayImage = function(email, picture, size) {
-        try {
-            if (picture) {
-                return picture;
-            }
-            var size = size || 50;
-            if (email.length) {
-                return "https://secure.gravatar.com/avatar/" + MD5(email) + "?s=" + size + encodeURI("&d=https://apigee.com/usergrid/images/user_profile.png");
-            } else {
-                return "https://apigee.com/usergrid/images/user_profile.png";
-            }
-        } catch (e) {
-            return "https://apigee.com/usergrid/images/user_profile.png";
-        }
-    };
-    /*
-    *  A class to Model a Usergrid Entity.
-    *  Set the type and uuid of entity in the 'data' json object
-    *
-    *  @constructor
-    *  @param {object} options {client:client, data:{'type':'collection_type', uuid:'uuid', 'key':'value'}}
-    */
-    Usergrid.Entity = function(options) {
-        if (options) {
-            this._data = options.data || {};
-            this._client = options.client || {};
-        }
-    };
-    /*
-     *  returns a serialized version of the entity object
-     *
-     *  Note: use the client.restoreEntity() function to restore
-     *
-     *  @method serialize
-     *  @return {string} data
-     */
-    Usergrid.Entity.prototype.serialize = function() {
-        return JSON.stringify(this._data);
-    };
-    /*
-    *  gets a specific field or the entire data object. If null or no argument
-    *  passed, will return all data, else, will return a specific field
-    *
-    *  @method get
-    *  @param {string} field
-    *  @return {string} || {object} data
-    */
-    Usergrid.Entity.prototype.get = function(field) {
-        if (field) {
-            return this._data[field];
-        } else {
-            return this._data;
-        }
-    };
-    /*
-    *  adds a specific key value pair or object to the Entity's data
-    *  is additive - will not overwrite existing values unless they
-    *  are explicitly specified
-    *
-    *  @method set
-    *  @param {string} key || {object}
-    *  @param {string} value
-    *  @return none
-    */
-    Usergrid.Entity.prototype.set = function(key, value) {
-        if (typeof key === "object") {
-            for (var field in key) {
-                this._data[field] = key[field];
-            }
-        } else if (typeof key === "string") {
-            if (value === null) {
-                delete this._data[key];
-            } else {
-                this._data[key] = value;
-            }
-        } else {
-            this._data = {};
-        }
-    };
-    /*
-    *  Saves the entity back to the database
-    *
-    *  @method save
-    *  @public
-    *  @param {function} callback
-    *  @return {callback} callback(err, data)
-    */
-    Usergrid.Entity.prototype.save = function(callback) {
-        var type = this.get("type");
-        var method = "POST";
-        if (isUUID(this.get("uuid"))) {
-            method = "PUT";
-            type += "/" + this.get("uuid");
-        }
-        //update the entity
-        var self = this;
-        var data = {};
-        var entityData = this.get();
-        //remove system specific properties
-        for (var item in entityData) {
-            if (item === "metadata" || item === "created" || item === "modified" || item === "type" || item === "activated" || item === "uuid") {
-                continue;
-            }
-            data[item] = entityData[item];
-        }
-        var options = {
-            method: method,
-            endpoint: type,
-            body: data
-        };
-        //save the entity first
-        this._client.request(options, function(err, retdata) {
-            if (err && self._client.logging) {
-                console.log("could not save entity");
-                if (typeof callback === "function") {
-                    return callback(err, retdata, self);
-                }
-            } else {
-                if (retdata.entities) {
-                    if (retdata.entities.length) {
-                        var entity = retdata.entities[0];
-                        self.set(entity);
-                        var path = retdata.path;
-                        //for connections, API returns type
-                        while (path.substring(0, 1) === "/") {
-                            path = path.substring(1);
-                        }
-                        self.set("type", path);
-                    }
-                }
-                //if this is a user, update the password if it has been specified;
-                var needPasswordChange = (self.get("type") === "user" || self.get("type") === "users") && entityData.oldpassword && entityData.newpassword;
-                if (needPasswordChange) {
-                    //Note: we have a ticket in to change PUT calls to /users to accept the password change
-                    //      once that is done, we will remove this call and merge it all into one
-                    var pwdata = {};
-                    pwdata.oldpassword = entityData.oldpassword;
-                    pwdata.newpassword = entityData.newpassword;
-                    var options = {
-                        method: "PUT",
-                        endpoint: type + "/password",
-                        body: pwdata
-                    };
-                    self._client.request(options, function(err, data) {
-                        if (err && self._client.logging) {
-                            console.log("could not update user");
-                        }
-                        //remove old and new password fields so they don't end up as part of the entity object
-                        self.set("oldpassword", null);
-                        self.set("newpassword", null);
-                        if (typeof callback === "function") {
-                            callback(err, data, self);
-                        }
-                    });
-                } else if (typeof callback === "function") {
-                    callback(err, retdata, self);
-                }
-            }
-        });
-    };
-    /*
-    *  refreshes the entity by making a GET call back to the database
-    *
-    *  @method fetch
-    *  @public
-    *  @param {function} callback
-    *  @return {callback} callback(err, data)
-    */
-    Usergrid.Entity.prototype.fetch = function(callback) {
-        var type = this.get("type");
-        var self = this;
-        //Check for an entity type, then if a uuid is available, use that, otherwise, use the name
-        try {
-            if (type === undefined) {
-                throw "cannot fetch entity, no entity type specified";
-            } else if (this.get("uuid")) {
-                type += "/" + this.get("uuid");
-            } else if (type === "users" && this.get("username")) {
-                type += "/" + this.get("username");
-            } else if (this.get("name")) {
-                type += "/" + encodeURIComponent(this.get("name"));
-            } else if (typeof callback === "function") {
-                throw "no_name_specified";
-            }
-        } catch (e) {
-            if (self._client.logging) {
-                console.log(e);
-            }
-            return callback(true, {
-                error: e
-            }, self);
-        }
-        var options = {
-            method: "GET",
-            endpoint: type
-        };
-        this._client.request(options, function(err, data) {
-            if (err && self._client.logging) {
-                console.log("could not get entity");
-            } else {
-                if (data.user) {
-                    self.set(data.user);
-                    self._json = JSON.stringify(data.user, null, 2);
-                } else if (data.entities) {
-                    if (data.entities.length) {
-                        var entity = data.entities[0];
-                        self.set(entity);
-                    }
-                }
-            }
-            if (typeof callback === "function") {
-                callback(err, data, self);
-            }
-        });
-    };
-    /*
-    *  deletes the entity from the database - will only delete
-    *  if the object has a valid uuid
-    *
-    *  @method destroy
-    *  @public
-    *  @param {function} callback
-    *  @return {callback} callback(err, data)
-    *
-    */
-    Usergrid.Entity.prototype.destroy = function(callback) {
-        var self = this;
-        var type = this.get("type");
-        if (isUUID(this.get("uuid"))) {
-            type += "/" + this.get("uuid");
-        } else {
-            if (typeof callback === "function") {
-                var error = "Error trying to delete object - no uuid specified.";
-                if (self._client.logging) {
-                    console.log(error);
-                }
-                callback(true, error);
-            }
-        }
-        var options = {
-            method: "DELETE",
-            endpoint: type
-        };
-        this._client.request(options, function(err, data) {
-            if (err && self._client.logging) {
-                console.log("entity could not be deleted");
-            } else {
-                self.set(null);
-            }
-            if (typeof callback === "function") {
-                callback(err, data);
-            }
-        });
-    };
-    /*
-    *  connects one entity to another
-    *
-    *  @method connect
-    *  @public
-    *  @param {string} connection
-    *  @param {object} entity
-    *  @param {function} callback
-    *  @return {callback} callback(err, data)
-    *
-    */
-    Usergrid.Entity.prototype.connect = function(connection, entity, callback) {
-        var self = this;
-        var error;
-        //connectee info
-        var connecteeType = entity.get("type");
-        var connectee = this.getEntityId(entity);
-        if (!connectee) {
-            if (typeof callback === "function") {
-                error = "Error trying to delete object - no uuid specified.";
-                if (self._client.logging) {
-                    console.log(error);
-                }
-                callback(true, error);
-            }
-            return;
-        }
-        //connector info
-        var connectorType = this.get("type");
-        var connector = this.getEntityId(this);
-        if (!connector) {
-            if (typeof callback === "function") {
-                error = "Error in connect - no uuid specified.";
-                if (self._client.logging) {
-                    console.log(error);
-                }
-                callback(true, error);
-            }
-            return;
-        }
-        var endpoint = connectorType + "/" + connector + "/" + connection + "/" + connecteeType + "/" + connectee;
-        var options = {
-            method: "POST",
-            endpoint: endpoint
-        };
-        this._client.request(options, function(err, data) {
-            if (err && self._client.logging) {
-                console.log("entity could not be connected");
-            }
-            if (typeof callback === "function") {
-                callback(err, data);
-            }
-        });
-    };
-    /*
-    *  returns a unique identifier for an entity
-    *
-    *  @method connect
-    *  @public
-    *  @param {object} entity
-    *  @param {function} callback
-    *  @return {callback} callback(err, data)
-    *
-    */
-    Usergrid.Entity.prototype.getEntityId = function(entity) {
-        var id = false;
-        if (isUUID(entity.get("uuid"))) {
-            id = entity.get("uuid");
-        } else {
-            if (type === "users") {
-                id = entity.get("username");
-            } else if (entity.get("name")) {
-                id = entity.get("name");
-            }
-        }
-        return id;
-    };
-    /*
-    *  gets an entities connections
-    *
-    *  @method getConnections
-    *  @public
-    *  @param {string} connection
-    *  @param {object} entity
-    *  @param {function} callback
-    *  @return {callback} callback(err, data, connections)
-    *
-    */
-    Usergrid.Entity.prototype.getConnections = function(connection, callback) {
-        var self = this;
-        //connector info
-        var connectorType = this.get("type");
-        var connector = this.getEntityId(this);
-        if (!connector) {
-            if (typeof callback === "function") {
-                var error = "Error in getConnections - no uuid specified.";
-                if (self._client.logging) {
-                    console.log(error);
-                }
-                callback(true, error);
-            }
-            return;
-        }
-        var endpoint = connectorType + "/" + connector + "/" + connection + "/";
-        var options = {
-            method: "GET",
-            endpoint: endpoint
-        };
-        this._client.request(options, function(err, data) {
-            if (err && self._client.logging) {
-                console.log("entity could not be connected");
-            }
-            self[connection] = {};
-            var length = data.entities.length;
-            for (var i = 0; i < length; i++) {
-                if (data.entities[i].type === "user") {
-                    self[connection][data.entities[i].username] = data.entities[i];
-                } else {
-                    self[connection][data.entities[i].name] = data.entities[i];
-                }
-            }
-            if (typeof callback === "function") {
-                callback(err, data, data.entities);
-            }
-        });
-    };
-    Usergrid.Entity.prototype.getGroups = function(callback) {
-        var self = this;
-        var endpoint = "users" + "/" + this.get("uuid") + "/groups";
-        var options = {
-            method: "GET",
-            endpoint: endpoint
-        };
-        this._client.request(options, function(err, data) {
-            if (err && self._client.logging) {
-                console.log("entity could not be connected");
-            }
-            self.groups = data.entities;
-            if (typeof callback === "function") {
-                callback(err, data, data.entities);
-            }
-        });
-    };
-    Usergrid.Entity.prototype.getActivities = function(callback) {
-        var self = this;
-        var endpoint = this.get("type") + "/" + this.get("uuid") + "/activities";
-        var options = {
-            method: "GET",
-            endpoint: endpoint
-        };
-        this._client.request(options, function(err, data) {
-            if (err && self._client.logging) {
-                console.log("entity could not be connected");
-            }
-            for (var entity in data.entities) {
-                data.entities[entity].createdDate = new Date(data.entities[entity].created).toUTCString();
-            }
-            self.activities = data.entities;
-            if (typeof callback === "function") {
-                callback(err, data, data.entities);
-            }
-        });
-    };
-    Usergrid.Entity.prototype.getFollowing = function(callback) {
-        var self = this;
-        var endpoint = "users" + "/" + this.get("uuid") + "/following";
-        var options = {
-            method: "GET",
-            endpoint: endpoint
-        };
-        this._client.request(options, function(err, data) {
-            if (err && self._client.logging) {
-                console.log("could not get user following");
-            }
-            for (var entity in data.entities) {
-                data.entities[entity].createdDate = new Date(data.entities[entity].created).toUTCString();
-                var image = self._client.getDisplayImage(data.entities[entity].email, data.entities[entity].picture);
-                data.entities[entity]._portal_image_icon = image;
-            }
-            self.following = data.entities;
-            if (typeof callback === "function") {
-                callback(err, data, data.entities);
-            }
-        });
-    };
-    Usergrid.Entity.prototype.getFollowers = function(callback) {
-        var self = this;
-        var endpoint = "users" + "/" + this.get("uuid") + "/followers";
-        var options = {
-            method: "GET",
-            endpoint: endpoint
-        };
-        this._client.request(options, function(err, data) {
-            if (err && self._client.logging) {
-                console.log("could not get user followers");
-            }
-            for (var entity in data.entities) {
-                data.entities[entity].createdDate = new Date(data.entities[entity].created).toUTCString();
-                var image = self._client.getDisplayImage(data.entities[entity].email, data.entities[entity].picture);
-                data.entities[entity]._portal_image_icon = image;
-            }
-            self.followers = data.entities;
-            if (typeof callback === "function") {
-                callback(err, data, data.entities);
-            }
-        });
-    };
-    Usergrid.Entity.prototype.getRoles = function(callback) {
-        var self = this;
-        var endpoint = this.get("type") + "/" + this.get("uuid") + "/roles";
-        var options = {
-            method: "GET",
-            endpoint: endpoint
-        };
-        this._client.request(options, function(err, data) {
-            if (err && self._client.logging) {
-                console.log("could not get user roles");
-            }
-            self.roles = data.entities;
-            if (typeof callback === "function") {
-                callback(err, data, data.entities);
-            }
-        });
-    };
-    Usergrid.Entity.prototype.getPermissions = function(callback) {
-        var self = this;
-        var endpoint = this.get("type") + "/" + this.get("uuid") + "/permissions";
-        var options = {
-            method: "GET",
-            endpoint: endpoint
-        };
-        this._client.request(options, function(err, data) {
-            if (err && self._client.logging) {
-                console.log("could not get user permissions");
-            }
-            var permissions = [];
-            if (data.data) {
-                var perms = data.data;
-                var count = 0;
-                for (var i in perms) {
-                    count++;
-                    var perm = perms[i];
-                    var parts = perm.split(":");
-                    var ops_part = "";
-                    var path_part = parts[0];
-                    if (parts.length > 1) {
-                        ops_part = parts[0];
-                        path_part = parts[1];
-                    }
-                    ops_part.replace("*", "get,post,put,delete");
-                    var ops = ops_part.split(",");
-                    var ops_object = {};
-                    ops_object.get = "no";
-                    ops_object.post = "no";
-                    ops_object.put = "no";
-                    ops_object.delete = "no";
-                    for (var j in ops) {
-                        ops_object[ops[j]] = "yes";
-                    }
-                    permissions.push({
-                        operations: ops_object,
-                        path: path_part,
-                        perm: perm
-                    });
-                }
-            }
-            self.permissions = permissions;
-            if (typeof callback === "function") {
-                callback(err, data, data.entities);
-            }
-        });
-    };
-    /*
-    *  disconnects one entity from another
-    *
-    *  @method disconnect
-    *  @public
-    *  @param {string} connection
-    *  @param {object} entity
-    *  @param {function} callback
-    *  @return {callback} callback(err, data)
-    *
-    */
-    Usergrid.Entity.prototype.disconnect = function(connection, entity, callback) {
-        var self = this;
-        var error;
-        //connectee info
-        var connecteeType = entity.get("type");
-        var connectee = this.getEntityId(entity);
-        if (!connectee) {
-            if (typeof callback === "function") {
-                error = "Error trying to delete object - no uuid specified.";
-                if (self._client.logging) {
-                    console.log(error);
-                }
-                callback(true, error);
-            }
-            return;
-        }
-        //connector info
-        var connectorType = this.get("type");
-        var connector = this.getEntityId(this);
-        if (!connector) {
-            if (typeof callback === "function") {
-                error = "Error in connect - no uuid specified.";
-                if (self._client.logging) {
-                    console.log(error);
-                }
-                callback(true, error);
-            }
-            return;
-        }
-        var endpoint = connectorType + "/" + connector + "/" + connection + "/" + connecteeType + "/" + connectee;
-        var options = {
-            method: "DELETE",
-            endpoint: endpoint
-        };
-        this._client.request(options, function(err, data) {
-            if (err && self._client.logging) {
-                console.log("entity could not be disconnected");
-            }
-            if (typeof callback === "function") {
-                callback(err, data);
-            }
-        });
-    };
-    /*
-    *  The Collection class models Usergrid Collections.  It essentially
-    *  acts as a container for holding Entity objects, while providing
-    *  additional funcitonality such as paging, and saving
-    *
-    *  @constructor
-    *  @param {string} options - configuration object
-    *  @param {function} callback
-    *  @return {callback} callback(err, data)
-    */
-    Usergrid.Collection = function(options, callback) {
-        if (options) {
-            this._client = options.client;
-            this._type = options.type;
-            this.qs = options.qs || {};
-            //iteration
-            this._list = options.list || [];
-            this._iterator = options.iterator || -1;
-            //first thing we do is increment, so set to -1
-            //paging
-            this._previous = options.previous || [];
-            this._next = options.next || null;
-            this._cursor = options.cursor || null;
-            //restore entities if available
-            if (options.list) {
-                var count = options.list.length;
-                for (var i = 0; i < count; i++) {
-                    //make new entity with
-                    var entity = this._client.restoreEntity(options.list[i]);
-                    this._list[i] = entity;
-                }
-            }
-        }
-        if (callback) {
-            //populate the collection
-            this.fetch(callback);
-        }
-    };
-    /*
-     *  gets the data from the collection object for serialization
-     *
-     *  @method serialize
-     *  @return {object} data
-     */
-    Usergrid.Collection.prototype.serialize = function() {
-        //pull out the state from this object and return it
-        var data = {};
-        data.type = this._type;
-        data.qs = this.qs;
-        data.iterator = this._iterator;
-        data.previous = this._previous;
-        data.next = this._next;
-        data.cursor = this._cursor;
-        this.resetEntityPointer();
-        var i = 0;
-        data.list = [];
-        while (this.hasNextEntity()) {
-            var entity = this.getNextEntity();
-            data.list[i] = entity.serialize();
-            i++;
-        }
-        data = JSON.stringify(data);
-        return data;
-    };
-    Usergrid.Collection.prototype.addCollection = function(collectionName, options, callback) {
-        self = this;
-        options.client = this._client;
-        var collection = new Usergrid.Collection(options, function(err, data) {
-            if (typeof callback === "function") {
-                collection.resetEntityPointer();
-                while (collection.hasNextEntity()) {
-                    var user = collection.getNextEntity();
-                    var email = user.get("email");
-                    var image = self._client.getDisplayImage(user.get("email"), user.get("picture"));
-                    user._portal_image_icon = image;
-                }
-                self[collectionName] = collection;
-                callback(err, collection);
-            }
-        });
-    };
-    /*
-    *  Populates the collection from the server
-    *
-    *  @method fetch
-    *  @param {function} callback
-    *  @return {callback} callback(err, data)
-    */
-    Usergrid.Collection.prototype.fetch = function(callback) {
-        var self = this;
-        var qs = this.qs;
-        //add in the cursor if one is available
-        if (this._cursor) {
-            qs.cursor = this._cursor;
-        } else {
-            delete qs.cursor;
-        }
-        var options = {
-            method: "GET",
-            endpoint: this._type,
-            qs: this.qs
-        };
-        this._client.request(options, function(err, data) {
-            if (err && self._client.logging) {
-                console.log("error getting collection");
-            } else {
-                //save the cursor if there is one
-                var cursor = data.cursor || null;
-                self.saveCursor(cursor);
-                if (data.entities) {
-                    self.resetEntityPointer();
-                    var count = data.entities.length;
-                    //save entities locally
-                    self._list = [];
-                    //clear the local list first
-                    for (var i = 0; i < count; i++) {
-                        var uuid = data.entities[i].uuid;
-                        if (uuid) {
-                            var entityData = data.entities[i] || {};
-                            self._baseType = data.entities[i].type;
-                            //store the base type in the collection
-                            entityData.type = self._type;
-                            //make sure entities are same type (have same path) as parent collection.
-                            var entityOptions = {
-                                type: self._type,
-                                client: self._client,
-                                uuid: uuid,
-                                data: entityData
-                            };
-                            var ent = new Usergrid.Entity(entityOptions);
-                            ent._json = JSON.stringify(entityData, null, 2);
-                            var ct = self._list.length;
-                            self._list[ct] = ent;
-                        }
-                    }
-                }
-            }
-            if (typeof callback === "function") {
-                callback(err, data);
-            }
-        });
-    };
-    /*
-    *  Adds a new Entity to the collection (saves, then adds to the local object)
-    *
-    *  @method addNewEntity
-    *  @param {object} entity
-    *  @param {function} callback
-    *  @return {callback} callback(err, data, entity)
-    */
-    Usergrid.Collection.prototype.addEntity = function(options, callback) {
-        var self = this;
-        options.type = this._type;
-        //create the new entity
-        this._client.createEntity(options, function(err, entity) {
-            if (!err) {
-                //then add the entity to the list
-                var count = self._list.length;
-                self._list[count] = entity;
-            }
-            if (typeof callback === "function") {
-                callback(err, entity);
-            }
-        });
-    };
-    Usergrid.Collection.prototype.addExistingEntity = function(entity) {
-        //entity should already exist in the db, so just add it to the list
-        var count = this._list.length;
-        this._list[count] = entity;
-    };
-    /*
-    *  Removes the Entity from the collection, then destroys the object on the server
-    *
-    *  @method destroyEntity
-    *  @param {object} entity
-    *  @param {function} callback
-    *  @return {callback} callback(err, data)
-    */
-    Usergrid.Collection.prototype.destroyEntity = function(entity, callback) {
-        var self = this;
-        entity.destroy(function(err, data) {
-            if (err) {
-                if (self._client.logging) {
-                    console.log("could not destroy entity");
-                }
-                if (typeof callback === "function") {
-                    callback(err, data);
-                }
-            } else {
-                //destroy was good, so repopulate the collection
-                self.fetch(callback);
-            }
-        });
-        //remove entity from the local store
-        this.removeEntity(entity);
-    };
-    Usergrid.Collection.prototype.removeEntity = function(entity) {
-        var uuid = entity.get("uuid");
-        for (var key in this._list) {
-            var listItem = this._list[key];
-            if (listItem.get("uuid") === uuid) {
-                return this._list.splice(key, 1);
-            }
-        }
-        return false;
-    };
-    /*
-    *  Looks up an Entity by UUID
-    *
-    *  @method getEntityByUUID
-    *  @param {string} UUID
-    *  @param {function} callback
-    *  @return {callback} callback(err, data, entity)
-    */
-    Usergrid.Collection.prototype.getEntityByUUID = function(uuid, callback) {
-        for (var key in this._list) {
-            var listItem = this._list[key];
-            if (listItem.get("uuid") === uuid) {
-                return listItem;
-            }
-        }
-        //get the entity from the database
-        var options = {
-            data: {
-                type: this._type,
-                uuid: uuid
-            },
-            client: this._client
-        };
-        var entity = new Usergrid.Entity(options);
-        entity.fetch(callback);
-    };
-    /*
-    *  Returns the first Entity of the Entity list - does not affect the iterator
-    *
-    *  @method getFirstEntity
-    *  @return {object} returns an entity object
-    */
-    Usergrid.Collection.prototype.getFirstEntity = function() {
-        var count = this._list.length;
-        if (count > 0) {
-            return this._list[0];
-        }
-        return null;
-    };
-    /*
-    *  Returns the last Entity of the Entity list - does not affect the iterator
-    *
-    *  @method getLastEntity
-    *  @return {object} returns an entity object
-    */
-    Usergrid.Collection.prototype.getLastEntity = function() {
-        var count = this._list.length;
-        if (count > 0) {
-            return this._list[count - 1];
-        }
-        return null;
-    };
-    /*
-    *  Entity iteration -Checks to see if there is a "next" entity
-    *  in the list.  The first time this method is called on an entity
-    *  list, or after the resetEntityPointer method is called, it will
-    *  return true referencing the first entity in the list
-    *
-    *  @method hasNextEntity
-    *  @return {boolean} true if there is a next entity, false if not
-    */
-    Usergrid.Collection.prototype.hasNextEntity = function() {
-        var next = this._iterator + 1;
-        var hasNextElement = next >= 0 && next < this._list.length;
-        if (hasNextElement) {
-            return true;
-        }
-        return false;
-    };
-    /*
-    *  Entity iteration - Gets the "next" entity in the list.  The first
-    *  time this method is called on an entity list, or after the method
-    *  resetEntityPointer is called, it will return the,
-    *  first entity in the list
-    *
-    *  @method hasNextEntity
-    *  @return {object} entity
-    */
-    Usergrid.Collection.prototype.getNextEntity = function() {
-        this._iterator++;
-        //Usergrid had < while others had <=
-        var hasNextElement = this._iterator >= 0 && this._iterator < this._list.length;
-        if (hasNextElement) {
-            return this._list[this._iterator];
-        }
-        return false;
-    };
-    /*
-    *  Entity iteration - Checks to see if there is a "previous"
-    *  entity in the list.
-    *
-    *  @method hasPrevEntity
-    *  @return {boolean} true if there is a previous entity, false if not
-    */
-    Usergrid.Collection.prototype.hasPrevEntity = function() {
-        var previous = this._iterator - 1;
-        var hasPreviousElement = previous >= 0 && previous < this._list.length;
-        if (hasPreviousElement) {
-            return true;
-        }
-        return false;
-    };
-    /*
-    *  Entity iteration - Gets the "previous" entity in the list.
-    *
-    *  @method getPrevEntity
-    *  @return {object} entity
-    */
-    Usergrid.Collection.prototype.getPrevEntity = function() {
-        this._iterator--;
-        var hasPreviousElement = this._iterator >= 0 && this._iterator <= this._list.length;
-        if (hasPreviousElement) {
-            return this._list[this._iterator];
-        }
-        return false;
-    };
-    /*
-    *  Entity iteration - Resets the iterator back to the beginning
-    *  of the list
-    *
-    *  @method resetEntityPointer
-    *  @return none
-    */
-    Usergrid.Collection.prototype.resetEntityPointer = function() {
-        this._iterator = -1;
-    };
-    /*
-    * Method to save off the cursor just returned by the last API call
-    *
-    * @public
-    * @method saveCursor
-    * @return none
-    */
-    Usergrid.Collection.prototype.saveCursor = function(cursor) {
-        //if current cursor is different, grab it for next cursor
-        if (this._next !== cursor) {
-            this._next = cursor;
-        }
-    };
-    /*
-    * Resets the paging pointer (back to original page)
-    *
-    * @public
-    * @method resetPaging
-    * @return none
-    */
-    Usergrid.Collection.prototype.resetPaging = function() {
-        this._previous = [];
-        this._next = null;
-        this._cursor = null;
-    };
-    /*
-    *  Paging -  checks to see if there is a next page od data
-    *
-    *  @method hasNextPage
-    *  @return {boolean} returns true if there is a next page of data, false otherwise
-    */
-    Usergrid.Collection.prototype.hasNextPage = function() {
-        return this._next;
-    };
-    /*
-    *  Paging - advances the cursor and gets the next
-    *  page of data from the API.  Stores returned entities
-    *  in the Entity list.
-    *
-    *  @method getNextPage
-    *  @param {function} callback
-    *  @return {callback} callback(err, data)
-    */
-    Usergrid.Collection.prototype.getNextPage = function(callback) {
-        if (this.hasNextPage()) {
-            //set the cursor to the next page of data
-            this._previous.push(this._cursor);
-            this._cursor = this._next;
-            //empty the list
-            this._list = [];
-            this.fetch(callback);
-        } else {
-            callback(true);
-        }
-    };
-    /*
-    *  Paging -  checks to see if there is a previous page od data
-    *
-    *  @method hasPreviousPage
-    *  @return {boolean} returns true if there is a previous page of data, false otherwise
-    */
-    Usergrid.Collection.prototype.hasPreviousPage = function() {
-        return this._previous.length > 0;
-    };
-    /*
-    *  Paging - reverts the cursor and gets the previous
-    *  page of data from the API.  Stores returned entities
-    *  in the Entity list.
-    *
-    *  @method getPreviousPage
-    *  @param {function} callback
-    *  @return {callback} callback(err, data)
-    */
-    Usergrid.Collection.prototype.getPreviousPage = function(callback) {
-        if (this.hasPreviousPage()) {
-            this._next = null;
-            //clear out next so the comparison will find the next item
-            this._cursor = this._previous.pop();
-            //empty the list
-            this._list = [];
-            this.fetch(callback);
-        } else {
-            callback(true);
-        }
-    };
-    /*
-     *  A class to model a Usergrid group.
-     *  Set the path in the options object.
-     *
-     *  @constructor
-     *  @param {object} options {client:client, data: {'key': 'value'}, path:'path'}
-     */
-    Usergrid.Group = function(options, callback) {
-        this._path = options.path;
-        this._list = [];
-        this._client = options.client;
-        this._data = options.data || {};
-        this._data.type = "groups";
-    };
-    /*
-     *  Inherit from Usergrid.Entity.
-     *  Note: This only accounts for data on the group object itself.
-     *  You need to use add and remove to manipulate group membership.
-     */
-    Usergrid.Group.prototype = new Usergrid.Entity();
-    /*
-    *  Fetches current group data, and members.
-    *
-    *  @method fetch
-    *  @public
-    *  @param {function} callback
-    *  @returns {function} callback(err, data)
-    */
-    Usergrid.Group.prototype.fetch = function(callback) {
-        var self = this;
-        var groupEndpoint = "groups/" + this._path;
-        var memberEndpoint = "groups/" + this._path + "/users";
-        var groupOptions = {
-            method: "GET",
-            endpoint: groupEndpoint
-        };
-        var memberOptions = {
-            method: "GET",
-            endpoint: memberEndpoint
-        };
-        this._client.request(groupOptions, function(err, data) {
-            if (err) {
-                if (self._client.logging) {
-                    console.log("error getting group");
-                }
-                if (typeof callback === "function") {
-                    callback(err, data);
-                }
-            } else {
-                if (data.entities) {
-                    var groupData = data.entities[0];
-                    self._data = groupData || {};
-                    self._client.request(memberOptions, function(err, data) {
-                        if (err && self._client.logging) {
-                            console.log("error getting group users");
-                        } else {
-                            if (data.entities) {
-                                var count = data.entities.length;
-                                self._list = [];
-                                for (var i = 0; i < count; i++) {
-                                    var uuid = data.entities[i].uuid;
-                                    if (uuid) {
-                                        var entityData = data.entities[i] || {};
-                                        var entityOptions = {
-                                            type: entityData.type,
-                                            client: self._client,
-                                            uuid: uuid,
-                                            data: entityData
-                                        };
-                                        var entity = new Usergrid.Entity(entityOptions);
-                                        self._list.push(entity);
-                                    }
-                                }
-                            }
-                        }
-                        if (typeof callback === "function") {
-                            callback(err, data, self._list);
-                        }
-                    });
-                }
-            }
-        });
-    };
-    /*
-     *  Retrieves the members of a group.
-     *
-     *  @method members
-     *  @public
-     *  @param {function} callback
-     *  @return {function} callback(err, data);
-     */
-    Usergrid.Group.prototype.members = function(callback) {
-        if (typeof callback === "function") {
-            callback(null, this._list);
-        }
-    };
-    /*
-     *  Adds a user to the group, and refreshes the group object.
-     *
-     *  Options object: {user: user_entity}
-     *
-     *  @method add
-     *  @public
-     *  @params {object} options
-     *  @param {function} callback
-     *  @return {function} callback(err, data)
-     */
-    Usergrid.Group.prototype.add = function(options, callback) {
-        var self = this;
-        options = {
-            method: "POST",
-            endpoint: "groups/" + this._path + "/users/" + options.user.get("username")
-        };
-        this._client.request(options, function(error, data) {
-            if (error) {
-                if (typeof callback === "function") {
-                    callback(error, data, data.entities);
-                }
-            } else {
-                self.fetch(callback);
-            }
-        });
-    };
-    /*
-     *  Removes a user from a group, and refreshes the group object.
-     *
-     *  Options object: {user: user_entity}
-     *
-     *  @method remove
-     *  @public
-     *  @params {object} options
-     *  @param {function} callback
-     *  @return {function} callback(err, data)
-     */
-    Usergrid.Group.prototype.remove = function(options, callback) {
-        var self = this;
-        options = {
-            method: "DELETE",
-            endpoint: "groups/" + this._path + "/users/" + options.user.get("username")
-        };
-        this._client.request(options, function(error, data) {
-            if (error) {
-                if (typeof callback === "function") {
-                    callback(error, data);
-                }
-            } else {
-                self.fetch(callback);
-            }
-        });
-    };
-    /*
-    * Gets feed for a group.
-    *
-    * @public
-    * @method feed
-    * @param {function} callback
-    * @returns {callback} callback(err, data, activities)
-    */
-    Usergrid.Group.prototype.feed = function(callback) {
-        var self = this;
-        var endpoint = "groups/" + this._path + "/feed";
-        var options = {
-            method: "GET",
-            endpoint: endpoint
-        };
-        this._client.request(options, function(err, data) {
-            if (err && self.logging) {
-                console.log("error trying to log user in");
-            }
-            if (typeof callback === "function") {
-                callback(err, data, data.entities);
-            }
-        });
-    };
-    /*
-    * Creates activity and posts to group feed.
-    *
-    * options object: {user: user_entity, content: "activity content"}
-    *
-    * @public
-    * @method createGroupActivity
-    * @params {object} options
-    * @param {function} callback
-    * @returns {callback} callback(err, entity)
-    */
-    Usergrid.Group.prototype.createGroupActivity = function(options, callback) {
-        var user = options.user;
-        options = {
-            client: this._client,
-            data: {
-                actor: {
-                    displayName: user.get("username"),
-                    uuid: user.get("uuid"),
-                    username: user.get("username"),
-                    email: user.get("email"),
-                    picture: user.get("picture"),
-                    image: {
-                        duration: 0,
-                        height: 80,
-                        url: user.get("picture"),
-                        width: 80
-                    }
-                },
-                verb: "post",
-                content: options.content,
-                type: "groups/" + this._path + "/activities"
-            }
-        };
-        var entity = new Usergrid.Entity(options);
-        entity.save(function(err, data) {
-            if (typeof callback === "function") {
-                callback(err, entity);
-            }
-        });
-    };
-    /*
-    * Tests if the string is a uuid
-    *
-    * @public
-    * @method isUUID
-    * @param {string} uuid The string to test
-    * @returns {Boolean} true if string is uuid
-    */
-    function isUUID(uuid) {
-        var uuidValueRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;
-        if (!uuid) {
-            return false;
-        }
-        return uuidValueRegex.test(uuid);
-    }
-    /*
-    *  method to encode the query string parameters
-    *
-    *  @method encodeParams
-    *  @public
-    *  @params {object} params - an object of name value pairs that will be urlencoded
-    *  @return {string} Returns the encoded string
-    */
-    function encodeParams(params) {
-        var tail = [];
-        var item = [];
-        var i;
-        if (params instanceof Array) {
-            for (i in params) {
-                item = params[i];
-                if (item instanceof Array && item.length > 1) {
-                    tail.push(item[0] + "=" + encodeURIComponent(item[1]));
-                }
-            }
-        } else {
-            for (var key in params) {
-                if (params.hasOwnProperty(key)) {
-                    var value = params[key];
-                    if (value instanceof Array) {
-                        for (i in value) {
-                            item = value[i];
-                            tail.push(key + "=" + encodeURIComponent(item));
-                        }
-                    } else {
-                        tail.push(key + "=" + encodeURIComponent(value));
-                    }
-                }
-            }
-        }
-        return tail.join("&");
-    }
-    Usergrid.SDK_VERSION = "0.10.07";
-    Usergrid.NODE_MODULE_VERSION = Usergrid.SDK_VERSION;
-    global[name] = {
-        client: Usergrid.Client,
-        entity: Usergrid.Entity,
-        collection: Usergrid.Collection,
-        group: Usergrid.Group,
-        AUTH_CLIENT_ID: AUTH_CLIENT_ID,
-        AUTH_APP_USER: AUTH_APP_USER,
-        AUTH_NONE: AUTH_NONE
-    };
-    global[name].noConflict = function() {
-        if (overwrittenName) {
-            global[name] = overwrittenName;
-        }
-        return Usergrid;
-    };
-})();
-
-(function() {
-    var name = "Usergrid", global = this, overwrittenName = global[name];
-    var Usergrid = Usergrid || global.Usergrid;
-    if (!Usergrid) {
-        throw "Usergrid module is required for the monitoring module.";
-    }
-    /*
-   * Logs a user defined verbose message.
-   *
-   * @method logDebug
-   * @public
-   * @param {object} options
-   *
-   */
-    Usergrid.client.prototype.logVerbose = function(options) {
-        this.monitor.logVerbose(options);
-    };
-    /*
-   * Logs a user defined debug message.
-   *
-   * @method logDebug
-   * @public
-   * @param {object} options
-   *
-   */
-    Usergrid.client.prototype.logDebug = function(options) {
-        this.monitor.logDebug(options);
-    };
-    /*
-   * Logs a user defined informational message.
-   *
-   * @method logInfo
-   * @public
-   * @param {object} options
-   *
-   */
-    Usergrid.client.prototype.logInfo = function(options) {
-        this.monitor.logInfo(options);
-    };
-    /*
-   * Logs a user defined warning message.
-   *
-   * @method logWarn
-   * @public
-   * @param {object} options
-   *
-   */
-    Usergrid.client.prototype.logWarn = function(options) {
-        this.monitor.logWarn(options);
-    };
-    /*
-   * Logs a user defined error message.
-   *
-   * @method logError
-   * @public
-   * @param {object} options
-   *
-   */
-    Usergrid.client.prototype.logError = function(options) {
-        this.monitor.logError(options);
-    };
-    /*
-   * Logs a user defined assert message.
-   *
-   * @method logAssert
-   * @public
-   * @param {object} options
-   *
-   */
-    Usergrid.client.prototype.logAssert = function(options) {
-        this.monitor.logAssert(options);
-    };
-    global[name] = {
-        client: Usergrid.client,
-        entity: Usergrid.entity,
-        collection: Usergrid.collection,
-        group: Usergrid.group,
-        AUTH_CLIENT_ID: Usergrid.AUTH_CLIENT_ID,
-        AUTH_APP_USER: Usergrid.AUTH_APP_USER,
-        AUTH_NONE: Usergrid.AUTH_NONE
-    };
-    global[name].noConflict = function() {
-        if (overwrittenName) {
-            global[name] = overwrittenName;
-        }
-        return Usergrid;
-    };
-    return global[name];
-})();
-
-(function() {
-    var name = "Apigee", global = this, overwrittenName = global[name];
-    var Usergrid = Usergrid || global.Usergrid;
-    if (!Usergrid) {
-        throw "Usergrid module is required for the monitoring module.";
-    }
-    var VERBS = {
-        get: "GET",
-        post: "POST",
-        put: "PUT",
-        del: "DELETE",
-        head: "HEAD"
-    };
-    var MONITORING_SDKVERSION = "0.0.1";
-    var LOGLEVELS = {
-        verbose: "V",
-        debug: "D",
-        info: "I",
-        warn: "W",
-        error: "E",
-        assert: "A"
-    };
-    var LOGLEVELNUMBERS = {
-        verbose: 2,
-        debug: 3,
-        info: 4,
-        warn: 5,
-        error: 6,
-        assert: 7
-    };
-    var UNKNOWN = "UNKNOWN";
-    var SDKTYPE = "JavaScript";
-    //Work around hack because onerror is always called in the window context so we can't store crashes internally
-    //This isn't too bad because we are encapsulated.
-    var logs = [];
-    var metrics = [];
-    var Apigee = Usergrid;
-    Apigee.prototype = Usergrid.prototype;
-    //Apigee.constructor=Apigee;
-    //function Apigee() {};
-    Apigee.Client = function(options) {
-        //Init app monitoring.
-        this.monitoringEnabled = options.monitoringEnabled || true;
-        if (this.monitoringEnabled) {
-            try {
-                this.monitor = new Apigee.MonitoringClient(options);
-            } catch (e) {
-                console.log(e);
-            }
-        }
-        Usergrid.client.call(this, options);
-    };
-    Apigee.Client.prototype = Usergrid.client.prototype;
-    //Apigee.Client.constructor=Apigee.Client;
-    //BEGIN APIGEE MONITORING SDK
-    //Constructor for Apigee Monitoring SDK
-    Apigee.MonitoringClient = function(options) {
-        //Needed for the setInterval call for syncing. Have to pass in a ref to ourselves. It blows scope away.
-        var self = this;
-        this.orgName = options.orgName;
-        this.appName = options.appName;
-        this.syncOnClose = options.syncOnClose || false;
-        //Put this in here because I don't want sync issues with testing.
-        this.testMode = options.testMode || false;
-        //You best know what you're doing if you're setting this for Apigee monitoring!
-        this.URI = typeof options.URI === "undefined" ? "https://api.usergrid.com" : options.URI;
-        this.syncDate = timeStamp();
-        //Can do a manual config override specifiying raw json as your config. I use this for testing.
-        //May be useful down the road. Needs to conform to current config.
-        if (typeof options.config !== "undefined") {
-            this.configuration = options.config;
-            if (this.configuration.deviceLevelOverrideEnabled === true) {
-                this.deviceConfig = this.configuration.deviceLevelAppConfig;
-            } else if (this.abtestingOverrideEnabled === true) {
-                this.deviceConfig = this.configuration.abtestingAppConfig;
-            } else {
-                this.deviceConfig = this.configuration.defaultAppConfig;
-            }
-        } else {
-            this.configuration = null;
-            this.downloadConfig();
-        }
-        //Don't do anything if configuration wasn't loaded.
-        if (this.configuration !== null && this.configuration !== "undefined") {
-            //Ensure that we want to sample data from this device.
-            var sampleSeed = 0;
-            if (this.deviceConfig.samplingRate < 100) {
-                sampleSeed = Math.floor(Math.random() * 101);
-            }
-            //If we're not in the sampling window don't setup data collection at all
-            if (sampleSeed < this.deviceConfig.samplingRate) {
-                this.appId = this.configuration.instaOpsApplicationId;
-                this.appConfigType = this.deviceConfig.appConfigType;
-                //Let's monkeypatch logging calls to intercept and send to server.
-                if (this.deviceConfig.enableLogMonitoring) {
-                    this.patchLoggingCalls();
-                }
-                var syncIntervalMillis = 3e3;
-                if (typeof this.deviceConfig.agentUploadIntervalInSeconds !== "undefined") {
-                    syncIntervalMillis = this.deviceConfig.agentUploadIntervalInSeconds * 1e3;
-                }
-                //Needed for the setInterval call for syncing. Have to pass in a ref to ourselves. It blows scope away.
-                if (!this.syncOnClose) {
-                    //Old server syncing logic
-                    setInterval(function() {
-                        self.prepareSync();
-                    }, syncIntervalMillis);
-                } else {
-                    if (isPhoneGap()) {
-                        window.addEventListener("pause", function() {
-                            self.prepareSync();
-                        }, false);
-                    } else if (isTrigger()) {
-                        forge.event.appPaused.addListener(function(data) {}, function(error) {
-                            console.log("Error syncing data.");
-                            console.log(error);
-                        });
-                    } else if (isTitanium()) {} else {
-                        window.addEventListener("beforeunload", function(e) {
-                            self.prepareSync();
-   

<TRUNCATED>

[03/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angular/angular.min.js.map
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angular/angular.min.js.map b/deleted/dist-cov/usergrid-portal/bower_components/angular/angular.min.js.map
deleted file mode 100644
index 1007142..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angular/angular.min.js.map
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-"version":3,
-"file":"angular.min.js",
-"lineCount":216,
-"mappings":"A;;;;;aAKC,SAAQ,CAACA,CAAD,CAASC,CAAT,CAAmBC,CAAnB,CAA8B,CA8BvCC,QAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,SAAAA,EAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAAA,EAAAA,EAAAA,CAAAA,CAAAA,6DAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAAA,EAAAA,EAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,SAAAA,OAAAA,CAAAA,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,CAAAA,GAAAA,CAAAA,GAAAA,EAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA,EAAAA,GAAAA,CAAAA,kBAAAA,CAAAA,UAAAA,EAAAA,MAAAA,UAAAA,CAAAA,CAAAA,CAAAA,CAAAA,SAAAA,CAAAA,CAAAA,CAAAA,SAAAA,EAAAA,QAAAA,CAAAA,aAAAA,CAAAA,EAAAA,CAAAA,CAAAA,WAAAA,EAAAA,MAAAA,UAAAA,CAAAA,CAAAA,CAAAA,CAAAA,WAAAA,CAAAA,QAAAA,EAAAA,MAAAA,UAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,UAAAA,CAAAA,SAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,SAAAA,CAAAA,CAAAA,CAAAA,CAAAA,OAAAA,MAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAuOAC,QAASA,GAAW,CAACC,CAAD,CAAM,CACxB,GAAW,IAAX;AAAIA,CAAJ,EAAmBC,EAAA,CAASD,CAAT,CAAnB,CACE,M
 AAO,CAAA,CAGT,KAAIE,EAASF,CAAAE,OAEb,OAAqB,EAArB,GAAIF,CAAAG,SAAJ,EAA0BD,CAA1B,CACS,CAAA,CADT,CAIOE,CAAA,CAASJ,CAAT,CAJP,EAIwBK,CAAA,CAAQL,CAAR,CAJxB,EAImD,CAJnD,GAIwCE,CAJxC,EAKyB,QALzB,GAKO,MAAOA,EALd,EAK8C,CAL9C,CAKqCA,CALrC,EAKoDA,CALpD,CAK6D,CAL7D,GAKmEF,EAZ3C,CA4C1BM,QAASA,EAAO,CAACN,CAAD,CAAMO,CAAN,CAAgBC,CAAhB,CAAyB,CACvC,IAAIC,CACJ,IAAIT,CAAJ,CACE,GAAIU,CAAA,CAAWV,CAAX,CAAJ,CACE,IAAKS,CAAL,GAAYT,EAAZ,CAGa,WAAX,EAAIS,CAAJ,GAAiC,QAAjC,EAA0BA,CAA1B,EAAoD,MAApD,EAA6CA,CAA7C,EAAgET,CAAAW,eAAhE,EAAsF,CAAAX,CAAAW,eAAA,CAAmBF,CAAnB,CAAtF,GACEF,CAAAK,KAAA,CAAcJ,CAAd,CAAuBR,CAAA,CAAIS,CAAJ,CAAvB,CAAiCA,CAAjC,CALN,KAQO,IAAIT,CAAAM,QAAJ,EAAmBN,CAAAM,QAAnB,GAAmCA,CAAnC,CACLN,CAAAM,QAAA,CAAYC,CAAZ,CAAsBC,CAAtB,CADK,KAEA,IAAIT,EAAA,CAAYC,CAAZ,CAAJ,CACL,IAAKS,CAAL,CAAW,CAAX,CAAcA,CAAd,CAAoBT,CAAAE,OAApB,CAAgCO,CAAA,EAAhC,CACEF,CAAAK,KAAA,CAAcJ,CAAd,CAAuBR,CAAA,CAAIS,CAAJ,CAAvB,CAAiCA,CAAjC,CAFG,KAIL,KAAKA,CAAL,GAAYT,EAAZ,CACMA,CAAAW,eAAA,CAAmBF,CAAnB,CAAJ,EACEF,CAAAK,KAAA,CAAcJ,CAAd,CAAuBR
 ,CAAA,CAAIS,CAAJ,CAAvB,CAAiCA,CAAjC,CAKR,OAAOT,EAxBgC,CA2BzCa,QAASA,GAAU,CAACb,CAAD,CAAM,CACvB,IAAIc,EAAO,EAAX,CACSL,CAAT,KAASA,CAAT,GAAgBT,EAAhB,CACMA,CAAAW,eAAA,CAAmBF,CAAnB,CAAJ,EACEK,CAAAC,KAAA,CAAUN,CAAV,CAGJ,OAAOK,EAAAE,KAAA,EAPgB,CA5Uc;AAsVvCC,QAASA,GAAa,CAACjB,CAAD,CAAMO,CAAN,CAAgBC,CAAhB,CAAyB,CAE7C,IADA,IAAIM,EAAOD,EAAA,CAAWb,CAAX,CAAX,CACUkB,EAAI,CAAd,CAAiBA,CAAjB,CAAqBJ,CAAAZ,OAArB,CAAkCgB,CAAA,EAAlC,CACEX,CAAAK,KAAA,CAAcJ,CAAd,CAAuBR,CAAA,CAAIc,CAAA,CAAKI,CAAL,CAAJ,CAAvB,CAAqCJ,CAAA,CAAKI,CAAL,CAArC,CAEF,OAAOJ,EALsC,CAc/CK,QAASA,GAAa,CAACC,CAAD,CAAa,CACjC,MAAO,SAAQ,CAACC,CAAD,CAAQZ,CAAR,CAAa,CAAEW,CAAA,CAAWX,CAAX,CAAgBY,CAAhB,CAAF,CADK,CAYnCC,QAASA,GAAO,EAAG,CAIjB,IAHA,IAAIC,EAAQC,EAAAtB,OAAZ,CACIuB,CAEJ,CAAMF,CAAN,CAAA,CAAa,CACXA,CAAA,EACAE,EAAA,CAAQD,EAAA,CAAID,CAAJ,CAAAG,WAAA,CAAsB,CAAtB,CACR,IAAa,EAAb,EAAID,CAAJ,CAEE,MADAD,GAAA,CAAID,CAAJ,CACO,CADM,GACN,CAAAC,EAAAG,KAAA,CAAS,EAAT,CAET,IAAa,EAAb,EAAIF,CAAJ,CACED,EAAA,CAAID,CAAJ,CAAA,CAAa,GADf,KAIE,OADAC,GAAA,CAAID,CA
 AJ,CACO,CADMK,MAAAC,aAAA,CAAoBJ,CAApB,CAA4B,CAA5B,CACN,CAAAD,EAAAG,KAAA,CAAS,EAAT,CAXE,CAcbH,EAAAM,QAAA,CAAY,GAAZ,CACA,OAAON,GAAAG,KAAA,CAAS,EAAT,CAnBU,CA4BnBI,QAASA,GAAU,CAAC/B,CAAD,CAAMgC,CAAN,CAAS,CACtBA,CAAJ,CACEhC,CAAAiC,UADF,CACkBD,CADlB,CAIE,OAAOhC,CAAAiC,UALiB,CAuB5BC,QAASA,EAAM,CAACC,CAAD,CAAM,CACnB,IAAIH,EAAIG,CAAAF,UACR3B,EAAA,CAAQ8B,SAAR,CAAmB,QAAQ,CAACpC,CAAD,CAAK,CAC1BA,CAAJ,GAAYmC,CAAZ,EACE7B,CAAA,CAAQN,CAAR,CAAa,QAAQ,CAACqB,CAAD,CAAQZ,CAAR,CAAY,CAC/B0B,CAAA,CAAI1B,CAAJ,CAAA,CAAWY,CADoB,CAAjC,CAF4B,CAAhC,CAQAU,GAAA,CAAWI,CAAX,CAAeH,CAAf,CACA,OAAOG,EAXY,CAnakB;AAibvCE,QAASA,EAAG,CAACC,CAAD,CAAM,CAChB,MAAOC,SAAA,CAASD,CAAT,CAAc,EAAd,CADS,CAKlBE,QAASA,GAAO,CAACC,CAAD,CAASC,CAAT,CAAgB,CAC9B,MAAOR,EAAA,CAAO,KAAKA,CAAA,CAAO,QAAQ,EAAG,EAAlB,CAAsB,WAAWO,CAAX,CAAtB,CAAL,CAAP,CAA0DC,CAA1D,CADuB,CAoBhCC,QAASA,EAAI,EAAG,EAoBhBC,QAASA,GAAQ,CAACC,CAAD,CAAI,CAAC,MAAOA,EAAR,CAIrBC,QAASA,GAAO,CAACzB,CAAD,CAAQ,CAAC,MAAO,SAAQ,EAAG,CAAC,MAAOA,EAAR,CAAnB,CAcxB0B,QAASA,EAAW,CAAC1B,CAAD,CAA
 O,CAAC,MAAwB,WAAxB,GAAO,MAAOA,EAAf,CAe3B2B,QAASA,EAAS,CAAC3B,CAAD,CAAO,CAAC,MAAwB,WAAxB,GAAO,MAAOA,EAAf,CAgBzB4B,QAASA,EAAQ,CAAC5B,CAAD,CAAO,CAAC,MAAgB,KAAhB,EAAOA,CAAP,EAAyC,QAAzC,GAAwB,MAAOA,EAAhC,CAexBjB,QAASA,EAAQ,CAACiB,CAAD,CAAO,CAAC,MAAwB,QAAxB,GAAO,MAAOA,EAAf,CAexB6B,QAASA,GAAQ,CAAC7B,CAAD,CAAO,CAAC,MAAwB,QAAxB,GAAO,MAAOA,EAAf,CAexB8B,QAASA,GAAM,CAAC9B,CAAD,CAAO,CACpB,MAAgC,eAAhC,GAAO+B,EAAAxC,KAAA,CAAcS,CAAd,CADa,CAiBtBhB,QAASA,EAAO,CAACgB,CAAD,CAAQ,CACtB,MAAgC,gBAAhC,GAAO+B,EAAAxC,KAAA,CAAcS,CAAd,CADe,CAiBxBX,QAASA,EAAU,CAACW,CAAD,CAAO,CAAC,MAAwB,UAAxB;AAAO,MAAOA,EAAf,CAU1BgC,QAASA,GAAQ,CAAChC,CAAD,CAAQ,CACvB,MAAgC,iBAAhC,GAAO+B,EAAAxC,KAAA,CAAcS,CAAd,CADgB,CAYzBpB,QAASA,GAAQ,CAACD,CAAD,CAAM,CACrB,MAAOA,EAAP,EAAcA,CAAAJ,SAAd,EAA8BI,CAAAsD,SAA9B,EAA8CtD,CAAAuD,MAA9C,EAA2DvD,CAAAwD,YADtC,CAoDvBC,QAASA,GAAS,CAACC,CAAD,CAAO,CACvB,MAAO,EAAGA,CAAAA,CAAH,EACJ,EAAAA,CAAAC,SAAA,EACGD,CAAAE,KADH,EACgBF,CAAAG,KADhB,EAC6BH,CAAAI,KAD7B,CADI,CADgB,CA+BzBC,QAASA,GAAG,CAAC/D,CAAD,CAAMO,CA
 AN,CAAgBC,CAAhB,CAAyB,CACnC,IAAIwD,EAAU,EACd1D,EAAA,CAAQN,CAAR,CAAa,QAAQ,CAACqB,CAAD,CAAQE,CAAR,CAAe0C,CAAf,CAAqB,CACxCD,CAAAjD,KAAA,CAAaR,CAAAK,KAAA,CAAcJ,CAAd,CAAuBa,CAAvB,CAA8BE,CAA9B,CAAqC0C,CAArC,CAAb,CADwC,CAA1C,CAGA,OAAOD,EAL4B,CAwCrCE,QAASA,GAAO,CAACC,CAAD,CAAQnE,CAAR,CAAa,CAC3B,GAAImE,CAAAD,QAAJ,CAAmB,MAAOC,EAAAD,QAAA,CAAclE,CAAd,CAE1B,KAAK,IAAIkB,EAAI,CAAb,CAAgBA,CAAhB,CAAoBiD,CAAAjE,OAApB,CAAkCgB,CAAA,EAAlC,CACE,GAAIlB,CAAJ,GAAYmE,CAAA,CAAMjD,CAAN,CAAZ,CAAsB,MAAOA,EAE/B,OAAQ,EANmB,CAS7BkD,QAASA,GAAW,CAACD,CAAD,CAAQ9C,CAAR,CAAe,CACjC,IAAIE,EAAQ2C,EAAA,CAAQC,CAAR,CAAe9C,CAAf,CACA,EAAZ,EAAIE,CAAJ,EACE4C,CAAAE,OAAA,CAAa9C,CAAb,CAAoB,CAApB,CACF,OAAOF,EAJ0B,CA4EnCiD,QAASA,GAAI,CAACC,CAAD,CAASC,CAAT,CAAqB,CAChC,GAAIvE,EAAA,CAASsE,CAAT,CAAJ,EAAgCA,CAAhC,EAAgCA,CA3MlBE,WA2Md,EAAgCF,CA3MAG,OA2MhC,CACE,KAAMC,GAAA,CAAS,MAAT,CAAN;AAIF,GAAKH,CAAL,CAaO,CACL,GAAID,CAAJ,GAAeC,CAAf,CAA4B,KAAMG,GAAA,CAAS,KAAT,CAAN,CAE5B,GAAItE,CAAA,CAAQkE,CAAR,CAAJ,CAEE,IAAM,IAAIrD,EADVsD,CAAAtE,OACUgB,CADW
 ,CACrB,CAAiBA,CAAjB,CAAqBqD,CAAArE,OAArB,CAAoCgB,CAAA,EAApC,CACEsD,CAAAzD,KAAA,CAAiBuD,EAAA,CAAKC,CAAA,CAAOrD,CAAP,CAAL,CAAjB,CAHJ,KAKO,CACDc,CAAAA,CAAIwC,CAAAvC,UACR3B,EAAA,CAAQkE,CAAR,CAAqB,QAAQ,CAACnD,CAAD,CAAQZ,CAAR,CAAY,CACvC,OAAO+D,CAAA,CAAY/D,CAAZ,CADgC,CAAzC,CAGA,KAAMA,IAAIA,CAAV,GAAiB8D,EAAjB,CACEC,CAAA,CAAY/D,CAAZ,CAAA,CAAmB6D,EAAA,CAAKC,CAAA,CAAO9D,CAAP,CAAL,CAErBsB,GAAA,CAAWyC,CAAX,CAAuBxC,CAAvB,CARK,CARF,CAbP,IAEE,CADAwC,CACA,CADcD,CACd,IACMlE,CAAA,CAAQkE,CAAR,CAAJ,CACEC,CADF,CACgBF,EAAA,CAAKC,CAAL,CAAa,EAAb,CADhB,CAEWpB,EAAA,CAAOoB,CAAP,CAAJ,CACLC,CADK,CACS,IAAII,IAAJ,CAASL,CAAAM,QAAA,EAAT,CADT,CAEIxB,EAAA,CAASkB,CAAT,CAAJ,CACLC,CADK,CACaM,MAAJ,CAAWP,CAAAA,OAAX,CADT,CAEItB,CAAA,CAASsB,CAAT,CAFJ,GAGLC,CAHK,CAGSF,EAAA,CAAKC,CAAL,CAAa,EAAb,CAHT,CALT,CA8BF,OAAOC,EAtCyB,CA4ClCO,QAASA,GAAW,CAACC,CAAD,CAAM7C,CAAN,CAAW,CAC7BA,CAAA,CAAMA,CAAN,EAAa,EAEb,KAAI1B,IAAIA,CAAR,GAAeuE,EAAf,CAGM,CAAAA,CAAArE,eAAA,CAAmBF,CAAnB,CAAJ,EAAmD,GAAnD,GAAiCA,CAAAwE,OAAA,CAAW,CAAX,CAAjC,EAA4E,GAA
 5E,GAA0DxE,CAAAwE,OAAA,CAAW,CAAX,CAA1D,GACE9C,CAAA,CAAI1B,CAAJ,CADF,CACauE,CAAA,CAAIvE,CAAJ,CADb,CAKF,OAAO0B,EAXsB,CA4C/B+C,QAASA,GAAM,CAACC,CAAD,CAAKC,CAAL,CAAS,CACtB,GAAID,CAAJ,GAAWC,CAAX,CAAe,MAAO,CAAA,CACtB,IAAW,IAAX,GAAID,CAAJ,EAA0B,IAA1B,GAAmBC,CAAnB,CAAgC,MAAO,CAAA,CACvC,IAAID,CAAJ,GAAWA,CAAX,EAAiBC,CAAjB,GAAwBA,CAAxB,CAA4B,MAAO,CAAA,CAHb;IAIlBC,EAAK,MAAOF,EAJM,CAIsB1E,CAC5C,IAAI4E,CAAJ,EADyBC,MAAOF,EAChC,EACY,QADZ,EACMC,CADN,CAEI,GAAIhF,CAAA,CAAQ8E,CAAR,CAAJ,CAAiB,CACf,GAAI,CAAC9E,CAAA,CAAQ+E,CAAR,CAAL,CAAkB,MAAO,CAAA,CACzB,KAAKlF,CAAL,CAAciF,CAAAjF,OAAd,GAA4BkF,CAAAlF,OAA5B,CAAuC,CACrC,IAAIO,CAAJ,CAAQ,CAAR,CAAWA,CAAX,CAAeP,CAAf,CAAuBO,CAAA,EAAvB,CACE,GAAI,CAACyE,EAAA,CAAOC,CAAA,CAAG1E,CAAH,CAAP,CAAgB2E,CAAA,CAAG3E,CAAH,CAAhB,CAAL,CAA+B,MAAO,CAAA,CAExC,OAAO,CAAA,CAJ8B,CAFxB,CAAjB,IAQO,CAAA,GAAI0C,EAAA,CAAOgC,CAAP,CAAJ,CACL,MAAOhC,GAAA,CAAOiC,CAAP,CAAP,EAAqBD,CAAAN,QAAA,EAArB,EAAqCO,CAAAP,QAAA,EAChC,IAAIxB,EAAA,CAAS8B,CAAT,CAAJ,EAAoB9B,EAAA,CAAS+B,CAAT,CAApB,CACL,MAAOD,EAAA/B
 ,SAAA,EAAP,EAAwBgC,CAAAhC,SAAA,EAExB,IAAY+B,CAAZ,EAAYA,CAtTJV,WAsTR,EAAYU,CAtTcT,OAsT1B,EAA2BU,CAA3B,EAA2BA,CAtTnBX,WAsTR,EAA2BW,CAtTDV,OAsT1B,EAAkCzE,EAAA,CAASkF,CAAT,CAAlC,EAAkDlF,EAAA,CAASmF,CAAT,CAAlD,EAAkE/E,CAAA,CAAQ+E,CAAR,CAAlE,CAA+E,MAAO,CAAA,CACtFG,EAAA,CAAS,EACT,KAAI9E,CAAJ,GAAW0E,EAAX,CACE,GAAsB,GAAtB,GAAI1E,CAAAwE,OAAA,CAAW,CAAX,CAAJ,EAA6B,CAAAvE,CAAA,CAAWyE,CAAA,CAAG1E,CAAH,CAAX,CAA7B,CAAA,CACA,GAAI,CAACyE,EAAA,CAAOC,CAAA,CAAG1E,CAAH,CAAP,CAAgB2E,CAAA,CAAG3E,CAAH,CAAhB,CAAL,CAA+B,MAAO,CAAA,CACtC8E,EAAA,CAAO9E,CAAP,CAAA,CAAc,CAAA,CAFd,CAIF,IAAIA,CAAJ,GAAW2E,EAAX,CACE,GAAI,CAACG,CAAA5E,eAAA,CAAsBF,CAAtB,CAAL,EACsB,GADtB,GACIA,CAAAwE,OAAA,CAAW,CAAX,CADJ,EAEIG,CAAA,CAAG3E,CAAH,CAFJ,GAEgBZ,CAFhB,EAGI,CAACa,CAAA,CAAW0E,CAAA,CAAG3E,CAAH,CAAX,CAHL,CAG0B,MAAO,CAAA,CAEnC;MAAO,CAAA,CAlBF,CAsBX,MAAO,CAAA,CArCe,CAyCxB+E,QAASA,GAAG,EAAG,CACb,MAAQ5F,EAAA6F,eAAR,EAAmC7F,CAAA6F,eAAAC,SAAnC,EACK9F,CAAA+F,cADL,EAEI,EAAG,CAAA/F,CAAA+F,cAAA,CAAuB,UAAvB,CAAH,EAAyC,CAAA/F,CAAA+F,cAAA,CAAuB,e
 AAvB,CAAzC,CAHS,CAmCfC,QAASA,GAAI,CAACC,CAAD,CAAOC,CAAP,CAAW,CACtB,IAAIC,EAA+B,CAAnB,CAAA3D,SAAAlC,OAAA,CAxBT8F,EAAApF,KAAA,CAwB0CwB,SAxB1C,CAwBqD6D,CAxBrD,CAwBS,CAAiD,EACjE,OAAI,CAAAvF,CAAA,CAAWoF,CAAX,CAAJ,EAAwBA,CAAxB,WAAsChB,OAAtC,CAcSgB,CAdT,CACSC,CAAA7F,OACA,CAAH,QAAQ,EAAG,CACT,MAAOkC,UAAAlC,OACA,CAAH4F,CAAAI,MAAA,CAASL,CAAT,CAAeE,CAAAI,OAAA,CAAiBH,EAAApF,KAAA,CAAWwB,SAAX,CAAsB,CAAtB,CAAjB,CAAf,CAAG,CACH0D,CAAAI,MAAA,CAASL,CAAT,CAAeE,CAAf,CAHK,CAAR,CAKH,QAAQ,EAAG,CACT,MAAO3D,UAAAlC,OACA,CAAH4F,CAAAI,MAAA,CAASL,CAAT,CAAezD,SAAf,CAAG,CACH0D,CAAAlF,KAAA,CAAQiF,CAAR,CAHK,CATK,CAqBxBO,QAASA,GAAc,CAAC3F,CAAD,CAAMY,CAAN,CAAa,CAClC,IAAIgF,EAAMhF,CAES,SAAnB,GAAI,MAAOZ,EAAX,EAAiD,GAAjD,GAA+BA,CAAAwE,OAAA,CAAW,CAAX,CAA/B,CACEoB,CADF;AACQxG,CADR,CAEWI,EAAA,CAASoB,CAAT,CAAJ,CACLgF,CADK,CACC,SADD,CAEIhF,CAAJ,EAAczB,CAAd,GAA2ByB,CAA3B,CACLgF,CADK,CACC,WADD,CAEYhF,CAFZ,GAEYA,CA5YLoD,WA0YP,EAEYpD,CA5YaqD,OA0YzB,IAGL2B,CAHK,CAGC,QAHD,CAMP,OAAOA,EAb2B,CA+BpCC,QAASA,GAAM,CAACtG,CAAD,CAAMuG,CAAN,C
 AAc,CAC3B,MAAmB,WAAnB,GAAI,MAAOvG,EAAX,CAAuCH,CAAvC,CACO2G,IAAAC,UAAA,CAAezG,CAAf,CAAoBoG,EAApB,CAAoCG,CAAA,CAAS,IAAT,CAAgB,IAApD,CAFoB,CAkB7BG,QAASA,GAAQ,CAACC,CAAD,CAAO,CACtB,MAAOvG,EAAA,CAASuG,CAAT,CACA,CAADH,IAAAI,MAAA,CAAWD,CAAX,CAAC,CACDA,CAHgB,CAOxBE,QAASA,GAAS,CAACxF,CAAD,CAAQ,CACH,UAArB,GAAI,MAAOA,EAAX,CACEA,CADF,CACU,CAAA,CADV,CAEWA,CAAJ,EAA8B,CAA9B,GAAaA,CAAAnB,OAAb,EACD4G,CACJ,CADQC,CAAA,CAAU,EAAV,CAAe1F,CAAf,CACR,CAAAA,CAAA,CAAQ,EAAO,GAAP,EAAEyF,CAAF,EAAmB,GAAnB,EAAcA,CAAd,EAA+B,OAA/B,EAA0BA,CAA1B,EAA+C,IAA/C,EAA0CA,CAA1C,EAA4D,GAA5D,EAAuDA,CAAvD,EAAwE,IAAxE,EAAmEA,CAAnE,CAFH,EAILzF,CAJK,CAIG,CAAA,CAEV,OAAOA,EATiB,CAe1B2F,QAASA,GAAW,CAACC,CAAD,CAAU,CAC5BA,CAAA,CAAUC,CAAA,CAAOD,CAAP,CAAAE,MAAA,EACV,IAAI,CAGFF,CAAAG,MAAA,EAHE,CAIF,MAAMC,CAAN,CAAS,EAGX,IAAIC,EAAWJ,CAAA,CAAO,OAAP,CAAAK,OAAA,CAAuBN,CAAvB,CAAAO,KAAA,EACf,IAAI,CACF,MAHcC,EAGP,GAAAR,CAAA,CAAQ,CAAR,CAAA9G,SAAA,CAAoC4G,CAAA,CAAUO,CAAV,CAApC,CACHA,CAAAI,MAAA,CACQ,YADR,CACA,CAAsB,CAAtB,CAAAC,QAAA,CACU,aADV;AACyB,QA
 AQ,CAACD,CAAD,CAAQ/D,CAAR,CAAkB,CAAE,MAAO,GAAP,CAAaoD,CAAA,CAAUpD,CAAV,CAAf,CADnD,CAHF,CAKF,MAAM0D,CAAN,CAAS,CACT,MAAON,EAAA,CAAUO,CAAV,CADE,CAfiB,CAgC9BM,QAASA,GAAqB,CAACvG,CAAD,CAAQ,CACpC,GAAI,CACF,MAAOwG,mBAAA,CAAmBxG,CAAnB,CADL,CAEF,MAAMgG,CAAN,CAAS,EAHyB,CAatCS,QAASA,GAAa,CAAYC,CAAZ,CAAsB,CAAA,IACtC/H,EAAM,EADgC,CAC5BgI,CAD4B,CACjBvH,CACzBH,EAAA,CAAS2H,CAAAF,CAAAE,EAAY,EAAZA,OAAA,CAAsB,GAAtB,CAAT,CAAqC,QAAQ,CAACF,CAAD,CAAU,CAChDA,CAAL,GACEC,CAEA,CAFYD,CAAAE,MAAA,CAAe,GAAf,CAEZ,CADAxH,CACA,CADMmH,EAAA,CAAsBI,CAAA,CAAU,CAAV,CAAtB,CACN,CAAKhF,CAAA,CAAUvC,CAAV,CAAL,GACM4F,CACJ,CADUrD,CAAA,CAAUgF,CAAA,CAAU,CAAV,CAAV,CAAA,CAA0BJ,EAAA,CAAsBI,CAAA,CAAU,CAAV,CAAtB,CAA1B,CAAgE,CAAA,CAC1E,CAAKhI,CAAA,CAAIS,CAAJ,CAAL,CAEUJ,CAAA,CAAQL,CAAA,CAAIS,CAAJ,CAAR,CAAH,CACLT,CAAA,CAAIS,CAAJ,CAAAM,KAAA,CAAcsF,CAAd,CADK,CAGLrG,CAAA,CAAIS,CAAJ,CAHK,CAGM,CAACT,CAAA,CAAIS,CAAJ,CAAD,CAAU4F,CAAV,CALb,CACErG,CAAA,CAAIS,CAAJ,CADF,CACa4F,CAHf,CAHF,CADqD,CAAvD,CAgBA,OAAOrG,EAlBmC,CAqB5CkI,QAASA,GAAU,CAAClI,CAA
 D,CAAM,CACvB,IAAImI,EAAQ,EACZ7H,EAAA,CAAQN,CAAR,CAAa,QAAQ,CAACqB,CAAD,CAAQZ,CAAR,CAAa,CAC5BJ,CAAA,CAAQgB,CAAR,CAAJ,CACEf,CAAA,CAAQe,CAAR,CAAe,QAAQ,CAAC+G,CAAD,CAAa,CAClCD,CAAApH,KAAA,CAAWsH,EAAA,CAAe5H,CAAf,CAAoB,CAAA,CAApB,CAAX,EAC2B,CAAA,CAAf,GAAA2H,CAAA,CAAsB,EAAtB,CAA2B,GAA3B,CAAiCC,EAAA,CAAeD,CAAf,CAA2B,CAAA,CAA3B,CAD7C,EADkC,CAApC,CADF,CAMAD,CAAApH,KAAA,CAAWsH,EAAA,CAAe5H,CAAf,CAAoB,CAAA,CAApB,CAAX,EACsB,CAAA,CAAV,GAAAY,CAAA,CAAiB,EAAjB,CAAsB,GAAtB,CAA4BgH,EAAA,CAAehH,CAAf,CAAsB,CAAA,CAAtB,CADxC,EAPgC,CAAlC,CAWA,OAAO8G,EAAAjI,OAAA,CAAeiI,CAAAxG,KAAA,CAAW,GAAX,CAAf,CAAiC,EAbjB,CA4BzB2G,QAASA,GAAgB,CAACjC,CAAD,CAAM,CAC7B,MAAOgC,GAAA,CAAehC,CAAf;AAAoB,CAAA,CAApB,CAAAsB,QAAA,CACY,OADZ,CACqB,GADrB,CAAAA,QAAA,CAEY,OAFZ,CAEqB,GAFrB,CAAAA,QAAA,CAGY,OAHZ,CAGqB,GAHrB,CADsB,CAmB/BU,QAASA,GAAc,CAAChC,CAAD,CAAMkC,CAAN,CAAuB,CAC5C,MAAOC,mBAAA,CAAmBnC,CAAnB,CAAAsB,QAAA,CACY,OADZ,CACqB,GADrB,CAAAA,QAAA,CAEY,OAFZ,CAEqB,GAFrB,CAAAA,QAAA,CAGY,MAHZ,CAGoB,GAHpB,CAAAA,QAAA,CAIY,OAJZ,CAIqB,GAJrB,CAA
 AA,QAAA,CAKY,MALZ,CAKqBY,CAAA,CAAkB,KAAlB,CAA0B,GAL/C,CADqC,CAW9CE,QAASA,GAAc,CAACxB,CAAD,CAAUyB,CAAV,CAAkB,CAAA,IACnC7E,CADmC,CAC7B3C,CAD6B,CAC1ByH,EAAKC,EAAA1I,OAClB+G,EAAA,CAAUC,CAAA,CAAOD,CAAP,CACV,KAAK/F,CAAL,CAAO,CAAP,CAAUA,CAAV,CAAYyH,CAAZ,CAAgB,EAAEzH,CAAlB,CAEE,GADA2C,CACI,CADG+E,EAAA,CAAe1H,CAAf,CACH,CADuBwH,CACvB,CAAAtI,CAAA,CAASyD,CAAT,CAAgBoD,CAAApD,KAAA,CAAaA,CAAb,CAAhB,CAAJ,CACE,MAAOA,EAGX,OAAO,KATgC,CA2IzCgF,QAASA,GAAW,CAAC5B,CAAD,CAAU6B,CAAV,CAAqB,CAWvCvB,QAASA,EAAM,CAACN,CAAD,CAAU,CACvBA,CAAA,EAAW8B,CAAAhI,KAAA,CAAckG,CAAd,CADY,CAXc,IACnC8B,EAAW,CAAC9B,CAAD,CADwB,CAEnC+B,CAFmC,CAGnCC,CAHmC,CAInCC,EAAS,EAJ0B,CAKnCC,EAAQ,CAAC,QAAD,CAAW,QAAX,CAAqB,UAArB,CAAiC,aAAjC,CAL2B,CASnCC,EAAsB,mCAM1B9I,EAAA,CAAQ6I,CAAR,CAAe,QAAQ,CAACE,CAAD,CAAO,CAC5BF,CAAA,CAAME,CAAN,CAAA;AAAc,CAAA,CACd9B,EAAA,CAAO3H,CAAA0J,eAAA,CAAwBD,CAAxB,CAAP,CACAA,EAAA,CAAOA,CAAA1B,QAAA,CAAa,GAAb,CAAkB,KAAlB,CACHV,EAAAsC,iBAAJ,GACEjJ,CAAA,CAAQ2G,CAAAsC,iBAAA,CAAyB,GAAzB,CAA+BF,CAA/B,CAAR,CAA8C9B,CAA9C,CAEA
 ,CADAjH,CAAA,CAAQ2G,CAAAsC,iBAAA,CAAyB,GAAzB,CAA+BF,CAA/B,CAAsC,KAAtC,CAAR,CAAsD9B,CAAtD,CACA,CAAAjH,CAAA,CAAQ2G,CAAAsC,iBAAA,CAAyB,GAAzB,CAA+BF,CAA/B,CAAsC,GAAtC,CAAR,CAAoD9B,CAApD,CAHF,CAJ4B,CAA9B,CAWAjH,EAAA,CAAQyI,CAAR,CAAkB,QAAQ,CAAC9B,CAAD,CAAU,CAClC,GAAI,CAAC+B,CAAL,CAAiB,CAEf,IAAItB,EAAQ0B,CAAAI,KAAA,CADI,GACJ,CADUvC,CAAAwC,UACV,CAD8B,GAC9B,CACR/B,EAAJ,EACEsB,CACA,CADa/B,CACb,CAAAgC,CAAA,CAAUtB,CAAAD,CAAA,CAAM,CAAN,CAAAC,EAAY,EAAZA,SAAA,CAAwB,MAAxB,CAAgC,GAAhC,CAFZ,EAIErH,CAAA,CAAQ2G,CAAAyC,WAAR,CAA4B,QAAQ,CAAC7F,CAAD,CAAO,CACpCmF,CAAAA,CAAL,EAAmBG,CAAA,CAAMtF,CAAAwF,KAAN,CAAnB,GACEL,CACA,CADa/B,CACb,CAAAgC,CAAA,CAASpF,CAAAxC,MAFX,CADyC,CAA3C,CAPa,CADiB,CAApC,CAiBI2H,EAAJ,GACEE,CAAAS,SACA,CAD8D,IAC9D,GADkBlB,EAAA,CAAeO,CAAf,CAA2B,WAA3B,CAClB,CAAAF,CAAA,CAAUE,CAAV,CAAsBC,CAAA,CAAS,CAACA,CAAD,CAAT,CAAoB,EAA1C,CAA8CC,CAA9C,CAFF,CA3CuC,CAmGzCJ,QAASA,GAAS,CAAC7B,CAAD,CAAU2C,CAAV,CAAmBV,CAAnB,CAA2B,CACtCjG,CAAA,CAASiG,CAAT,CAAL,GAAuBA,CAAvB,CAAgC,EAAhC,CAIAA,EAAA,CAAShH,CAAA,CAHW2
 H,UACR,CAAA,CADQA,CAGX,CAAsBX,CAAtB,CACT,KAAIY,EAAcA,QAAQ,EAAG,CAC3B7C,CAAA,CAAUC,CAAA,CAAOD,CAAP,CAEV,IAAIA,CAAA8C,SAAA,EAAJ,CAAwB,CACtB,IAAIC,EAAO/C,CAAA,CAAQ,CAAR,CAAD;AAAgBrH,CAAhB,CAA4B,UAA5B,CAAyCoH,EAAA,CAAYC,CAAZ,CACnD,MAAMtC,GAAA,CAAS,SAAT,CAAwEqF,CAAxE,CAAN,CAFsB,CAKxBJ,CAAA,CAAUA,CAAV,EAAqB,EACrBA,EAAA9H,QAAA,CAAgB,CAAC,UAAD,CAAa,QAAQ,CAACmI,CAAD,CAAW,CAC9CA,CAAA5I,MAAA,CAAe,cAAf,CAA+B4F,CAA/B,CAD8C,CAAhC,CAAhB,CAGA2C,EAAA9H,QAAA,CAAgB,IAAhB,CACIiI,EAAAA,CAAWG,EAAA,CAAeN,CAAf,CAAwBV,CAAAS,SAAxB,CACfI,EAAAI,OAAA,CAAgB,CAAC,YAAD,CAAe,cAAf,CAA+B,UAA/B,CAA2C,WAA3C,CAAwD,UAAxD,CACb,QAAQ,CAACC,CAAD,CAAQnD,CAAR,CAAiBoD,CAAjB,CAA0BN,CAA1B,CAAoCO,CAApC,CAA6C,CACpDF,CAAAG,OAAA,CAAa,QAAQ,EAAG,CACtBtD,CAAAuD,KAAA,CAAa,WAAb,CAA0BT,CAA1B,CACAM,EAAA,CAAQpD,CAAR,CAAA,CAAiBmD,CAAjB,CAFsB,CAAxB,CADoD,CADxC,CAAhB,CAQA,OAAOL,EAtBoB,CAA7B,CAyBIU,EAAqB,sBAEzB,IAAI9K,CAAJ,EAAc,CAAC8K,CAAAC,KAAA,CAAwB/K,CAAA0J,KAAxB,CAAf,CACE,MAAOS,EAAA,EAGTnK,EAAA0J,KAAA,CAAc1J,CAAA0J,KAAA1B,QAAA,CAAoB8C,CAApB,
 CAAwC,EAAxC,CACdE,GAAAC,gBAAA,CAA0BC,QAAQ,CAACC,CAAD,CAAe,CAC/CxK,CAAA,CAAQwK,CAAR,CAAsB,QAAQ,CAAC7B,CAAD,CAAS,CACrCW,CAAA7I,KAAA,CAAakI,CAAb,CADqC,CAAvC,CAGAa,EAAA,EAJ+C,CAtCN,CA+C7CiB,QAASA,GAAU,CAAC1B,CAAD,CAAO2B,CAAP,CAAiB,CAClCA,CAAA,CAAYA,CAAZ,EAAyB,GACzB,OAAO3B,EAAA1B,QAAA,CAAasD,EAAb;AAAgC,QAAQ,CAACC,CAAD,CAASC,CAAT,CAAc,CAC3D,OAAQA,CAAA,CAAMH,CAAN,CAAkB,EAA1B,EAAgCE,CAAAE,YAAA,EAD2B,CAAtD,CAF2B,CAkCpCC,QAASA,GAAS,CAACC,CAAD,CAAMjC,CAAN,CAAYkC,CAAZ,CAAoB,CACpC,GAAI,CAACD,CAAL,CACE,KAAM3G,GAAA,CAAS,MAAT,CAA2C0E,CAA3C,EAAmD,GAAnD,CAA0DkC,CAA1D,EAAoE,UAApE,CAAN,CAEF,MAAOD,EAJ6B,CAOtCE,QAASA,GAAW,CAACF,CAAD,CAAMjC,CAAN,CAAYoC,CAAZ,CAAmC,CACjDA,CAAJ,EAA6BpL,CAAA,CAAQiL,CAAR,CAA7B,GACIA,CADJ,CACUA,CAAA,CAAIA,CAAApL,OAAJ,CAAiB,CAAjB,CADV,CAIAmL,GAAA,CAAU3K,CAAA,CAAW4K,CAAX,CAAV,CAA2BjC,CAA3B,CAAiC,sBAAjC,EACKiC,CAAA,EAAqB,QAArB,EAAO,MAAOA,EAAd,CAAgCA,CAAAI,YAAArC,KAAhC,EAAwD,QAAxD,CAAmE,MAAOiC,EAD/E,EAEA,OAAOA,EAP8C,CAevDK,QAASA,GAAuB,CAACtC,CAAD,CAAO7I,CAAP,CAAgB,CAC9C,GAAa,gBAAb,
 GAAI6I,CAAJ,CACE,KAAM1E,GAAA,CAAS,SAAT,CAA8DnE,CAA9D,CAAN,CAF4C,CAchDoL,QAASA,GAAM,CAAC5L,CAAD,CAAM6L,CAAN,CAAYC,CAAZ,CAA2B,CACxC,GAAI,CAACD,CAAL,CAAW,MAAO7L,EACdc,EAAAA,CAAO+K,CAAA5D,MAAA,CAAW,GAAX,CAKX,KAJA,IAAIxH,CAAJ,CACIsL,EAAe/L,CADnB,CAEIgM,EAAMlL,CAAAZ,OAFV,CAISgB,EAAI,CAAb,CAAgBA,CAAhB,CAAoB8K,CAApB,CAAyB9K,CAAA,EAAzB,CACET,CACA,CADMK,CAAA,CAAKI,CAAL,CACN,CAAIlB,CAAJ,GACEA,CADF,CACQ,CAAC+L,CAAD,CAAgB/L,CAAhB,EAAqBS,CAArB,CADR,CAIF,OAAI,CAACqL,CAAL,EAAsBpL,CAAA,CAAWV,CAAX,CAAtB,CACS4F,EAAA,CAAKmG,CAAL,CAAmB/L,CAAnB,CADT,CAGOA,CAhBiC,CAwB1CiM,QAASA,GAAgB,CAACC,CAAD,CAAQ,CAAA,IAC3BC,EAAYD,CAAA,CAAM,CAAN,CACZE,EAAAA,CAAUF,CAAA,CAAMA,CAAAhM,OAAN;AAAqB,CAArB,CACd,IAAIiM,CAAJ,GAAkBC,CAAlB,CACE,MAAOlF,EAAA,CAAOiF,CAAP,CAIT,KAAIpD,EAAW,CAAC9B,CAAD,CAEf,GAAG,CACDA,CAAA,CAAUA,CAAAoF,YACV,IAAI,CAACpF,CAAL,CAAc,KACd8B,EAAAhI,KAAA,CAAckG,CAAd,CAHC,CAAH,MAISA,CAJT,GAIqBmF,CAJrB,CAMA,OAAOlF,EAAA,CAAO6B,CAAP,CAhBwB,CA4BjCuD,QAASA,GAAiB,CAAC3M,CAAD,CAAS,CAEjC,IAAI4M,EAAkBzM,CAAA,CAAO,WAAP,CA
 AtB,CACI6E,EAAW7E,CAAA,CAAO,IAAP,CAMX6K,EAAAA,CAAiBhL,CAHZ,QAGLgL,GAAiBhL,CAHE,QAGnBgL,CAH+B,EAG/BA,CAGJA,EAAA6B,SAAA,CAAmB7B,CAAA6B,SAAnB,EAAuC1M,CAEvC,OAAc6K,EARL,OAQT,GAAcA,CARS,OAQvB,CAAiC8B,QAAQ,EAAG,CAE1C,IAAI7C,EAAU,EAqDd,OAAOX,SAAe,CAACI,CAAD,CAAOqD,CAAP,CAAiBC,CAAjB,CAA2B,CAE7C,GAAa,gBAAb,GAKsBtD,CALtB,CACE,KAAM1E,EAAA,CAAS,SAAT,CAIoBnE,QAJpB,CAAN,CAKAkM,CAAJ,EAAgB9C,CAAAjJ,eAAA,CAAuB0I,CAAvB,CAAhB,GACEO,CAAA,CAAQP,CAAR,CADF,CACkB,IADlB,CAGA,OAAcO,EA1ET,CA0EkBP,CA1ElB,CA0EL,GAAcO,CA1EK,CA0EIP,CA1EJ,CA0EnB,CAA6BoD,QAAQ,EAAG,CAgNtCG,QAASA,EAAW,CAACC,CAAD,CAAWC,CAAX,CAAmBC,CAAnB,CAAiC,CACnD,MAAO,SAAQ,EAAG,CAChBC,CAAA,CAAYD,CAAZ,EAA4B,MAA5B,CAAA,CAAoC,CAACF,CAAD,CAAWC,CAAX,CAAmB1K,SAAnB,CAApC,CACA,OAAO6K,EAFS,CADiC,CA/MrD,GAAI,CAACP,CAAL,CACE,KAAMH,EAAA,CAAgB,OAAhB,CAEiDlD,CAFjD,CAAN,CAMF,IAAI2D,EAAc,EAAlB,CAGIE,EAAY,EAHhB;AAKIhE,EAAS0D,CAAA,CAAY,WAAZ,CAAyB,QAAzB,CALb,CAQIK,EAAiB,cAELD,CAFK,YAGPE,CAHO,UAcTR,CAdS,MAuBbrD,CAvBa,UAoCTuD,CAAA,CAAY,UAAZ,CAAwB,UAAxB,CApCS,SA+CVA,CAAA
 ,CAAY,UAAZ,CAAwB,SAAxB,CA/CU,SA0DVA,CAAA,CAAY,UAAZ,CAAwB,SAAxB,CA1DU,OAqEZA,CAAA,CAAY,UAAZ,CAAwB,OAAxB,CArEY,UAiFTA,CAAA,CAAY,UAAZ,CAAwB,UAAxB,CAAoC,SAApC,CAjFS,WAmHRA,CAAA,CAAY,kBAAZ,CAAgC,UAAhC,CAnHQ,QA8HXA,CAAA,CAAY,iBAAZ,CAA+B,UAA/B,CA9HW,YA0IPA,CAAA,CAAY,qBAAZ,CAAmC,UAAnC,CA1IO,WAuJRA,CAAA,CAAY,kBAAZ,CAAgC,WAAhC,CAvJQ,QAkKX1D,CAlKW,KA8KdiE,QAAQ,CAACC,CAAD,CAAQ,CACnBF,CAAAnM,KAAA,CAAeqM,CAAf,CACA,OAAO,KAFY,CA9KF,CAoLjBT,EAAJ,EACEzD,CAAA,CAAOyD,CAAP,CAGF,OAAQM,EAxM8B,CA1ET,EA0E/B,CAX+C,CAvDP,CART,EAQnC,CAdiC,CAkZnCI,QAASA,GAAkB,CAAC1C,CAAD,CAAS,CAClCzI,CAAA,CAAOyI,CAAP;AAAgB,WACD7B,EADC,MAENxE,EAFM,QAGJpC,CAHI,QAIJgD,EAJI,SAKHgC,CALG,SAMH5G,CANG,UAOF4J,EAPE,MAQPvH,CARO,MASPiD,EATO,QAUJU,EAVI,UAWFI,EAXE,UAYH9D,EAZG,aAaCG,CAbD,WAcDC,CAdC,UAeF5C,CAfE,YAgBAM,CAhBA,UAiBFuC,CAjBE,UAkBFC,EAlBE,WAmBDO,EAnBC,SAoBHpD,CApBG,SAqBHiN,EArBG,QAsBJnK,EAtBI,WAuBD4D,CAvBC,WAwBDwG,EAxBC,WAyBD,SAAU,CAAV,CAzBC,UA0BFzN,CA1BE,OA2BL0F,EA3BK,CAAhB,CA8BAgI,GAAA,CAAgBlB,EAAA,CAAkB3M,CAAlB,CAChB,IAAI,CACF6N
 ,EAAA,CAAc,UAAd,CADE,CAEF,MAAOnG,CAAP,CAAU,CACVmG,EAAA,CAAc,UAAd,CAA0B,EAA1B,CAAAX,SAAA,CAAuC,SAAvC,CAAkDY,EAAlD,CADU,CAIZD,EAAA,CAAc,IAAd,CAAoB,CAAC,UAAD,CAApB,CAAkC,CAAC,UAAD,CAChCE,QAAiB,CAACzD,CAAD,CAAW,CAE1BA,CAAA4C,SAAA,CAAkB,eACDc,EADC,CAAlB,CAGA1D,EAAA4C,SAAA,CAAkB,UAAlB,CAA8Be,EAA9B,CAAAC,UAAA,CACY,GACHC,EADG;MAECC,EAFD,UAGIA,EAHJ,MAIAC,EAJA,QAKEC,EALF,QAMEC,EANF,OAOCC,EAPD,QAQEC,EARF,QASEC,EATF,YAUMC,EAVN,gBAWUC,EAXV,SAYGC,EAZH,aAaOC,EAbP,YAcMC,EAdN,SAeGC,EAfH,cAgBQC,EAhBR,QAiBEC,EAjBF,QAkBEC,EAlBF,MAmBAC,EAnBA,WAoBKC,EApBL,QAqBEC,EArBF,eAsBSC,EAtBT,aAuBOC,EAvBP,UAwBIC,EAxBJ,QAyBEC,EAzBF,SA0BGC,EA1BH,UA2BIC,EA3BJ,cA4BQC,EA5BR,iBA6BWC,EA7BX,WA8BKC,EA9BL,cA+BQC,EA/BR,SAgCGC,EAhCH,QAiCEC,EAjCF,UAkCIC,EAlCJ,UAmCIC,EAnCJ,YAoCMA,EApCN,SAqCGC,EArCH,gBAsCUC,EAtCV,CADZ,CAAApC,UAAA,CAyCY,WACGqC,EADH,CAzCZ,CAAArC,UAAA,CA4CYsC,EA5CZ,CAAAtC,UAAA,CA6CYuC,EA7CZ,CA8CAnG;CAAA4C,SAAA,CAAkB,eACDwD,EADC,UAENC,EAFM,UAGNC,EAHM,eAIDC,EAJC,aAKHC,EALG,WAMLC,EANK,mBAOGC,EAPH,SAQPC,EARO,cASFC,EATE,W
 AULC,EAVK,OAWTC,EAXS,cAYFC,EAZE,WAaLC,EAbK,MAcVC,EAdU,QAeRC,EAfQ,YAgBJC,EAhBI,IAiBZC,EAjBY,MAkBVC,EAlBU,cAmBFC,EAnBE,UAoBNC,EApBM,gBAqBAC,EArBA,UAsBNC,EAtBM,SAuBPC,EAvBO,OAwBTC,EAxBS,iBAyBEC,EAzBF,CAAlB,CAnD0B,CADI,CAAlC,CAtCkC,CAyPpCC,QAASA,GAAS,CAACzI,CAAD,CAAO,CACvB,MAAOA,EAAA1B,QAAA,CACGoK,EADH,CACyB,QAAQ,CAACC,CAAD,CAAIhH,CAAJ,CAAeE,CAAf,CAAuB+G,CAAvB,CAA+B,CACnE,MAAOA,EAAA,CAAS/G,CAAAgH,YAAA,EAAT,CAAgChH,CAD4B,CADhE,CAAAvD,QAAA,CAIGwK,EAJH,CAIoB,OAJpB,CADgB,CAgBzBC,QAASA,GAAuB,CAAC/I,CAAD,CAAOgJ,CAAP,CAAqBC,CAArB,CAAkCC,CAAlC,CAAuD,CAMrFC,QAASA,EAAW,CAACC,CAAD,CAAQ,CAAA,IAEtBxO,EAAOqO,CAAA,EAAeG,CAAf,CAAuB,CAAC,IAAAC,OAAA,CAAYD,CAAZ,CAAD,CAAvB;AAA8C,CAAC,IAAD,CAF/B,CAGtBE,EAAYN,CAHU,CAItBO,CAJsB,CAIjBC,CAJiB,CAIPC,CAJO,CAKtB7L,CALsB,CAKb8L,CALa,CAKYC,CAEtC,IAAI,CAACT,CAAL,EAAqC,IAArC,EAA4BE,CAA5B,CACE,IAAA,CAAMxO,CAAA/D,OAAN,CAAA,CAEE,IADA0S,CACkB,CADZ3O,CAAAgP,MAAA,EACY,CAAdJ,CAAc,CAAH,CAAG,CAAAC,CAAA,CAAYF,CAAA1S,OAA9B,CAA0C2S,CAA1C,CAAqDC,CAArD,CAAgED,CAAA,EAAhE,CAOE,IANA5L
 ,CAMoB,CANVC,CAAA,CAAO0L,CAAA,CAAIC,CAAJ,CAAP,CAMU,CALhBF,CAAJ,CACE1L,CAAAiM,eAAA,CAAuB,UAAvB,CADF,CAGEP,CAHF,CAGc,CAACA,CAEK,CAAhBI,CAAgB,CAAH,CAAG,CAAAI,CAAA,CAAejT,CAAA8S,CAAA9S,CAAW+G,CAAA+L,SAAA,EAAX9S,QAAnC,CACI6S,CADJ,CACiBI,CADjB,CAEIJ,CAAA,EAFJ,CAGE9O,CAAAlD,KAAA,CAAUqS,EAAA,CAAOJ,CAAA,CAASD,CAAT,CAAP,CAAV,CAKR,OAAOM,EAAAnN,MAAA,CAAmB,IAAnB,CAAyB9D,SAAzB,CAzBmB,CAL5B,IAAIiR,EAAeD,EAAAtN,GAAA,CAAUuD,CAAV,CAAnB,CACAgK,EAAeA,CAAAC,UAAfD,EAAyCA,CACzCb,EAAAc,UAAA,CAAwBD,CACxBD,GAAAtN,GAAA,CAAUuD,CAAV,CAAA,CAAkBmJ,CAJmE,CA0DvFe,QAASA,GAAmB,CAAC/L,CAAD,CAAOhH,CAAP,CAAgB,CAAA,IAChCgT,CADgC,CAC3BxJ,CAD2B,CAEtCyJ,EAAWjT,CAAAkT,uBAAA,EAF2B,CAGtCxH,EAAQ,EAEZ,IARQyH,EAAAjJ,KAAA,CAQalD,CARb,CAQR,CAGO,CAELgM,CAAA,CAAMA,CAAN,EAAaC,CAAAG,YAAA,CAAqBpT,CAAAqT,cAAA,CAAsB,KAAtB,CAArB,CACb7J,EAAA,CAAM,CAAC8J,EAAAtK,KAAA,CAAqBhC,CAArB,CAAD,EAA+B,CAAC,EAAD,CAAK,EAAL,CAA/B,EAAyC,CAAzC,CAAA4D,YAAA,EACN2I,EAAA,CAAOC,EAAA,CAAQhK,CAAR,CAAP,EAAuBgK,EAAAC,SACvBT,EAAAU,UAAA,CAAgBH,CAAA,CAAK,CAAL,CAAhB,CAA
 0BvM,CAAAG,QAAA,CAAawM,EAAb,CAA+B,WAA/B,CAA1B;AAAwEJ,CAAA,CAAK,CAAL,CAIxE,KADA7S,CACA,CADI6S,CAAA,CAAK,CAAL,CACJ,CAAO7S,CAAA,EAAP,CAAA,CACEsS,CAAA,CAAMA,CAAAY,UAGRlI,EAAA,CAAeA,CAp3CV/F,OAAA,CAAcH,EAAApF,KAAA,CAo3CG4S,CAAAa,WAp3CH,CAo3CX9S,IAAA,EAp3CW,CAAd,CAs3CLiS,EAAA,CAAMC,CAAAa,WACNd,EAAAe,YAAA,CAAkB,EAhBb,CAHP,IAEErI,EAAAnL,KAAA,CAAWP,CAAAgU,eAAA,CAAuBhN,CAAvB,CAAX,CAqBFiM,EAAAc,YAAA,CAAuB,EACvBd,EAAAS,UAAA,CAAqB,EACrB5T,EAAA,CAAQ4L,CAAR,CAAe,QAAQ,CAACxI,CAAD,CAAO,CAC5B+P,CAAAG,YAAA,CAAqBlQ,CAArB,CAD4B,CAA9B,CAIA,OAAO+P,EAlCmC,CAqD5CgB,QAASA,EAAM,CAACxN,CAAD,CAAU,CACvB,GAAIA,CAAJ,WAAuBwN,EAAvB,CACE,MAAOxN,EAEL7G,EAAA,CAAS6G,CAAT,CAAJ,GACEA,CADF,CACYyN,EAAA,CAAKzN,CAAL,CADZ,CAGA,IAAI,EAAE,IAAF,WAAkBwN,EAAlB,CAAJ,CAA+B,CAC7B,GAAIrU,CAAA,CAAS6G,CAAT,CAAJ,EAA8C,GAA9C,EAAyBA,CAAAhC,OAAA,CAAe,CAAf,CAAzB,CACE,KAAM0P,GAAA,CAAa,OAAb,CAAN,CAEF,MAAO,KAAIF,CAAJ,CAAWxN,CAAX,CAJsB,CAO/B,GAAI7G,CAAA,CAAS6G,CAAT,CAAJ,CAAuB,CACA,IAAA,CA9BvBzG,EAAA,CAAqBZ,CACrB,KAAIgV,CAGF,EAAA,CADF,CAAKA,CAAL,C
 AAcC,EAAArL,KAAA,CAAuBhC,CAAvB,CAAd,EACS,CAAChH,CAAAqT,cAAA,CAAsBe,CAAA,CAAO,CAAP,CAAtB,CAAD,CADT,CAIA,CAAKA,CAAL,CAAcrB,EAAA,CAAoB/L,CAApB,CAA0BhH,CAA1B,CAAd,EACSoU,CAAAP,WADT,CAIO,EAkBgB,CACrBS,EAAA,CAAe,IAAf,CAAqB,CAArB,CAfqB,CAqBzBC,QAASA,GAAW,CAAC9N,CAAD,CAAU,CAC5B,MAAOA,EAAA+N,UAAA,CAAkB,CAAA,CAAlB,CADqB,CAt3ES;AA03EvCC,QAASA,GAAY,CAAChO,CAAD,CAAS,CAC5BiO,EAAA,CAAiBjO,CAAjB,CAD4B,KAElB/F,EAAI,CAAd,KAAiB8R,CAAjB,CAA4B/L,CAAAoN,WAA5B,EAAkD,EAAlD,CAAsDnT,CAAtD,CAA0D8R,CAAA9S,OAA1D,CAA2EgB,CAAA,EAA3E,CACE+T,EAAA,CAAajC,CAAA,CAAS9R,CAAT,CAAb,CAH0B,CAO9BiU,QAASA,GAAS,CAAClO,CAAD,CAAUmO,CAAV,CAAgBtP,CAAhB,CAAoBuP,CAApB,CAAiC,CACjD,GAAIrS,CAAA,CAAUqS,CAAV,CAAJ,CAA4B,KAAMV,GAAA,CAAa,SAAb,CAAN,CADqB,IAG7CW,EAASC,EAAA,CAAmBtO,CAAnB,CAA4B,QAA5B,CACAsO,GAAAC,CAAmBvO,CAAnBuO,CAA4B,QAA5BA,CAEb,GAEIzS,CAAA,CAAYqS,CAAZ,CAAJ,CACE9U,CAAA,CAAQgV,CAAR,CAAgB,QAAQ,CAACG,CAAD,CAAeL,CAAf,CAAqB,CAC3CM,EAAA,CAAsBzO,CAAtB,CAA+BmO,CAA/B,CAAqCK,CAArC,CACA,QAAOH,CAAA,CAAOF,CAAP,CAFoC,CAA7C,CADF,CAME9U,CAAA,
 CAAQ8U,CAAAnN,MAAA,CAAW,GAAX,CAAR,CAAyB,QAAQ,CAACmN,CAAD,CAAO,CAClCrS,CAAA,CAAY+C,CAAZ,CAAJ,EACE4P,EAAA,CAAsBzO,CAAtB,CAA+BmO,CAA/B,CAAqCE,CAAA,CAAOF,CAAP,CAArC,CACA,CAAA,OAAOE,CAAA,CAAOF,CAAP,CAFT,EAIEhR,EAAA,CAAYkR,CAAA,CAAOF,CAAP,CAAZ,EAA4B,EAA5B,CAAgCtP,CAAhC,CALoC,CAAxC,CARF,CANiD,CAyBnDoP,QAASA,GAAgB,CAACjO,CAAD,CAAUoC,CAAV,CAAgB,CAAA,IACnCsM,EAAY1O,CAAA,CAAQ2O,EAAR,CADuB,CAEnCC,EAAeC,EAAA,CAAQH,CAAR,CAEfE,EAAJ,GACMxM,CAAJ,CACE,OAAOyM,EAAA,CAAQH,CAAR,CAAAnL,KAAA,CAAwBnB,CAAxB,CADT,EAKIwM,CAAAL,OAKJ,GAJEK,CAAAP,OAAAS,SACA,EADgCF,CAAAL,OAAA,CAAoB,EAApB,CAAwB,UAAxB,CAChC,CAAAL,EAAA,CAAUlO,CAAV,CAGF,EADA,OAAO6O,EAAA,CAAQH,CAAR,CACP,CAAA1O,CAAA,CAAQ2O,EAAR,CAAA,CAAkB/V,CAVlB,CADF,CAJuC,CAmBzC0V,QAASA,GAAkB,CAACtO,CAAD,CAAUxG,CAAV,CAAeY,CAAf,CAAsB,CAAA,IAC3CsU,EAAY1O,CAAA,CAAQ2O,EAAR,CAD+B,CAE3CC,EAAeC,EAAA,CAAQH,CAAR,EAAsB,EAAtB,CAEnB,IAAI3S,CAAA,CAAU3B,CAAV,CAAJ,CACOwU,CAIL,GAHE5O,CAAA,CAAQ2O,EAAR,CACA,CADkBD,CAClB,CA9NuB,EAAEK,EA8NzB;AAAAH,CAAA,CAAeC,EAAA,CAAQH,CAAR,CAAf,CAAoC,EA
 EtC,EAAAE,CAAA,CAAapV,CAAb,CAAA,CAAoBY,CALtB,KAOE,OAAOwU,EAAP,EAAuBA,CAAA,CAAapV,CAAb,CAXsB,CAejDwV,QAASA,GAAU,CAAChP,CAAD,CAAUxG,CAAV,CAAeY,CAAf,CAAsB,CAAA,IACnCmJ,EAAO+K,EAAA,CAAmBtO,CAAnB,CAA4B,MAA5B,CAD4B,CAEnCiP,EAAWlT,CAAA,CAAU3B,CAAV,CAFwB,CAGnC8U,EAAa,CAACD,CAAdC,EAA0BnT,CAAA,CAAUvC,CAAV,CAHS,CAInC2V,EAAiBD,CAAjBC,EAA+B,CAACnT,CAAA,CAASxC,CAAT,CAE/B+J,EAAL,EAAc4L,CAAd,EACEb,EAAA,CAAmBtO,CAAnB,CAA4B,MAA5B,CAAoCuD,CAApC,CAA2C,EAA3C,CAGF,IAAI0L,CAAJ,CACE1L,CAAA,CAAK/J,CAAL,CAAA,CAAYY,CADd,KAGE,IAAI8U,CAAJ,CAAgB,CACd,GAAIC,CAAJ,CAEE,MAAO5L,EAAP,EAAeA,CAAA,CAAK/J,CAAL,CAEfyB,EAAA,CAAOsI,CAAP,CAAa/J,CAAb,CALY,CAAhB,IAQE,OAAO+J,EArB4B,CA0BzC6L,QAASA,GAAc,CAACpP,CAAD,CAAUqP,CAAV,CAAoB,CACzC,MAAKrP,EAAAsP,aAAL,CAEuC,EAFvC,CACS5O,CAAA,GAAAA,EAAOV,CAAAsP,aAAA,CAAqB,OAArB,CAAP5O,EAAwC,EAAxCA,EAA8C,GAA9CA,SAAA,CAA2D,SAA3D,CAAsE,GAAtE,CAAAzD,QAAA,CACI,GADJ,CACUoS,CADV,CACqB,GADrB,CADT,CAAkC,CAAA,CADO,CAM3CE,QAASA,GAAiB,CAACvP,CAAD,CAAUwP,CAAV,CAAsB,CAC1CA,CAAJ,EAAkBxP,CAAAyP,aAAlB,EACEpW,
 CAAA,CAAQmW,CAAAxO,MAAA,CAAiB,GAAjB,CAAR,CAA+B,QAAQ,CAAC0O,CAAD,CAAW,CAChD1P,CAAAyP,aAAA,CAAqB,OAArB,CAA8BhC,EAAA,CACzB/M,CAAA,GAAAA,EAAOV,CAAAsP,aAAA,CAAqB,OAArB,CAAP5O,EAAwC,EAAxCA,EAA8C,GAA9CA,SAAA,CACQ,SADR,CACmB,GADnB,CAAAA,QAAA,CAEQ,GAFR,CAEc+M,EAAA,CAAKiC,CAAL,CAFd,CAE+B,GAF/B,CAEoC,GAFpC,CADyB,CAA9B,CADgD,CAAlD,CAF4C,CA59ET;AAw+EvCC,QAASA,GAAc,CAAC3P,CAAD,CAAUwP,CAAV,CAAsB,CAC3C,GAAIA,CAAJ,EAAkBxP,CAAAyP,aAAlB,CAAwC,CACtC,IAAIG,EAAmBlP,CAAA,GAAAA,EAAOV,CAAAsP,aAAA,CAAqB,OAArB,CAAP5O,EAAwC,EAAxCA,EAA8C,GAA9CA,SAAA,CACU,SADV,CACqB,GADrB,CAGvBrH,EAAA,CAAQmW,CAAAxO,MAAA,CAAiB,GAAjB,CAAR,CAA+B,QAAQ,CAAC0O,CAAD,CAAW,CAChDA,CAAA,CAAWjC,EAAA,CAAKiC,CAAL,CAC4C,GAAvD,GAAIE,CAAA3S,QAAA,CAAwB,GAAxB,CAA8ByS,CAA9B,CAAyC,GAAzC,CAAJ,GACEE,CADF,EACqBF,CADrB,CACgC,GADhC,CAFgD,CAAlD,CAOA1P,EAAAyP,aAAA,CAAqB,OAArB,CAA8BhC,EAAA,CAAKmC,CAAL,CAA9B,CAXsC,CADG,CAgB7C/B,QAASA,GAAc,CAACgC,CAAD,CAAO/N,CAAP,CAAiB,CACtC,GAAIA,CAAJ,CAAc,CACZA,CAAA,CAAaA,CAAApF,SACF,EADuB,CAAAX,CAAA,CAAU+F,CAAA7I,OAAV,CACv
 B,EADsDD,EAAA,CAAS8I,CAAT,CACtD,CACP,CAAEA,CAAF,CADO,CAAPA,CAEJ,KAAI,IAAI7H,EAAE,CAAV,CAAaA,CAAb,CAAiB6H,CAAA7I,OAAjB,CAAkCgB,CAAA,EAAlC,CACE4V,CAAA/V,KAAA,CAAUgI,CAAA,CAAS7H,CAAT,CAAV,CALU,CADwB,CAWxC6V,QAASA,GAAgB,CAAC9P,CAAD,CAAUoC,CAAV,CAAgB,CACvC,MAAO2N,GAAA,CAAoB/P,CAApB,CAA6B,GAA7B,EAAoCoC,CAApC,EAA4C,cAA5C,EAA+D,YAA/D,CADgC,CAIzC2N,QAASA,GAAmB,CAAC/P,CAAD,CAAUoC,CAAV,CAAgBhI,CAAhB,CAAuB,CACjD4F,CAAA,CAAUC,CAAA,CAAOD,CAAP,CAIgB,EAA1B,EAAGA,CAAA,CAAQ,CAAR,CAAA9G,SAAH,GACE8G,CADF,CACYA,CAAAnD,KAAA,CAAa,MAAb,CADZ,CAKA,KAFIqF,CAEJ,CAFY9I,CAAA,CAAQgJ,CAAR,CAAA,CAAgBA,CAAhB,CAAuB,CAACA,CAAD,CAEnC,CAAOpC,CAAA/G,OAAP,CAAA,CAAuB,CAErB,IADA,IAAIwD,EAAOuD,CAAA,CAAQ,CAAR,CAAX,CACS/F,EAAI,CADb,CACgByH,EAAKQ,CAAAjJ,OAArB,CAAmCgB,CAAnC;AAAuCyH,CAAvC,CAA2CzH,CAAA,EAA3C,CACE,IAAKG,CAAL,CAAa4F,CAAAuD,KAAA,CAAarB,CAAA,CAAMjI,CAAN,CAAb,CAAb,IAAyCrB,CAAzC,CAAoD,MAAOwB,EAM7D4F,EAAA,CAAUC,CAAA,CAAOxD,CAAAuT,WAAP,EAA6C,EAA7C,GAA2BvT,CAAAvD,SAA3B,EAAmDuD,CAAAwT,KAAnD,CATW,CAV0B,CAuBnDC,QAASA,GAAW,CAA
 ClQ,CAAD,CAAU,CAC5B,IAD4B,IACnB/F,EAAI,CADe,CACZmT,EAAapN,CAAAoN,WAA7B,CAAiDnT,CAAjD,CAAqDmT,CAAAnU,OAArD,CAAwEgB,CAAA,EAAxE,CACE+T,EAAA,CAAaZ,CAAA,CAAWnT,CAAX,CAAb,CAEF,KAAA,CAAO+F,CAAAqN,WAAP,CAAA,CACErN,CAAAmQ,YAAA,CAAoBnQ,CAAAqN,WAApB,CAL0B,CA+D9B+C,QAASA,GAAkB,CAACpQ,CAAD,CAAUoC,CAAV,CAAgB,CAEzC,IAAIiO,EAAcC,EAAA,CAAalO,CAAA+B,YAAA,EAAb,CAGlB,OAAOkM,EAAP,EAAsBE,EAAA,CAAiBvQ,CAAAtD,SAAjB,CAAtB,EAA4D2T,CALnB,CAgM3CG,QAASA,GAAkB,CAACxQ,CAAD,CAAUqO,CAAV,CAAkB,CAC3C,IAAIG,EAAeA,QAAS,CAACiC,CAAD,CAAQtC,CAAR,CAAc,CACnCsC,CAAAC,eAAL,GACED,CAAAC,eADF,CACyBC,QAAQ,EAAG,CAChCF,CAAAG,YAAA,CAAoB,CAAA,CADY,CADpC,CAMKH,EAAAI,gBAAL,GACEJ,CAAAI,gBADF,CAC0BC,QAAQ,EAAG,CACjCL,CAAAM,aAAA,CAAqB,CAAA,CADY,CADrC,CAMKN,EAAAO,OAAL,GACEP,CAAAO,OADF,CACiBP,CAAAQ,WADjB,EACqCtY,CADrC,CAIA,IAAImD,CAAA,CAAY2U,CAAAS,iBAAZ,CAAJ,CAAyC,CACvC,IAAIC;AAAUV,CAAAC,eACdD,EAAAC,eAAA,CAAuBC,QAAQ,EAAG,CAChCF,CAAAS,iBAAA,CAAyB,CAAA,CACzBC,EAAAxX,KAAA,CAAa8W,CAAb,CAFgC,CAIlCA,EAAAS,iBAAA,CAAyB,CAAA,CANc,CASzCT,CAAAW,mBAAA,C
 AA2BC,QAAQ,EAAG,CACpC,MAAOZ,EAAAS,iBAAP,EAAuD,CAAA,CAAvD,GAAiCT,CAAAG,YADG,CAKtC,KAAIU,EAAoBxT,EAAA,CAAYuQ,CAAA,CAAOF,CAAP,EAAesC,CAAAtC,KAAf,CAAZ,EAA0C,EAA1C,CAExB9U,EAAA,CAAQiY,CAAR,CAA2B,QAAQ,CAACzS,CAAD,CAAK,CACtCA,CAAAlF,KAAA,CAAQqG,CAAR,CAAiByQ,CAAjB,CADsC,CAAxC,CAMY,EAAZ,EAAIc,CAAJ,EAEEd,CAAAC,eAEA,CAFuB,IAEvB,CADAD,CAAAI,gBACA,CADwB,IACxB,CAAAJ,CAAAW,mBAAA,CAA2B,IAJ7B,GAOE,OAAOX,CAAAC,eAEP,CADA,OAAOD,CAAAI,gBACP,CAAA,OAAOJ,CAAAW,mBATT,CAvCwC,CAmD1C5C,EAAAgD,KAAA,CAAoBxR,CACpB,OAAOwO,EArDoC,CA+S7CiD,QAASA,GAAO,CAAC1Y,CAAD,CAAM,CAAA,IAChB2Y,EAAU,MAAO3Y,EADD,CAEhBS,CAEW,SAAf,EAAIkY,CAAJ,EAAmC,IAAnC,GAA2B3Y,CAA3B,CACsC,UAApC,EAAI,OAAQS,CAAR,CAAcT,CAAAiC,UAAd,CAAJ,CAEExB,CAFF;AAEQT,CAAAiC,UAAA,EAFR,CAGWxB,CAHX,GAGmBZ,CAHnB,GAIEY,CAJF,CAIQT,CAAAiC,UAJR,CAIwBX,EAAA,EAJxB,CADF,CAQEb,CARF,CAQQT,CAGR,OAAO2Y,EAAP,CAAiB,GAAjB,CAAuBlY,CAfH,CAqBtBmY,QAASA,GAAO,CAACzU,CAAD,CAAO,CACrB7D,CAAA,CAAQ6D,CAAR,CAAe,IAAA0U,IAAf,CAAyB,IAAzB,CADqB,CAmGvBC,QAASA,GAAM,CAAChT,CAAD,CAAK,CAKlB,MAAA,CADIiT
 ,CACJ,CAFajT,CAAA1C,SAAA,EAAAuE,QAAAqR,CAAsBC,EAAtBD,CAAsC,EAAtCA,CACFtR,MAAA,CAAawR,EAAb,CACX,EACS,WADT,CACwBvR,CAAAoR,CAAA,CAAK,CAAL,CAAApR,EAAW,EAAXA,SAAA,CAAuB,WAAvB,CAAoC,GAApC,CADxB,CACmE,GADnE,CAGO,IARW,CAWpBwR,QAASA,GAAQ,CAACrT,CAAD,CAAK6D,CAAL,CAAeN,CAAf,CAAqB,CAAA,IAChC+P,CAKJ,IAAiB,UAAjB,EAAI,MAAOtT,EAAX,CACE,IAAI,EAAEsT,CAAF,CAAYtT,CAAAsT,QAAZ,CAAJ,CAA6B,CAC3BA,CAAA,CAAU,EACV,IAAItT,CAAA5F,OAAJ,CAAe,CACb,GAAIyJ,CAAJ,CAIE,KAHKvJ,EAAA,CAASiJ,CAAT,CAGC,EAHkBA,CAGlB,GAFJA,CAEI,CAFGvD,CAAAuD,KAEH,EAFcyP,EAAA,CAAOhT,CAAP,CAEd,EAAAyG,EAAA,CAAgB,UAAhB,CACyElD,CADzE,CAAN,CAGF2P,CAAA,CAASlT,CAAA1C,SAAA,EAAAuE,QAAA,CAAsBsR,EAAtB,CAAsC,EAAtC,CACTI,EAAA,CAAUL,CAAAtR,MAAA,CAAawR,EAAb,CACV5Y,EAAA,CAAQ+Y,CAAA,CAAQ,CAAR,CAAApR,MAAA,CAAiBqR,EAAjB,CAAR,CAAwC,QAAQ,CAAChO,CAAD,CAAK,CACnDA,CAAA3D,QAAA,CAAY4R,EAAZ,CAAoB,QAAQ,CAACC,CAAD,CAAMC,CAAN,CAAkBpQ,CAAlB,CAAuB,CACjD+P,CAAArY,KAAA,CAAasI,CAAb,CADiD,CAAnD,CADmD,CAArD,CAVa,CAgBfvD,CAAAsT,QAAA,CAAaA,CAlBc,CAA7B,CADF,IAqBW/Y,EAAA,CAAQyF,CAAR,
 CAAJ,EACL4T,CAEA,CAFO5T,CAAA5F,OAEP;AAFmB,CAEnB,CADAsL,EAAA,CAAY1F,CAAA,CAAG4T,CAAH,CAAZ,CAAsB,IAAtB,CACA,CAAAN,CAAA,CAAUtT,CAAAE,MAAA,CAAS,CAAT,CAAY0T,CAAZ,CAHL,EAKLlO,EAAA,CAAY1F,CAAZ,CAAgB,IAAhB,CAAsB,CAAA,CAAtB,CAEF,OAAOsT,EAlC6B,CAghBtClP,QAASA,GAAc,CAACyP,CAAD,CAAgBhQ,CAAhB,CAA0B,CAoC/CiQ,QAASA,EAAa,CAACC,CAAD,CAAW,CAC/B,MAAO,SAAQ,CAACpZ,CAAD,CAAMY,CAAN,CAAa,CAC1B,GAAI4B,CAAA,CAASxC,CAAT,CAAJ,CACEH,CAAA,CAAQG,CAAR,CAAaU,EAAA,CAAc0Y,CAAd,CAAb,CADF,KAGE,OAAOA,EAAA,CAASpZ,CAAT,CAAcY,CAAd,CAJiB,CADG,CAUjCwL,QAASA,EAAQ,CAACxD,CAAD,CAAOyQ,CAAP,CAAkB,CACjCnO,EAAA,CAAwBtC,CAAxB,CAA8B,SAA9B,CACA,IAAI3I,CAAA,CAAWoZ,CAAX,CAAJ,EAA6BzZ,CAAA,CAAQyZ,CAAR,CAA7B,CACEA,CAAA,CAAYC,CAAAC,YAAA,CAA6BF,CAA7B,CAEd,IAAI,CAACA,CAAAG,KAAL,CACE,KAAM1N,GAAA,CAAgB,MAAhB,CAA2ElD,CAA3E,CAAN,CAEF,MAAO6Q,EAAA,CAAc7Q,CAAd,CAAqB8Q,CAArB,CAAP,CAA8CL,CARb,CAWnCrN,QAASA,EAAO,CAACpD,CAAD,CAAO+Q,CAAP,CAAkB,CAAE,MAAOvN,EAAA,CAASxD,CAAT,CAAe,MAAQ+Q,CAAR,CAAf,CAAT,CA6BlCC,QAASA,EAAW,CAACV,CAAD,CAAe,CAAA,IAC7BzM,EAAY,EAD
 iB,CACboN,CADa,CACHtN,CADG,CACU9L,CADV,CACayH,CAC9CrI,EAAA,CAAQqZ,CAAR,CAAuB,QAAQ,CAAC1Q,CAAD,CAAS,CACtC,GAAI,CAAAsR,CAAAC,IAAA,CAAkBvR,CAAlB,CAAJ,CAAA,CACAsR,CAAA1B,IAAA,CAAkB5P,CAAlB,CAA0B,CAAA,CAA1B,CAEA,IAAI,CACF,GAAI7I,CAAA,CAAS6I,CAAT,CAAJ,CAIE,IAHAqR,CAGgD,CAHrC9M,EAAA,CAAcvE,CAAd,CAGqC,CAFhDiE,CAEgD,CAFpCA,CAAA/G,OAAA,CAAiBkU,CAAA,CAAYC,CAAA5N,SAAZ,CAAjB,CAAAvG,OAAA,CAAwDmU,CAAAG,WAAxD,CAEoC,CAA5CzN,CAA4C,CAA9BsN,CAAAI,aAA8B,CAAPxZ,CAAO,CAAH,CAAG,CAAAyH,CAAA,CAAKqE,CAAA9M,OAArD,CAAyEgB,CAAzE,CAA6EyH,CAA7E,CAAiFzH,CAAA,EAAjF,CAAsF,CAAA,IAChFyZ,EAAa3N,CAAA,CAAY9L,CAAZ,CADmE,CAEhF2L,EAAWkN,CAAAS,IAAA,CAAqBG,CAAA,CAAW,CAAX,CAArB,CAEf9N;CAAA,CAAS8N,CAAA,CAAW,CAAX,CAAT,CAAAzU,MAAA,CAA8B2G,CAA9B,CAAwC8N,CAAA,CAAW,CAAX,CAAxC,CAJoF,CAJxF,IAUWja,EAAA,CAAWuI,CAAX,CAAJ,CACHiE,CAAAnM,KAAA,CAAegZ,CAAA5P,OAAA,CAAwBlB,CAAxB,CAAf,CADG,CAEI5I,CAAA,CAAQ4I,CAAR,CAAJ,CACHiE,CAAAnM,KAAA,CAAegZ,CAAA5P,OAAA,CAAwBlB,CAAxB,CAAf,CADG,CAGLuC,EAAA,CAAYvC,CAAZ,CAAoB,QAApB,CAhBA,CAkBF,MAAO5B,CAAP,CAAU,CAY
 V,KAXIhH,EAAA,CAAQ4I,CAAR,CAWE,GAVJA,CAUI,CAVKA,CAAA,CAAOA,CAAA/I,OAAP,CAAuB,CAAvB,CAUL,EARFmH,CAAAuT,QAQE,GARWvT,CAAAwT,MAQX,EARqD,EAQrD,EARsBxT,CAAAwT,MAAA3W,QAAA,CAAgBmD,CAAAuT,QAAhB,CAQtB,IAFJvT,CAEI,CAFAA,CAAAuT,QAEA,CAFY,IAEZ,CAFmBvT,CAAAwT,MAEnB,EAAAtO,EAAA,CAAgB,UAAhB,CACItD,CADJ,CACY5B,CAAAwT,MADZ,EACuBxT,CAAAuT,QADvB,EACoCvT,CADpC,CAAN,CAZU,CArBZ,CADsC,CAAxC,CAsCA,OAAO6F,EAxC0B,CA+CnC4N,QAASA,EAAsB,CAACC,CAAD,CAAQtO,CAAR,CAAiB,CAE9CuO,QAASA,EAAU,CAACC,CAAD,CAAc,CAC/B,GAAIF,CAAApa,eAAA,CAAqBsa,CAArB,CAAJ,CAAuC,CACrC,GAAIF,CAAA,CAAME,CAAN,CAAJ,GAA2BC,CAA3B,CACE,KAAM3O,GAAA,CAAgB,MAAhB,CAA0DV,CAAAlK,KAAA,CAAU,MAAV,CAA1D,CAAN,CAEF,MAAOoZ,EAAA,CAAME,CAAN,CAJ8B,CAMrC,GAAI,CAGF,MAFApP,EAAA/J,QAAA,CAAamZ,CAAb,CAEO,CADPF,CAAA,CAAME,CAAN,CACO,CADcC,CACd,CAAAH,CAAA,CAAME,CAAN,CAAA,CAAqBxO,CAAA,CAAQwO,CAAR,CAH1B,CAIF,MAAOE,CAAP,CAAY,CAIZ,KAHIJ,EAAA,CAAME,CAAN,CAGEE,GAHqBD,CAGrBC,EAFJ,OAAOJ,CAAA,CAAME,CAAN,CAEHE,CAAAA,CAAN,CAJY,CAJd,OASU,CACRtP,CAAAoH,MAAA,EADQ,CAhBmB,CAsBjC9I,QAASA,EA
 AM,CAACrE,CAAD,CAAKD,CAAL,CAAWuV,CAAX,CAAmBH,CAAnB,CAA+B,CACtB,QAAtB;AAAI,MAAOG,EAAX,GACEH,CACA,CADcG,CACd,CAAAA,CAAA,CAAS,IAFX,CAD4C,KAMxCrC,EAAO,EACPK,EAAAA,CAAUD,EAAA,CAASrT,CAAT,CAAa6D,CAAb,CAAuBsR,CAAvB,CAP8B,KAQxC/a,CARwC,CAQhCgB,CARgC,CASxCT,CAEAS,EAAA,CAAI,CAAR,KAAWhB,CAAX,CAAoBkZ,CAAAlZ,OAApB,CAAoCgB,CAApC,CAAwChB,CAAxC,CAAgDgB,CAAA,EAAhD,CAAqD,CACnDT,CAAA,CAAM2Y,CAAA,CAAQlY,CAAR,CACN,IAAmB,QAAnB,GAAI,MAAOT,EAAX,CACE,KAAM8L,GAAA,CAAgB,MAAhB,CACyE9L,CADzE,CAAN,CAGFsY,CAAAhY,KAAA,CACEqa,CACA,EADUA,CAAAza,eAAA,CAAsBF,CAAtB,CACV,CAAE2a,CAAA,CAAO3a,CAAP,CAAF,CACEua,CAAA,CAAWva,CAAX,CAHJ,CANmD,CAYhDqF,CAAAsT,QAAL,GAEEtT,CAFF,CAEOA,CAAA,CAAG5F,CAAH,CAFP,CAOA,OAAO4F,EAAAI,MAAA,CAASL,CAAT,CAAekT,CAAf,CA9BqC,CA8C9C,MAAO,QACG5O,CADH,aAbP6P,QAAoB,CAACqB,CAAD,CAAOD,CAAP,CAAeH,CAAf,CAA4B,CAAA,IAC1CK,EAAcA,QAAQ,EAAG,EAK7BA,EAAAC,UAAA,CAAyBA,CAAAlb,CAAA,CAAQgb,CAAR,CAAA,CAAgBA,CAAA,CAAKA,CAAAnb,OAAL,CAAmB,CAAnB,CAAhB,CAAwCmb,CAAxCE,WACzBC,EAAA,CAAW,IAAIF,CACfG,EAAA,CAAgBtR,CAAA,CAAOkR,CAAP
 ,CAAaG,CAAb,CAAuBJ,CAAvB,CAA+BH,CAA/B,CAEhB,OAAOhY,EAAA,CAASwY,CAAT,CAAA,EAA2B/a,CAAA,CAAW+a,CAAX,CAA3B,CAAuDA,CAAvD,CAAuED,CAVhC,CAazC,KAGAR,CAHA,UAIK7B,EAJL,KAKAuC,QAAQ,CAACrS,CAAD,CAAO,CAClB,MAAO6Q,EAAAvZ,eAAA,CAA6B0I,CAA7B,CAAoC8Q,CAApC,CAAP,EAA8DY,CAAApa,eAAA,CAAqB0I,CAArB,CAD5C,CALf,CAtEuC,CApIhDM,CAAA,CAAyB,CAAA,CAAzB,GAAYA,CADmC,KAE3CuR,EAAgB,EAF2B,CAG3Cf,EAAiB,UAH0B,CAI3CtO,EAAO,EAJoC,CAK3C0O,EAAgB,IAAI3B,EALuB,CAM3CsB,EAAgB,UACJ,UACIN,CAAA,CAAc/M,CAAd,CADJ;QAEG+M,CAAA,CAAcnN,CAAd,CAFH,SAGGmN,CAAA,CAiDnB+B,QAAgB,CAACtS,CAAD,CAAOqC,CAAP,CAAoB,CAClC,MAAOe,EAAA,CAAQpD,CAAR,CAAc,CAAC,WAAD,CAAc,QAAQ,CAACuS,CAAD,CAAY,CACrD,MAAOA,EAAA5B,YAAA,CAAsBtO,CAAtB,CAD8C,CAAlC,CAAd,CAD2B,CAjDjB,CAHH,OAICkO,CAAA,CAsDjBvY,QAAc,CAACgI,CAAD,CAAOhD,CAAP,CAAY,CAAE,MAAOoG,EAAA,CAAQpD,CAAR,CAAcvG,EAAA,CAAQuD,CAAR,CAAd,CAAT,CAtDT,CAJD,UAKIuT,CAAA,CAuDpBiC,QAAiB,CAACxS,CAAD,CAAOhI,CAAP,CAAc,CAC7BsK,EAAA,CAAwBtC,CAAxB,CAA8B,UAA9B,CACA6Q,EAAA,CAAc7Q,CAAd,CAAA,CAAsBhI,CACtBya,EAAA,CAAczS,CAAd,CAAA,CAAsB
 hI,CAHO,CAvDX,CALJ,WAkEhB0a,QAAkB,CAACd,CAAD,CAAce,CAAd,CAAuB,CAAA,IACnCC,EAAelC,CAAAS,IAAA,CAAqBS,CAArB,CAAmCd,CAAnC,CADoB,CAEnC+B,EAAWD,CAAAhC,KAEfgC,EAAAhC,KAAA,CAAoBkC,QAAQ,EAAG,CAC7B,IAAIC,EAAeC,CAAAlS,OAAA,CAAwB+R,CAAxB,CAAkCD,CAAlC,CACnB,OAAOI,EAAAlS,OAAA,CAAwB6R,CAAxB,CAAiC,IAAjC,CAAuC,WAAYI,CAAZ,CAAvC,CAFsB,CAJQ,CAlEzB,CADI,CAN2B,CAgB3CrC,EAAoBG,CAAA0B,UAApB7B,CACIe,CAAA,CAAuBZ,CAAvB,CAAsC,QAAQ,EAAG,CAC/C,KAAM3N,GAAA,CAAgB,MAAhB,CAAiDV,CAAAlK,KAAA,CAAU,MAAV,CAAjD,CAAN,CAD+C,CAAjD,CAEGgI,CAFH,CAjBuC,CAoB3CmS,EAAgB,EApB2B,CAqB3CO,EAAoBP,CAAAF,UAApBS,CACIvB,CAAA,CAAuBgB,CAAvB,CAAsC,QAAQ,CAACQ,CAAD,CAAc,CAC1D,IAAIzP,EAAWkN,CAAAS,IAAA,CAAqB8B,CAArB,CAAmCnC,CAAnC,CACf,OAAOkC,EAAAlS,OAAA,CAAwB0C,CAAAoN,KAAxB,CAAuCpN,CAAvC,CAAiDhN,CAAjD,CAA4Dyc,CAA5D,CAFmD,CAA5D,CAGG3S,CAHH,CAMRrJ,EAAA,CAAQ+Z,CAAA,CAAYV,CAAZ,CAAR,CAAoC,QAAQ,CAAC7T,CAAD,CAAK,CAAEuW,CAAAlS,OAAA,CAAwBrE,CAAxB;AAA8BnD,CAA9B,CAAF,CAAjD,CAEA,OAAO0Z,EA9BwC,CA0QjDhM,QAASA,GAAqB,EAAG,CAE/B,IAAIkM,EAAuB,CAAA,CAE3B,KAAAC,qBAA
 A,CAA4BC,QAAQ,EAAG,CACrCF,CAAA,CAAuB,CAAA,CADc,CAIvC,KAAAtC,KAAA,CAAY,CAAC,SAAD,CAAY,WAAZ,CAAyB,YAAzB,CAAuC,QAAQ,CAACyC,CAAD,CAAUC,CAAV,CAAqBC,CAArB,CAAiC,CAO1FC,QAASA,EAAc,CAAC5Y,CAAD,CAAO,CAC5B,IAAI6Y,EAAS,IACbxc,EAAA,CAAQ2D,CAAR,CAAc,QAAQ,CAACgD,CAAD,CAAU,CACzB6V,CAAL,EAA+C,GAA/C,GAAe/V,CAAA,CAAUE,CAAAtD,SAAV,CAAf,GAAoDmZ,CAApD,CAA6D7V,CAA7D,CAD8B,CAAhC,CAGA,OAAO6V,EALqB,CAQ9BC,QAASA,EAAM,EAAG,CAAA,IACZC,EAAOL,CAAAK,KAAA,EADK,CACaC,CAGxBD,EAAL,CAGK,CAAKC,CAAL,CAAWrd,CAAA0J,eAAA,CAAwB0T,CAAxB,CAAX,EAA2CC,CAAAC,eAAA,EAA3C,CAGA,CAAKD,CAAL,CAAWJ,CAAA,CAAejd,CAAAud,kBAAA,CAA2BH,CAA3B,CAAf,CAAX,EAA8DC,CAAAC,eAAA,EAA9D,CAGa,KAHb,GAGIF,CAHJ,EAGoBN,CAAAU,SAAA,CAAiB,CAAjB,CAAoB,CAApB,CATzB,CAAWV,CAAAU,SAAA,CAAiB,CAAjB,CAAoB,CAApB,CAJK,CAdlB,IAAIxd,EAAW8c,CAAA9c,SAgCX2c,EAAJ,EACEK,CAAAlY,OAAA,CAAkB2Y,QAAwB,EAAG,CAAC,MAAOV,EAAAK,KAAA,EAAR,CAA7C,CACEM,QAA8B,EAAG,CAC/BV,CAAAnY,WAAA,CAAsBsY,CAAtB,CAD+B,CADnC,CAMF,OAAOA,EAxCmF,CAAhF,CARmB,CAsSjClL,QAASA,GAAuB,EAAE,CAChC,IAAAoI,KAAA;AAAY,CAAC,OAA
 D,CAAU,UAAV,CAAsB,QAAQ,CAACsD,CAAD,CAAQC,CAAR,CAAkB,CAC1D,MAAOD,EAAAE,UACA,CAAH,QAAQ,CAAC3X,CAAD,CAAK,CAAE,MAAOyX,EAAA,CAAMzX,CAAN,CAAT,CAAV,CACH,QAAQ,CAACA,CAAD,CAAK,CACb,MAAO0X,EAAA,CAAS1X,CAAT,CAAa,CAAb,CAAgB,CAAA,CAAhB,CADM,CAHyC,CAAhD,CADoB,CAgClC4X,QAASA,GAAO,CAAC/d,CAAD,CAASC,CAAT,CAAmB+d,CAAnB,CAAyBC,CAAzB,CAAmC,CAsBjDC,QAASA,EAA0B,CAAC/X,CAAD,CAAK,CACtC,GAAI,CACFA,CAAAI,MAAA,CAAS,IAAT,CAt3GGF,EAAApF,KAAA,CAs3GsBwB,SAt3GtB,CAs3GiC6D,CAt3GjC,CAs3GH,CADE,CAAJ,OAEU,CAER,GADA6X,CAAA,EACI,CAA4B,CAA5B,GAAAA,CAAJ,CACE,IAAA,CAAMC,CAAA7d,OAAN,CAAA,CACE,GAAI,CACF6d,CAAAC,IAAA,EAAA,EADE,CAEF,MAAO3W,CAAP,CAAU,CACVsW,CAAAM,MAAA,CAAW5W,CAAX,CADU,CANR,CAH4B,CAmExC6W,QAASA,EAAW,CAACC,CAAD,CAAWC,CAAX,CAAuB,CACxCC,SAASA,EAAK,EAAG,CAChB/d,CAAA,CAAQge,CAAR,CAAiB,QAAQ,CAACC,CAAD,CAAQ,CAAEA,CAAA,EAAF,CAAjC,CACAC,EAAA,CAAcJ,CAAA,CAAWC,CAAX,CAAkBF,CAAlB,CAFE,CAAjBE,CAAA,EADwC,CAuE3CI,QAASA,EAAa,EAAG,CACvBC,CAAA,CAAc,IACVC,EAAJ,EAAsB9Y,CAAA+Y,IAAA,EAAtB,GAEAD,CACA,CADiB9Y,CAAA+Y,IAAA,EACjB,CAAAte,CA
 AA,CAAQue,EAAR,CAA4B,QAAQ,CAACC,CAAD,CAAW,CAC7CA,CAAA,CAASjZ,CAAA+Y,IAAA,EAAT,CAD6C,CAA/C,CAHA,CAFuB,CAhKwB,IAC7C/Y,EAAO,IADsC,CAE7CkZ,EAAcnf,CAAA,CAAS,CAAT,CAF+B,CAG7C0D,EAAW3D,CAAA2D,SAHkC,CAI7C0b,EAAUrf,CAAAqf,QAJmC,CAK7CZ,EAAaze,CAAAye,WALgC,CAM7Ca,EAAetf,CAAAsf,aAN8B,CAO7CC,EAAkB,EAEtBrZ,EAAAsZ,OAAA,CAAc,CAAA,CAEd,KAAIrB,EAA0B,CAA9B,CACIC,EAA8B,EAGlClY,EAAAuZ,6BAAA;AAAoCvB,CACpChY,EAAAwZ,6BAAA,CAAoCC,QAAQ,EAAG,CAAExB,CAAA,EAAF,CA6B/CjY,EAAA0Z,gCAAA,CAAuCC,QAAQ,CAACC,CAAD,CAAW,CAIxDnf,CAAA,CAAQge,CAAR,CAAiB,QAAQ,CAACC,CAAD,CAAQ,CAAEA,CAAA,EAAF,CAAjC,CAEgC,EAAhC,GAAIT,CAAJ,CACE2B,CAAA,EADF,CAGE1B,CAAAhd,KAAA,CAAiC0e,CAAjC,CATsD,CA7CT,KA6D7CnB,EAAU,EA7DmC,CA8D7CE,CAaJ3Y,EAAA6Z,UAAA,CAAiBC,QAAQ,CAAC7Z,CAAD,CAAK,CACxB/C,CAAA,CAAYyb,CAAZ,CAAJ,EAA8BN,CAAA,CAAY,GAAZ,CAAiBE,CAAjB,CAC9BE,EAAAvd,KAAA,CAAa+E,CAAb,CACA,OAAOA,EAHqB,CA3EmB,KAoG7C6Y,EAAiBrb,CAAAsc,KApG4B,CAqG7CC,EAAcjgB,CAAAkE,KAAA,CAAc,MAAd,CArG+B,CAsG7C4a,EAAc,IAqBlB7Y,EAAA+Y,IAAA,CAAWkB,QAAQ,CAAClB,CAAD,CAAMjX,CAAN,CAAe,CAE
 5BrE,CAAJ,GAAiB3D,CAAA2D,SAAjB,GAAkCA,CAAlC,CAA6C3D,CAAA2D,SAA7C,CACI0b,EAAJ,GAAgBrf,CAAAqf,QAAhB,GAAgCA,CAAhC,CAA0Crf,CAAAqf,QAA1C,CAGA,IAAIJ,CAAJ,CACE,IAAID,CAAJ,EAAsBC,CAAtB,CAiBA,MAhBAD,EAgBO9Y,CAhBU+Y,CAgBV/Y,CAfH+X,CAAAoB,QAAJ,CACMrX,CAAJ,CAAaqX,CAAAe,aAAA,CAAqB,IAArB,CAA2B,EAA3B,CAA+BnB,CAA/B,CAAb,EAEEI,CAAAgB,UAAA,CAAkB,IAAlB,CAAwB,EAAxB,CAA4BpB,CAA5B,CAEA,CAAAiB,CAAAhc,KAAA,CAAiB,MAAjB,CAAyBgc,CAAAhc,KAAA,CAAiB,MAAjB,CAAzB,CAJF,CADF,EAQE6a,CACA,CADcE,CACd,CAAIjX,CAAJ,CACErE,CAAAqE,QAAA,CAAiBiX,CAAjB,CADF,CAGEtb,CAAAsc,KAHF,CAGkBhB,CAZpB,CAeO/Y,CAAAA,CAjBP,CADF,IAwBE,OAAO6Y,EAAP,EAAsBpb,CAAAsc,KAAAjY,QAAA,CAAsB,MAAtB;AAA6B,GAA7B,CA9BQ,CA3He,KA6J7CkX,GAAqB,EA7JwB,CA8J7CoB,EAAgB,CAAA,CAiCpBpa,EAAAqa,YAAA,CAAmBC,QAAQ,CAACV,CAAD,CAAW,CAEpC,GAAI,CAACQ,CAAL,CAAoB,CAMlB,GAAIrC,CAAAoB,QAAJ,CAAsB9X,CAAA,CAAOvH,CAAP,CAAAygB,GAAA,CAAkB,UAAlB,CAA8B3B,CAA9B,CAEtB,IAAIb,CAAAyC,WAAJ,CAAyBnZ,CAAA,CAAOvH,CAAP,CAAAygB,GAAA,CAAkB,YAAlB,CAAgC3B,CAAhC,CAAzB,KAEK5Y,EAAA6Z,UAAA,CAAejB,CAAf,CAELwB,
 EAAA,CAAgB,CAAA,CAZE,CAepBpB,EAAA9d,KAAA,CAAwB0e,CAAxB,CACA,OAAOA,EAlB6B,CAkCtC5Z,EAAAya,SAAA,CAAgBC,QAAQ,EAAG,CACzB,IAAIX,EAAOC,CAAAhc,KAAA,CAAiB,MAAjB,CACX,OAAO+b,EAAA,CAAOA,CAAAjY,QAAA,CAAa,wBAAb,CAAuC,EAAvC,CAAP,CAAoD,EAFlC,CAQ3B,KAAI6Y,EAAc,EAAlB,CACIC,GAAmB,EADvB,CAEIC,EAAa7a,CAAAya,SAAA,EAsBjBza,EAAA8a,QAAA,CAAeC,QAAQ,CAACvX,CAAD,CAAOhI,CAAP,CAAc,CAAA,IAE/Bwf,CAF+B,CAEJC,CAFI,CAEI5f,CAFJ,CAEOK,CAE1C,IAAI8H,CAAJ,CACMhI,CAAJ,GAAcxB,CAAd,CACEkf,CAAA+B,OADF,CACuBC,MAAA,CAAO1X,CAAP,CADvB,CACsC,SADtC,CACkDqX,CADlD,CAE0B,wCAF1B,CAIMtgB,CAAA,CAASiB,CAAT,CAJN,GAKIwf,CAOA,CAPgB3gB,CAAA6e,CAAA+B,OAAA5gB,CAAqB6gB,MAAA,CAAO1X,CAAP,CAArBnJ,CAAoC,GAApCA,CAA0C6gB,MAAA,CAAO1f,CAAP,CAA1CnB,CACM,QADNA,CACiBwgB,CADjBxgB,QAOhB,CANsD,CAMtD,CAAmB,IAAnB,CAAI2gB,CAAJ,EACElD,CAAAqD,KAAA,CAAU,UAAV;AAAsB3X,CAAtB,CACE,6DADF,CAEEwX,CAFF,CAEiB,iBAFjB,CAbN,CADF,KAoBO,CACL,GAAI9B,CAAA+B,OAAJ,GAA2BL,EAA3B,CAKE,IAJAA,EAIK,CAJc1B,CAAA+B,OAId,CAHLG,CAGK,CAHSR,EAAAxY,MAAA,CAAuB,IAAvB,CAGT,CAFLuY,CAEK,CAFS,EAET,CA
 AAtf,CAAA,CAAI,CAAT,CAAYA,CAAZ,CAAgB+f,CAAA/gB,OAAhB,CAAoCgB,CAAA,EAApC,CACE4f,CAEA,CAFSG,CAAA,CAAY/f,CAAZ,CAET,CADAK,CACA,CADQuf,CAAA5c,QAAA,CAAe,GAAf,CACR,CAAY,CAAZ,CAAI3C,CAAJ,GACE8H,CAIA,CAJO6X,QAAA,CAASJ,CAAAK,UAAA,CAAiB,CAAjB,CAAoB5f,CAApB,CAAT,CAIP,CAAIif,CAAA,CAAYnX,CAAZ,CAAJ,GAA0BxJ,CAA1B,GACE2gB,CAAA,CAAYnX,CAAZ,CADF,CACsB6X,QAAA,CAASJ,CAAAK,UAAA,CAAiB5f,CAAjB,CAAyB,CAAzB,CAAT,CADtB,CALF,CAWJ,OAAOif,EApBF,CAxB4B,CA+DrC3a,EAAAub,MAAA,CAAaC,QAAQ,CAACvb,CAAD,CAAKwb,CAAL,CAAY,CAC/B,IAAIC,CACJzD,EAAA,EACAyD,EAAA,CAAYnD,CAAA,CAAW,QAAQ,EAAG,CAChC,OAAOc,CAAA,CAAgBqC,CAAhB,CACP1D,EAAA,CAA2B/X,CAA3B,CAFgC,CAAtB,CAGTwb,CAHS,EAGA,CAHA,CAIZpC,EAAA,CAAgBqC,CAAhB,CAAA,CAA6B,CAAA,CAC7B,OAAOA,EARwB,CAsBjC1b,EAAAub,MAAAI,OAAA,CAAoBC,QAAQ,CAACC,CAAD,CAAU,CACpC,MAAIxC,EAAA,CAAgBwC,CAAhB,CAAJ,EACE,OAAOxC,CAAA,CAAgBwC,CAAhB,CAGA,CAFPzC,CAAA,CAAayC,CAAb,CAEO,CADP7D,CAAA,CAA2Blb,CAA3B,CACO,CAAA,CAAA,CAJT,EAMO,CAAA,CAP6B,CAtVW,CAkWnD4N,QAASA,GAAgB,EAAE,CACzB,IAAA0J,KAAA,CAAY,CAAC,SAAD,CAAY,MAAZ,CA
 AoB,UAApB,CAAgC,WAAhC;AACR,QAAQ,CAAEyC,CAAF,CAAaiB,CAAb,CAAqBC,CAArB,CAAiC+D,CAAjC,CAA2C,CACjD,MAAO,KAAIjE,EAAJ,CAAYhB,CAAZ,CAAqBiF,CAArB,CAAgChE,CAAhC,CAAsCC,CAAtC,CAD0C,CAD3C,CADa,CAsF3BpN,QAASA,GAAqB,EAAG,CAE/B,IAAAyJ,KAAA,CAAY2H,QAAQ,EAAG,CAGrBC,QAASA,EAAY,CAACC,CAAD,CAAUC,CAAV,CAAmB,CAwMtCC,QAASA,EAAO,CAACC,CAAD,CAAQ,CAClBA,CAAJ,EAAaC,CAAb,GACOC,CAAL,CAEWA,CAFX,EAEuBF,CAFvB,GAGEE,CAHF,CAGaF,CAAAG,EAHb,EACED,CADF,CACaF,CAQb,CAHAI,CAAA,CAAKJ,CAAAG,EAAL,CAAcH,CAAAK,EAAd,CAGA,CAFAD,CAAA,CAAKJ,CAAL,CAAYC,CAAZ,CAEA,CADAA,CACA,CADWD,CACX,CAAAC,CAAAE,EAAA,CAAa,IAVf,CADsB,CAmBxBC,QAASA,EAAI,CAACE,CAAD,CAAYC,CAAZ,CAAuB,CAC9BD,CAAJ,EAAiBC,CAAjB,GACMD,CACJ,GADeA,CAAAD,EACf,CAD6BE,CAC7B,EAAIA,CAAJ,GAAeA,CAAAJ,EAAf,CAA6BG,CAA7B,CAFF,CADkC,CA1NpC,GAAIT,CAAJ,GAAeW,EAAf,CACE,KAAM3iB,EAAA,CAAO,eAAP,CAAA,CAAwB,KAAxB,CAAkEgiB,CAAlE,CAAN,CAFoC,IAKlCY,EAAO,CAL2B,CAMlCC,EAAQzgB,CAAA,CAAO,EAAP,CAAW6f,CAAX,CAAoB,IAAKD,CAAL,CAApB,CAN0B,CAOlCtX,EAAO,EAP2B,CAQlCoY,EAAYb,CAAZa,EAAuBb,CAAAa,SAAvBA,EAA4CC,MA
 AAC,UARV,CASlCC,EAAU,EATwB,CAUlCb,EAAW,IAVuB,CAWlCC,EAAW,IAyCf,OAAOM,EAAA,CAAOX,CAAP,CAAP,CAAyB,KAoBlBjJ,QAAQ,CAACpY,CAAD,CAAMY,CAAN,CAAa,CACxB,GAAIuhB,CAAJ,CAAeC,MAAAC,UAAf,CAAiC,CAC/B,IAAIE,EAAWD,CAAA,CAAQtiB,CAAR,CAAXuiB,GAA4BD,CAAA,CAAQtiB,CAAR,CAA5BuiB,CAA2C,KAAMviB,CAAN,CAA3CuiB,CAEJhB,EAAA,CAAQgB,CAAR,CAH+B,CAMjC,GAAI,CAAAjgB,CAAA,CAAY1B,CAAZ,CAAJ,CAQA,MAPMZ,EAOCY,GAPMmJ,EAONnJ,EAPaqhB,CAAA,EAObrhB,CANPmJ,CAAA,CAAK/J,CAAL,CAMOY,CANKA,CAMLA,CAJHqhB,CAIGrhB,CAJIuhB,CAIJvhB,EAHL,IAAA4hB,OAAA,CAAYd,CAAA1hB,IAAZ,CAGKY,CAAAA,CAfiB,CApBH,KAiDlBmZ,QAAQ,CAAC/Z,CAAD,CAAM,CACjB,GAAImiB,CAAJ;AAAeC,MAAAC,UAAf,CAAiC,CAC/B,IAAIE,EAAWD,CAAA,CAAQtiB,CAAR,CAEf,IAAI,CAACuiB,CAAL,CAAe,MAEfhB,EAAA,CAAQgB,CAAR,CAL+B,CAQjC,MAAOxY,EAAA,CAAK/J,CAAL,CATU,CAjDI,QAwEfwiB,QAAQ,CAACxiB,CAAD,CAAM,CACpB,GAAImiB,CAAJ,CAAeC,MAAAC,UAAf,CAAiC,CAC/B,IAAIE,EAAWD,CAAA,CAAQtiB,CAAR,CAEf,IAAI,CAACuiB,CAAL,CAAe,MAEXA,EAAJ,EAAgBd,CAAhB,GAA0BA,CAA1B,CAAqCc,CAAAV,EAArC,CACIU,EAAJ,EAAgBb,CAAhB,GAA0BA,CAA1B,CAAqCa,CAAAZ,E
 AArC,CACAC,EAAA,CAAKW,CAAAZ,EAAL,CAAgBY,CAAAV,EAAhB,CAEA,QAAOS,CAAA,CAAQtiB,CAAR,CATwB,CAYjC,OAAO+J,CAAA,CAAK/J,CAAL,CACPiiB,EAAA,EAdoB,CAxEC,WAkGZQ,QAAQ,EAAG,CACpB1Y,CAAA,CAAO,EACPkY,EAAA,CAAO,CACPK,EAAA,CAAU,EACVb,EAAA,CAAWC,CAAX,CAAsB,IAJF,CAlGC,SAmHdgB,QAAQ,EAAG,CAGlBJ,CAAA,CADAJ,CACA,CAFAnY,CAEA,CAFO,IAGP,QAAOiY,CAAA,CAAOX,CAAP,CAJW,CAnHG,MA2IjBsB,QAAQ,EAAG,CACf,MAAOlhB,EAAA,CAAO,EAAP,CAAWygB,CAAX,CAAkB,MAAOD,CAAP,CAAlB,CADQ,CA3IM,CApDa,CAFxC,IAAID,EAAS,EA+ObZ,EAAAuB,KAAA,CAAoBC,QAAQ,EAAG,CAC7B,IAAID,EAAO,EACX9iB,EAAA,CAAQmiB,CAAR,CAAgB,QAAQ,CAAC1H,CAAD,CAAQ+G,CAAR,CAAiB,CACvCsB,CAAA,CAAKtB,CAAL,CAAA,CAAgB/G,CAAAqI,KAAA,EADuB,CAAzC,CAGA,OAAOA,EALsB,CAmB/BvB,EAAArH,IAAA,CAAmB8I,QAAQ,CAACxB,CAAD,CAAU,CACnC,MAAOW,EAAA,CAAOX,CAAP,CAD4B,CAKrC,OAAOD,EAxQc,CAFQ,CAwTjCpQ,QAASA,GAAsB,EAAG,CAChC,IAAAwI,KAAA,CAAY,CAAC,eAAD,CAAkB,QAAQ,CAACsJ,CAAD,CAAgB,CACpD,MAAOA,EAAA,CAAc,WAAd,CAD6C,CAA1C,CADoB,CA/hKK;AAkiLvC3V,QAASA,GAAgB,CAAC3D,CAAD,CAAWuZ,CAAX,CAAkC,CAAA,IACrDC,EAAgB,EADqC,CAErDC,EAAS
 ,WAF4C,CAGrDC,EAA2B,wCAH0B,CAIrDC,EAAyB,gCAJ4B,CASrDC,EAA4B,yBAiB/B,KAAAhW,UAAA,CAAiBiW,QAASC,EAAiB,CAAC1a,CAAD,CAAO2a,CAAP,CAAyB,CACnErY,EAAA,CAAwBtC,CAAxB,CAA8B,WAA9B,CACIjJ,EAAA,CAASiJ,CAAT,CAAJ,EACEgC,EAAA,CAAU2Y,CAAV,CAA4B,kBAA5B,CA2BA,CA1BKP,CAAA9iB,eAAA,CAA6B0I,CAA7B,CA0BL,GAzBEoa,CAAA,CAAcpa,CAAd,CACA,CADsB,EACtB,CAAAY,CAAAwC,QAAA,CAAiBpD,CAAjB,CAAwBqa,CAAxB,CAAgC,CAAC,WAAD,CAAc,mBAAd,CAC9B,QAAQ,CAAC9H,CAAD,CAAYqI,CAAZ,CAA+B,CACrC,IAAIC,EAAa,EACjB5jB,EAAA,CAAQmjB,CAAA,CAAcpa,CAAd,CAAR,CAA6B,QAAQ,CAAC2a,CAAD,CAAmBziB,CAAnB,CAA0B,CAC7D,GAAI,CACF,IAAIsM,EAAY+N,CAAAzR,OAAA,CAAiB6Z,CAAjB,CACZtjB,EAAA,CAAWmN,CAAX,CAAJ,CACEA,CADF,CACc,SAAW/K,EAAA,CAAQ+K,CAAR,CAAX,CADd,CAEYxD,CAAAwD,CAAAxD,QAFZ,EAEiCwD,CAAAwU,KAFjC,GAGExU,CAAAxD,QAHF,CAGsBvH,EAAA,CAAQ+K,CAAAwU,KAAR,CAHtB,CAKAxU,EAAAsW,SAAA,CAAqBtW,CAAAsW,SAArB,EAA2C,CAC3CtW,EAAAtM,MAAA,CAAkBA,CAClBsM,EAAAxE,KAAA,CAAiBwE,CAAAxE,KAAjB,EAAmCA,CACnCwE,EAAAuW,QAAA,CAAoBvW,CAAAuW,QAApB;AAA0CvW,CAAAwW,WAA1C,EAAkExW,CAAAxE,KAClEwE,EAAAyW,SA
 AA,CAAqBzW,CAAAyW,SAArB,EAA2C,GAC3CJ,EAAAnjB,KAAA,CAAgB8M,CAAhB,CAZE,CAaF,MAAOxG,CAAP,CAAU,CACV4c,CAAA,CAAkB5c,CAAlB,CADU,CAdiD,CAA/D,CAkBA,OAAO6c,EApB8B,CADT,CAAhC,CAwBF,EAAAT,CAAA,CAAcpa,CAAd,CAAAtI,KAAA,CAAyBijB,CAAzB,CA5BF,EA8BE1jB,CAAA,CAAQ+I,CAAR,CAAclI,EAAA,CAAc4iB,CAAd,CAAd,CAEF,OAAO,KAlC4D,CA0DrE,KAAAQ,2BAAA,CAAkCC,QAAQ,CAACC,CAAD,CAAS,CACjD,MAAIzhB,EAAA,CAAUyhB,CAAV,CAAJ,EACEjB,CAAAe,2BAAA,CAAiDE,CAAjD,CACO,CAAA,IAFT,EAISjB,CAAAe,2BAAA,EALwC,CA8BnD,KAAAG,4BAAA,CAAmCC,QAAQ,CAACF,CAAD,CAAS,CAClD,MAAIzhB,EAAA,CAAUyhB,CAAV,CAAJ,EACEjB,CAAAkB,4BAAA,CAAkDD,CAAlD,CACO,CAAA,IAFT,EAISjB,CAAAkB,4BAAA,EALyC,CASpD,KAAAzK,KAAA,CAAY,CACF,WADE,CACW,cADX,CAC2B,mBAD3B,CACgD,OADhD,CACyD,gBADzD,CAC2E,QAD3E,CAEF,aAFE,CAEa,YAFb;AAE2B,WAF3B,CAEwC,MAFxC,CAEgD,UAFhD,CAE4D,eAF5D,CAGV,QAAQ,CAAC2B,CAAD,CAAcgJ,CAAd,CAA8BX,CAA9B,CAAmDY,CAAnD,CAA4DC,CAA5D,CAA8EC,CAA9E,CACCC,CADD,CACgBpI,CADhB,CAC8B+E,CAD9B,CAC2CsD,CAD3C,CACmDC,CADnD,CAC+DC,CAD/D,CAC8E,CAwLtF9a,QAASA,EAAO,CAAC+a,CAAD,CAAgBC,CAAhB,CAA8BC
 ,CAA9B,CAA2CC,CAA3C,CACIC,CADJ,CAC4B,CACpCJ,CAAN,WAA+Ble,EAA/B,GAGEke,CAHF,CAGkBle,CAAA,CAAOke,CAAP,CAHlB,CAOA9kB,EAAA,CAAQ8kB,CAAR,CAAuB,QAAQ,CAAC1hB,CAAD,CAAOnC,CAAP,CAAa,CACrB,CAArB,EAAImC,CAAAvD,SAAJ,EAA0CuD,CAAA+hB,UAAA/d,MAAA,CAAqB,KAArB,CAA1C,GACE0d,CAAA,CAAc7jB,CAAd,CADF,CACgC2F,CAAA,CAAOxD,CAAP,CAAAqQ,KAAA,CAAkB,eAAlB,CAAAtR,OAAA,EAAA,CAA4C,CAA5C,CADhC,CAD0C,CAA5C,CAKA,KAAIijB,EACIC,CAAA,CAAaP,CAAb,CAA4BC,CAA5B,CAA0CD,CAA1C,CACaE,CADb,CAC0BC,CAD1B,CAC2CC,CAD3C,CAERI,GAAA,CAAaR,CAAb,CAA4B,UAA5B,CACA,OAAOS,SAAqB,CAACzb,CAAD,CAAQ0b,CAAR,CAAwBC,CAAxB,CAA8C,CACxE1a,EAAA,CAAUjB,CAAV,CAAiB,OAAjB,CAGA,KAAI4b,EAAYF,CACA,CAAZG,EAAA9e,MAAAvG,KAAA,CAA2BwkB,CAA3B,CAAY,CACZA,CAEJ9kB,EAAA,CAAQylB,CAAR,CAA+B,QAAQ,CAACvK,CAAD,CAAWnS,CAAX,CAAiB,CACtD2c,CAAAxb,KAAA,CAAe,GAAf,CAAqBnB,CAArB,CAA4B,YAA5B,CAA0CmS,CAA1C,CADsD,CAAxD,CAKQta,EAAAA,CAAI,CAAZ,KAAI,IAAWyH,EAAKqd,CAAA9lB,OAApB,CAAsCgB,CAAtC,CAAwCyH,CAAxC,CAA4CzH,CAAA,EAA5C,CAAiD,CAC/C,IACIf,EADO6lB,CAAAtiB,CAAUxC,CAAVwC,CACIvD,SACE,EAAjB,
 GAAIA,CAAJ,EAAiD,CAAjD,GAAoCA,CAApC,EACE6lB,CAAAE,GAAA,CAAahlB,CAAb,CAAAsJ,KAAA,CAAqB,QAArB,CAA+BJ,CAA/B,CAJ6C,CAQ7C0b,CAAJ,EAAoBA,CAAA,CAAeE,CAAf,CAA0B5b,CAA1B,CAChBsb,EAAJ,EAAqBA,CAAA,CAAgBtb,CAAhB,CAAuB4b,CAAvB,CAAkCA,CAAlC,CACrB,OAAOA,EAvBiE,CAjBhC,CAzL0C;AAqOtFJ,QAASA,GAAY,CAACO,CAAD,CAAW1c,CAAX,CAAsB,CACzC,GAAI,CACF0c,CAAAC,SAAA,CAAkB3c,CAAlB,CADE,CAEF,MAAMpC,CAAN,CAAS,EAH8B,CAwB3Cse,QAASA,EAAY,CAACU,CAAD,CAAWhB,CAAX,CAAyBiB,CAAzB,CAAuChB,CAAvC,CAAoDC,CAApD,CACGC,CADH,CAC2B,CAoC9CE,QAASA,EAAe,CAACtb,CAAD,CAAQic,CAAR,CAAkBC,CAAlB,CAAgCC,CAAhC,CAAmD,CAAA,IACzDC,CADyD,CAC5C9iB,CAD4C,CACtC+iB,CADsC,CAC/BC,CAD+B,CACAxlB,CADA,CACGyH,CADH,CACOyZ,CAG5EuE,EAAAA,CAAiBN,CAAAnmB,OAArB,KACI0mB,EAAqBC,KAAJ,CAAUF,CAAV,CACrB,KAAKzlB,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBylB,CAAhB,CAAgCzlB,CAAA,EAAhC,CACE0lB,CAAA,CAAe1lB,CAAf,CAAA,CAAoBmlB,CAAA,CAASnlB,CAAT,CAGXkhB,EAAP,CAAAlhB,CAAA,CAAI,CAAR,KAAkByH,CAAlB,CAAuBme,CAAA5mB,OAAvB,CAAuCgB,CAAvC,CAA2CyH,CAA3C,CAA+CyZ,CAAA,EAA/C,CACE1e,CAKA,CALOkjB,CAAA,C
 AAexE,CAAf,CAKP,CAJA2E,CAIA,CAJaD,CAAA,CAAQ5lB,CAAA,EAAR,CAIb,CAHAslB,CAGA,CAHcM,CAAA,CAAQ5lB,CAAA,EAAR,CAGd,CAFAulB,CAEA,CAFQvf,CAAA,CAAOxD,CAAP,CAER,CAAIqjB,CAAJ,EACMA,CAAA3c,MAAJ,EACEsc,CACA,CADatc,CAAA4c,KAAA,EACb,CAAAP,CAAAjc,KAAA,CAAW,QAAX,CAAqBkc,CAArB,CAFF,EAIEA,CAJF,CAIetc,CAGf,CAAA,CADA6c,CACA,CADoBF,CAAAG,WACpB,GAA2BX,CAAAA,CAA3B,EAAgDlB,CAAhD,CACE0B,CAAA,CAAWP,CAAX,CAAwBE,CAAxB,CAAoChjB,CAApC,CAA0C4iB,CAA1C,CACEa,CAAA,CAAwB/c,CAAxB,CAA+B6c,CAA/B,EAAoD5B,CAApD,CADF,CADF,CAKE0B,CAAA,CAAWP,CAAX,CAAwBE,CAAxB,CAAoChjB,CAApC,CAA0C4iB,CAA1C,CAAwDC,CAAxD,CAbJ,EAeWC,CAfX,EAgBEA,CAAA,CAAYpc,CAAZ,CAAmB1G,CAAA2Q,WAAnB,CAAoCxU,CAApC,CAA+C0mB,CAA/C,CAhCqE,CAhC3E,IAJ8C,IAC1CO,EAAU,EADgC,CAE1CM,CAF0C,CAEnClD,CAFmC,CAEX7P,CAFW,CAEcgT,CAFd,CAIrCnmB,EAAI,CAAb,CAAgBA,CAAhB,CAAoBmlB,CAAAnmB,OAApB,CAAqCgB,CAAA,EAArC,CACEkmB,CAyBA,CAzBQ,IAAIE,EAyBZ,CAtBApD,CAsBA,CAtBaqD,EAAA,CAAkBlB,CAAA,CAASnlB,CAAT,CAAlB,CAA+B,EAA/B,CAAmCkmB,CAAnC,CAAgD,CAAN,GAAAlmB,CAAA,CAAUokB,CAAV,CAAwBzlB,CAAlE,CACmB0lB,
 CADnB,CAsBb,EAnBAwB,CAmBA,CAnBc7C,CAAAhkB,OACD,CAAPsnB,EAAA,CAAsBtD,CAAtB,CAAkCmC,CAAA,CAASnlB,CAAT,CAAlC,CAA+CkmB,CAA/C,CAAsD/B,CAAtD,CAAoEiB,CAApE,CACwB,IADxB,CAC8B,EAD9B,CACkC,EADlC,CACsCd,CADtC,CAAO,CAEP,IAgBN,GAdkBuB,CAAA3c,MAclB,EAbEwb,EAAA,CAAa1e,CAAA,CAAOmf,CAAA,CAASnlB,CAAT,CAAP,CAAb,CAAkC,UAAlC,CAaF;AAVAslB,CAUA,CAVeO,CAGD,EAHeA,CAAAU,SAGf,EAFA,EAAEpT,CAAF,CAAegS,CAAA,CAASnlB,CAAT,CAAAmT,WAAf,CAEA,EADA,CAACA,CAAAnU,OACD,CAAR,IAAQ,CACRylB,CAAA,CAAatR,CAAb,CACG0S,CAAA,CAAaA,CAAAG,WAAb,CAAqC7B,CADxC,CAMN,CAHAyB,CAAA/lB,KAAA,CAAagmB,CAAb,CAAyBP,CAAzB,CAGA,CAFAa,CAEA,CAFcA,CAEd,EAF6BN,CAE7B,EAF2CP,CAE3C,CAAAhB,CAAA,CAAyB,IAI3B,OAAO6B,EAAA,CAAc3B,CAAd,CAAgC,IAlCO,CA0EhDyB,QAASA,EAAuB,CAAC/c,CAAD,CAAQib,CAAR,CAAsB,CACpD,MAAOkB,SAA0B,CAACmB,CAAD,CAAmBC,CAAnB,CAA4BC,CAA5B,CAAyC,CACxE,IAAIC,EAAe,CAAA,CAEdH,EAAL,GACEA,CAEA,CAFmBtd,CAAA4c,KAAA,EAEnB,CAAAa,CAAA,CADAH,CAAAI,cACA,CADiC,CAAA,CAFnC,CAMI3gB,EAAAA,CAAQke,CAAA,CAAaqC,CAAb,CAA+BC,CAA/B,CAAwCC,CAAxC,CACZ,IAAIC,CAAJ,CACE1gB,CAAA
 iZ,GAAA,CAAS,UAAT,CAAqBxa,EAAA,CAAK8hB,CAAL,CAAuBA,CAAA3R,SAAvB,CAArB,CAEF,OAAO5O,EAbiE,CADtB,CA4BtDogB,QAASA,GAAiB,CAAC7jB,CAAD,CAAOwgB,CAAP,CAAmBkD,CAAnB,CAA0B9B,CAA1B,CAAuCC,CAAvC,CAAwD,CAAA,IAE5EwC,EAAWX,CAAAY,MAFiE,CAG5EtgB,CAGJ,QALehE,CAAAvD,SAKf,EACE,KAAK,CAAL,CAEE8nB,CAAA,CAAa/D,CAAb,CACIgE,EAAA,CAAmBC,EAAA,CAAUzkB,CAAV,CAAA0H,YAAA,EAAnB,CADJ,CACuD,GADvD,CAC4Dka,CAD5D,CACyEC,CADzE,CAFF,KAMW1hB,CANX,CAMiBwF,CANjB,CAMuB+e,CAA0BC,EAAAA,CAAS3kB,CAAAgG,WAAxD,KANF,IAOW4e,EAAI,CAPf,CAOkBC,EAAKF,CAALE,EAAeF,CAAAnoB,OAD/B,CAC8CooB,CAD9C,CACkDC,CADlD,CACsDD,CAAA,EADtD,CAC2D,CACzD,IAAIE,EAAgB,CAAA,CAApB,CACIC,EAAc,CAAA,CAElB5kB,EAAA,CAAOwkB,CAAA,CAAOC,CAAP,CACP,IAAI,CAAC9P,CAAL,EAAqB,CAArB,EAAaA,CAAb,EAA0B3U,CAAA6kB,UAA1B,CAA0C,CACxCrf,CAAA,CAAOxF,CAAAwF,KAEPsf,EAAA,CAAaT,EAAA,CAAmB7e,CAAnB,CACTuf,EAAAle,KAAA,CAAqBie,CAArB,CAAJ;CACEtf,CADF,CACS0B,EAAA,CAAW4d,CAAAE,OAAA,CAAkB,CAAlB,CAAX,CAAiC,GAAjC,CADT,CAIA,KAAIC,EAAiBH,CAAAhhB,QAAA,CAAmB,cAAnB,CAAmC,EAAnC,CACjBghB,EAAJ,GAAmBG,CAAnB,CA
 AoC,OAApC,GACEN,CAEA,CAFgBnf,CAEhB,CADAof,CACA,CADcpf,CAAAwf,OAAA,CAAY,CAAZ,CAAexf,CAAAnJ,OAAf,CAA6B,CAA7B,CACd,CADgD,KAChD,CAAAmJ,CAAA,CAAOA,CAAAwf,OAAA,CAAY,CAAZ,CAAexf,CAAAnJ,OAAf,CAA6B,CAA7B,CAHT,CAMAkoB,EAAA,CAAQF,EAAA,CAAmB7e,CAAA+B,YAAA,EAAnB,CACR2c,EAAA,CAASK,CAAT,CAAA,CAAkB/e,CAClB+d,EAAA,CAAMgB,CAAN,CAAA,CAAe/mB,CAAf,CAAuBqT,EAAA,CAAK7Q,CAAAxC,MAAL,CACnBgW,GAAA,CAAmB3T,CAAnB,CAAyB0kB,CAAzB,CAAJ,GACEhB,CAAA,CAAMgB,CAAN,CADF,CACiB,CAAA,CADjB,CAGAW,EAAA,CAA4BrlB,CAA5B,CAAkCwgB,CAAlC,CAA8C7iB,CAA9C,CAAqD+mB,CAArD,CACAH,EAAA,CAAa/D,CAAb,CAAyBkE,CAAzB,CAAgC,GAAhC,CAAqC9C,CAArC,CAAkDC,CAAlD,CAAmEiD,CAAnE,CACcC,CADd,CAtBwC,CALe,CAiC3Dhf,CAAA,CAAY/F,CAAA+F,UACZ,IAAIrJ,CAAA,CAASqJ,CAAT,CAAJ,EAAyC,EAAzC,GAA2BA,CAA3B,CACE,IAAA,CAAO/B,CAAP,CAAekc,CAAApa,KAAA,CAA4BC,CAA5B,CAAf,CAAA,CACE2e,CAIA,CAJQF,EAAA,CAAmBxgB,CAAA,CAAM,CAAN,CAAnB,CAIR,CAHIugB,CAAA,CAAa/D,CAAb,CAAyBkE,CAAzB,CAAgC,GAAhC,CAAqC9C,CAArC,CAAkDC,CAAlD,CAGJ,GAFE6B,CAAA,CAAMgB,CAAN,CAEF,CAFiB1T,EAAA,CAAKhN,CAAA,CAAM,CAAN,CAA
 L,CAEjB,EAAA+B,CAAA,CAAYA,CAAAof,OAAA,CAAiBnhB,CAAAnG,MAAjB,CAA+BmG,CAAA,CAAM,CAAN,CAAAxH,OAA/B,CAGhB,MACF,MAAK,CAAL,CACE8oB,CAAA,CAA4B9E,CAA5B,CAAwCxgB,CAAA+hB,UAAxC,CACA,MACF,MAAK,CAAL,CACE,GAAI,CAEF,GADA/d,CACA,CADQic,CAAAna,KAAA,CAA8B9F,CAAA+hB,UAA9B,CACR,CACE2C,CACA,CADQF,EAAA,CAAmBxgB,CAAA,CAAM,CAAN,CAAnB,CACR,CAAIugB,CAAA,CAAa/D,CAAb,CAAyBkE,CAAzB,CAAgC,GAAhC,CAAqC9C,CAArC,CAAkDC,CAAlD,CAAJ,GACE6B,CAAA,CAAMgB,CAAN,CADF,CACiB1T,EAAA,CAAKhN,CAAA,CAAM,CAAN,CAAL,CADjB,CAJA,CAQF,MAAOL,CAAP,CAAU,EAhEhB,CAwEA6c,CAAAljB,KAAA,CAAgBioB,CAAhB,CACA,OAAO/E,EA/EyE,CApWI;AA8btFgF,QAASA,EAAS,CAACxlB,CAAD,CAAOylB,CAAP,CAAkBC,CAAlB,CAA2B,CAC3C,IAAIld,EAAQ,EAAZ,CACImd,EAAQ,CACZ,IAAIF,CAAJ,EAAiBzlB,CAAA4lB,aAAjB,EAAsC5lB,CAAA4lB,aAAA,CAAkBH,CAAlB,CAAtC,EAEE,EAAG,CACD,GAAI,CAACzlB,CAAL,CACE,KAAM6lB,GAAA,CAAe,SAAf,CAEIJ,CAFJ,CAEeC,CAFf,CAAN,CAImB,CAArB,EAAI1lB,CAAAvD,SAAJ,GACMuD,CAAA4lB,aAAA,CAAkBH,CAAlB,CACJ,EADkCE,CAAA,EAClC,CAAI3lB,CAAA4lB,aAAA,CAAkBF,CAAlB,CAAJ,EAAgCC,CAAA,EAFlC,CAIAnd,EAAAnL,
 KAAA,CAAW2C,CAAX,CACAA,EAAA,CAAOA,CAAA2I,YAXN,CAAH,MAYiB,CAZjB,CAYSgd,CAZT,CAFF,KAgBEnd,EAAAnL,KAAA,CAAW2C,CAAX,CAGF,OAAOwD,EAAA,CAAOgF,CAAP,CAtBoC,CAiC7Csd,QAASA,EAA0B,CAACC,CAAD,CAASN,CAAT,CAAoBC,CAApB,CAA6B,CAC9D,MAAO,SAAQ,CAAChf,CAAD,CAAQnD,CAAR,CAAiBmgB,CAAjB,CAAwBQ,CAAxB,CAAqCvC,CAArC,CAAmD,CAChEpe,CAAA,CAAUiiB,CAAA,CAAUjiB,CAAA,CAAQ,CAAR,CAAV,CAAsBkiB,CAAtB,CAAiCC,CAAjC,CACV,OAAOK,EAAA,CAAOrf,CAAP,CAAcnD,CAAd,CAAuBmgB,CAAvB,CAA8BQ,CAA9B,CAA2CvC,CAA3C,CAFyD,CADJ,CA8BhEmC,QAASA,GAAqB,CAACtD,CAAD,CAAawF,CAAb,CAA0BC,CAA1B,CAAyCtE,CAAzC,CACCuE,CADD,CACeC,CADf,CACyCC,CADzC,CACqDC,CADrD,CAECvE,CAFD,CAEyB,CAiMrDwE,QAASA,EAAU,CAACC,CAAD,CAAMC,CAAN,CAAYf,CAAZ,CAAuBC,CAAvB,CAAgC,CACjD,GAAIa,CAAJ,CAAS,CACHd,CAAJ,GAAec,CAAf,CAAqBT,CAAA,CAA2BS,CAA3B,CAAgCd,CAAhC,CAA2CC,CAA3C,CAArB,CACAa,EAAA7F,QAAA,CAAcvW,CAAAuW,QACd6F,EAAAE,cAAA,CAAoBA,CACpB,IAAIC,CAAJ,GAAiCvc,CAAjC,EAA8CA,CAAAwc,eAA9C,CACEJ,CAAA,CAAMK,EAAA,CAAmBL,CAAnB,CAAwB,cAAe,CAAA,CAAf,CAAxB,CAERH,EAAA/oB,KAAA,CAAgBkpB,CAAhB,CAPO,CAS
 T,GAAIC,CAAJ,CAAU,CACJf,CAAJ,GAAee,CAAf,CAAsBV,CAAA,CAA2BU,CAA3B;AAAiCf,CAAjC,CAA4CC,CAA5C,CAAtB,CACAc,EAAA9F,QAAA,CAAevW,CAAAuW,QACf8F,EAAAC,cAAA,CAAqBA,CACrB,IAAIC,CAAJ,GAAiCvc,CAAjC,EAA8CA,CAAAwc,eAA9C,CACEH,CAAA,CAAOI,EAAA,CAAmBJ,CAAnB,CAAyB,cAAe,CAAA,CAAf,CAAzB,CAETH,EAAAhpB,KAAA,CAAiBmpB,CAAjB,CAPQ,CAVuC,CAsBnDK,QAASA,EAAc,CAACJ,CAAD,CAAgB/F,CAAhB,CAAyB+B,CAAzB,CAAmCqE,CAAnC,CAAuD,CAAA,IACxEnpB,CADwE,CACjEopB,EAAkB,MAD+C,CACvCC,EAAW,CAAA,CAChD,IAAItqB,CAAA,CAASgkB,CAAT,CAAJ,CAAuB,CACrB,IAAA,CAAqC,GAArC,GAAO/iB,CAAP,CAAe+iB,CAAAnf,OAAA,CAAe,CAAf,CAAf,GAAqD,GAArD,EAA4C5D,CAA5C,CAAA,CACE+iB,CAIA,CAJUA,CAAAyE,OAAA,CAAe,CAAf,CAIV,CAHa,GAGb,EAHIxnB,CAGJ,GAFEopB,CAEF,CAFoB,eAEpB,EAAAC,CAAA,CAAWA,CAAX,EAAgC,GAAhC,EAAuBrpB,CAEzBA,EAAA,CAAQ,IAEJmpB,EAAJ,EAA8C,MAA9C,GAA0BC,CAA1B,GACEppB,CADF,CACUmpB,CAAA,CAAmBpG,CAAnB,CADV,CAGA/iB,EAAA,CAAQA,CAAR,EAAiB8kB,CAAA,CAASsE,CAAT,CAAA,CAA0B,GAA1B,CAAgCrG,CAAhC,CAA0C,YAA1C,CAEjB,IAAI,CAAC/iB,CAAL,EAAc,CAACqpB,CAAf,CACE,KAAMnB,GAAA,CAAe,OAAf,CAEFn
 F,CAFE,CAEO+F,CAFP,CAAN,CAhBmB,CAAvB,IAqBW9pB,EAAA,CAAQ+jB,CAAR,CAAJ,GACL/iB,CACA,CADQ,EACR,CAAAf,CAAA,CAAQ8jB,CAAR,CAAiB,QAAQ,CAACA,CAAD,CAAU,CACjC/iB,CAAAN,KAAA,CAAWwpB,CAAA,CAAeJ,CAAf,CAA8B/F,CAA9B,CAAuC+B,CAAvC,CAAiDqE,CAAjD,CAAX,CADiC,CAAnC,CAFK,CAMP,OAAOnpB,EA7BqE,CAiC9E0lB,QAASA,EAAU,CAACP,CAAD,CAAcpc,CAAd,CAAqBugB,CAArB,CAA+BrE,CAA/B,CAA6CC,CAA7C,CAAgE,CAmKjFqE,QAASA,EAA0B,CAACxgB,CAAD,CAAQygB,CAAR,CAAuB,CACxD,IAAI9E,CAGmB,EAAvB,CAAI3jB,SAAAlC,OAAJ,GACE2qB,CACA,CADgBzgB,CAChB,CAAAA,CAAA,CAAQvK,CAFV,CAKIirB,EAAJ,GACE/E,CADF,CAC0ByE,EAD1B,CAIA,OAAOjE,EAAA,CAAkBnc,CAAlB,CAAyBygB,CAAzB;AAAwC9E,CAAxC,CAbiD,CAnKuB,IAC7EqB,CAD6E,CACtEjB,CADsE,CACzDxd,CADyD,CACrD8gB,CADqD,CAC7CpF,CAD6C,CACjC0G,CADiC,CACnBP,GAAqB,EADF,CACMnF,EAGrF+B,EAAA,CADEsC,CAAJ,GAAoBiB,CAApB,CACUhB,CADV,CAGU5kB,EAAA,CAAY4kB,CAAZ,CAA2B,IAAIrC,EAAJ,CAAepgB,CAAA,CAAOyjB,CAAP,CAAf,CAAiChB,CAAA3B,MAAjC,CAA3B,CAEV7B,EAAA,CAAWiB,CAAA4D,UAEX,IAAIZ,CAAJ,CAA8B,CAC5B,IAAIa,EAAe,8BACfjF,EAAAA,CAAY9e,CAAA,CAAOyjB,CAAP,CAEhBI
 ,EAAA,CAAe3gB,CAAA4c,KAAA,CAAW,CAAA,CAAX,CAEXkE,GAAJ,EAA0BA,EAA1B,GAAgDd,CAAAe,oBAAhD,CACEnF,CAAAxb,KAAA,CAAe,eAAf,CAAgCugB,CAAhC,CADF,CAGE/E,CAAAxb,KAAA,CAAe,yBAAf,CAA0CugB,CAA1C,CAKFnF,GAAA,CAAaI,CAAb,CAAwB,kBAAxB,CAEA1lB,EAAA,CAAQ8pB,CAAAhgB,MAAR,CAAwC,QAAQ,CAACghB,CAAD,CAAaC,CAAb,CAAwB,CAAA,IAClE3jB,EAAQ0jB,CAAA1jB,MAAA,CAAiBujB,CAAjB,CAARvjB,EAA0C,EADwB,CAElE4jB,EAAW5jB,CAAA,CAAM,CAAN,CAAX4jB,EAAuBD,CAF2C,CAGlEX,EAAwB,GAAxBA,EAAYhjB,CAAA,CAAM,CAAN,CAHsD,CAIlE6jB,EAAO7jB,CAAA,CAAM,CAAN,CAJ2D,CAKlE8jB,CALkE,CAMlEC,CANkE,CAMvDC,CANuD,CAM5CC,CAE1BZ,EAAAa,kBAAA,CAA+BP,CAA/B,CAAA,CAA4CE,CAA5C,CAAmDD,CAEnD,QAAQC,CAAR,EAEE,KAAK,GAAL,CACEnE,CAAAyE,SAAA,CAAeP,CAAf,CAAyB,QAAQ,CAACjqB,CAAD,CAAQ,CACvC0pB,CAAA,CAAaM,CAAb,CAAA,CAA0BhqB,CADa,CAAzC,CAGA+lB,EAAA0E,YAAA,CAAkBR,CAAlB,CAAAS,QAAA,CAAsC3hB,CAClCgd,EAAA,CAAMkE,CAAN,CAAJ,GAGEP,CAAA,CAAaM,CAAb,CAHF,CAG4BzG,CAAA,CAAawC,CAAA,CAAMkE,CAAN,CAAb,CAAA,CAA8BlhB,CAA9B,CAH5B,CAKA,MAEF,MAAK,GAAL,CACE,GAAIsgB,CAAJ,EAAgB,CAACtD,CAAA,CAAMkE,CAAN,CAAj
 B,CACE,KAEFG;CAAA,CAAY1G,CAAA,CAAOqC,CAAA,CAAMkE,CAAN,CAAP,CAEVK,EAAA,CADEF,CAAAO,QAAJ,CACY9mB,EADZ,CAGYymB,QAAQ,CAACM,CAAD,CAAGC,CAAH,CAAM,CAAE,MAAOD,EAAP,GAAaC,CAAf,CAE1BR,EAAA,CAAYD,CAAAU,OAAZ,EAAgC,QAAQ,EAAG,CAEzCX,CAAA,CAAYT,CAAA,CAAaM,CAAb,CAAZ,CAAsCI,CAAA,CAAUrhB,CAAV,CACtC,MAAMmf,GAAA,CAAe,WAAf,CAEFnC,CAAA,CAAMkE,CAAN,CAFE,CAEelB,CAAA/gB,KAFf,CAAN,CAHyC,CAO3CmiB,EAAA,CAAYT,CAAA,CAAaM,CAAb,CAAZ,CAAsCI,CAAA,CAAUrhB,CAAV,CACtC2gB,EAAArmB,OAAA,CAAoB0nB,QAAyB,EAAG,CAC9C,IAAIC,EAAcZ,CAAA,CAAUrhB,CAAV,CACbuhB,EAAA,CAAQU,CAAR,CAAqBtB,CAAA,CAAaM,CAAb,CAArB,CAAL,GAEOM,CAAA,CAAQU,CAAR,CAAqBb,CAArB,CAAL,CAKEE,CAAA,CAAUthB,CAAV,CAAiBiiB,CAAjB,CAA+BtB,CAAA,CAAaM,CAAb,CAA/B,CALF,CAEEN,CAAA,CAAaM,CAAb,CAFF,CAE4BgB,CAJ9B,CAUA,OAAOb,EAAP,CAAmBa,CAZ2B,CAAhD,CAaG,IAbH,CAaSZ,CAAAO,QAbT,CAcA,MAEF,MAAK,GAAL,CACEP,CAAA,CAAY1G,CAAA,CAAOqC,CAAA,CAAMkE,CAAN,CAAP,CACZP,EAAA,CAAaM,CAAb,CAAA,CAA0B,QAAQ,CAACjQ,CAAD,CAAS,CACzC,MAAOqQ,EAAA,CAAUrhB,CAAV,CAAiBgR,CAAjB,CADkC,CAG3C,MAEF,SACE,KAAMmO,GAAA,CAAe,MA
 Af,CAGFa,CAAA/gB,KAHE,CAG6BgiB,CAH7B,CAGwCD,CAHxC,CAAN,CAxDJ,CAVsE,CAAxE,CAhB4B,CAyF9B/F,EAAA,CAAekB,CAAf,EAAoCqE,CAChC0B,EAAJ,EACEhsB,CAAA,CAAQgsB,CAAR,CAA8B,QAAQ,CAACze,CAAD,CAAY,CAAA,IAC5CuN,EAAS,QACHvN,CAAA,GAAcuc,CAAd,EAA0Cvc,CAAAwc,eAA1C,CAAqEU,CAArE,CAAoF3gB,CADjF,UAED+b,CAFC,QAGHiB,CAHG,aAIE/B,EAJF,CADmC,CAM7CkH,CAEHlI,EAAA,CAAaxW,CAAAwW,WACK,IAAlB,EAAIA,CAAJ,GACEA,CADF,CACe+C,CAAA,CAAMvZ,CAAAxE,KAAN,CADf,CAIAkjB,EAAA,CAAqBvH,CAAA,CAAYX,CAAZ,CAAwBjJ,CAAxB,CAMrBoP,GAAA,CAAmB3c,CAAAxE,KAAnB,CAAA;AAAqCkjB,CAChCzB,EAAL,EACE3E,CAAA3b,KAAA,CAAc,GAAd,CAAoBqD,CAAAxE,KAApB,CAAqC,YAArC,CAAmDkjB,CAAnD,CAGE1e,EAAA2e,aAAJ,GACEpR,CAAAqR,OAAA,CAAc5e,CAAA2e,aAAd,CADF,CAC0CD,CAD1C,CAxBgD,CAAlD,CA+BErrB,EAAA,CAAI,CAAR,KAAWyH,CAAX,CAAgBmhB,CAAA5pB,OAAhB,CAAmCgB,CAAnC,CAAuCyH,CAAvC,CAA2CzH,CAAA,EAA3C,CACE,GAAI,CACFuoB,CACA,CADSK,CAAA,CAAW5oB,CAAX,CACT,CAAAuoB,CAAA,CAAOA,CAAAsB,aAAA,CAAsBA,CAAtB,CAAqC3gB,CAA5C,CAAmD+b,CAAnD,CAA6DiB,CAA7D,CACIqC,CAAArF,QADJ,EACsBmG,CAAA,CAAed,CAAAU,cAAf,CAAqCV,CA
 AArF,QAArC,CAAqD+B,CAArD,CAA+DqE,EAA/D,CADtB,CAC0GnF,EAD1G,CAFE,CAIF,MAAOhe,CAAP,CAAU,CACV4c,CAAA,CAAkB5c,CAAlB,CAAqBL,EAAA,CAAYmf,CAAZ,CAArB,CADU,CAQVuG,CAAAA,CAAetiB,CACfggB,EAAJ,GAAiCA,CAAAuC,SAAjC,EAA+G,IAA/G,GAAsEvC,CAAAwC,YAAtE,IACEF,CADF,CACiB3B,CADjB,CAGAvE,EAAA,EAAeA,CAAA,CAAYkG,CAAZ,CAA0B/B,CAAAtW,WAA1B,CAA+CxU,CAA/C,CAA0D0mB,CAA1D,CAGf,KAAIrlB,CAAJ,CAAQ6oB,CAAA7pB,OAAR,CAA6B,CAA7B,CAAqC,CAArC,EAAgCgB,CAAhC,CAAwCA,CAAA,EAAxC,CACE,GAAI,CACFuoB,CACA,CADSM,CAAA,CAAY7oB,CAAZ,CACT,CAAAuoB,CAAA,CAAOA,CAAAsB,aAAA,CAAsBA,CAAtB,CAAqC3gB,CAA5C,CAAmD+b,CAAnD,CAA6DiB,CAA7D,CACIqC,CAAArF,QADJ,EACsBmG,CAAA,CAAed,CAAAU,cAAf,CAAqCV,CAAArF,QAArC,CAAqD+B,CAArD,CAA+DqE,EAA/D,CADtB,CAC0GnF,EAD1G,CAFE,CAIF,MAAOhe,CAAP,CAAU,CACV4c,CAAA,CAAkB5c,CAAlB,CAAqBL,EAAA,CAAYmf,CAAZ,CAArB,CADU,CA7JmE,CAvPnFX,CAAA,CAAyBA,CAAzB,EAAmD,EAoBnD,KArBqD,IAGjDqH,EAAmB,CAAChK,MAAAC,UAH6B,CAIjDgK,CAJiD,CAKjDR,EAAuB9G,CAAA8G,qBAL0B,CAMjDlC,EAA2B5E,CAAA4E,yBANsB;AAOjDc,GAAoB1F,CAAA0F,kBAP6B,CAQjD6B,EAA4BvH,CAAAuH,0BA
 RqB,CASjDC,EAAyB,CAAA,CATwB,CAUjDlC,EAAgCtF,CAAAsF,8BAViB,CAWjDmC,EAAetD,CAAAqB,UAAfiC,CAAyC/lB,CAAA,CAAOwiB,CAAP,CAXQ,CAYjD7b,CAZiD,CAajDsc,CAbiD,CAcjD+C,CAdiD,CAgBjDjG,GAAoB5B,CAhB6B,CAiBjDoE,CAjBiD,CAqB7CvoB,EAAI,CArByC,CAqBtCyH,GAAKub,CAAAhkB,OAApB,CAAuCgB,CAAvC,CAA2CyH,EAA3C,CAA+CzH,CAAA,EAA/C,CAAoD,CAClD2M,CAAA,CAAYqW,CAAA,CAAWhjB,CAAX,CACZ,KAAIioB,EAAYtb,CAAAsf,QAAhB,CACI/D,EAAUvb,CAAAuf,MAGVjE,EAAJ,GACE8D,CADF,CACiB/D,CAAA,CAAUQ,CAAV,CAAuBP,CAAvB,CAAkCC,CAAlC,CADjB,CAGA8D,EAAA,CAAYrtB,CAEZ,IAAIgtB,CAAJ,CAAuBhf,CAAAsW,SAAvB,CACE,KAGF,IAAIkJ,CAAJ,CAAqBxf,CAAAzD,MAArB,CACE0iB,CAIA,CAJoBA,CAIpB,EAJyCjf,CAIzC,CAAKA,CAAA+e,YAAL,GACEU,CAAA,CAAkB,oBAAlB,CAAwClD,CAAxC,CAAkEvc,CAAlE,CACkBof,CADlB,CAEA,CAAIhqB,CAAA,CAASoqB,CAAT,CAAJ,GACEjD,CADF,CAC6Bvc,CAD7B,CAHF,CASFsc,EAAA,CAAgBtc,CAAAxE,KAEXujB,EAAA/e,CAAA+e,YAAL,EAA8B/e,CAAAwW,WAA9B,GACEgJ,CAIA,CAJiBxf,CAAAwW,WAIjB,CAHAiI,CAGA,CAHuBA,CAGvB,EAH+C,EAG/C,CAFAgB,CAAA,CAAkB,GAAlB,CAAwBnD,CAAxB,CAAwC,cAAxC,CACImC,CAAA,CAAqBnC,CAArB,CADJ,
 CACyCtc,CADzC,CACoDof,CADpD,CAEA,CAAAX,CAAA,CAAqBnC,CAArB,CAAA,CAAsCtc,CALxC,CAQA,IAAIwf,CAAJ,CAAqBxf,CAAAqZ,WAArB,CACE8F,CAUA,CAVyB,CAAA,CAUzB,CALKnf,CAAA0f,MAKL,GAJED,CAAA,CAAkB,cAAlB,CAAkCP,CAAlC,CAA6Dlf,CAA7D,CAAwEof,CAAxE,CACA,CAAAF,CAAA,CAA4Blf,CAG9B,EAAsB,SAAtB,EAAIwf,CAAJ,EACEvC,CASA,CATgC,CAAA,CAShC,CARA+B,CAQA,CARmBhf,CAAAsW,SAQnB;AAPA+I,CAOA,CAPYhE,CAAA,CAAUQ,CAAV,CAAuBP,CAAvB,CAAkCC,CAAlC,CAOZ,CANA6D,CAMA,CANetD,CAAAqB,UAMf,CALI9jB,CAAA,CAAOtH,CAAA4tB,cAAA,CAAuB,GAAvB,CAA6BrD,CAA7B,CAA6C,IAA7C,CACuBR,CAAA,CAAcQ,CAAd,CADvB,CACsD,GADtD,CAAP,CAKJ,CAHAT,CAGA,CAHcuD,CAAA,CAAa,CAAb,CAGd,CAFAQ,EAAA,CAAY7D,CAAZ,CAA0B1iB,CAAA,CA9xK7BlB,EAAApF,KAAA,CA8xK8CssB,CA9xK9C,CAA+B,CAA/B,CA8xK6B,CAA1B,CAAwDxD,CAAxD,CAEA,CAAAzC,EAAA,CAAoB5c,CAAA,CAAQ6iB,CAAR,CAAmB7H,CAAnB,CAAiCwH,CAAjC,CACQa,CADR,EAC4BA,CAAArkB,KAD5B,CACmD,2BAQd0jB,CARc,CADnD,CAVtB,GAsBEG,CAEA,CAFYhmB,CAAA,CAAO6N,EAAA,CAAY2U,CAAZ,CAAP,CAAAiE,SAAA,EAEZ,CADAV,CAAA7lB,MAAA,EACA,CAAA6f,EAAA,CAAoB5c,CAAA,CAAQ6iB,CAAR,CAAmB7H,CAA
 nB,CAxBtB,CA4BF,IAAIxX,CAAA8e,SAAJ,CAUE,GATAW,CAAA,CAAkB,UAAlB,CAA8BpC,EAA9B,CAAiDrd,CAAjD,CAA4Dof,CAA5D,CASItlB,CARJujB,EAQIvjB,CARgBkG,CAQhBlG,CANJ0lB,CAMI1lB,CANcjH,CAAA,CAAWmN,CAAA8e,SAAX,CACD,CAAX9e,CAAA8e,SAAA,CAAmBM,CAAnB,CAAiCtD,CAAjC,CAAW,CACX9b,CAAA8e,SAIFhlB,CAFJ0lB,CAEI1lB,CAFaimB,CAAA,CAAoBP,CAApB,CAEb1lB,CAAAkG,CAAAlG,QAAJ,CAAuB,CACrB+lB,CAAA,CAAmB7f,CAIjBqf,EAAA,CAz+HJvZ,EAAAjJ,KAAA,CAs+HuB2iB,CAt+HvB,CAs+HE,CAGcnmB,CAAA,CAAOwN,EAAA,CAAK2Y,CAAL,CAAP,CAHd,CACc,EAId3D,EAAA,CAAcwD,CAAA,CAAU,CAAV,CAEd,IAAwB,CAAxB,EAAIA,CAAAhtB,OAAJ,EAAsD,CAAtD,GAA6BwpB,CAAAvpB,SAA7B,CACE,KAAMopB,GAAA,CAAe,OAAf,CAEFY,CAFE,CAEa,EAFb,CAAN,CAKFsD,EAAA,CAAY7D,CAAZ,CAA0BqD,CAA1B,CAAwCvD,CAAxC,CAEImE,GAAAA,CAAmB,OAAQ,EAAR,CAOnBC,EAAAA,CAAqBvG,EAAA,CAAkBmC,CAAlB,CAA+B,EAA/B,CAAmCmE,EAAnC,CACzB,KAAIE,EAAwB7J,CAAA7f,OAAA,CAAkBnD,CAAlB,CAAsB,CAAtB,CAAyBgjB,CAAAhkB,OAAzB,EAA8CgB,CAA9C,CAAkD,CAAlD,EAExBkpB,EAAJ,EACE4D,EAAA,CAAwBF,CAAxB,CAEF5J,EAAA,CAAaA,CAAA/d,OAAA,CAAkB2nB,CAAlB,CAAA3nB,OAAA,CAA6C4nB
 ,CAA7C,CACbE,EAAA,CAAwBtE,CAAxB,CAAuCkE,EAAvC,CAEAllB;EAAA,CAAKub,CAAAhkB,OAjCgB,CAAvB,IAmCE+sB,EAAAzlB,KAAA,CAAkB6lB,CAAlB,CAIJ,IAAIxf,CAAA+e,YAAJ,CACEU,CAAA,CAAkB,UAAlB,CAA8BpC,EAA9B,CAAiDrd,CAAjD,CAA4Dof,CAA5D,CAcA,CAbA/B,EAaA,CAboBrd,CAapB,CAXIA,CAAAlG,QAWJ,GAVE+lB,CAUF,CAVqB7f,CAUrB,EAPAkZ,CAOA,CAPamH,CAAA,CAAmBhK,CAAA7f,OAAA,CAAkBnD,CAAlB,CAAqBgjB,CAAAhkB,OAArB,CAAyCgB,CAAzC,CAAnB,CAAgE+rB,CAAhE,CACTtD,CADS,CACMC,CADN,CACoB3C,EADpB,CACuC6C,CADvC,CACmDC,CADnD,CACgE,sBACjDuC,CADiD,0BAE7ClC,CAF6C,mBAGpDc,EAHoD,2BAI5C6B,CAJ4C,CADhE,CAOb,CAAApkB,EAAA,CAAKub,CAAAhkB,OAfP,KAgBO,IAAI2N,CAAAxD,QAAJ,CACL,GAAI,CACFof,CACA,CADS5b,CAAAxD,QAAA,CAAkB4iB,CAAlB,CAAgCtD,CAAhC,CAA+C1C,EAA/C,CACT,CAAIvmB,CAAA,CAAW+oB,CAAX,CAAJ,CACEO,CAAA,CAAW,IAAX,CAAiBP,CAAjB,CAAyBN,CAAzB,CAAoCC,CAApC,CADF,CAEWK,CAFX,EAGEO,CAAA,CAAWP,CAAAQ,IAAX,CAAuBR,CAAAS,KAAvB,CAAoCf,CAApC,CAA+CC,CAA/C,CALA,CAOF,MAAO/hB,EAAP,CAAU,CACV4c,CAAA,CAAkB5c,EAAlB,CAAqBL,EAAA,CAAYimB,CAAZ,CAArB,CADU,CAKVpf,CAAA4Z,SAAJ,GACEV,CAAAU,SACA
 ,CADsB,CAAA,CACtB,CAAAoF,CAAA,CAAmBsB,IAAAC,IAAA,CAASvB,CAAT,CAA2Bhf,CAAAsW,SAA3B,CAFrB,CA5JkD,CAmKpD4C,CAAA3c,MAAA,CAAmB0iB,CAAnB,EAAoE,CAAA,CAApE,GAAwCA,CAAA1iB,MACxC2c,EAAAG,WAAA,CAAwB8F,CAAxB,EAAkD/F,EAClDzB,EAAAsF,8BAAA,CAAuDA,CAGvD,OAAO/D,EA7L8C,CA6avDiH,QAASA,GAAuB,CAAC9J,CAAD,CAAa,CAE3C,IAF2C,IAElCoE;AAAI,CAF8B,CAE3BC,EAAKrE,CAAAhkB,OAArB,CAAwCooB,CAAxC,CAA4CC,CAA5C,CAAgDD,CAAA,EAAhD,CACEpE,CAAA,CAAWoE,CAAX,CAAA,CAAgB9lB,EAAA,CAAQ0hB,CAAA,CAAWoE,CAAX,CAAR,CAAuB,gBAAiB,CAAA,CAAjB,CAAvB,CAHyB,CAqB7CL,QAASA,EAAY,CAACoG,CAAD,CAAchlB,CAAd,CAAoB/F,CAApB,CAA8BgiB,CAA9B,CAA2CC,CAA3C,CAA4D+I,CAA5D,CACCC,CADD,CACc,CACjC,GAAIllB,CAAJ,GAAakc,CAAb,CAA8B,MAAO,KACjC7d,EAAAA,CAAQ,IACZ,IAAI+b,CAAA9iB,eAAA,CAA6B0I,CAA7B,CAAJ,CAAwC,CAAA,IAC9BwE,CAAWqW,EAAAA,CAAatI,CAAApB,IAAA,CAAcnR,CAAd,CAAqBqa,CAArB,CAAhC,KADsC,IAElCxiB,EAAI,CAF8B,CAE3ByH,EAAKub,CAAAhkB,OADhB,CACmCgB,CADnC,CACqCyH,CADrC,CACyCzH,CAAA,EADzC,CAEE,GAAI,CACF2M,CACA,CADYqW,CAAA,CAAWhjB,CAAX,CACZ,EAAMokB,CAAN,GAAsBzlB,CAAtB,EAAmCyl
 B,CAAnC,CAAiDzX,CAAAsW,SAAjD,GAC8C,EAD9C,EACKtW,CAAAyW,SAAApgB,QAAA,CAA2BZ,CAA3B,CADL,GAEMgrB,CAIJ,GAHEzgB,CAGF,CAHcrL,EAAA,CAAQqL,CAAR,CAAmB,SAAUygB,CAAV,OAAgCC,CAAhC,CAAnB,CAGd,EADAF,CAAAttB,KAAA,CAAiB8M,CAAjB,CACA,CAAAnG,CAAA,CAAQmG,CANV,CAFE,CAUF,MAAMxG,CAAN,CAAS,CAAE4c,CAAA,CAAkB5c,CAAlB,CAAF,CAbyB,CAgBxC,MAAOK,EAnB0B,CA+BnCumB,QAASA,EAAuB,CAAC9rB,CAAD,CAAM6C,CAAN,CAAW,CAAA,IACrCwpB,EAAUxpB,CAAAgjB,MAD2B,CAErCyG,EAAUtsB,CAAA6lB,MAF2B,CAGrC7B,EAAWhkB,CAAA6oB,UAGf1qB,EAAA,CAAQ6B,CAAR,CAAa,QAAQ,CAACd,CAAD,CAAQZ,CAAR,CAAa,CACX,GAArB,EAAIA,CAAAwE,OAAA,CAAW,CAAX,CAAJ,GACMD,CAAA,CAAIvE,CAAJ,CAGJ,GAFEY,CAEF,GAFoB,OAAR,GAAAZ,CAAA,CAAkB,GAAlB,CAAwB,GAEpC,EAF2CuE,CAAA,CAAIvE,CAAJ,CAE3C,EAAA0B,CAAAusB,KAAA,CAASjuB,CAAT,CAAcY,CAAd,CAAqB,CAAA,CAArB,CAA2BmtB,CAAA,CAAQ/tB,CAAR,CAA3B,CAJF,CADgC,CAAlC,CAUAH,EAAA,CAAQ0E,CAAR,CAAa,QAAQ,CAAC3D,CAAD,CAAQZ,CAAR,CAAa,CACrB,OAAX,EAAIA,CAAJ,EACEmlB,EAAA,CAAaO,CAAb;AAAuB9kB,CAAvB,CACA,CAAAc,CAAA,CAAI,OAAJ,CAAA,EAAgBA,CAAA,CAAI,OAAJ,CAAA,CAAeA,CAAA,CAAI,O
 AAJ,CAAf,CAA8B,GAA9B,CAAoC,EAApD,EAA0Dd,CAF5D,EAGkB,OAAX,EAAIZ,CAAJ,EACL0lB,CAAAtiB,KAAA,CAAc,OAAd,CAAuBsiB,CAAAtiB,KAAA,CAAc,OAAd,CAAvB,CAAgD,GAAhD,CAAsDxC,CAAtD,CACA,CAAAc,CAAA,MAAA,EAAgBA,CAAA,MAAA,CAAeA,CAAA,MAAf,CAA8B,GAA9B,CAAoC,EAApD,EAA0Dd,CAFrD,EAMqB,GANrB,EAMIZ,CAAAwE,OAAA,CAAW,CAAX,CANJ,EAM6B9C,CAAAxB,eAAA,CAAmBF,CAAnB,CAN7B,GAOL0B,CAAA,CAAI1B,CAAJ,CACA,CADWY,CACX,CAAAotB,CAAA,CAAQhuB,CAAR,CAAA,CAAe+tB,CAAA,CAAQ/tB,CAAR,CARV,CAJyB,CAAlC,CAhByC,CAkC3CytB,QAASA,EAAkB,CAAChK,CAAD,CAAa+I,CAAb,CAA2B0B,CAA3B,CACvBrI,CADuB,CACTW,CADS,CACU6C,CADV,CACsBC,CADtB,CACmCvE,CADnC,CAC2D,CAAA,IAChFoJ,EAAY,EADoE,CAEhFC,CAFgF,CAGhFC,CAHgF,CAIhFC,EAA4B9B,CAAA,CAAa,CAAb,CAJoD,CAKhF+B,EAAqB9K,CAAAjR,MAAA,EAL2D,CAOhFgc,EAAuB/sB,CAAA,CAAO,EAAP,CAAW8sB,CAAX,CAA+B,aACvC,IADuC,YACrB,IADqB,SACN,IADM,qBACqBA,CADrB,CAA/B,CAPyD,CAUhFpC,EAAelsB,CAAA,CAAWsuB,CAAApC,YAAX,CACD,CAARoC,CAAApC,YAAA,CAA+BK,CAA/B,CAA6C0B,CAA7C,CAAQ,CACRK,CAAApC,YAEVK,EAAA7lB,MAAA,EAEAyd,EAAArK,IAAA,CAAUyK,CAAAiK,sBAAA,CAA2BtC,C
 AA3B,CAAV,CAAmD,OAAQ9H,CAAR,CAAnD,CAAAqK,QAAA,CACU,QAAQ,CAACC,CAAD,CAAU,CAAA,IACpB1F,CADoB,CACuB2F,CAE/CD,EAAA,CAAUxB,CAAA,CAAoBwB,CAApB,CAEV,IAAIJ,CAAArnB,QAAJ,CAAgC,CAI5BulB,CAAA,CAt5IJvZ,EAAAjJ,KAAA,CAm5IuB0kB,CAn5IvB,CAm5IE;AAGcloB,CAAA,CAAOwN,EAAA,CAAK0a,CAAL,CAAP,CAHd,CACc,EAId1F,EAAA,CAAcwD,CAAA,CAAU,CAAV,CAEd,IAAwB,CAAxB,EAAIA,CAAAhtB,OAAJ,EAAsD,CAAtD,GAA6BwpB,CAAAvpB,SAA7B,CACE,KAAMopB,GAAA,CAAe,OAAf,CAEFyF,CAAA3lB,KAFE,CAEuBujB,CAFvB,CAAN,CAKF0C,CAAA,CAAoB,OAAQ,EAAR,CACpB7B,GAAA,CAAYnH,CAAZ,CAA0B2G,CAA1B,CAAwCvD,CAAxC,CACA,KAAIoE,EAAqBvG,EAAA,CAAkBmC,CAAlB,CAA+B,EAA/B,CAAmC4F,CAAnC,CAErBrsB,EAAA,CAAS+rB,CAAA5kB,MAAT,CAAJ,EACE4jB,EAAA,CAAwBF,CAAxB,CAEF5J,EAAA,CAAa4J,CAAA3nB,OAAA,CAA0B+d,CAA1B,CACb+J,EAAA,CAAwBU,CAAxB,CAAgCW,CAAhC,CAtB8B,CAAhC,IAwBE5F,EACA,CADcqF,CACd,CAAA9B,CAAAzlB,KAAA,CAAkB4nB,CAAlB,CAGFlL,EAAApiB,QAAA,CAAmBmtB,CAAnB,CAEAJ,EAAA,CAA0BrH,EAAA,CAAsBtD,CAAtB,CAAkCwF,CAAlC,CAA+CiF,CAA/C,CACtB1H,CADsB,CACHgG,CADG,CACW+B,CADX,CAC+BlF,CAD/B,CAC2CC,CAD3C,CAEtBvE,C
 AFsB,CAG1BllB,EAAA,CAAQgmB,CAAR,CAAsB,QAAQ,CAAC5iB,CAAD,CAAOxC,CAAP,CAAU,CAClCwC,CAAJ,EAAYgmB,CAAZ,GACEpD,CAAA,CAAaplB,CAAb,CADF,CACoB+rB,CAAA,CAAa,CAAb,CADpB,CADsC,CAAxC,CAQA,KAHA6B,CAGA,CAH2BnJ,CAAA,CAAasH,CAAA,CAAa,CAAb,CAAA5Y,WAAb,CAAyC4S,CAAzC,CAG3B,CAAM2H,CAAA1uB,OAAN,CAAA,CAAwB,CAClBkK,CAAAA,CAAQwkB,CAAA3b,MAAA,EACRsc,EAAAA,CAAyBX,CAAA3b,MAAA,EAFP,KAGlBuc,EAAkBZ,CAAA3b,MAAA,EAHA,CAIlBsT,EAAoBqI,CAAA3b,MAAA,EAJF,CAKlB0X,EAAWsC,CAAA,CAAa,CAAb,CAEf,IAAIsC,CAAJ,GAA+BR,CAA/B,CAA0D,CACxD,IAAIU,EAAaF,CAAA9lB,UAEX+b,EAAAsF,8BAAN,EACIkE,CAAArnB,QADJ,GAGEgjB,CAHF,CAGa5V,EAAA,CAAY2U,CAAZ,CAHb,CAMA+D,GAAA,CAAY+B,CAAZ,CAA6BtoB,CAAA,CAAOqoB,CAAP,CAA7B,CAA6D5E,CAA7D,CAGA/E,GAAA,CAAa1e,CAAA,CAAOyjB,CAAP,CAAb,CAA+B8E,CAA/B,CAZwD,CAexDJ,CAAA,CADER,CAAA3H,WAAJ,CAC2BC,CAAA,CAAwB/c,CAAxB,CAA+BykB,CAAA3H,WAA/B,CAD3B,CAG2BX,CAE3BsI,EAAA,CAAwBC,CAAxB,CAAkD1kB,CAAlD,CAAyDugB,CAAzD,CAAmErE,CAAnE,CACE+I,CADF,CA1BsB,CA6BxBT,CAAA;AAAY,IA3EY,CAD5B,CAAA3Q,MAAA,CA8EQ,QAAQ,CAACyR,CAAD,CAAWC,CAAX,CAAiBC,CAAjB
 ,CAA0B1mB,CAA1B,CAAkC,CAC9C,KAAMqgB,GAAA,CAAe,QAAf,CAAyDrgB,CAAA0V,IAAzD,CAAN,CAD8C,CA9ElD,CAkFA,OAAOiR,SAA0B,CAACC,CAAD,CAAoB1lB,CAApB,CAA2B1G,CAA3B,CAAiCqsB,CAAjC,CAA8CxJ,CAA9C,CAAiE,CAC5FqI,CAAJ,EACEA,CAAA7tB,KAAA,CAAeqJ,CAAf,CAGA,CAFAwkB,CAAA7tB,KAAA,CAAe2C,CAAf,CAEA,CADAkrB,CAAA7tB,KAAA,CAAegvB,CAAf,CACA,CAAAnB,CAAA7tB,KAAA,CAAewlB,CAAf,CAJF,EAMEsI,CAAA,CAAwBC,CAAxB,CAAkD1kB,CAAlD,CAAyD1G,CAAzD,CAA+DqsB,CAA/D,CAA4ExJ,CAA5E,CAP8F,CAlGd,CAkHtF0C,QAASA,EAAU,CAACgD,CAAD,CAAIC,CAAJ,CAAO,CACxB,IAAI8D,EAAO9D,CAAA/H,SAAP6L,CAAoB/D,CAAA9H,SACxB,OAAa,EAAb,GAAI6L,CAAJ,CAAuBA,CAAvB,CACI/D,CAAA5iB,KAAJ,GAAe6iB,CAAA7iB,KAAf,CAA+B4iB,CAAA5iB,KAAD,CAAU6iB,CAAA7iB,KAAV,CAAqB,EAArB,CAAyB,CAAvD,CACO4iB,CAAA1qB,MADP,CACiB2qB,CAAA3qB,MAJO,CAQ1B+rB,QAASA,EAAiB,CAAC2C,CAAD,CAAOC,CAAP,CAA0BriB,CAA1B,CAAqC5G,CAArC,CAA8C,CACtE,GAAIipB,CAAJ,CACE,KAAM3G,GAAA,CAAe,UAAf,CACF2G,CAAA7mB,KADE,CACsBwE,CAAAxE,KADtB,CACsC4mB,CADtC,CAC4CjpB,EAAA,CAAYC,CAAZ,CAD5C,CAAN,CAFoE,CAQxE+hB,QAASA,EAA2B,CAAC9E,CAAD,CAAaiM,C
 AAb,CAAmB,CACrD,IAAIC,EAAgBxL,CAAA,CAAauL,CAAb,CAAmB,CAAA,CAAnB,CAChBC,EAAJ,EACElM,CAAAnjB,KAAA,CAAgB,UACJ,CADI,SAEL+B,EAAA,CAAQutB,QAA8B,CAACjmB,CAAD,CAAQ1G,CAAR,CAAc,CAAA,IACvDjB,EAASiB,CAAAjB,OAAA,EAD8C,CAEvD6tB,EAAW7tB,CAAA+H,KAAA,CAAY,UAAZ,CAAX8lB,EAAsC,EAC1CA,EAAAvvB,KAAA,CAAcqvB,CAAd,CACAxK,GAAA,CAAanjB,CAAA+H,KAAA,CAAY,UAAZ,CAAwB8lB,CAAxB,CAAb,CAAgD,YAAhD,CACAlmB,EAAA1F,OAAA,CAAa0rB,CAAb;AAA4BG,QAAiC,CAAClvB,CAAD,CAAQ,CACnEqC,CAAA,CAAK,CAAL,CAAA+hB,UAAA,CAAoBpkB,CAD+C,CAArE,CAL2D,CAApD,CAFK,CAAhB,CAHmD,CAmBvDmvB,QAASA,EAAiB,CAAC9sB,CAAD,CAAO+sB,CAAP,CAA2B,CACnD,GAA0B,QAA1B,EAAIA,CAAJ,CACE,MAAOxL,EAAAyL,KAET,KAAI1mB,EAAMme,EAAA,CAAUzkB,CAAV,CAEV,IAA0B,WAA1B,EAAI+sB,CAAJ,EACY,MADZ,EACKzmB,CADL,EAC4C,QAD5C,EACsBymB,CADtB,EAEY,KAFZ,EAEKzmB,CAFL,GAE4C,KAF5C,EAEsBymB,CAFtB,EAG4C,OAH5C,EAGsBA,CAHtB,EAIE,MAAOxL,EAAA0L,aAV0C,CAerD5H,QAASA,EAA2B,CAACrlB,CAAD,CAAOwgB,CAAP,CAAmB7iB,CAAnB,CAA0BgI,CAA1B,CAAgC,CAClE,IAAI+mB,EAAgBxL,CAAA,CAAavjB,CAAb,CAAoB,CAAA,CAApB,CAGpB,IAAK+uB,CAAL,CAAA
 ,CAGA,GAAa,UAAb,GAAI/mB,CAAJ,EAA+C,QAA/C,GAA2B8e,EAAA,CAAUzkB,CAAV,CAA3B,CACE,KAAM6lB,GAAA,CAAe,UAAf,CAEFviB,EAAA,CAAYtD,CAAZ,CAFE,CAAN,CAKFwgB,CAAAnjB,KAAA,CAAgB,UACJ,GADI,SAELsJ,QAAQ,EAAG,CAChB,MAAO,KACAumB,QAAiC,CAACxmB,CAAD,CAAQnD,CAAR,CAAiBpD,CAAjB,CAAuB,CACvDioB,CAAAA,CAAejoB,CAAAioB,YAAfA,GAAoCjoB,CAAAioB,YAApCA,CAAuD,EAAvDA,CAEJ,IAAIjI,CAAAnZ,KAAA,CAA+BrB,CAA/B,CAAJ,CACE,KAAMkgB,GAAA,CAAe,aAAf,CAAN,CAWF,GAJA6G,CAIA,CAJgBxL,CAAA,CAAa/gB,CAAA,CAAKwF,CAAL,CAAb,CAAyB,CAAA,CAAzB,CAA+BmnB,CAAA,CAAkB9sB,CAAlB,CAAwB2F,CAAxB,CAA/B,CAIhB,CAIAxF,CAAA,CAAKwF,CAAL,CAEC,CAFY+mB,CAAA,CAAchmB,CAAd,CAEZ,CADAymB,CAAA/E,CAAA,CAAYziB,CAAZ,CAAAwnB,GAAsB/E,CAAA,CAAYziB,CAAZ,CAAtBwnB,CAA0C,EAA1CA,UACA,CADyD,CAAA,CACzD,CAAAnsB,CAAAb,CAAAioB,YAAApnB;AAAoBb,CAAAioB,YAAA,CAAiBziB,CAAjB,CAAA0iB,QAApBrnB,EAAsD0F,CAAtD1F,QAAA,CACQ0rB,CADR,CACuBG,QAAiC,CAACO,CAAD,CAAWC,CAAX,CAAqB,CAO9D,OAAZ,GAAG1nB,CAAH,EAAuBynB,CAAvB,EAAmCC,CAAnC,CACEltB,CAAAmtB,aAAA,CAAkBF,CAAlB,CAA4BC,CAA5B,CADF,CAGEltB,CAAA6qB,KAAA,CA
 AUrlB,CAAV,CAAgBynB,CAAhB,CAVwE,CAD7E,CArB0D,CADxD,CADS,CAFN,CAAhB,CATA,CAJkE,CAqEpErD,QAASA,GAAW,CAACnH,CAAD,CAAe2K,CAAf,CAAiCC,CAAjC,CAA0C,CAAA,IACxDC,EAAuBF,CAAA,CAAiB,CAAjB,CADiC,CAExDG,EAAcH,CAAA/wB,OAF0C,CAGxDuC,EAAS0uB,CAAAla,WAH+C,CAIxD/V,CAJwD,CAIrDyH,CAEP,IAAI2d,CAAJ,CACE,IAAIplB,CAAO,CAAH,CAAG,CAAAyH,CAAA,CAAK2d,CAAApmB,OAAhB,CAAqCgB,CAArC,CAAyCyH,CAAzC,CAA6CzH,CAAA,EAA7C,CACE,GAAIolB,CAAA,CAAaplB,CAAb,CAAJ,EAAuBiwB,CAAvB,CAA6C,CAC3C7K,CAAA,CAAaplB,CAAA,EAAb,CAAA,CAAoBgwB,CACJG,EAAAA,CAAK/I,CAAL+I,CAASD,CAATC,CAAuB,CAAvC,KAAK,IACI9I,EAAKjC,CAAApmB,OADd,CAEKooB,CAFL,CAESC,CAFT,CAEaD,CAAA,EAAA,CAAK+I,CAAA,EAFlB,CAGMA,CAAJ,CAAS9I,CAAT,CACEjC,CAAA,CAAagC,CAAb,CADF,CACoBhC,CAAA,CAAa+K,CAAb,CADpB,CAGE,OAAO/K,CAAA,CAAagC,CAAb,CAGXhC,EAAApmB,OAAA,EAAuBkxB,CAAvB,CAAqC,CACrC,MAZ2C,CAiB7C3uB,CAAJ,EACEA,CAAA6uB,aAAA,CAAoBJ,CAApB,CAA6BC,CAA7B,CAEE1d,EAAAA,CAAW7T,CAAA8T,uBAAA,EACfD,EAAAG,YAAA,CAAqBud,CAArB,CACAD,EAAA,CAAQhqB,CAAAqqB,QAAR,CAAA,CAA0BJ,CAAA,CAAqBjqB,CAAAqqB,QAArB,CACjBC,E
 AAAA,CAAI,CAAb,KAAgBC,CAAhB,CAAqBR,CAAA/wB,OAArB,CAA8CsxB,CAA9C,CAAkDC,CAAlD,CAAsDD,CAAA,EAAtD,CACMvqB,CAGJ,CAHcgqB,CAAA,CAAiBO,CAAjB,CAGd,CAFAtqB,CAAA,CAAOD,CAAP,CAAAgc,OAAA,EAEA,CADAxP,CAAAG,YAAA,CAAqB3M,CAArB,CACA,CAAA,OAAOgqB,CAAA,CAAiBO,CAAjB,CAGTP,EAAA,CAAiB,CAAjB,CAAA,CAAsBC,CACtBD,EAAA/wB,OAAA,CAA0B,CAvCkC,CA2C9DoqB,QAASA,GAAkB,CAACxkB,CAAD;AAAK4rB,CAAL,CAAiB,CAC1C,MAAOxvB,EAAA,CAAO,QAAQ,EAAG,CAAE,MAAO4D,EAAAI,MAAA,CAAS,IAAT,CAAe9D,SAAf,CAAT,CAAlB,CAAyD0D,CAAzD,CAA6D4rB,CAA7D,CADmC,CAtxC5C,IAAIpK,GAAaA,QAAQ,CAACrgB,CAAD,CAAUpD,CAAV,CAAgB,CACvC,IAAAmnB,UAAA,CAAiB/jB,CACjB,KAAA+gB,MAAA,CAAankB,CAAb,EAAqB,EAFkB,CAKzCyjB,GAAA/L,UAAA,CAAuB,YACT2M,EADS,WAeTyJ,QAAQ,CAACC,CAAD,CAAW,CAC1BA,CAAH,EAAiC,CAAjC,CAAeA,CAAA1xB,OAAf,EACEglB,CAAAkB,SAAA,CAAkB,IAAA4E,UAAlB,CAAkC4G,CAAlC,CAF2B,CAfV,cAgCNC,QAAQ,CAACD,CAAD,CAAW,CAC7BA,CAAH,EAAiC,CAAjC,CAAeA,CAAA1xB,OAAf,EACEglB,CAAA4M,YAAA,CAAqB,IAAA9G,UAArB,CAAqC4G,CAArC,CAF8B,CAhCb,cAkDNZ,QAAQ,CAACe,CAAD,CAAatC,CAAb,CAAyB,CAC9C,IAAIuC,EAAQC,EAA
 A,CAAgBF,CAAhB,CAA4BtC,CAA5B,CAAZ,CACIyC,EAAWD,EAAA,CAAgBxC,CAAhB,CAA4BsC,CAA5B,CAEK,EAApB,GAAGC,CAAA9xB,OAAH,CACEglB,CAAA4M,YAAA,CAAqB,IAAA9G,UAArB,CAAqCkH,CAArC,CADF,CAE8B,CAAvB,GAAGA,CAAAhyB,OAAH,CACLglB,CAAAkB,SAAA,CAAkB,IAAA4E,UAAlB,CAAkCgH,CAAlC,CADK,CAGL9M,CAAAiN,SAAA,CAAkB,IAAAnH,UAAlB,CAAkCgH,CAAlC,CAAyCE,CAAzC,CAT4C,CAlD3B,MAwEfxD,QAAQ,CAACjuB,CAAD,CAAMY,CAAN,CAAa+wB,CAAb,CAAwB9G,CAAxB,CAAkC,CAAA,IAK1C+G,EAAahb,EAAA,CAAmB,IAAA2T,UAAA,CAAe,CAAf,CAAnB;AAAsCvqB,CAAtC,CAIb4xB,EAAJ,GACE,IAAArH,UAAApnB,KAAA,CAAoBnD,CAApB,CAAyBY,CAAzB,CACA,CAAAiqB,CAAA,CAAW+G,CAFb,CAKA,KAAA,CAAK5xB,CAAL,CAAA,CAAYY,CAGRiqB,EAAJ,CACE,IAAAtD,MAAA,CAAWvnB,CAAX,CADF,CACoB6qB,CADpB,EAGEA,CAHF,CAGa,IAAAtD,MAAA,CAAWvnB,CAAX,CAHb,IAKI,IAAAunB,MAAA,CAAWvnB,CAAX,CALJ,CAKsB6qB,CALtB,CAKiCvgB,EAAA,CAAWtK,CAAX,CAAgB,GAAhB,CALjC,CASAkD,EAAA,CAAWwkB,EAAA,CAAU,IAAA6C,UAAV,CAGX,IAAkB,GAAlB,GAAKrnB,CAAL,EAAiC,MAAjC,GAAyBlD,CAAzB,EACkB,KADlB,GACKkD,CADL,EACmC,KADnC,GAC2BlD,CAD3B,CAEE,IAAA,CAAKA,CAAL,CAAA,CAAYY,CAAZ,
 CAAoB8jB,CAAA,CAAc9jB,CAAd,CAA6B,KAA7B,GAAqBZ,CAArB,CAGJ,EAAA,CAAlB,GAAI2xB,CAAJ,GACgB,IAAd,GAAI/wB,CAAJ,EAAsBA,CAAtB,GAAgCxB,CAAhC,CACE,IAAAmrB,UAAAsH,WAAA,CAA0BhH,CAA1B,CADF,CAGE,IAAAN,UAAAnnB,KAAA,CAAoBynB,CAApB,CAA8BjqB,CAA9B,CAJJ,CAUA,EADIyqB,CACJ,CADkB,IAAAA,YAClB,GAAexrB,CAAA,CAAQwrB,CAAA,CAAYrrB,CAAZ,CAAR,CAA0B,QAAQ,CAACqF,CAAD,CAAK,CACpD,GAAI,CACFA,CAAA,CAAGzE,CAAH,CADE,CAEF,MAAOgG,CAAP,CAAU,CACV4c,CAAA,CAAkB5c,CAAlB,CADU,CAHwC,CAAvC,CA5C+B,CAxE3B,UAgJXwkB,QAAQ,CAACprB,CAAD,CAAMqF,CAAN,CAAU,CAAA,IACtBshB,EAAQ,IADc,CAEtB0E,EAAe1E,CAAA0E,YAAfA,GAAqC1E,CAAA0E,YAArCA,CAAyD,EAAzDA,CAFsB,CAGtByG,EAAazG,CAAA,CAAYrrB,CAAZ,CAAb8xB,GAAkCzG,CAAA,CAAYrrB,CAAZ,CAAlC8xB,CAAqD,EAArDA,CAEJA,EAAAxxB,KAAA,CAAe+E,CAAf,CACA8W,EAAAnY,WAAA,CAAsB,QAAQ,EAAG,CAC1B8tB,CAAA1B,QAAL,EAEE/qB,CAAA,CAAGshB,CAAA,CAAM3mB,CAAN,CAAH,CAH6B,CAAjC,CAOA,OAAO,SAAQ,EAAG,CAChB2D,EAAA,CAAYmuB,CAAZ;AAAuBzsB,CAAvB,CADgB,CAbQ,CAhJP,CAP+D,KA0KlF0sB,EAAc5N,CAAA4N,YAAA,EA1KoE,CA2KlFC,GAAY7N,CAAA6N,UAAA,EA3KsE,CA4KlF7E,EAAs
 C,IAChB,EADC4E,CACD,EADsC,IACtC,EADwBC,EACxB,CAAhB7vB,EAAgB,CAChBgrB,QAA4B,CAACjB,CAAD,CAAW,CACvC,MAAOA,EAAAhlB,QAAA,CAAiB,OAAjB,CAA0B6qB,CAA1B,CAAA7qB,QAAA,CAA+C,KAA/C,CAAsD8qB,EAAtD,CADgC,CA9KqC,CAiLlF7J,EAAkB,cAGtB,OAAOve,EApL+E,CAJ5E,CA3H6C,CAy6C3D6d,QAASA,GAAkB,CAAC7e,CAAD,CAAO,CAChC,MAAOyI,GAAA,CAAUzI,CAAA1B,QAAA,CAAa+qB,EAAb,CAA4B,EAA5B,CAAV,CADyB,CA4DlCT,QAASA,GAAe,CAACU,CAAD,CAAOC,CAAP,CAAa,CAAA,IAC/BC,EAAS,EADsB,CAE/BC,EAAUH,CAAA1qB,MAAA,CAAW,KAAX,CAFqB,CAG/B8qB,EAAUH,CAAA3qB,MAAA,CAAW,KAAX,CAHqB,CAM3B/G,EAAI,CADZ,EAAA,CACA,IAAA,CAAeA,CAAf,CAAmB4xB,CAAA5yB,OAAnB,CAAmCgB,CAAA,EAAnC,CAAwC,CAEtC,IADA,IAAI8xB,EAAQF,CAAA,CAAQ5xB,CAAR,CAAZ,CACQonB,EAAI,CAAZ,CAAeA,CAAf,CAAmByK,CAAA7yB,OAAnB,CAAmCooB,CAAA,EAAnC,CACE,GAAG0K,CAAH,EAAYD,CAAA,CAAQzK,CAAR,CAAZ,CAAwB,SAAS,CAEnCuK,EAAA,GAA2B,CAAhB,CAAAA,CAAA3yB,OAAA,CAAoB,GAApB,CAA0B,EAArC,EAA2C8yB,CALL,CAOxC,MAAOH,EAb4B,CA0BrCpiB,QAASA,GAAmB,EAAG,CAAA,IACzBmX,EAAc,EADW,CAEzBqL,EAAY,yBAWhB,KAAAC,SAAA,CAAgBC,QAAQ,CAAC9pB,CAAD,CAAOqC,CAAP,
 CAAoB,CAC1CC,EAAA,CAAwBtC,CAAxB,CAA8B,YAA9B,CACIpG,EAAA,CAASoG,CAAT,CAAJ,CACEnH,CAAA,CAAO0lB,CAAP,CAAoBve,CAApB,CADF,CAGEue,CAAA,CAAYve,CAAZ,CAHF,CAGsBqC,CALoB,CAU5C,KAAAuO,KAAA;AAAY,CAAC,WAAD,CAAc,SAAd,CAAyB,QAAQ,CAAC2B,CAAD,CAAYc,CAAZ,CAAqB,CAwBhE,MAAO,SAAQ,CAAC0W,CAAD,CAAahY,CAAb,CAAqB,CAAA,IAC9BI,CAD8B,CACb9P,CADa,CACA2nB,CAE/BjzB,EAAA,CAASgzB,CAAT,CAAH,GACE1rB,CAOA,CAPQ0rB,CAAA1rB,MAAA,CAAiBurB,CAAjB,CAOR,CANAvnB,CAMA,CANchE,CAAA,CAAM,CAAN,CAMd,CALA2rB,CAKA,CALa3rB,CAAA,CAAM,CAAN,CAKb,CAJA0rB,CAIA,CAJaxL,CAAAjnB,eAAA,CAA2B+K,CAA3B,CACA,CAAPkc,CAAA,CAAYlc,CAAZ,CAAO,CACPE,EAAA,CAAOwP,CAAAqR,OAAP,CAAsB/gB,CAAtB,CAAmC,CAAA,CAAnC,CADO,EACqCE,EAAA,CAAO8Q,CAAP,CAAgBhR,CAAhB,CAA6B,CAAA,CAA7B,CAElD,CAAAF,EAAA,CAAY4nB,CAAZ,CAAwB1nB,CAAxB,CAAqC,CAAA,CAArC,CARF,CAWA8P,EAAA,CAAWI,CAAA5B,YAAA,CAAsBoZ,CAAtB,CAAkChY,CAAlC,CAA0C1P,CAA1C,CAEX,IAAI2nB,CAAJ,CAAgB,CACd,GAAMjY,CAAAA,CAAN,EAAwC,QAAxC,EAAgB,MAAOA,EAAAqR,OAAvB,CACE,KAAM3sB,EAAA,CAAO,aAAP,CAAA,CAAsB,OAAtB,CAEF4L,CAFE,EAEa0nB,CAAA/pB,KAF
 b,CAE8BgqB,CAF9B,CAAN,CAKFjY,CAAAqR,OAAA,CAAc4G,CAAd,CAAA,CAA4B7X,CAPd,CAUhB,MAAOA,EA1B2B,CAxB4B,CAAtD,CAvBiB,CAsG/B9K,QAASA,GAAiB,EAAE,CAC1B,IAAAuJ,KAAA,CAAY,CAAC,SAAD,CAAY,QAAQ,CAACta,CAAD,CAAQ,CACtC,MAAOuH,EAAA,CAAOvH,CAAAC,SAAP,CAD+B,CAA5B,CADc,CAsC5B+Q,QAASA,GAAyB,EAAG,CACnC,IAAAsJ,KAAA,CAAY,CAAC,MAAD,CAAS,QAAQ,CAAC0D,CAAD,CAAO,CAClC,MAAO,SAAQ,CAAC2V,CAAD,CAAYC,CAAZ,CAAmB,CAChC5V,CAAAM,MAAA/X,MAAA,CAAiByX,CAAjB,CAAuBvb,SAAvB,CADgC,CADA,CAAxB,CADuB,CAcrCoxB,QAASA,GAAY,CAAC5D,CAAD,CAAU,CAAA,IACzBhb,EAAS,EADgB,CACZnU,CADY,CACP4F,CADO,CACFnF,CAE3B,IAAI,CAAC0uB,CAAL,CAAc,MAAOhb,EAErBtU;CAAA,CAAQsvB,CAAA3nB,MAAA,CAAc,IAAd,CAAR,CAA6B,QAAQ,CAACwrB,CAAD,CAAO,CAC1CvyB,CAAA,CAAIuyB,CAAAvvB,QAAA,CAAa,GAAb,CACJzD,EAAA,CAAMsG,CAAA,CAAU2N,EAAA,CAAK+e,CAAA5K,OAAA,CAAY,CAAZ,CAAe3nB,CAAf,CAAL,CAAV,CACNmF,EAAA,CAAMqO,EAAA,CAAK+e,CAAA5K,OAAA,CAAY3nB,CAAZ,CAAgB,CAAhB,CAAL,CAEFT,EAAJ,GAEImU,CAAA,CAAOnU,CAAP,CAFJ,CACMmU,CAAA,CAAOnU,CAAP,CAAJ,CACEmU,CAAA,CAAOnU,CAAP,CADF,EACiB,IADjB,CACwB4F,CADxB,EAGg
 BA,CAJlB,CAL0C,CAA5C,CAcA,OAAOuO,EAnBsB,CAmC/B8e,QAASA,GAAa,CAAC9D,CAAD,CAAU,CAC9B,IAAI+D,EAAa1wB,CAAA,CAAS2sB,CAAT,CAAA,CAAoBA,CAApB,CAA8B/vB,CAE/C,OAAO,SAAQ,CAACwJ,CAAD,CAAO,CACfsqB,CAAL,GAAiBA,CAAjB,CAA+BH,EAAA,CAAa5D,CAAb,CAA/B,CAEA,OAAIvmB,EAAJ,CACSsqB,CAAA,CAAW5sB,CAAA,CAAUsC,CAAV,CAAX,CADT,EACwC,IADxC,CAIOsqB,CAPa,CAHQ,CAyBhCC,QAASA,GAAa,CAACppB,CAAD,CAAOolB,CAAP,CAAgBiE,CAAhB,CAAqB,CACzC,GAAInzB,CAAA,CAAWmzB,CAAX,CAAJ,CACE,MAAOA,EAAA,CAAIrpB,CAAJ,CAAUolB,CAAV,CAETtvB,EAAA,CAAQuzB,CAAR,CAAa,QAAQ,CAAC/tB,CAAD,CAAK,CACxB0E,CAAA,CAAO1E,CAAA,CAAG0E,CAAH,CAASolB,CAAT,CADiB,CAA1B,CAIA,OAAOplB,EARkC,CAiB3CuG,QAASA,GAAa,EAAG,CAAA,IACnB+iB,EAAa,kBADM,CAEnBC,EAAW,YAFQ,CAGnBC,EAAoB,cAHD,CAInBC,EAAgC,CAAC,cAAD,CAAiB,gCAAjB,CAJb,CAMnBC,EAAW,IAAAA,SAAXA,CAA2B,mBAEV,CAAC,QAAQ,CAAC1pB,CAAD,CAAO,CAC7BpK,CAAA,CAASoK,CAAT,CAAJ,GAEEA,CACA,CADOA,CAAA7C,QAAA,CAAaqsB,CAAb,CAAgC,EAAhC,CACP,CAAIF,CAAAppB,KAAA,CAAgBF,CAAhB,CAAJ;AAA6BupB,CAAArpB,KAAA,CAAcF,CAAd,CAA7B,GACEA,CADF,CACS9D,EAAA,CAAS8D,CAAT,
 CADT,CAHF,CAMA,OAAOA,EAP0B,CAAhB,CAFU,kBAaX,CAAC,QAAQ,CAAC2pB,CAAD,CAAI,CAC7B,MAAOlxB,EAAA,CAASkxB,CAAT,CAAA,EA7pNmB,eA6pNnB,GA7pNJ/wB,EAAAxC,KAAA,CA6pN2BuzB,CA7pN3B,CA6pNI,EAxpNmB,eAwpNnB,GAxpNJ/wB,EAAAxC,KAAA,CAwpNyCuzB,CAxpNzC,CAwpNI,CAA0C7tB,EAAA,CAAO6tB,CAAP,CAA1C,CAAsDA,CADhC,CAAb,CAbW,SAkBpB,QACC,QACI,mCADJ,CADD,MAIC7vB,EAAA,CAAK2vB,CAAL,CAJD,KAKC3vB,EAAA,CAAK2vB,CAAL,CALD,OAMC3vB,EAAA,CAAK2vB,CAAL,CAND,CAlBoB,gBA2Bb,YA3Ba,gBA4Bb,cA5Ba,CANR,CAyCnBG,EAAuB,IAAAC,aAAvBD,CAA2C,EAzCxB,CA+CnBE,EAA+B,IAAAC,qBAA/BD,CAA2D,EAE/D,KAAAra,KAAA,CAAY,CAAC,cAAD,CAAiB,UAAjB,CAA6B,eAA7B,CAA8C,YAA9C,CAA4D,IAA5D,CAAkE,WAAlE,CACR,QAAQ,CAACua,CAAD,CAAeC,CAAf,CAAyBlR,CAAzB,CAAwC3G,CAAxC,CAAoD8X,CAApD,CAAwD9Y,CAAxD,CAAmE,CAihB7EiJ,QAASA,EAAK,CAAC8P,CAAD,CAAgB,CA6E5BC,QAASA,EAAiB,CAAClF,CAAD,CAAW,CAEnC,IAAImF,EAAO3yB,CAAA,CAAO,EAAP,CAAWwtB,CAAX,CAAqB,MACxBkE,EAAA,CAAclE,CAAAllB,KAAd;AAA6BklB,CAAAE,QAA7B,CAA+C1mB,CAAA0rB,kBAA/C,CADwB,CAArB,CAGX,OAzpBC,IA0pBM,EADWlF,CAAAoF,OACX,EA1pBoB,GA0pBpB,CADWpF,C
 AAAoF,OACX,CAAHD,CAAG,CACHH,CAAAK,OAAA,CAAUF,CAAV,CAP+B,CA5ErC,IAAI3rB,EAAS,QACH,KADG,kBAEOgrB,CAAAc,iBAFP,mBAGQd,CAAAU,kBAHR,CAAb,CAKIhF,EAiFJqF,QAAqB,CAAC/rB,CAAD,CAAS,CA2B5BgsB,QAASA,EAAW,CAACtF,CAAD,CAAU,CAC5B,IAAIuF,CAEJ70B,EAAA,CAAQsvB,CAAR,CAAiB,QAAQ,CAACwF,CAAD,CAAWC,CAAX,CAAmB,CACtC30B,CAAA,CAAW00B,CAAX,CAAJ,GACED,CACA,CADgBC,CAAA,EAChB,CAAqB,IAArB,EAAID,CAAJ,CACEvF,CAAA,CAAQyF,CAAR,CADF,CACoBF,CADpB,CAGE,OAAOvF,CAAA,CAAQyF,CAAR,CALX,CAD0C,CAA5C,CAH4B,CA3BF,IACxBC,EAAapB,CAAAtE,QADW,CAExB2F,EAAarzB,CAAA,CAAO,EAAP,CAAWgH,CAAA0mB,QAAX,CAFW,CAGxB4F,CAHwB,CAGeC,CAHf,CAK5BH,EAAapzB,CAAA,CAAO,EAAP,CAAWozB,CAAAI,OAAX,CAA8BJ,CAAA,CAAWvuB,CAAA,CAAUmC,CAAA4D,OAAV,CAAX,CAA9B,CAGbooB,EAAA,CAAYI,CAAZ,CACAJ,EAAA,CAAYK,CAAZ,CAGA,EAAA,CACA,IAAKC,CAAL,GAAsBF,EAAtB,CAAkC,CAChCK,CAAA,CAAyB5uB,CAAA,CAAUyuB,CAAV,CAEzB,KAAKC,CAAL,GAAsBF,EAAtB,CACE,GAAIxuB,CAAA,CAAU0uB,CAAV,CAAJ,GAAiCE,CAAjC,CACE,SAAS,CAIbJ,EAAA,CAAWC,CAAX,CAAA,CAA4BF,CAAA,CAAWE,CAAX,CATI,CAYlC,MAAOD,EAzBqB,CAjFhB,CAAaZ,CAAb,CAEd
 zyB,EAAA,CAAOgH,CAAP,CAAeyrB,CAAf,CACAzrB,EAAA0mB,QAAA,CAAiBA,CACjB1mB,EAAA4D,OAAA,CAAgBS,EAAA,CAAUrE,CAAA4D,OAAV,CAKhB,EAHI8oB,CAGJ,CAHgBC,EAAA,CAAgB3sB,CAAA0V,IAAhB,CACA,CAAV6V,CAAA9T,QAAA,EAAA,CAAmBzX,CAAA4sB,eAAnB;AAA4C5B,CAAA4B,eAA5C,CAAU,CACVj2B,CACN,IACE+vB,CAAA,CAAS1mB,CAAA6sB,eAAT,EAAkC7B,CAAA6B,eAAlC,CADF,CACgEH,CADhE,CA0BA,KAAII,EAAQ,CArBQC,QAAQ,CAAC/sB,CAAD,CAAS,CACnC0mB,CAAA,CAAU1mB,CAAA0mB,QACV,KAAIsG,EAAUtC,EAAA,CAAc1qB,CAAAsB,KAAd,CAA2BkpB,EAAA,CAAc9D,CAAd,CAA3B,CAAmD1mB,CAAA8rB,iBAAnD,CAGVjyB,EAAA,CAAYmG,CAAAsB,KAAZ,CAAJ,EACElK,CAAA,CAAQsvB,CAAR,CAAiB,QAAQ,CAACvuB,CAAD,CAAQg0B,CAAR,CAAgB,CACb,cAA1B,GAAItuB,CAAA,CAAUsuB,CAAV,CAAJ,EACI,OAAOzF,CAAA,CAAQyF,CAAR,CAF4B,CAAzC,CAOEtyB,EAAA,CAAYmG,CAAAitB,gBAAZ,CAAJ,EAA4C,CAAApzB,CAAA,CAAYmxB,CAAAiC,gBAAZ,CAA5C,GACEjtB,CAAAitB,gBADF,CAC2BjC,CAAAiC,gBAD3B,CAKA,OAAOC,EAAA,CAAQltB,CAAR,CAAgBgtB,CAAhB,CAAyBtG,CAAzB,CAAAyG,KAAA,CAAuCzB,CAAvC,CAA0DA,CAA1D,CAlB4B,CAqBzB,CAAgB/0B,CAAhB,CAAZ,CACIy2B,EAAU5B,CAAA6B,KAAA,CAAQrtB,CAAR,CA
 Yd,KATA5I,CAAA,CAAQk2B,CAAR,CAA8B,QAAQ,CAACC,CAAD,CAAc,CAClD,CAAIA,CAAAC,QAAJ,EAA2BD,CAAAE,aAA3B,GACEX,CAAAl0B,QAAA,CAAc20B,CAAAC,QAAd,CAAmCD,CAAAE,aAAnC,CAEF,EAAIF,CAAA/G,SAAJ,EAA4B+G,CAAAG,cAA5B,GACEZ,CAAAj1B,KAAA,CAAW01B,CAAA/G,SAAX,CAAiC+G,CAAAG,cAAjC,CALgD,CAApD,CASA,CAAMZ,CAAA91B,OAAN,CAAA,CAAoB,CACd22B,CAAAA,CAASb,CAAA/iB,MAAA,EACb;IAAI6jB,EAAWd,CAAA/iB,MAAA,EAAf,CAEAqjB,EAAUA,CAAAD,KAAA,CAAaQ,CAAb,CAAqBC,CAArB,CAJQ,CAOpBR,CAAAnH,QAAA,CAAkB4H,QAAQ,CAACjxB,CAAD,CAAK,CAC7BwwB,CAAAD,KAAA,CAAa,QAAQ,CAAC3G,CAAD,CAAW,CAC9B5pB,CAAA,CAAG4pB,CAAAllB,KAAH,CAAkBklB,CAAAoF,OAAlB,CAAmCpF,CAAAE,QAAnC,CAAqD1mB,CAArD,CAD8B,CAAhC,CAGA,OAAOotB,EAJsB,CAO/BA,EAAArY,MAAA,CAAgB+Y,QAAQ,CAAClxB,CAAD,CAAK,CAC3BwwB,CAAAD,KAAA,CAAa,IAAb,CAAmB,QAAQ,CAAC3G,CAAD,CAAW,CACpC5pB,CAAA,CAAG4pB,CAAAllB,KAAH,CAAkBklB,CAAAoF,OAAlB,CAAmCpF,CAAAE,QAAnC,CAAqD1mB,CAArD,CADoC,CAAtC,CAGA,OAAOotB,EAJoB,CAO7B,OAAOA,EA3EqB,CAiQ9BF,QAASA,EAAO,CAACltB,CAAD,CAASgtB,CAAT,CAAkBX,CAAlB,CAA8B,CAqD5C0B,QAASA,EAAI,CAACnC,CAAD,CAAS
 pF,CAAT,CAAmBwH,CAAnB,CAAkCC,CAAlC,CAA8C,CACrDpc,CAAJ,GA93BC,GA+3BC,EAAc+Z,CAAd,EA/3ByB,GA+3BzB,CAAcA,CAAd,CACE/Z,CAAAlC,IAAA,CAAU+F,CAAV,CAAe,CAACkW,CAAD,CAASpF,CAAT,CAAmB8D,EAAA,CAAa0D,CAAb,CAAnB,CAAgDC,CAAhD,CAAf,CADF,CAIEpc,CAAAkI,OAAA,CAAarE,CAAb,CALJ,CASAwY,EAAA,CAAe1H,CAAf,CAAyBoF,CAAzB,CAAiCoC,CAAjC,CAAgDC,CAAhD,CACKva,EAAAya,QAAL,EAAyBza,CAAArS,OAAA,EAXgC,CAkB3D6sB,QAASA,EAAc,CAAC1H,CAAD,CAAWoF,CAAX,CAAmBlF,CAAnB,CAA4BuH,CAA5B,CAAwC,CAE7DrC,CAAA,CAAS3G,IAAAC,IAAA,CAAS0G,CAAT,CAAiB,CAAjB,CAER,EAn5BA,GAm5BA,EAAUA,CAAV,EAn5B0B,GAm5B1B,CAAUA,CAAV,CAAoBwC,CAAAC,QAApB,CAAuCD,CAAAvC,OAAvC,EAAwD,MACjDrF,CADiD,QAE/CoF,CAF+C,SAG9CpB,EAAA,CAAc9D,CAAd,CAH8C,QAI/C1mB,CAJ+C,YAK1CiuB,CAL0C,CAAxD,CAJ4D,CAc/DK,QAASA,EAAgB,EAAG,CAC1B,IAAIC,EAAMvzB,EAAA,CAAQ2gB,CAAA6S,gBAAR;AAA+BxuB,CAA/B,CACG,GAAb,GAAIuuB,CAAJ,EAAgB5S,CAAA6S,gBAAArzB,OAAA,CAA6BozB,CAA7B,CAAkC,CAAlC,CAFU,CArFgB,IACxCH,EAAW5C,CAAAtT,MAAA,EAD6B,CAExCkV,EAAUgB,CAAAhB,QAF8B,CAGxCvb,CAHwC,CAIxC4c,CAJwC,CAKxC/Y,EAAMgZ,CAAA,CAAS1uB,
 CAAA0V,IAAT,CAAqB1V,CAAA2uB,OAArB,CAEVhT,EAAA6S,gBAAA32B,KAAA,CAA2BmI,CAA3B,CACAotB,EAAAD,KAAA,CAAamB,CAAb,CAA+BA,CAA/B,CAGA,EAAKtuB,CAAA6R,MAAL,EAAqBmZ,CAAAnZ,MAArB,IAAyD,CAAA,CAAzD,GAAwC7R,CAAA6R,MAAxC,EAAmF,KAAnF,EAAkE7R,CAAA4D,OAAlE,IACEiO,CADF,CACU9X,CAAA,CAASiG,CAAA6R,MAAT,CAAA,CAAyB7R,CAAA6R,MAAzB,CACA9X,CAAA,CAASixB,CAAAnZ,MAAT,CAAA,CAA2BmZ,CAAAnZ,MAA3B,CACA+c,CAHV,CAMA,IAAI/c,CAAJ,CAEE,GADA4c,CACI,CADS5c,CAAAP,IAAA,CAAUoE,CAAV,CACT,CAAA5b,CAAA,CAAU20B,CAAV,CAAJ,CAA2B,CACzB,GAAIA,CAAAtB,KAAJ,CAGE,MADAsB,EAAAtB,KAAA,CAAgBmB,CAAhB,CAAkCA,CAAlC,CACOG,CAAAA,CAGHt3B,EAAA,CAAQs3B,CAAR,CAAJ,CACEP,CAAA,CAAeO,CAAA,CAAW,CAAX,CAAf,CAA8BA,CAAA,CAAW,CAAX,CAA9B,CAA6CrzB,EAAA,CAAKqzB,CAAA,CAAW,CAAX,CAAL,CAA7C,CAAkEA,CAAA,CAAW,CAAX,CAAlE,CADF,CAGEP,CAAA,CAAeO,CAAf,CAA2B,GAA3B,CAAgC,EAAhC,CAAoC,IAApC,CAVqB,CAA3B,IAeE5c,EAAAlC,IAAA,CAAU+F,CAAV,CAAe0X,CAAf,CAKAvzB,EAAA,CAAY40B,CAAZ,CAAJ,EACEnD,CAAA,CAAatrB,CAAA4D,OAAb,CAA4B8R,CAA5B,CAAiCsX,CAAjC,CAA0Ce,CAA1C,CAAgD1B,CAAhD,CAA4DrsB,CAAA6uB,QAA5
 D,CACI7uB,CAAAitB,gBADJ,CAC4BjtB,CAAA8uB,aAD5B,CAIF,OAAO1B,EA5CqC,CA4F9CsB,QAASA,EAAQ,CAAChZ,CAAD,CAAMiZ,CAAN,CAAc,CACzB,GAAI,CAACA,CAAL,CAAa,M

<TRUNCATED>

[25/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/dash/README.md
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/dash/README.md b/deleted/dist-cov/usergrid-portal/archive/dash/README.md
deleted file mode 100644
index b2e1119..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/dash/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-* install nodejs
-* from root of this rep run ./scripts/web-server.js
-* open browser and go to http://localhost:8001/dash/app/index.html

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/dash/config/testacular-e2e.conf.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/dash/config/testacular-e2e.conf.js b/deleted/dist-cov/usergrid-portal/archive/dash/config/testacular-e2e.conf.js
deleted file mode 100644
index 51f51d2..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/dash/config/testacular-e2e.conf.js
+++ /dev/null
@@ -1,22 +0,0 @@
-basePath = '../';
-
-files = [
-  ANGULAR_SCENARIO,
-  ANGULAR_SCENARIO_ADAPTER,
-  'test/e2e/**/*.js'
-];
-
-autoWatch = false;
-
-browsers = ['Chrome'];
-
-singleRun = true;
-
-proxies = {
-  '/': 'http://localhost:8000/'
-};
-
-junitReporter = {
-  outputFile: 'test_out/e2e.xml',
-  suite: 'e2e'
-};

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/dash/config/testacular.conf.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/dash/config/testacular.conf.js b/deleted/dist-cov/usergrid-portal/archive/dash/config/testacular.conf.js
deleted file mode 100644
index ad0ade4..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/dash/config/testacular.conf.js
+++ /dev/null
@@ -1,20 +0,0 @@
-basePath = '../';
-
-files = [
-  JASMINE,
-  JASMINE_ADAPTER,
-  'app/lib/angular/angular.js',
-  'app/lib/angular/angular-*.js',
-  'test/lib/angular/angular-mocks.js',
-  'app/js/**/*.js',
-  'test/unit/**/*.js'
-];
-
-autoWatch = true;
-
-browsers = ['Chrome'];
-
-junitReporter = {
-  outputFile: 'test_out/unit.xml',
-  suite: 'unit'
-};

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/dash/test/e2e/runner.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/dash/test/e2e/runner.html b/deleted/dist-cov/usergrid-portal/archive/dash/test/e2e/runner.html
deleted file mode 100644
index a40fa08..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/dash/test/e2e/runner.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<!doctype html>
-<html lang="en">
-  <head>
-    <title>End2end Test Runner</title>
-    <script src="../lib/angular/angular-scenario.js" ng-autotest></script>
-    <script src="scenarios.js"></script>
-  </head>
-  <body>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/dash/test/e2e/scenarios.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/dash/test/e2e/scenarios.js b/deleted/dist-cov/usergrid-portal/archive/dash/test/e2e/scenarios.js
deleted file mode 100644
index 26e174a..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/dash/test/e2e/scenarios.js
+++ /dev/null
@@ -1,45 +0,0 @@
-'use strict';
-
-/* http://docs.angularjs.org/guide/dev_guide.e2e-testing */
-
-describe('my app', function() {
-
-  beforeEach(function() {
-    browser().navigateTo('../../app/index.html');
-  });
-
-
-  it('should automatically redirect to /view1 when location hash/fragment is empty', function() {
-    expect(browser().location().url()).toBe("/view1");
-  });
-
-
-  describe('view1', function() {
-
-    beforeEach(function() {
-      browser().navigateTo('#/view1');
-    });
-
-
-    it('should render view1 when user navigates to /view1', function() {
-      expect(element('[ng-view] p:first').text()).
-        toMatch(/partial for view 1/);
-    });
-
-  });
-
-
-  describe('view2', function() {
-
-    beforeEach(function() {
-      browser().navigateTo('#/view2');
-    });
-
-
-    it('should render view2 when user navigates to /view2', function() {
-      expect(element('[ng-view] p:first').text()).
-        toMatch(/partial for view 2/);
-    });
-
-  });
-});

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/dash/test/lib/angular/angular-mocks.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/dash/test/lib/angular/angular-mocks.js b/deleted/dist-cov/usergrid-portal/archive/dash/test/lib/angular/angular-mocks.js
deleted file mode 100644
index b6ecc79..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/dash/test/lib/angular/angular-mocks.js
+++ /dev/null
@@ -1,1764 +0,0 @@
-/**
- * @license AngularJS v1.0.5
- * (c) 2010-2012 Google, Inc. http://angularjs.org
- * License: MIT
- *
- * TODO(vojta): wrap whole file into closure during build
- */
-
-/**
- * @ngdoc overview
- * @name angular.mock
- * @description
- *
- * Namespace from 'angular-mocks.js' which contains testing related code.
- */
-angular.mock = {};
-
-/**
- * ! This is a private undocumented service !
- *
- * @name ngMock.$browser
- *
- * @description
- * This service is a mock implementation of {@link ng.$browser}. It provides fake
- * implementation for commonly used browser apis that are hard to test, e.g. setTimeout, xhr,
- * cookies, etc...
- *
- * The api of this service is the same as that of the real {@link ng.$browser $browser}, except
- * that there are several helper methods available which can be used in tests.
- */
-angular.mock.$BrowserProvider = function() {
-  this.$get = function(){
-    return new angular.mock.$Browser();
-  };
-};
-
-angular.mock.$Browser = function() {
-  var self = this;
-
-  this.isMock = true;
-  self.$$url = "http://server/";
-  self.$$lastUrl = self.$$url; // used by url polling fn
-  self.pollFns = [];
-
-  // TODO(vojta): remove this temporary api
-  self.$$completeOutstandingRequest = angular.noop;
-  self.$$incOutstandingRequestCount = angular.noop;
-
-
-  // register url polling fn
-
-  self.onUrlChange = function(listener) {
-    self.pollFns.push(
-      function() {
-        if (self.$$lastUrl != self.$$url) {
-          self.$$lastUrl = self.$$url;
-          listener(self.$$url);
-        }
-      }
-    );
-
-    return listener;
-  };
-
-  self.cookieHash = {};
-  self.lastCookieHash = {};
-  self.deferredFns = [];
-  self.deferredNextId = 0;
-
-  self.defer = function(fn, delay) {
-    delay = delay || 0;
-    self.deferredFns.push({time:(self.defer.now + delay), fn:fn, id: self.deferredNextId});
-    self.deferredFns.sort(function(a,b){ return a.time - b.time;});
-    return self.deferredNextId++;
-  };
-
-
-  self.defer.now = 0;
-
-
-  self.defer.cancel = function(deferId) {
-    var fnIndex;
-
-    angular.forEach(self.deferredFns, function(fn, index) {
-      if (fn.id === deferId) fnIndex = index;
-    });
-
-    if (fnIndex !== undefined) {
-      self.deferredFns.splice(fnIndex, 1);
-      return true;
-    }
-
-    return false;
-  };
-
-
-  /**
-   * @name ngMock.$browser#defer.flush
-   * @methodOf ngMock.$browser
-   *
-   * @description
-   * Flushes all pending requests and executes the defer callbacks.
-   *
-   * @param {number=} number of milliseconds to flush. See {@link #defer.now}
-   */
-  self.defer.flush = function(delay) {
-    if (angular.isDefined(delay)) {
-      self.defer.now += delay;
-    } else {
-      if (self.deferredFns.length) {
-        self.defer.now = self.deferredFns[self.deferredFns.length-1].time;
-      } else {
-        throw Error('No deferred tasks to be flushed');
-      }
-    }
-
-    while (self.deferredFns.length && self.deferredFns[0].time <= self.defer.now) {
-      self.deferredFns.shift().fn();
-    }
-  };
-  /**
-   * @name ngMock.$browser#defer.now
-   * @propertyOf ngMock.$browser
-   *
-   * @description
-   * Current milliseconds mock time.
-   */
-
-  self.$$baseHref = '';
-  self.baseHref = function() {
-    return this.$$baseHref;
-  };
-};
-angular.mock.$Browser.prototype = {
-
-/**
-  * @name ngMock.$browser#poll
-  * @methodOf ngMock.$browser
-  *
-  * @description
-  * run all fns in pollFns
-  */
-  poll: function poll() {
-    angular.forEach(this.pollFns, function(pollFn){
-      pollFn();
-    });
-  },
-
-  addPollFn: function(pollFn) {
-    this.pollFns.push(pollFn);
-    return pollFn;
-  },
-
-  url: function(url, replace) {
-    if (url) {
-      this.$$url = url;
-      return this;
-    }
-
-    return this.$$url;
-  },
-
-  cookies:  function(name, value) {
-    if (name) {
-      if (value == undefined) {
-        delete this.cookieHash[name];
-      } else {
-        if (angular.isString(value) &&       //strings only
-            value.length <= 4096) {          //strict cookie storage limits
-          this.cookieHash[name] = value;
-        }
-      }
-    } else {
-      if (!angular.equals(this.cookieHash, this.lastCookieHash)) {
-        this.lastCookieHash = angular.copy(this.cookieHash);
-        this.cookieHash = angular.copy(this.cookieHash);
-      }
-      return this.cookieHash;
-    }
-  },
-
-  notifyWhenNoOutstandingRequests: function(fn) {
-    fn();
-  }
-};
-
-
-/**
- * @ngdoc object
- * @name ngMock.$exceptionHandlerProvider
- *
- * @description
- * Configures the mock implementation of {@link ng.$exceptionHandler} to rethrow or to log errors passed
- * into the `$exceptionHandler`.
- */
-
-/**
- * @ngdoc object
- * @name ngMock.$exceptionHandler
- *
- * @description
- * Mock implementation of {@link ng.$exceptionHandler} that rethrows or logs errors passed
- * into it. See {@link ngMock.$exceptionHandlerProvider $exceptionHandlerProvider} for configuration
- * information.
- *
- *
- * <pre>
- *   describe('$exceptionHandlerProvider', function() {
- *
- *     it('should capture log messages and exceptions', function() {
- *
- *       module(function($exceptionHandlerProvider) {
- *         $exceptionHandlerProvider.mode('log');
- *       });
- *
- *       inject(function($log, $exceptionHandler, $timeout) {
- *         $timeout(function() { $log.log(1); });
- *         $timeout(function() { $log.log(2); throw 'banana peel'; });
- *         $timeout(function() { $log.log(3); });
- *         expect($exceptionHandler.errors).toEqual([]);
- *         expect($log.assertEmpty());
- *         $timeout.flush();
- *         expect($exceptionHandler.errors).toEqual(['banana peel']);
- *         expect($log.log.logs).toEqual([[1], [2], [3]]);
- *       });
- *     });
- *   });
- * </pre>
- */
-
-angular.mock.$ExceptionHandlerProvider = function() {
-  var handler;
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$exceptionHandlerProvider#mode
-   * @methodOf ngMock.$exceptionHandlerProvider
-   *
-   * @description
-   * Sets the logging mode.
-   *
-   * @param {string} mode Mode of operation, defaults to `rethrow`.
-   *
-   *   - `rethrow`: If any errors are are passed into the handler in tests, it typically
-   *                means that there is a bug in the application or test, so this mock will
-   *                make these tests fail.
-   *   - `log`: Sometimes it is desirable to test that an error is throw, for this case the `log` mode stores an
-   *            array of errors in `$exceptionHandler.errors`, to allow later assertion of them.
-   *            See {@link ngMock.$log#assertEmpty assertEmpty()} and
-   *             {@link ngMock.$log#reset reset()}
-   */
-  this.mode = function(mode) {
-    switch(mode) {
-      case 'rethrow':
-        handler = function(e) {
-          throw e;
-        };
-        break;
-      case 'log':
-        var errors = [];
-
-        handler = function(e) {
-          if (arguments.length == 1) {
-            errors.push(e);
-          } else {
-            errors.push([].slice.call(arguments, 0));
-          }
-        };
-
-        handler.errors = errors;
-        break;
-      default:
-        throw Error("Unknown mode '" + mode + "', only 'log'/'rethrow' modes are allowed!");
-    }
-  };
-
-  this.$get = function() {
-    return handler;
-  };
-
-  this.mode('rethrow');
-};
-
-
-/**
- * @ngdoc service
- * @name ngMock.$log
- *
- * @description
- * Mock implementation of {@link ng.$log} that gathers all logged messages in arrays
- * (one array per logging level). These arrays are exposed as `logs` property of each of the
- * level-specific log function, e.g. for level `error` the array is exposed as `$log.error.logs`.
- *
- */
-angular.mock.$LogProvider = function() {
-
-  function concat(array1, array2, index) {
-    return array1.concat(Array.prototype.slice.call(array2, index));
-  }
-
-
-  this.$get = function () {
-    var $log = {
-      log: function() { $log.log.logs.push(concat([], arguments, 0)); },
-      warn: function() { $log.warn.logs.push(concat([], arguments, 0)); },
-      info: function() { $log.info.logs.push(concat([], arguments, 0)); },
-      error: function() { $log.error.logs.push(concat([], arguments, 0)); }
-    };
-
-    /**
-     * @ngdoc method
-     * @name ngMock.$log#reset
-     * @methodOf ngMock.$log
-     *
-     * @description
-     * Reset all of the logging arrays to empty.
-     */
-    $log.reset = function () {
-      /**
-       * @ngdoc property
-       * @name ngMock.$log#log.logs
-       * @propertyOf ngMock.$log
-       *
-       * @description
-       * Array of logged messages.
-       */
-      $log.log.logs = [];
-      /**
-       * @ngdoc property
-       * @name ngMock.$log#warn.logs
-       * @propertyOf ngMock.$log
-       *
-       * @description
-       * Array of logged messages.
-       */
-      $log.warn.logs = [];
-      /**
-       * @ngdoc property
-       * @name ngMock.$log#info.logs
-       * @propertyOf ngMock.$log
-       *
-       * @description
-       * Array of logged messages.
-       */
-      $log.info.logs = [];
-      /**
-       * @ngdoc property
-       * @name ngMock.$log#error.logs
-       * @propertyOf ngMock.$log
-       *
-       * @description
-       * Array of logged messages.
-       */
-      $log.error.logs = [];
-    };
-
-    /**
-     * @ngdoc method
-     * @name ngMock.$log#assertEmpty
-     * @methodOf ngMock.$log
-     *
-     * @description
-     * Assert that the all of the logging methods have no logged messages. If messages present, an exception is thrown.
-     */
-    $log.assertEmpty = function() {
-      var errors = [];
-      angular.forEach(['error', 'warn', 'info', 'log'], function(logLevel) {
-        angular.forEach($log[logLevel].logs, function(log) {
-          angular.forEach(log, function (logItem) {
-            errors.push('MOCK $log (' + logLevel + '): ' + String(logItem) + '\n' + (logItem.stack || ''));
-          });
-        });
-      });
-      if (errors.length) {
-        errors.unshift("Expected $log to be empty! Either a message was logged unexpectedly, or an expected " +
-          "log message was not checked and removed:");
-        errors.push('');
-        throw new Error(errors.join('\n---------\n'));
-      }
-    };
-
-    $log.reset();
-    return $log;
-  };
-};
-
-
-(function() {
-  var R_ISO8061_STR = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?:\:?(\d\d)(?:\:?(\d\d)(?:\.(\d{3}))?)?)?(Z|([+-])(\d\d):?(\d\d)))?$/;
-
-  function jsonStringToDate(string){
-    var match;
-    if (match = string.match(R_ISO8061_STR)) {
-      var date = new Date(0),
-          tzHour = 0,
-          tzMin  = 0;
-      if (match[9]) {
-        tzHour = int(match[9] + match[10]);
-        tzMin = int(match[9] + match[11]);
-      }
-      date.setUTCFullYear(int(match[1]), int(match[2]) - 1, int(match[3]));
-      date.setUTCHours(int(match[4]||0) - tzHour, int(match[5]||0) - tzMin, int(match[6]||0), int(match[7]||0));
-      return date;
-    }
-    return string;
-  }
-
-  function int(str) {
-    return parseInt(str, 10);
-  }
-
-  function padNumber(num, digits, trim) {
-    var neg = '';
-    if (num < 0) {
-      neg =  '-';
-      num = -num;
-    }
-    num = '' + num;
-    while(num.length < digits) num = '0' + num;
-    if (trim)
-      num = num.substr(num.length - digits);
-    return neg + num;
-  }
-
-
-  /**
-   * @ngdoc object
-   * @name angular.mock.TzDate
-   * @description
-   *
-   * *NOTE*: this is not an injectable instance, just a globally available mock class of `Date`.
-   *
-   * Mock of the Date type which has its timezone specified via constroctor arg.
-   *
-   * The main purpose is to create Date-like instances with timezone fixed to the specified timezone
-   * offset, so that we can test code that depends on local timezone settings without dependency on
-   * the time zone settings of the machine where the code is running.
-   *
-   * @param {number} offset Offset of the *desired* timezone in hours (fractions will be honored)
-   * @param {(number|string)} timestamp Timestamp representing the desired time in *UTC*
-   *
-   * @example
-   * !!!! WARNING !!!!!
-   * This is not a complete Date object so only methods that were implemented can be called safely.
-   * To make matters worse, TzDate instances inherit stuff from Date via a prototype.
-   *
-   * We do our best to intercept calls to "unimplemented" methods, but since the list of methods is
-   * incomplete we might be missing some non-standard methods. This can result in errors like:
-   * "Date.prototype.foo called on incompatible Object".
-   *
-   * <pre>
-   * var newYearInBratislava = new TzDate(-1, '2009-12-31T23:00:00Z');
-   * newYearInBratislava.getTimezoneOffset() => -60;
-   * newYearInBratislava.getFullYear() => 2010;
-   * newYearInBratislava.getMonth() => 0;
-   * newYearInBratislava.getDate() => 1;
-   * newYearInBratislava.getHours() => 0;
-   * newYearInBratislava.getMinutes() => 0;
-   * </pre>
-   *
-   */
-  angular.mock.TzDate = function (offset, timestamp) {
-    var self = new Date(0);
-    if (angular.isString(timestamp)) {
-      var tsStr = timestamp;
-
-      self.origDate = jsonStringToDate(timestamp);
-
-      timestamp = self.origDate.getTime();
-      if (isNaN(timestamp))
-        throw {
-          name: "Illegal Argument",
-          message: "Arg '" + tsStr + "' passed into TzDate constructor is not a valid date string"
-        };
-    } else {
-      self.origDate = new Date(timestamp);
-    }
-
-    var localOffset = new Date(timestamp).getTimezoneOffset();
-    self.offsetDiff = localOffset*60*1000 - offset*1000*60*60;
-    self.date = new Date(timestamp + self.offsetDiff);
-
-    self.getTime = function() {
-      return self.date.getTime() - self.offsetDiff;
-    };
-
-    self.toLocaleDateString = function() {
-      return self.date.toLocaleDateString();
-    };
-
-    self.getFullYear = function() {
-      return self.date.getFullYear();
-    };
-
-    self.getMonth = function() {
-      return self.date.getMonth();
-    };
-
-    self.getDate = function() {
-      return self.date.getDate();
-    };
-
-    self.getHours = function() {
-      return self.date.getHours();
-    };
-
-    self.getMinutes = function() {
-      return self.date.getMinutes();
-    };
-
-    self.getSeconds = function() {
-      return self.date.getSeconds();
-    };
-
-    self.getTimezoneOffset = function() {
-      return offset * 60;
-    };
-
-    self.getUTCFullYear = function() {
-      return self.origDate.getUTCFullYear();
-    };
-
-    self.getUTCMonth = function() {
-      return self.origDate.getUTCMonth();
-    };
-
-    self.getUTCDate = function() {
-      return self.origDate.getUTCDate();
-    };
-
-    self.getUTCHours = function() {
-      return self.origDate.getUTCHours();
-    };
-
-    self.getUTCMinutes = function() {
-      return self.origDate.getUTCMinutes();
-    };
-
-    self.getUTCSeconds = function() {
-      return self.origDate.getUTCSeconds();
-    };
-
-    self.getUTCMilliseconds = function() {
-      return self.origDate.getUTCMilliseconds();
-    };
-
-    self.getDay = function() {
-      return self.date.getDay();
-    };
-
-    // provide this method only on browsers that already have it
-    if (self.toISOString) {
-      self.toISOString = function() {
-        return padNumber(self.origDate.getUTCFullYear(), 4) + '-' +
-              padNumber(self.origDate.getUTCMonth() + 1, 2) + '-' +
-              padNumber(self.origDate.getUTCDate(), 2) + 'T' +
-              padNumber(self.origDate.getUTCHours(), 2) + ':' +
-              padNumber(self.origDate.getUTCMinutes(), 2) + ':' +
-              padNumber(self.origDate.getUTCSeconds(), 2) + '.' +
-              padNumber(self.origDate.getUTCMilliseconds(), 3) + 'Z'
-      }
-    }
-
-    //hide all methods not implemented in this mock that the Date prototype exposes
-    var unimplementedMethods = ['getMilliseconds', 'getUTCDay',
-        'getYear', 'setDate', 'setFullYear', 'setHours', 'setMilliseconds',
-        'setMinutes', 'setMonth', 'setSeconds', 'setTime', 'setUTCDate', 'setUTCFullYear',
-        'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', 'setUTCMonth', 'setUTCSeconds',
-        'setYear', 'toDateString', 'toGMTString', 'toJSON', 'toLocaleFormat', 'toLocaleString',
-        'toLocaleTimeString', 'toSource', 'toString', 'toTimeString', 'toUTCString', 'valueOf'];
-
-    angular.forEach(unimplementedMethods, function(methodName) {
-      self[methodName] = function() {
-        throw Error("Method '" + methodName + "' is not implemented in the TzDate mock");
-      };
-    });
-
-    return self;
-  };
-
-  //make "tzDateInstance instanceof Date" return true
-  angular.mock.TzDate.prototype = Date.prototype;
-})();
-
-
-/**
- * @ngdoc function
- * @name angular.mock.dump
- * @description
- *
- * *NOTE*: this is not an injectable instance, just a globally available function.
- *
- * Method for serializing common angular objects (scope, elements, etc..) into strings, useful for debugging.
- *
- * This method is also available on window, where it can be used to display objects on debug console.
- *
- * @param {*} object - any object to turn into string.
- * @return {string} a serialized string of the argument
- */
-angular.mock.dump = function(object) {
-  return serialize(object);
-
-  function serialize(object) {
-    var out;
-
-    if (angular.isElement(object)) {
-      object = angular.element(object);
-      out = angular.element('<div></div>');
-      angular.forEach(object, function(element) {
-        out.append(angular.element(element).clone());
-      });
-      out = out.html();
-    } else if (angular.isArray(object)) {
-      out = [];
-      angular.forEach(object, function(o) {
-        out.push(serialize(o));
-      });
-      out = '[ ' + out.join(', ') + ' ]';
-    } else if (angular.isObject(object)) {
-      if (angular.isFunction(object.$eval) && angular.isFunction(object.$apply)) {
-        out = serializeScope(object);
-      } else if (object instanceof Error) {
-        out = object.stack || ('' + object.name + ': ' + object.message);
-      } else {
-        out = angular.toJson(object, true);
-      }
-    } else {
-      out = String(object);
-    }
-
-    return out;
-  }
-
-  function serializeScope(scope, offset) {
-    offset = offset ||  '  ';
-    var log = [offset + 'Scope(' + scope.$id + '): {'];
-    for ( var key in scope ) {
-      if (scope.hasOwnProperty(key) && !key.match(/^(\$|this)/)) {
-        log.push('  ' + key + ': ' + angular.toJson(scope[key]));
-      }
-    }
-    var child = scope.$$childHead;
-    while(child) {
-      log.push(serializeScope(child, offset + '  '));
-      child = child.$$nextSibling;
-    }
-    log.push('}');
-    return log.join('\n' + offset);
-  }
-};
-
-/**
- * @ngdoc object
- * @name ngMock.$httpBackend
- * @description
- * Fake HTTP backend implementation suitable for unit testing application that use the
- * {@link ng.$http $http service}.
- *
- * *Note*: For fake http backend implementation suitable for end-to-end testing or backend-less
- * development please see {@link ngMockE2E.$httpBackend e2e $httpBackend mock}.
- *
- * During unit testing, we want our unit tests to run quickly and have no external dependencies so
- * we don’t want to send {@link https://developer.mozilla.org/en/xmlhttprequest XHR} or
- * {@link http://en.wikipedia.org/wiki/JSONP JSONP} requests to a real server. All we really need is
- * to verify whether a certain request has been sent or not, or alternatively just let the
- * application make requests, respond with pre-trained responses and assert that the end result is
- * what we expect it to be.
- *
- * This mock implementation can be used to respond with static or dynamic responses via the
- * `expect` and `when` apis and their shortcuts (`expectGET`, `whenPOST`, etc).
- *
- * When an Angular application needs some data from a server, it calls the $http service, which
- * sends the request to a real server using $httpBackend service. With dependency injection, it is
- * easy to inject $httpBackend mock (which has the same API as $httpBackend) and use it to verify
- * the requests and respond with some testing data without sending a request to real server.
- *
- * There are two ways to specify what test data should be returned as http responses by the mock
- * backend when the code under test makes http requests:
- *
- * - `$httpBackend.expect` - specifies a request expectation
- * - `$httpBackend.when` - specifies a backend definition
- *
- *
- * # Request Expectations vs Backend Definitions
- *
- * Request expectations provide a way to make assertions about requests made by the application and
- * to define responses for those requests. The test will fail if the expected requests are not made
- * or they are made in the wrong order.
- *
- * Backend definitions allow you to define a fake backend for your application which doesn't assert
- * if a particular request was made or not, it just returns a trained response if a request is made.
- * The test will pass whether or not the request gets made during testing.
- *
- *
- * <table class="table">
- *   <tr><th width="220px"></th><th>Request expectations</th><th>Backend definitions</th></tr>
- *   <tr>
- *     <th>Syntax</th>
- *     <td>.expect(...).respond(...)</td>
- *     <td>.when(...).respond(...)</td>
- *   </tr>
- *   <tr>
- *     <th>Typical usage</th>
- *     <td>strict unit tests</td>
- *     <td>loose (black-box) unit testing</td>
- *   </tr>
- *   <tr>
- *     <th>Fulfills multiple requests</th>
- *     <td>NO</td>
- *     <td>YES</td>
- *   </tr>
- *   <tr>
- *     <th>Order of requests matters</th>
- *     <td>YES</td>
- *     <td>NO</td>
- *   </tr>
- *   <tr>
- *     <th>Request required</th>
- *     <td>YES</td>
- *     <td>NO</td>
- *   </tr>
- *   <tr>
- *     <th>Response required</th>
- *     <td>optional (see below)</td>
- *     <td>YES</td>
- *   </tr>
- * </table>
- *
- * In cases where both backend definitions and request expectations are specified during unit
- * testing, the request expectations are evaluated first.
- *
- * If a request expectation has no response specified, the algorithm will search your backend
- * definitions for an appropriate response.
- *
- * If a request didn't match any expectation or if the expectation doesn't have the response
- * defined, the backend definitions are evaluated in sequential order to see if any of them match
- * the request. The response from the first matched definition is returned.
- *
- *
- * # Flushing HTTP requests
- *
- * The $httpBackend used in production, always responds to requests with responses asynchronously.
- * If we preserved this behavior in unit testing, we'd have to create async unit tests, which are
- * hard to write, follow and maintain. At the same time the testing mock, can't respond
- * synchronously because that would change the execution of the code under test. For this reason the
- * mock $httpBackend has a `flush()` method, which allows the test to explicitly flush pending
- * requests and thus preserving the async api of the backend, while allowing the test to execute
- * synchronously.
- *
- *
- * # Unit testing with mock $httpBackend
- *
- * <pre>
-   // controller
-   function MyController($scope, $http) {
-     $http.get('/auth.py').success(function(data) {
-       $scope.user = data;
-     });
-
-     this.saveMessage = function(message) {
-       $scope.status = 'Saving...';
-       $http.post('/add-msg.py', message).success(function(response) {
-         $scope.status = '';
-       }).error(function() {
-         $scope.status = 'ERROR!';
-       });
-     };
-   }
-
-   // testing controller
-   var $httpBackend;
-
-   beforeEach(inject(function($injector) {
-     $httpBackend = $injector.get('$httpBackend');
-
-     // backend definition common for all tests
-     $httpBackend.when('GET', '/auth.py').respond({userId: 'userX'}, {'A-Token': 'xxx'});
-   }));
-
-
-   afterEach(function() {
-     $httpBackend.verifyNoOutstandingExpectation();
-     $httpBackend.verifyNoOutstandingRequest();
-   });
-
-
-   it('should fetch authentication token', function() {
-     $httpBackend.expectGET('/auth.py');
-     var controller = scope.$new(MyController);
-     $httpBackend.flush();
-   });
-
-
-   it('should send msg to server', function() {
-     // now you don’t care about the authentication, but
-     // the controller will still send the request and
-     // $httpBackend will respond without you having to
-     // specify the expectation and response for this request
-     $httpBackend.expectPOST('/add-msg.py', 'message content').respond(201, '');
-
-     var controller = scope.$new(MyController);
-     $httpBackend.flush();
-     controller.saveMessage('message content');
-     expect(controller.status).toBe('Saving...');
-     $httpBackend.flush();
-     expect(controller.status).toBe('');
-   });
-
-
-   it('should send auth header', function() {
-     $httpBackend.expectPOST('/add-msg.py', undefined, function(headers) {
-       // check if the header was send, if it wasn't the expectation won't
-       // match the request and the test will fail
-       return headers['Authorization'] == 'xxx';
-     }).respond(201, '');
-
-     var controller = scope.$new(MyController);
-     controller.saveMessage('whatever');
-     $httpBackend.flush();
-   });
-   </pre>
- */
-angular.mock.$HttpBackendProvider = function() {
-  this.$get = [createHttpBackendMock];
-};
-
-/**
- * General factory function for $httpBackend mock.
- * Returns instance for unit testing (when no arguments specified):
- *   - passing through is disabled
- *   - auto flushing is disabled
- *
- * Returns instance for e2e testing (when `$delegate` and `$browser` specified):
- *   - passing through (delegating request to real backend) is enabled
- *   - auto flushing is enabled
- *
- * @param {Object=} $delegate Real $httpBackend instance (allow passing through if specified)
- * @param {Object=} $browser Auto-flushing enabled if specified
- * @return {Object} Instance of $httpBackend mock
- */
-function createHttpBackendMock($delegate, $browser) {
-  var definitions = [],
-      expectations = [],
-      responses = [],
-      responsesPush = angular.bind(responses, responses.push);
-
-  function createResponse(status, data, headers) {
-    if (angular.isFunction(status)) return status;
-
-    return function() {
-      return angular.isNumber(status)
-          ? [status, data, headers]
-          : [200, status, data];
-    };
-  }
-
-  // TODO(vojta): change params to: method, url, data, headers, callback
-  function $httpBackend(method, url, data, callback, headers) {
-    var xhr = new MockXhr(),
-        expectation = expectations[0],
-        wasExpected = false;
-
-    function prettyPrint(data) {
-      return (angular.isString(data) || angular.isFunction(data) || data instanceof RegExp)
-          ? data
-          : angular.toJson(data);
-    }
-
-    if (expectation && expectation.match(method, url)) {
-      if (!expectation.matchData(data))
-        throw Error('Expected ' + expectation + ' with different data\n' +
-            'EXPECTED: ' + prettyPrint(expectation.data) + '\nGOT:      ' + data);
-
-      if (!expectation.matchHeaders(headers))
-        throw Error('Expected ' + expectation + ' with different headers\n' +
-            'EXPECTED: ' + prettyPrint(expectation.headers) + '\nGOT:      ' +
-            prettyPrint(headers));
-
-      expectations.shift();
-
-      if (expectation.response) {
-        responses.push(function() {
-          var response = expectation.response(method, url, data, headers);
-          xhr.$$respHeaders = response[2];
-          callback(response[0], response[1], xhr.getAllResponseHeaders());
-        });
-        return;
-      }
-      wasExpected = true;
-    }
-
-    var i = -1, definition;
-    while ((definition = definitions[++i])) {
-      if (definition.match(method, url, data, headers || {})) {
-        if (definition.response) {
-          // if $browser specified, we do auto flush all requests
-          ($browser ? $browser.defer : responsesPush)(function() {
-            var response = definition.response(method, url, data, headers);
-            xhr.$$respHeaders = response[2];
-            callback(response[0], response[1], xhr.getAllResponseHeaders());
-          });
-        } else if (definition.passThrough) {
-          $delegate(method, url, data, callback, headers);
-        } else throw Error('No response defined !');
-        return;
-      }
-    }
-    throw wasExpected ?
-        Error('No response defined !') :
-        Error('Unexpected request: ' + method + ' ' + url + '\n' +
-              (expectation ? 'Expected ' + expectation : 'No more request expected'));
-  }
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#when
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new backend definition.
-   *
-   * @param {string} method HTTP method.
-   * @param {string|RegExp} url HTTP url.
-   * @param {(string|RegExp)=} data HTTP request body.
-   * @param {(Object|function(Object))=} headers HTTP headers or function that receives http header
-   *   object and returns true if the headers match the current definition.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   *   request is handled.
-   *
-   *  - respond – `{function([status,] data[, headers])|function(function(method, url, data, headers)}`
-   *    – The respond method takes a set of static data to be returned or a function that can return
-   *    an array containing response status (number), response data (string) and response headers
-   *    (Object).
-   */
-  $httpBackend.when = function(method, url, data, headers) {
-    var definition = new MockHttpExpectation(method, url, data, headers),
-        chain = {
-          respond: function(status, data, headers) {
-            definition.response = createResponse(status, data, headers);
-          }
-        };
-
-    if ($browser) {
-      chain.passThrough = function() {
-        definition.passThrough = true;
-      };
-    }
-
-    definitions.push(definition);
-    return chain;
-  };
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#whenGET
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new backend definition for GET requests. For more info see `when()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {(Object|function(Object))=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   * request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#whenHEAD
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new backend definition for HEAD requests. For more info see `when()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {(Object|function(Object))=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   * request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#whenDELETE
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new backend definition for DELETE requests. For more info see `when()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {(Object|function(Object))=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   * request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#whenPOST
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new backend definition for POST requests. For more info see `when()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {(string|RegExp)=} data HTTP request body.
-   * @param {(Object|function(Object))=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   * request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#whenPUT
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new backend definition for PUT requests.  For more info see `when()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {(string|RegExp)=} data HTTP request body.
-   * @param {(Object|function(Object))=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   * request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#whenJSONP
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new backend definition for JSONP requests. For more info see `when()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   * request is handled.
-   */
-  createShortMethods('when');
-
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#expect
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new request expectation.
-   *
-   * @param {string} method HTTP method.
-   * @param {string|RegExp} url HTTP url.
-   * @param {(string|RegExp)=} data HTTP request body.
-   * @param {(Object|function(Object))=} headers HTTP headers or function that receives http header
-   *   object and returns true if the headers match the current expectation.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   *  request is handled.
-   *
-   *  - respond – `{function([status,] data[, headers])|function(function(method, url, data, headers)}`
-   *    – The respond method takes a set of static data to be returned or a function that can return
-   *    an array containing response status (number), response data (string) and response headers
-   *    (Object).
-   */
-  $httpBackend.expect = function(method, url, data, headers) {
-    var expectation = new MockHttpExpectation(method, url, data, headers);
-    expectations.push(expectation);
-    return {
-      respond: function(status, data, headers) {
-        expectation.response = createResponse(status, data, headers);
-      }
-    };
-  };
-
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#expectGET
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new request expectation for GET requests. For more info see `expect()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {Object=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   * request is handled. See #expect for more info.
-   */
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#expectHEAD
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new request expectation for HEAD requests. For more info see `expect()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {Object=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   *   request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#expectDELETE
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new request expectation for DELETE requests. For more info see `expect()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {Object=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   *   request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#expectPOST
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new request expectation for POST requests. For more info see `expect()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {(string|RegExp)=} data HTTP request body.
-   * @param {Object=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   *   request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#expectPUT
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new request expectation for PUT requests. For more info see `expect()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {(string|RegExp)=} data HTTP request body.
-   * @param {Object=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   *   request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#expectPATCH
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new request expectation for PATCH requests. For more info see `expect()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {(string|RegExp)=} data HTTP request body.
-   * @param {Object=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   *   request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#expectJSONP
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new request expectation for JSONP requests. For more info see `expect()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   *   request is handled.
-   */
-  createShortMethods('expect');
-
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#flush
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Flushes all pending requests using the trained responses.
-   *
-   * @param {number=} count Number of responses to flush (in the order they arrived). If undefined,
-   *   all pending requests will be flushed. If there are no pending requests when the flush method
-   *   is called an exception is thrown (as this typically a sign of programming error).
-   */
-  $httpBackend.flush = function(count) {
-    if (!responses.length) throw Error('No pending request to flush !');
-
-    if (angular.isDefined(count)) {
-      while (count--) {
-        if (!responses.length) throw Error('No more pending request to flush !');
-        responses.shift()();
-      }
-    } else {
-      while (responses.length) {
-        responses.shift()();
-      }
-    }
-    $httpBackend.verifyNoOutstandingExpectation();
-  };
-
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#verifyNoOutstandingExpectation
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Verifies that all of the requests defined via the `expect` api were made. If any of the
-   * requests were not made, verifyNoOutstandingExpectation throws an exception.
-   *
-   * Typically, you would call this method following each test case that asserts requests using an
-   * "afterEach" clause.
-   *
-   * <pre>
-   *   afterEach($httpBackend.verifyExpectations);
-   * </pre>
-   */
-  $httpBackend.verifyNoOutstandingExpectation = function() {
-    if (expectations.length) {
-      throw Error('Unsatisfied requests: ' + expectations.join(', '));
-    }
-  };
-
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#verifyNoOutstandingRequest
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Verifies that there are no outstanding requests that need to be flushed.
-   *
-   * Typically, you would call this method following each test case that asserts requests using an
-   * "afterEach" clause.
-   *
-   * <pre>
-   *   afterEach($httpBackend.verifyNoOutstandingRequest);
-   * </pre>
-   */
-  $httpBackend.verifyNoOutstandingRequest = function() {
-    if (responses.length) {
-      throw Error('Unflushed requests: ' + responses.length);
-    }
-  };
-
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#resetExpectations
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Resets all request expectations, but preserves all backend definitions. Typically, you would
-   * call resetExpectations during a multiple-phase test when you want to reuse the same instance of
-   * $httpBackend mock.
-   */
-  $httpBackend.resetExpectations = function() {
-    expectations.length = 0;
-    responses.length = 0;
-  };
-
-  return $httpBackend;
-
-
-  function createShortMethods(prefix) {
-    angular.forEach(['GET', 'DELETE', 'JSONP'], function(method) {
-     $httpBackend[prefix + method] = function(url, headers) {
-       return $httpBackend[prefix](method, url, undefined, headers)
-     }
-    });
-
-    angular.forEach(['PUT', 'POST', 'PATCH'], function(method) {
-      $httpBackend[prefix + method] = function(url, data, headers) {
-        return $httpBackend[prefix](method, url, data, headers)
-      }
-    });
-  }
-}
-
-function MockHttpExpectation(method, url, data, headers) {
-
-  this.data = data;
-  this.headers = headers;
-
-  this.match = function(m, u, d, h) {
-    if (method != m) return false;
-    if (!this.matchUrl(u)) return false;
-    if (angular.isDefined(d) && !this.matchData(d)) return false;
-    if (angular.isDefined(h) && !this.matchHeaders(h)) return false;
-    return true;
-  };
-
-  this.matchUrl = function(u) {
-    if (!url) return true;
-    if (angular.isFunction(url.test)) return url.test(u);
-    return url == u;
-  };
-
-  this.matchHeaders = function(h) {
-    if (angular.isUndefined(headers)) return true;
-    if (angular.isFunction(headers)) return headers(h);
-    return angular.equals(headers, h);
-  };
-
-  this.matchData = function(d) {
-    if (angular.isUndefined(data)) return true;
-    if (data && angular.isFunction(data.test)) return data.test(d);
-    if (data && !angular.isString(data)) return angular.toJson(data) == d;
-    return data == d;
-  };
-
-  this.toString = function() {
-    return method + ' ' + url;
-  };
-}
-
-function MockXhr() {
-
-  // hack for testing $http, $httpBackend
-  MockXhr.$$lastInstance = this;
-
-  this.open = function(method, url, async) {
-    this.$$method = method;
-    this.$$url = url;
-    this.$$async = async;
-    this.$$reqHeaders = {};
-    this.$$respHeaders = {};
-  };
-
-  this.send = function(data) {
-    this.$$data = data;
-  };
-
-  this.setRequestHeader = function(key, value) {
-    this.$$reqHeaders[key] = value;
-  };
-
-  this.getResponseHeader = function(name) {
-    // the lookup must be case insensitive, that's why we try two quick lookups and full scan at last
-    var header = this.$$respHeaders[name];
-    if (header) return header;
-
-    name = angular.lowercase(name);
-    header = this.$$respHeaders[name];
-    if (header) return header;
-
-    header = undefined;
-    angular.forEach(this.$$respHeaders, function(headerVal, headerName) {
-      if (!header && angular.lowercase(headerName) == name) header = headerVal;
-    });
-    return header;
-  };
-
-  this.getAllResponseHeaders = function() {
-    var lines = [];
-
-    angular.forEach(this.$$respHeaders, function(value, key) {
-      lines.push(key + ': ' + value);
-    });
-    return lines.join('\n');
-  };
-
-  this.abort = angular.noop;
-}
-
-
-/**
- * @ngdoc function
- * @name ngMock.$timeout
- * @description
- *
- * This service is just a simple decorator for {@link ng.$timeout $timeout} service
- * that adds a "flush" method.
- */
-
-/**
- * @ngdoc method
- * @name ngMock.$timeout#flush
- * @methodOf ngMock.$timeout
- * @description
- *
- * Flushes the queue of pending tasks.
- */
-
-/**
- *
- */
-angular.mock.$RootElementProvider = function() {
-  this.$get = function() {
-    return angular.element('<div ng-app></div>');
-  }
-};
-
-/**
- * @ngdoc overview
- * @name ngMock
- * @description
- *
- * The `ngMock` is an angular module which is used with `ng` module and adds unit-test configuration as well as useful
- * mocks to the {@link AUTO.$injector $injector}.
- */
-angular.module('ngMock', ['ng']).provider({
-  $browser: angular.mock.$BrowserProvider,
-  $exceptionHandler: angular.mock.$ExceptionHandlerProvider,
-  $log: angular.mock.$LogProvider,
-  $httpBackend: angular.mock.$HttpBackendProvider,
-  $rootElement: angular.mock.$RootElementProvider
-}).config(function($provide) {
-  $provide.decorator('$timeout', function($delegate, $browser) {
-    $delegate.flush = function() {
-      $browser.defer.flush();
-    };
-    return $delegate;
-  });
-});
-
-
-/**
- * @ngdoc overview
- * @name ngMockE2E
- * @description
- *
- * The `ngMockE2E` is an angular module which contains mocks suitable for end-to-end testing.
- * Currently there is only one mock present in this module -
- * the {@link ngMockE2E.$httpBackend e2e $httpBackend} mock.
- */
-angular.module('ngMockE2E', ['ng']).config(function($provide) {
-  $provide.decorator('$httpBackend', angular.mock.e2e.$httpBackendDecorator);
-});
-
-/**
- * @ngdoc object
- * @name ngMockE2E.$httpBackend
- * @description
- * Fake HTTP backend implementation suitable for end-to-end testing or backend-less development of
- * applications that use the {@link ng.$http $http service}.
- *
- * *Note*: For fake http backend implementation suitable for unit testing please see
- * {@link ngMock.$httpBackend unit-testing $httpBackend mock}.
- *
- * This implementation can be used to respond with static or dynamic responses via the `when` api
- * and its shortcuts (`whenGET`, `whenPOST`, etc) and optionally pass through requests to the
- * real $httpBackend for specific requests (e.g. to interact with certain remote apis or to fetch
- * templates from a webserver).
- *
- * As opposed to unit-testing, in an end-to-end testing scenario or in scenario when an application
- * is being developed with the real backend api replaced with a mock, it is often desirable for
- * certain category of requests to bypass the mock and issue a real http request (e.g. to fetch
- * templates or static files from the webserver). To configure the backend with this behavior
- * use the `passThrough` request handler of `when` instead of `respond`.
- *
- * Additionally, we don't want to manually have to flush mocked out requests like we do during unit
- * testing. For this reason the e2e $httpBackend automatically flushes mocked out requests
- * automatically, closely simulating the behavior of the XMLHttpRequest object.
- *
- * To setup the application to run with this http backend, you have to create a module that depends
- * on the `ngMockE2E` and your application modules and defines the fake backend:
- *
- * <pre>
- *   myAppDev = angular.module('myAppDev', ['myApp', 'ngMockE2E']);
- *   myAppDev.run(function($httpBackend) {
- *     phones = [{name: 'phone1'}, {name: 'phone2'}];
- *
- *     // returns the current list of phones
- *     $httpBackend.whenGET('/phones').respond(phones);
- *
- *     // adds a new phone to the phones array
- *     $httpBackend.whenPOST('/phones').respond(function(method, url, data) {
- *       phones.push(angular.fromJSON(data));
- *     });
- *     $httpBackend.whenGET(/^\/templates\//).passThrough();
- *     //...
- *   });
- * </pre>
- *
- * Afterwards, bootstrap your app with this new module.
- */
-
-/**
- * @ngdoc method
- * @name ngMockE2E.$httpBackend#when
- * @methodOf ngMockE2E.$httpBackend
- * @description
- * Creates a new backend definition.
- *
- * @param {string} method HTTP method.
- * @param {string|RegExp} url HTTP url.
- * @param {(string|RegExp)=} data HTTP request body.
- * @param {(Object|function(Object))=} headers HTTP headers or function that receives http header
- *   object and returns true if the headers match the current definition.
- * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
- *   control how a matched request is handled.
- *
- *  - respond – `{function([status,] data[, headers])|function(function(method, url, data, headers)}`
- *    – The respond method takes a set of static data to be returned or a function that can return
- *    an array containing response status (number), response data (string) and response headers
- *    (Object).
- *  - passThrough – `{function()}` – Any request matching a backend definition with `passThrough`
- *    handler, will be pass through to the real backend (an XHR request will be made to the
- *    server.
- */
-
-/**
- * @ngdoc method
- * @name ngMockE2E.$httpBackend#whenGET
- * @methodOf ngMockE2E.$httpBackend
- * @description
- * Creates a new backend definition for GET requests. For more info see `when()`.
- *
- * @param {string|RegExp} url HTTP url.
- * @param {(Object|function(Object))=} headers HTTP headers.
- * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
- *   control how a matched request is handled.
- */
-
-/**
- * @ngdoc method
- * @name ngMockE2E.$httpBackend#whenHEAD
- * @methodOf ngMockE2E.$httpBackend
- * @description
- * Creates a new backend definition for HEAD requests. For more info see `when()`.
- *
- * @param {string|RegExp} url HTTP url.
- * @param {(Object|function(Object))=} headers HTTP headers.
- * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
- *   control how a matched request is handled.
- */
-
-/**
- * @ngdoc method
- * @name ngMockE2E.$httpBackend#whenDELETE
- * @methodOf ngMockE2E.$httpBackend
- * @description
- * Creates a new backend definition for DELETE requests. For more info see `when()`.
- *
- * @param {string|RegExp} url HTTP url.
- * @param {(Object|function(Object))=} headers HTTP headers.
- * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
- *   control how a matched request is handled.
- */
-
-/**
- * @ngdoc method
- * @name ngMockE2E.$httpBackend#whenPOST
- * @methodOf ngMockE2E.$httpBackend
- * @description
- * Creates a new backend definition for POST requests. For more info see `when()`.
- *
- * @param {string|RegExp} url HTTP url.
- * @param {(string|RegExp)=} data HTTP request body.
- * @param {(Object|function(Object))=} headers HTTP headers.
- * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
- *   control how a matched request is handled.
- */
-
-/**
- * @ngdoc method
- * @name ngMockE2E.$httpBackend#whenPUT
- * @methodOf ngMockE2E.$httpBackend
- * @description
- * Creates a new backend definition for PUT requests.  For more info see `when()`.
- *
- * @param {string|RegExp} url HTTP url.
- * @param {(string|RegExp)=} data HTTP request body.
- * @param {(Object|function(Object))=} headers HTTP headers.
- * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
- *   control how a matched request is handled.
- */
-
-/**
- * @ngdoc method
- * @name ngMockE2E.$httpBackend#whenPATCH
- * @methodOf ngMockE2E.$httpBackend
- * @description
- * Creates a new backend definition for PATCH requests.  For more info see `when()`.
- *
- * @param {string|RegExp} url HTTP url.
- * @param {(string|RegExp)=} data HTTP request body.
- * @param {(Object|function(Object))=} headers HTTP headers.
- * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
- *   control how a matched request is handled.
- */
-
-/**
- * @ngdoc method
- * @name ngMockE2E.$httpBackend#whenJSONP
- * @methodOf ngMockE2E.$httpBackend
- * @description
- * Creates a new backend definition for JSONP requests. For more info see `when()`.
- *
- * @param {string|RegExp} url HTTP url.
- * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
- *   control how a matched request is handled.
- */
-angular.mock.e2e = {};
-angular.mock.e2e.$httpBackendDecorator = ['$delegate', '$browser', createHttpBackendMock];
-
-
-angular.mock.clearDataCache = function() {
-  var key,
-      cache = angular.element.cache;
-
-  for(key in cache) {
-    if (cache.hasOwnProperty(key)) {
-      var handle = cache[key].handle;
-
-      handle && angular.element(handle.elem).unbind();
-      delete cache[key];
-    }
-  }
-};
-
-
-window.jstestdriver && (function(window) {
-  /**
-   * Global method to output any number of objects into JSTD console. Useful for debugging.
-   */
-  window.dump = function() {
-    var args = [];
-    angular.forEach(arguments, function(arg) {
-      args.push(angular.mock.dump(arg));
-    });
-    jstestdriver.console.log.apply(jstestdriver.console, args);
-    if (window.console) {
-      window.console.log.apply(window.console, args);
-    }
-  };
-})(window);
-
-
-window.jasmine && (function(window) {
-
-  afterEach(function() {
-    var spec = getCurrentSpec();
-    var injector = spec.$injector;
-
-    spec.$injector = null;
-    spec.$modules = null;
-
-    if (injector) {
-      injector.get('$rootElement').unbind();
-      injector.get('$browser').pollFns.length = 0;
-    }
-
-    angular.mock.clearDataCache();
-
-    // clean up jquery's fragment cache
-    angular.forEach(angular.element.fragments, function(val, key) {
-      delete angular.element.fragments[key];
-    });
-
-    MockXhr.$$lastInstance = null;
-
-    angular.forEach(angular.callbacks, function(val, key) {
-      delete angular.callbacks[key];
-    });
-    angular.callbacks.counter = 0;
-  });
-
-  function getCurrentSpec() {
-    return jasmine.getEnv().currentSpec;
-  }
-
-  function isSpecRunning() {
-    var spec = getCurrentSpec();
-    return spec && spec.queue.running;
-  }
-
-  /**
-   * @ngdoc function
-   * @name angular.mock.module
-   * @description
-   *
-   * *NOTE*: This is function is also published on window for easy access.<br>
-   * *NOTE*: Only available with {@link http://pivotal.github.com/jasmine/ jasmine}.
-   *
-   * This function registers a module configuration code. It collects the configuration information
-   * which will be used when the injector is created by {@link angular.mock.inject inject}.
-   *
-   * See {@link angular.mock.inject inject} for usage example
-   *
-   * @param {...(string|Function)} fns any number of modules which are represented as string
-   *        aliases or as anonymous module initialization functions. The modules are used to
-   *        configure the injector. The 'ng' and 'ngMock' modules are automatically loaded.
-   */
-  window.module = angular.mock.module = function() {
-    var moduleFns = Array.prototype.slice.call(arguments, 0);
-    return isSpecRunning() ? workFn() : workFn;
-    /////////////////////
-    function workFn() {
-      var spec = getCurrentSpec();
-      if (spec.$injector) {
-        throw Error('Injector already created, can not register a module!');
-      } else {
-        var modules = spec.$modules || (spec.$modules = []);
-        angular.forEach(moduleFns, function(module) {
-          modules.push(module);
-        });
-      }
-    }
-  };
-
-  /**
-   * @ngdoc function
-   * @name angular.mock.inject
-   * @description
-   *
-   * *NOTE*: This is function is also published on window for easy access.<br>
-   * *NOTE*: Only available with {@link http://pivotal.github.com/jasmine/ jasmine}.
-   *
-   * The inject function wraps a function into an injectable function. The inject() creates new
-   * instance of {@link AUTO.$injector $injector} per test, which is then used for
-   * resolving references.
-   *
-   * See also {@link angular.mock.module module}
-   *
-   * Example of what a typical jasmine tests looks like with the inject method.
-   * <pre>
-   *
-   *   angular.module('myApplicationModule', [])
-   *       .value('mode', 'app')
-   *       .value('version', 'v1.0.1');
-   *
-   *
-   *   describe('MyApp', function() {
-   *
-   *     // You need to load modules that you want to test,
-   *     // it loads only the "ng" module by default.
-   *     beforeEach(module('myApplicationModule'));
-   *
-   *
-   *     // inject() is used to inject arguments of all given functions
-   *     it('should provide a version', inject(function(mode, version) {
-   *       expect(version).toEqual('v1.0.1');
-   *       expect(mode).toEqual('app');
-   *     }));
-   *
-   *
-   *     // The inject and module method can also be used inside of the it or beforeEach
-   *     it('should override a version and test the new version is injected', function() {
-   *       // module() takes functions or strings (module aliases)
-   *       module(function($provide) {
-   *         $provide.value('version', 'overridden'); // override version here
-   *       });
-   *
-   *       inject(function(version) {
-   *         expect(version).toEqual('overridden');
-   *       });
-   *     ));
-   *   });
-   *
-   * </pre>
-   *
-   * @param {...Function} fns any number of functions which will be injected using the injector.
-   */
-  window.inject = angular.mock.inject = function() {
-    var blockFns = Array.prototype.slice.call(arguments, 0);
-    var errorForStack = new Error('Declaration Location');
-    return isSpecRunning() ? workFn() : workFn;
-    /////////////////////
-    function workFn() {
-      var spec = getCurrentSpec();
-      var modules = spec.$modules || [];
-      modules.unshift('ngMock');
-      modules.unshift('ng');
-      var injector = spec.$injector;
-      if (!injector) {
-        injector = spec.$injector = angular.injector(modules);
-      }
-      for(var i = 0, ii = blockFns.length; i < ii; i++) {
-        try {
-          injector.invoke(blockFns[i] || angular.noop, this);
-        } catch (e) {
-          if(e.stack) e.stack +=  '\n' + errorForStack.stack;
-          throw e;
-        } finally {
-          errorForStack = null;
-        }
-      }
-    }
-  };
-})(window);


[42/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/app/app.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/app/app.js b/deleted/archive/js/app/app.js
deleted file mode 100644
index 2b68963..0000000
--- a/deleted/archive/js/app/app.js
+++ /dev/null
@@ -1,131 +0,0 @@
-Usergrid.organizations = new Usergrid.Organization();
-
-var Pages = new ApigeePages();
-
-
-
-$(document).ready(function () {
-
-  var query_params = Usergrid.Params.queryParams;
-  if(window.location.host === 'appservices.apigee.com' && location.pathname.indexOf('/dit') >= 0){
-    //DIT
-    Usergrid.ApiClient.setApiUrl('http://apigee-internal-prod.jupiter.apigee.net/');
-  }else if(window.location.host === 'appservices.apigee.com' && location.pathname.indexOf('/mars') >= 0 ){
-    //staging
-    Usergrid.ApiClient.setApiUrl('http://apigee-internal-prod.mars.apigee.net/');
-  } else if (Usergrid.apiUrl) {
-    Usergrid.ApiClient.setApiUrl(Usergrid.apiUrl);
-  }
-
-
-  Pages.resetPasswordUrl = Usergrid.ApiClient.getResetPasswordUrl();
-
-  initCore();
-  initUI(query_params);
-  startApp();
-
-  function initCore() {
-    prepareLocalStorage();
-    parseParams();
-  }
-
-  function initUI(query_params) {
-    apigee_console_app(Pages, query_params);
-    initMenu();
-    StatusBar.Init('#statusbar-placeholder');
-    toggleableSections();
-  }
-
-  function startApp() {
-
-    if (!Usergrid.userSession.loggedIn()) {
-      // test to see if the Portal is running on apigee, if so, send to SSO, if not, fall through to login screen
-      if (Usergrid.SSO.usingSSO()) {
-        Pages.clearPage();
-        Usergrid.SSO.sendToSSOLoginPage();
-      } else if (query_params.goto_signup) {
-        Pages.ShowPage("signup");
-      } else {
-        Usergrid.console.showLoginForNonSSO();
-      }
-    } else {
-      Usergrid.console.autoLogin(
-        function () {
-          Usergrid.console.loginOk();
-        },
-        function () {
-          Usergrid.console.logout();
-        }
-      );
-    }
-  }
-
-  function initMenu() {
-    $('.navbar .dropdown-toggle').dropdown();
-    $('#sidebar-menu .dropdown-toggle').dropdown();
-    $('#logout-link').click(Usergrid.console.logout);
-    $('#hideBanner').click(Pages.hideBanner);
-
-    var publicMenu = $('#publicMenu');
-    var privateMenu = $('.privateMenu');
-
-    Pages.AddPage({name:'login', menu:publicMenu});
-    Pages.AddPage({name:'message', menu:publicMenu});
-    Pages.AddPage({name:'signup', menu:publicMenu});
-    Pages.AddPage({name:'forgot-password', menu:publicMenu});
-    Pages.AddPage({name:'post-signup', menu:publicMenu});
-    Pages.AddPage({name:'console', menu:privateMenu, initFunction:initConsole, showFunction: function() {
-      if(!Backbone.History.started){
-        Backbone.history.start();
-      }
-    }});
-  }
-
-
-  function initConsole() {
-    //Pages.AddPanel(pageName,linkSelector,boxSelector,initfunc,showfunc,buttonHandlerFunction);
-    Pages.AddPanel('organization', '.go-home', null,null, null, Usergrid.console.pageSelectHome,null);
-    Pages.AddPanel('console', null, null, null, null, null, null);
-    Pages.AddPanel('dashboard', null, null, null, null, Usergrid.console.pageSelectApplication,null);
-    Pages.AddPanel('user', "#users-sublink", "#users-sublink", null, null, null, function() {});
-    Pages.AddPanel('users', null, "#users-sublink", null, null, Usergrid.console.pageSelectUsers, null);
-    Pages.AddPanel('group', null, "#groups-sublink", null, null, null, function() {});
-    Pages.AddPanel('groups', null, null, null, null, Usergrid.console.pageSelectGroups, null);
-    Pages.AddPanel('roles',  null, null, null, null, Usergrid.console.pageSelectRoles, null);
-    Pages.AddPanel('activities', null, null, null, null, Usergrid.console.pageSelectActivities, null);
-    Pages.AddPanel('notifications', null, null, null, null, Usergrid.console.pageSelectNotifcations, null);
-    Pages.AddPanel('setupNeeded', null, null, null, null, Usergrid.console.pageSelectNotifcations, null);
-    Pages.AddPanel('sendNotification', null, "#sendNotification-sublink", null, null, null, null);
-    Pages.AddPanel('messageHistory', null, "#messageHistory-sublink", null, null, null, null);
-    Pages.AddPanel('notificationsReceipt', null, null, null, null, null, null);
-    Pages.AddPanel('configuration', null, "#configuration-sublink", null, null, null, null);
-    Pages.AddPanel('getStarted', null, "#getStarted-sublink", null, null, null, null);
-    Pages.AddPanel('collections', "#collections-link", null, null, null, Usergrid.console.pageSelectCollections, null);
-    Pages.AddPanel('analytics', null, null, null, null, Usergrid.console.pageSelectAnalytics, null);
-    Pages.AddPanel('properties', null, null, null, null, Usergrid.console.pageSelectProperties, null);
-    Pages.AddPanel('shell', null, null, null, null, Usergrid.console.pageSelectShell, null);
-    Pages.AddPanel('account', "#account-link", null, null, null, null, accountRedirect);
-    //$("#sidebar-menu > ul > li > a").click(Pages.ShowPanel);
-
-  }
-
-  function accountRedirect(e) {
-    e.preventDefault();
-    Usergrid.console.requestAccountSettings(Backbone.history.getHash(window));
-  }
-
-  function initCenterPanels(){
-    $(window).resize(centerPanels);
-    $(window).resize();
-  }
-
-  function centerPanels(){
-    var panels = $("#console-page");
-    var freeSpace = $(window).width() - panels.width();
-    console.log("window: " + $(window).width() + " Panels:" + panels.width());
-    console.log("free space: "+freeSpace);
-    panels.css('margin-left',function(){return freeSpace / 2;});
-  }
-
-  console.log('---+++', window)
-});


[47/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/dash/README.md
----------------------------------------------------------------------
diff --git a/deleted/archive/dash/README.md b/deleted/archive/dash/README.md
deleted file mode 100644
index b2e1119..0000000
--- a/deleted/archive/dash/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-* install nodejs
-* from root of this rep run ./scripts/web-server.js
-* open browser and go to http://localhost:8001/dash/app/index.html

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/dash/config/testacular-e2e.conf.js
----------------------------------------------------------------------
diff --git a/deleted/archive/dash/config/testacular-e2e.conf.js b/deleted/archive/dash/config/testacular-e2e.conf.js
deleted file mode 100644
index 51f51d2..0000000
--- a/deleted/archive/dash/config/testacular-e2e.conf.js
+++ /dev/null
@@ -1,22 +0,0 @@
-basePath = '../';
-
-files = [
-  ANGULAR_SCENARIO,
-  ANGULAR_SCENARIO_ADAPTER,
-  'test/e2e/**/*.js'
-];
-
-autoWatch = false;
-
-browsers = ['Chrome'];
-
-singleRun = true;
-
-proxies = {
-  '/': 'http://localhost:8000/'
-};
-
-junitReporter = {
-  outputFile: 'test_out/e2e.xml',
-  suite: 'e2e'
-};

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/dash/config/testacular.conf.js
----------------------------------------------------------------------
diff --git a/deleted/archive/dash/config/testacular.conf.js b/deleted/archive/dash/config/testacular.conf.js
deleted file mode 100644
index ad0ade4..0000000
--- a/deleted/archive/dash/config/testacular.conf.js
+++ /dev/null
@@ -1,20 +0,0 @@
-basePath = '../';
-
-files = [
-  JASMINE,
-  JASMINE_ADAPTER,
-  'app/lib/angular/angular.js',
-  'app/lib/angular/angular-*.js',
-  'test/lib/angular/angular-mocks.js',
-  'app/js/**/*.js',
-  'test/unit/**/*.js'
-];
-
-autoWatch = true;
-
-browsers = ['Chrome'];
-
-junitReporter = {
-  outputFile: 'test_out/unit.xml',
-  suite: 'unit'
-};

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/dash/test/e2e/runner.html
----------------------------------------------------------------------
diff --git a/deleted/archive/dash/test/e2e/runner.html b/deleted/archive/dash/test/e2e/runner.html
deleted file mode 100644
index a40fa08..0000000
--- a/deleted/archive/dash/test/e2e/runner.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<!doctype html>
-<html lang="en">
-  <head>
-    <title>End2end Test Runner</title>
-    <script src="../lib/angular/angular-scenario.js" ng-autotest></script>
-    <script src="scenarios.js"></script>
-  </head>
-  <body>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/dash/test/e2e/scenarios.js
----------------------------------------------------------------------
diff --git a/deleted/archive/dash/test/e2e/scenarios.js b/deleted/archive/dash/test/e2e/scenarios.js
deleted file mode 100644
index 26e174a..0000000
--- a/deleted/archive/dash/test/e2e/scenarios.js
+++ /dev/null
@@ -1,45 +0,0 @@
-'use strict';
-
-/* http://docs.angularjs.org/guide/dev_guide.e2e-testing */
-
-describe('my app', function() {
-
-  beforeEach(function() {
-    browser().navigateTo('../../app/index.html');
-  });
-
-
-  it('should automatically redirect to /view1 when location hash/fragment is empty', function() {
-    expect(browser().location().url()).toBe("/view1");
-  });
-
-
-  describe('view1', function() {
-
-    beforeEach(function() {
-      browser().navigateTo('#/view1');
-    });
-
-
-    it('should render view1 when user navigates to /view1', function() {
-      expect(element('[ng-view] p:first').text()).
-        toMatch(/partial for view 1/);
-    });
-
-  });
-
-
-  describe('view2', function() {
-
-    beforeEach(function() {
-      browser().navigateTo('#/view2');
-    });
-
-
-    it('should render view2 when user navigates to /view2', function() {
-      expect(element('[ng-view] p:first').text()).
-        toMatch(/partial for view 2/);
-    });
-
-  });
-});

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/dash/test/lib/angular/angular-mocks.js
----------------------------------------------------------------------
diff --git a/deleted/archive/dash/test/lib/angular/angular-mocks.js b/deleted/archive/dash/test/lib/angular/angular-mocks.js
deleted file mode 100644
index b6ecc79..0000000
--- a/deleted/archive/dash/test/lib/angular/angular-mocks.js
+++ /dev/null
@@ -1,1764 +0,0 @@
-/**
- * @license AngularJS v1.0.5
- * (c) 2010-2012 Google, Inc. http://angularjs.org
- * License: MIT
- *
- * TODO(vojta): wrap whole file into closure during build
- */
-
-/**
- * @ngdoc overview
- * @name angular.mock
- * @description
- *
- * Namespace from 'angular-mocks.js' which contains testing related code.
- */
-angular.mock = {};
-
-/**
- * ! This is a private undocumented service !
- *
- * @name ngMock.$browser
- *
- * @description
- * This service is a mock implementation of {@link ng.$browser}. It provides fake
- * implementation for commonly used browser apis that are hard to test, e.g. setTimeout, xhr,
- * cookies, etc...
- *
- * The api of this service is the same as that of the real {@link ng.$browser $browser}, except
- * that there are several helper methods available which can be used in tests.
- */
-angular.mock.$BrowserProvider = function() {
-  this.$get = function(){
-    return new angular.mock.$Browser();
-  };
-};
-
-angular.mock.$Browser = function() {
-  var self = this;
-
-  this.isMock = true;
-  self.$$url = "http://server/";
-  self.$$lastUrl = self.$$url; // used by url polling fn
-  self.pollFns = [];
-
-  // TODO(vojta): remove this temporary api
-  self.$$completeOutstandingRequest = angular.noop;
-  self.$$incOutstandingRequestCount = angular.noop;
-
-
-  // register url polling fn
-
-  self.onUrlChange = function(listener) {
-    self.pollFns.push(
-      function() {
-        if (self.$$lastUrl != self.$$url) {
-          self.$$lastUrl = self.$$url;
-          listener(self.$$url);
-        }
-      }
-    );
-
-    return listener;
-  };
-
-  self.cookieHash = {};
-  self.lastCookieHash = {};
-  self.deferredFns = [];
-  self.deferredNextId = 0;
-
-  self.defer = function(fn, delay) {
-    delay = delay || 0;
-    self.deferredFns.push({time:(self.defer.now + delay), fn:fn, id: self.deferredNextId});
-    self.deferredFns.sort(function(a,b){ return a.time - b.time;});
-    return self.deferredNextId++;
-  };
-
-
-  self.defer.now = 0;
-
-
-  self.defer.cancel = function(deferId) {
-    var fnIndex;
-
-    angular.forEach(self.deferredFns, function(fn, index) {
-      if (fn.id === deferId) fnIndex = index;
-    });
-
-    if (fnIndex !== undefined) {
-      self.deferredFns.splice(fnIndex, 1);
-      return true;
-    }
-
-    return false;
-  };
-
-
-  /**
-   * @name ngMock.$browser#defer.flush
-   * @methodOf ngMock.$browser
-   *
-   * @description
-   * Flushes all pending requests and executes the defer callbacks.
-   *
-   * @param {number=} number of milliseconds to flush. See {@link #defer.now}
-   */
-  self.defer.flush = function(delay) {
-    if (angular.isDefined(delay)) {
-      self.defer.now += delay;
-    } else {
-      if (self.deferredFns.length) {
-        self.defer.now = self.deferredFns[self.deferredFns.length-1].time;
-      } else {
-        throw Error('No deferred tasks to be flushed');
-      }
-    }
-
-    while (self.deferredFns.length && self.deferredFns[0].time <= self.defer.now) {
-      self.deferredFns.shift().fn();
-    }
-  };
-  /**
-   * @name ngMock.$browser#defer.now
-   * @propertyOf ngMock.$browser
-   *
-   * @description
-   * Current milliseconds mock time.
-   */
-
-  self.$$baseHref = '';
-  self.baseHref = function() {
-    return this.$$baseHref;
-  };
-};
-angular.mock.$Browser.prototype = {
-
-/**
-  * @name ngMock.$browser#poll
-  * @methodOf ngMock.$browser
-  *
-  * @description
-  * run all fns in pollFns
-  */
-  poll: function poll() {
-    angular.forEach(this.pollFns, function(pollFn){
-      pollFn();
-    });
-  },
-
-  addPollFn: function(pollFn) {
-    this.pollFns.push(pollFn);
-    return pollFn;
-  },
-
-  url: function(url, replace) {
-    if (url) {
-      this.$$url = url;
-      return this;
-    }
-
-    return this.$$url;
-  },
-
-  cookies:  function(name, value) {
-    if (name) {
-      if (value == undefined) {
-        delete this.cookieHash[name];
-      } else {
-        if (angular.isString(value) &&       //strings only
-            value.length <= 4096) {          //strict cookie storage limits
-          this.cookieHash[name] = value;
-        }
-      }
-    } else {
-      if (!angular.equals(this.cookieHash, this.lastCookieHash)) {
-        this.lastCookieHash = angular.copy(this.cookieHash);
-        this.cookieHash = angular.copy(this.cookieHash);
-      }
-      return this.cookieHash;
-    }
-  },
-
-  notifyWhenNoOutstandingRequests: function(fn) {
-    fn();
-  }
-};
-
-
-/**
- * @ngdoc object
- * @name ngMock.$exceptionHandlerProvider
- *
- * @description
- * Configures the mock implementation of {@link ng.$exceptionHandler} to rethrow or to log errors passed
- * into the `$exceptionHandler`.
- */
-
-/**
- * @ngdoc object
- * @name ngMock.$exceptionHandler
- *
- * @description
- * Mock implementation of {@link ng.$exceptionHandler} that rethrows or logs errors passed
- * into it. See {@link ngMock.$exceptionHandlerProvider $exceptionHandlerProvider} for configuration
- * information.
- *
- *
- * <pre>
- *   describe('$exceptionHandlerProvider', function() {
- *
- *     it('should capture log messages and exceptions', function() {
- *
- *       module(function($exceptionHandlerProvider) {
- *         $exceptionHandlerProvider.mode('log');
- *       });
- *
- *       inject(function($log, $exceptionHandler, $timeout) {
- *         $timeout(function() { $log.log(1); });
- *         $timeout(function() { $log.log(2); throw 'banana peel'; });
- *         $timeout(function() { $log.log(3); });
- *         expect($exceptionHandler.errors).toEqual([]);
- *         expect($log.assertEmpty());
- *         $timeout.flush();
- *         expect($exceptionHandler.errors).toEqual(['banana peel']);
- *         expect($log.log.logs).toEqual([[1], [2], [3]]);
- *       });
- *     });
- *   });
- * </pre>
- */
-
-angular.mock.$ExceptionHandlerProvider = function() {
-  var handler;
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$exceptionHandlerProvider#mode
-   * @methodOf ngMock.$exceptionHandlerProvider
-   *
-   * @description
-   * Sets the logging mode.
-   *
-   * @param {string} mode Mode of operation, defaults to `rethrow`.
-   *
-   *   - `rethrow`: If any errors are are passed into the handler in tests, it typically
-   *                means that there is a bug in the application or test, so this mock will
-   *                make these tests fail.
-   *   - `log`: Sometimes it is desirable to test that an error is throw, for this case the `log` mode stores an
-   *            array of errors in `$exceptionHandler.errors`, to allow later assertion of them.
-   *            See {@link ngMock.$log#assertEmpty assertEmpty()} and
-   *             {@link ngMock.$log#reset reset()}
-   */
-  this.mode = function(mode) {
-    switch(mode) {
-      case 'rethrow':
-        handler = function(e) {
-          throw e;
-        };
-        break;
-      case 'log':
-        var errors = [];
-
-        handler = function(e) {
-          if (arguments.length == 1) {
-            errors.push(e);
-          } else {
-            errors.push([].slice.call(arguments, 0));
-          }
-        };
-
-        handler.errors = errors;
-        break;
-      default:
-        throw Error("Unknown mode '" + mode + "', only 'log'/'rethrow' modes are allowed!");
-    }
-  };
-
-  this.$get = function() {
-    return handler;
-  };
-
-  this.mode('rethrow');
-};
-
-
-/**
- * @ngdoc service
- * @name ngMock.$log
- *
- * @description
- * Mock implementation of {@link ng.$log} that gathers all logged messages in arrays
- * (one array per logging level). These arrays are exposed as `logs` property of each of the
- * level-specific log function, e.g. for level `error` the array is exposed as `$log.error.logs`.
- *
- */
-angular.mock.$LogProvider = function() {
-
-  function concat(array1, array2, index) {
-    return array1.concat(Array.prototype.slice.call(array2, index));
-  }
-
-
-  this.$get = function () {
-    var $log = {
-      log: function() { $log.log.logs.push(concat([], arguments, 0)); },
-      warn: function() { $log.warn.logs.push(concat([], arguments, 0)); },
-      info: function() { $log.info.logs.push(concat([], arguments, 0)); },
-      error: function() { $log.error.logs.push(concat([], arguments, 0)); }
-    };
-
-    /**
-     * @ngdoc method
-     * @name ngMock.$log#reset
-     * @methodOf ngMock.$log
-     *
-     * @description
-     * Reset all of the logging arrays to empty.
-     */
-    $log.reset = function () {
-      /**
-       * @ngdoc property
-       * @name ngMock.$log#log.logs
-       * @propertyOf ngMock.$log
-       *
-       * @description
-       * Array of logged messages.
-       */
-      $log.log.logs = [];
-      /**
-       * @ngdoc property
-       * @name ngMock.$log#warn.logs
-       * @propertyOf ngMock.$log
-       *
-       * @description
-       * Array of logged messages.
-       */
-      $log.warn.logs = [];
-      /**
-       * @ngdoc property
-       * @name ngMock.$log#info.logs
-       * @propertyOf ngMock.$log
-       *
-       * @description
-       * Array of logged messages.
-       */
-      $log.info.logs = [];
-      /**
-       * @ngdoc property
-       * @name ngMock.$log#error.logs
-       * @propertyOf ngMock.$log
-       *
-       * @description
-       * Array of logged messages.
-       */
-      $log.error.logs = [];
-    };
-
-    /**
-     * @ngdoc method
-     * @name ngMock.$log#assertEmpty
-     * @methodOf ngMock.$log
-     *
-     * @description
-     * Assert that the all of the logging methods have no logged messages. If messages present, an exception is thrown.
-     */
-    $log.assertEmpty = function() {
-      var errors = [];
-      angular.forEach(['error', 'warn', 'info', 'log'], function(logLevel) {
-        angular.forEach($log[logLevel].logs, function(log) {
-          angular.forEach(log, function (logItem) {
-            errors.push('MOCK $log (' + logLevel + '): ' + String(logItem) + '\n' + (logItem.stack || ''));
-          });
-        });
-      });
-      if (errors.length) {
-        errors.unshift("Expected $log to be empty! Either a message was logged unexpectedly, or an expected " +
-          "log message was not checked and removed:");
-        errors.push('');
-        throw new Error(errors.join('\n---------\n'));
-      }
-    };
-
-    $log.reset();
-    return $log;
-  };
-};
-
-
-(function() {
-  var R_ISO8061_STR = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?:\:?(\d\d)(?:\:?(\d\d)(?:\.(\d{3}))?)?)?(Z|([+-])(\d\d):?(\d\d)))?$/;
-
-  function jsonStringToDate(string){
-    var match;
-    if (match = string.match(R_ISO8061_STR)) {
-      var date = new Date(0),
-          tzHour = 0,
-          tzMin  = 0;
-      if (match[9]) {
-        tzHour = int(match[9] + match[10]);
-        tzMin = int(match[9] + match[11]);
-      }
-      date.setUTCFullYear(int(match[1]), int(match[2]) - 1, int(match[3]));
-      date.setUTCHours(int(match[4]||0) - tzHour, int(match[5]||0) - tzMin, int(match[6]||0), int(match[7]||0));
-      return date;
-    }
-    return string;
-  }
-
-  function int(str) {
-    return parseInt(str, 10);
-  }
-
-  function padNumber(num, digits, trim) {
-    var neg = '';
-    if (num < 0) {
-      neg =  '-';
-      num = -num;
-    }
-    num = '' + num;
-    while(num.length < digits) num = '0' + num;
-    if (trim)
-      num = num.substr(num.length - digits);
-    return neg + num;
-  }
-
-
-  /**
-   * @ngdoc object
-   * @name angular.mock.TzDate
-   * @description
-   *
-   * *NOTE*: this is not an injectable instance, just a globally available mock class of `Date`.
-   *
-   * Mock of the Date type which has its timezone specified via constroctor arg.
-   *
-   * The main purpose is to create Date-like instances with timezone fixed to the specified timezone
-   * offset, so that we can test code that depends on local timezone settings without dependency on
-   * the time zone settings of the machine where the code is running.
-   *
-   * @param {number} offset Offset of the *desired* timezone in hours (fractions will be honored)
-   * @param {(number|string)} timestamp Timestamp representing the desired time in *UTC*
-   *
-   * @example
-   * !!!! WARNING !!!!!
-   * This is not a complete Date object so only methods that were implemented can be called safely.
-   * To make matters worse, TzDate instances inherit stuff from Date via a prototype.
-   *
-   * We do our best to intercept calls to "unimplemented" methods, but since the list of methods is
-   * incomplete we might be missing some non-standard methods. This can result in errors like:
-   * "Date.prototype.foo called on incompatible Object".
-   *
-   * <pre>
-   * var newYearInBratislava = new TzDate(-1, '2009-12-31T23:00:00Z');
-   * newYearInBratislava.getTimezoneOffset() => -60;
-   * newYearInBratislava.getFullYear() => 2010;
-   * newYearInBratislava.getMonth() => 0;
-   * newYearInBratislava.getDate() => 1;
-   * newYearInBratislava.getHours() => 0;
-   * newYearInBratislava.getMinutes() => 0;
-   * </pre>
-   *
-   */
-  angular.mock.TzDate = function (offset, timestamp) {
-    var self = new Date(0);
-    if (angular.isString(timestamp)) {
-      var tsStr = timestamp;
-
-      self.origDate = jsonStringToDate(timestamp);
-
-      timestamp = self.origDate.getTime();
-      if (isNaN(timestamp))
-        throw {
-          name: "Illegal Argument",
-          message: "Arg '" + tsStr + "' passed into TzDate constructor is not a valid date string"
-        };
-    } else {
-      self.origDate = new Date(timestamp);
-    }
-
-    var localOffset = new Date(timestamp).getTimezoneOffset();
-    self.offsetDiff = localOffset*60*1000 - offset*1000*60*60;
-    self.date = new Date(timestamp + self.offsetDiff);
-
-    self.getTime = function() {
-      return self.date.getTime() - self.offsetDiff;
-    };
-
-    self.toLocaleDateString = function() {
-      return self.date.toLocaleDateString();
-    };
-
-    self.getFullYear = function() {
-      return self.date.getFullYear();
-    };
-
-    self.getMonth = function() {
-      return self.date.getMonth();
-    };
-
-    self.getDate = function() {
-      return self.date.getDate();
-    };
-
-    self.getHours = function() {
-      return self.date.getHours();
-    };
-
-    self.getMinutes = function() {
-      return self.date.getMinutes();
-    };
-
-    self.getSeconds = function() {
-      return self.date.getSeconds();
-    };
-
-    self.getTimezoneOffset = function() {
-      return offset * 60;
-    };
-
-    self.getUTCFullYear = function() {
-      return self.origDate.getUTCFullYear();
-    };
-
-    self.getUTCMonth = function() {
-      return self.origDate.getUTCMonth();
-    };
-
-    self.getUTCDate = function() {
-      return self.origDate.getUTCDate();
-    };
-
-    self.getUTCHours = function() {
-      return self.origDate.getUTCHours();
-    };
-
-    self.getUTCMinutes = function() {
-      return self.origDate.getUTCMinutes();
-    };
-
-    self.getUTCSeconds = function() {
-      return self.origDate.getUTCSeconds();
-    };
-
-    self.getUTCMilliseconds = function() {
-      return self.origDate.getUTCMilliseconds();
-    };
-
-    self.getDay = function() {
-      return self.date.getDay();
-    };
-
-    // provide this method only on browsers that already have it
-    if (self.toISOString) {
-      self.toISOString = function() {
-        return padNumber(self.origDate.getUTCFullYear(), 4) + '-' +
-              padNumber(self.origDate.getUTCMonth() + 1, 2) + '-' +
-              padNumber(self.origDate.getUTCDate(), 2) + 'T' +
-              padNumber(self.origDate.getUTCHours(), 2) + ':' +
-              padNumber(self.origDate.getUTCMinutes(), 2) + ':' +
-              padNumber(self.origDate.getUTCSeconds(), 2) + '.' +
-              padNumber(self.origDate.getUTCMilliseconds(), 3) + 'Z'
-      }
-    }
-
-    //hide all methods not implemented in this mock that the Date prototype exposes
-    var unimplementedMethods = ['getMilliseconds', 'getUTCDay',
-        'getYear', 'setDate', 'setFullYear', 'setHours', 'setMilliseconds',
-        'setMinutes', 'setMonth', 'setSeconds', 'setTime', 'setUTCDate', 'setUTCFullYear',
-        'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', 'setUTCMonth', 'setUTCSeconds',
-        'setYear', 'toDateString', 'toGMTString', 'toJSON', 'toLocaleFormat', 'toLocaleString',
-        'toLocaleTimeString', 'toSource', 'toString', 'toTimeString', 'toUTCString', 'valueOf'];
-
-    angular.forEach(unimplementedMethods, function(methodName) {
-      self[methodName] = function() {
-        throw Error("Method '" + methodName + "' is not implemented in the TzDate mock");
-      };
-    });
-
-    return self;
-  };
-
-  //make "tzDateInstance instanceof Date" return true
-  angular.mock.TzDate.prototype = Date.prototype;
-})();
-
-
-/**
- * @ngdoc function
- * @name angular.mock.dump
- * @description
- *
- * *NOTE*: this is not an injectable instance, just a globally available function.
- *
- * Method for serializing common angular objects (scope, elements, etc..) into strings, useful for debugging.
- *
- * This method is also available on window, where it can be used to display objects on debug console.
- *
- * @param {*} object - any object to turn into string.
- * @return {string} a serialized string of the argument
- */
-angular.mock.dump = function(object) {
-  return serialize(object);
-
-  function serialize(object) {
-    var out;
-
-    if (angular.isElement(object)) {
-      object = angular.element(object);
-      out = angular.element('<div></div>');
-      angular.forEach(object, function(element) {
-        out.append(angular.element(element).clone());
-      });
-      out = out.html();
-    } else if (angular.isArray(object)) {
-      out = [];
-      angular.forEach(object, function(o) {
-        out.push(serialize(o));
-      });
-      out = '[ ' + out.join(', ') + ' ]';
-    } else if (angular.isObject(object)) {
-      if (angular.isFunction(object.$eval) && angular.isFunction(object.$apply)) {
-        out = serializeScope(object);
-      } else if (object instanceof Error) {
-        out = object.stack || ('' + object.name + ': ' + object.message);
-      } else {
-        out = angular.toJson(object, true);
-      }
-    } else {
-      out = String(object);
-    }
-
-    return out;
-  }
-
-  function serializeScope(scope, offset) {
-    offset = offset ||  '  ';
-    var log = [offset + 'Scope(' + scope.$id + '): {'];
-    for ( var key in scope ) {
-      if (scope.hasOwnProperty(key) && !key.match(/^(\$|this)/)) {
-        log.push('  ' + key + ': ' + angular.toJson(scope[key]));
-      }
-    }
-    var child = scope.$$childHead;
-    while(child) {
-      log.push(serializeScope(child, offset + '  '));
-      child = child.$$nextSibling;
-    }
-    log.push('}');
-    return log.join('\n' + offset);
-  }
-};
-
-/**
- * @ngdoc object
- * @name ngMock.$httpBackend
- * @description
- * Fake HTTP backend implementation suitable for unit testing application that use the
- * {@link ng.$http $http service}.
- *
- * *Note*: For fake http backend implementation suitable for end-to-end testing or backend-less
- * development please see {@link ngMockE2E.$httpBackend e2e $httpBackend mock}.
- *
- * During unit testing, we want our unit tests to run quickly and have no external dependencies so
- * we don’t want to send {@link https://developer.mozilla.org/en/xmlhttprequest XHR} or
- * {@link http://en.wikipedia.org/wiki/JSONP JSONP} requests to a real server. All we really need is
- * to verify whether a certain request has been sent or not, or alternatively just let the
- * application make requests, respond with pre-trained responses and assert that the end result is
- * what we expect it to be.
- *
- * This mock implementation can be used to respond with static or dynamic responses via the
- * `expect` and `when` apis and their shortcuts (`expectGET`, `whenPOST`, etc).
- *
- * When an Angular application needs some data from a server, it calls the $http service, which
- * sends the request to a real server using $httpBackend service. With dependency injection, it is
- * easy to inject $httpBackend mock (which has the same API as $httpBackend) and use it to verify
- * the requests and respond with some testing data without sending a request to real server.
- *
- * There are two ways to specify what test data should be returned as http responses by the mock
- * backend when the code under test makes http requests:
- *
- * - `$httpBackend.expect` - specifies a request expectation
- * - `$httpBackend.when` - specifies a backend definition
- *
- *
- * # Request Expectations vs Backend Definitions
- *
- * Request expectations provide a way to make assertions about requests made by the application and
- * to define responses for those requests. The test will fail if the expected requests are not made
- * or they are made in the wrong order.
- *
- * Backend definitions allow you to define a fake backend for your application which doesn't assert
- * if a particular request was made or not, it just returns a trained response if a request is made.
- * The test will pass whether or not the request gets made during testing.
- *
- *
- * <table class="table">
- *   <tr><th width="220px"></th><th>Request expectations</th><th>Backend definitions</th></tr>
- *   <tr>
- *     <th>Syntax</th>
- *     <td>.expect(...).respond(...)</td>
- *     <td>.when(...).respond(...)</td>
- *   </tr>
- *   <tr>
- *     <th>Typical usage</th>
- *     <td>strict unit tests</td>
- *     <td>loose (black-box) unit testing</td>
- *   </tr>
- *   <tr>
- *     <th>Fulfills multiple requests</th>
- *     <td>NO</td>
- *     <td>YES</td>
- *   </tr>
- *   <tr>
- *     <th>Order of requests matters</th>
- *     <td>YES</td>
- *     <td>NO</td>
- *   </tr>
- *   <tr>
- *     <th>Request required</th>
- *     <td>YES</td>
- *     <td>NO</td>
- *   </tr>
- *   <tr>
- *     <th>Response required</th>
- *     <td>optional (see below)</td>
- *     <td>YES</td>
- *   </tr>
- * </table>
- *
- * In cases where both backend definitions and request expectations are specified during unit
- * testing, the request expectations are evaluated first.
- *
- * If a request expectation has no response specified, the algorithm will search your backend
- * definitions for an appropriate response.
- *
- * If a request didn't match any expectation or if the expectation doesn't have the response
- * defined, the backend definitions are evaluated in sequential order to see if any of them match
- * the request. The response from the first matched definition is returned.
- *
- *
- * # Flushing HTTP requests
- *
- * The $httpBackend used in production, always responds to requests with responses asynchronously.
- * If we preserved this behavior in unit testing, we'd have to create async unit tests, which are
- * hard to write, follow and maintain. At the same time the testing mock, can't respond
- * synchronously because that would change the execution of the code under test. For this reason the
- * mock $httpBackend has a `flush()` method, which allows the test to explicitly flush pending
- * requests and thus preserving the async api of the backend, while allowing the test to execute
- * synchronously.
- *
- *
- * # Unit testing with mock $httpBackend
- *
- * <pre>
-   // controller
-   function MyController($scope, $http) {
-     $http.get('/auth.py').success(function(data) {
-       $scope.user = data;
-     });
-
-     this.saveMessage = function(message) {
-       $scope.status = 'Saving...';
-       $http.post('/add-msg.py', message).success(function(response) {
-         $scope.status = '';
-       }).error(function() {
-         $scope.status = 'ERROR!';
-       });
-     };
-   }
-
-   // testing controller
-   var $httpBackend;
-
-   beforeEach(inject(function($injector) {
-     $httpBackend = $injector.get('$httpBackend');
-
-     // backend definition common for all tests
-     $httpBackend.when('GET', '/auth.py').respond({userId: 'userX'}, {'A-Token': 'xxx'});
-   }));
-
-
-   afterEach(function() {
-     $httpBackend.verifyNoOutstandingExpectation();
-     $httpBackend.verifyNoOutstandingRequest();
-   });
-
-
-   it('should fetch authentication token', function() {
-     $httpBackend.expectGET('/auth.py');
-     var controller = scope.$new(MyController);
-     $httpBackend.flush();
-   });
-
-
-   it('should send msg to server', function() {
-     // now you don’t care about the authentication, but
-     // the controller will still send the request and
-     // $httpBackend will respond without you having to
-     // specify the expectation and response for this request
-     $httpBackend.expectPOST('/add-msg.py', 'message content').respond(201, '');
-
-     var controller = scope.$new(MyController);
-     $httpBackend.flush();
-     controller.saveMessage('message content');
-     expect(controller.status).toBe('Saving...');
-     $httpBackend.flush();
-     expect(controller.status).toBe('');
-   });
-
-
-   it('should send auth header', function() {
-     $httpBackend.expectPOST('/add-msg.py', undefined, function(headers) {
-       // check if the header was send, if it wasn't the expectation won't
-       // match the request and the test will fail
-       return headers['Authorization'] == 'xxx';
-     }).respond(201, '');
-
-     var controller = scope.$new(MyController);
-     controller.saveMessage('whatever');
-     $httpBackend.flush();
-   });
-   </pre>
- */
-angular.mock.$HttpBackendProvider = function() {
-  this.$get = [createHttpBackendMock];
-};
-
-/**
- * General factory function for $httpBackend mock.
- * Returns instance for unit testing (when no arguments specified):
- *   - passing through is disabled
- *   - auto flushing is disabled
- *
- * Returns instance for e2e testing (when `$delegate` and `$browser` specified):
- *   - passing through (delegating request to real backend) is enabled
- *   - auto flushing is enabled
- *
- * @param {Object=} $delegate Real $httpBackend instance (allow passing through if specified)
- * @param {Object=} $browser Auto-flushing enabled if specified
- * @return {Object} Instance of $httpBackend mock
- */
-function createHttpBackendMock($delegate, $browser) {
-  var definitions = [],
-      expectations = [],
-      responses = [],
-      responsesPush = angular.bind(responses, responses.push);
-
-  function createResponse(status, data, headers) {
-    if (angular.isFunction(status)) return status;
-
-    return function() {
-      return angular.isNumber(status)
-          ? [status, data, headers]
-          : [200, status, data];
-    };
-  }
-
-  // TODO(vojta): change params to: method, url, data, headers, callback
-  function $httpBackend(method, url, data, callback, headers) {
-    var xhr = new MockXhr(),
-        expectation = expectations[0],
-        wasExpected = false;
-
-    function prettyPrint(data) {
-      return (angular.isString(data) || angular.isFunction(data) || data instanceof RegExp)
-          ? data
-          : angular.toJson(data);
-    }
-
-    if (expectation && expectation.match(method, url)) {
-      if (!expectation.matchData(data))
-        throw Error('Expected ' + expectation + ' with different data\n' +
-            'EXPECTED: ' + prettyPrint(expectation.data) + '\nGOT:      ' + data);
-
-      if (!expectation.matchHeaders(headers))
-        throw Error('Expected ' + expectation + ' with different headers\n' +
-            'EXPECTED: ' + prettyPrint(expectation.headers) + '\nGOT:      ' +
-            prettyPrint(headers));
-
-      expectations.shift();
-
-      if (expectation.response) {
-        responses.push(function() {
-          var response = expectation.response(method, url, data, headers);
-          xhr.$$respHeaders = response[2];
-          callback(response[0], response[1], xhr.getAllResponseHeaders());
-        });
-        return;
-      }
-      wasExpected = true;
-    }
-
-    var i = -1, definition;
-    while ((definition = definitions[++i])) {
-      if (definition.match(method, url, data, headers || {})) {
-        if (definition.response) {
-          // if $browser specified, we do auto flush all requests
-          ($browser ? $browser.defer : responsesPush)(function() {
-            var response = definition.response(method, url, data, headers);
-            xhr.$$respHeaders = response[2];
-            callback(response[0], response[1], xhr.getAllResponseHeaders());
-          });
-        } else if (definition.passThrough) {
-          $delegate(method, url, data, callback, headers);
-        } else throw Error('No response defined !');
-        return;
-      }
-    }
-    throw wasExpected ?
-        Error('No response defined !') :
-        Error('Unexpected request: ' + method + ' ' + url + '\n' +
-              (expectation ? 'Expected ' + expectation : 'No more request expected'));
-  }
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#when
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new backend definition.
-   *
-   * @param {string} method HTTP method.
-   * @param {string|RegExp} url HTTP url.
-   * @param {(string|RegExp)=} data HTTP request body.
-   * @param {(Object|function(Object))=} headers HTTP headers or function that receives http header
-   *   object and returns true if the headers match the current definition.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   *   request is handled.
-   *
-   *  - respond – `{function([status,] data[, headers])|function(function(method, url, data, headers)}`
-   *    – The respond method takes a set of static data to be returned or a function that can return
-   *    an array containing response status (number), response data (string) and response headers
-   *    (Object).
-   */
-  $httpBackend.when = function(method, url, data, headers) {
-    var definition = new MockHttpExpectation(method, url, data, headers),
-        chain = {
-          respond: function(status, data, headers) {
-            definition.response = createResponse(status, data, headers);
-          }
-        };
-
-    if ($browser) {
-      chain.passThrough = function() {
-        definition.passThrough = true;
-      };
-    }
-
-    definitions.push(definition);
-    return chain;
-  };
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#whenGET
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new backend definition for GET requests. For more info see `when()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {(Object|function(Object))=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   * request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#whenHEAD
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new backend definition for HEAD requests. For more info see `when()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {(Object|function(Object))=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   * request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#whenDELETE
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new backend definition for DELETE requests. For more info see `when()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {(Object|function(Object))=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   * request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#whenPOST
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new backend definition for POST requests. For more info see `when()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {(string|RegExp)=} data HTTP request body.
-   * @param {(Object|function(Object))=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   * request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#whenPUT
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new backend definition for PUT requests.  For more info see `when()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {(string|RegExp)=} data HTTP request body.
-   * @param {(Object|function(Object))=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   * request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#whenJSONP
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new backend definition for JSONP requests. For more info see `when()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   * request is handled.
-   */
-  createShortMethods('when');
-
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#expect
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new request expectation.
-   *
-   * @param {string} method HTTP method.
-   * @param {string|RegExp} url HTTP url.
-   * @param {(string|RegExp)=} data HTTP request body.
-   * @param {(Object|function(Object))=} headers HTTP headers or function that receives http header
-   *   object and returns true if the headers match the current expectation.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   *  request is handled.
-   *
-   *  - respond – `{function([status,] data[, headers])|function(function(method, url, data, headers)}`
-   *    – The respond method takes a set of static data to be returned or a function that can return
-   *    an array containing response status (number), response data (string) and response headers
-   *    (Object).
-   */
-  $httpBackend.expect = function(method, url, data, headers) {
-    var expectation = new MockHttpExpectation(method, url, data, headers);
-    expectations.push(expectation);
-    return {
-      respond: function(status, data, headers) {
-        expectation.response = createResponse(status, data, headers);
-      }
-    };
-  };
-
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#expectGET
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new request expectation for GET requests. For more info see `expect()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {Object=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   * request is handled. See #expect for more info.
-   */
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#expectHEAD
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new request expectation for HEAD requests. For more info see `expect()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {Object=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   *   request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#expectDELETE
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new request expectation for DELETE requests. For more info see `expect()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {Object=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   *   request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#expectPOST
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new request expectation for POST requests. For more info see `expect()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {(string|RegExp)=} data HTTP request body.
-   * @param {Object=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   *   request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#expectPUT
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new request expectation for PUT requests. For more info see `expect()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {(string|RegExp)=} data HTTP request body.
-   * @param {Object=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   *   request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#expectPATCH
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new request expectation for PATCH requests. For more info see `expect()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {(string|RegExp)=} data HTTP request body.
-   * @param {Object=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   *   request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#expectJSONP
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Creates a new request expectation for JSONP requests. For more info see `expect()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   *   request is handled.
-   */
-  createShortMethods('expect');
-
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#flush
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Flushes all pending requests using the trained responses.
-   *
-   * @param {number=} count Number of responses to flush (in the order they arrived). If undefined,
-   *   all pending requests will be flushed. If there are no pending requests when the flush method
-   *   is called an exception is thrown (as this typically a sign of programming error).
-   */
-  $httpBackend.flush = function(count) {
-    if (!responses.length) throw Error('No pending request to flush !');
-
-    if (angular.isDefined(count)) {
-      while (count--) {
-        if (!responses.length) throw Error('No more pending request to flush !');
-        responses.shift()();
-      }
-    } else {
-      while (responses.length) {
-        responses.shift()();
-      }
-    }
-    $httpBackend.verifyNoOutstandingExpectation();
-  };
-
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#verifyNoOutstandingExpectation
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Verifies that all of the requests defined via the `expect` api were made. If any of the
-   * requests were not made, verifyNoOutstandingExpectation throws an exception.
-   *
-   * Typically, you would call this method following each test case that asserts requests using an
-   * "afterEach" clause.
-   *
-   * <pre>
-   *   afterEach($httpBackend.verifyExpectations);
-   * </pre>
-   */
-  $httpBackend.verifyNoOutstandingExpectation = function() {
-    if (expectations.length) {
-      throw Error('Unsatisfied requests: ' + expectations.join(', '));
-    }
-  };
-
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#verifyNoOutstandingRequest
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Verifies that there are no outstanding requests that need to be flushed.
-   *
-   * Typically, you would call this method following each test case that asserts requests using an
-   * "afterEach" clause.
-   *
-   * <pre>
-   *   afterEach($httpBackend.verifyNoOutstandingRequest);
-   * </pre>
-   */
-  $httpBackend.verifyNoOutstandingRequest = function() {
-    if (responses.length) {
-      throw Error('Unflushed requests: ' + responses.length);
-    }
-  };
-
-
-  /**
-   * @ngdoc method
-   * @name ngMock.$httpBackend#resetExpectations
-   * @methodOf ngMock.$httpBackend
-   * @description
-   * Resets all request expectations, but preserves all backend definitions. Typically, you would
-   * call resetExpectations during a multiple-phase test when you want to reuse the same instance of
-   * $httpBackend mock.
-   */
-  $httpBackend.resetExpectations = function() {
-    expectations.length = 0;
-    responses.length = 0;
-  };
-
-  return $httpBackend;
-
-
-  function createShortMethods(prefix) {
-    angular.forEach(['GET', 'DELETE', 'JSONP'], function(method) {
-     $httpBackend[prefix + method] = function(url, headers) {
-       return $httpBackend[prefix](method, url, undefined, headers)
-     }
-    });
-
-    angular.forEach(['PUT', 'POST', 'PATCH'], function(method) {
-      $httpBackend[prefix + method] = function(url, data, headers) {
-        return $httpBackend[prefix](method, url, data, headers)
-      }
-    });
-  }
-}
-
-function MockHttpExpectation(method, url, data, headers) {
-
-  this.data = data;
-  this.headers = headers;
-
-  this.match = function(m, u, d, h) {
-    if (method != m) return false;
-    if (!this.matchUrl(u)) return false;
-    if (angular.isDefined(d) && !this.matchData(d)) return false;
-    if (angular.isDefined(h) && !this.matchHeaders(h)) return false;
-    return true;
-  };
-
-  this.matchUrl = function(u) {
-    if (!url) return true;
-    if (angular.isFunction(url.test)) return url.test(u);
-    return url == u;
-  };
-
-  this.matchHeaders = function(h) {
-    if (angular.isUndefined(headers)) return true;
-    if (angular.isFunction(headers)) return headers(h);
-    return angular.equals(headers, h);
-  };
-
-  this.matchData = function(d) {
-    if (angular.isUndefined(data)) return true;
-    if (data && angular.isFunction(data.test)) return data.test(d);
-    if (data && !angular.isString(data)) return angular.toJson(data) == d;
-    return data == d;
-  };
-
-  this.toString = function() {
-    return method + ' ' + url;
-  };
-}
-
-function MockXhr() {
-
-  // hack for testing $http, $httpBackend
-  MockXhr.$$lastInstance = this;
-
-  this.open = function(method, url, async) {
-    this.$$method = method;
-    this.$$url = url;
-    this.$$async = async;
-    this.$$reqHeaders = {};
-    this.$$respHeaders = {};
-  };
-
-  this.send = function(data) {
-    this.$$data = data;
-  };
-
-  this.setRequestHeader = function(key, value) {
-    this.$$reqHeaders[key] = value;
-  };
-
-  this.getResponseHeader = function(name) {
-    // the lookup must be case insensitive, that's why we try two quick lookups and full scan at last
-    var header = this.$$respHeaders[name];
-    if (header) return header;
-
-    name = angular.lowercase(name);
-    header = this.$$respHeaders[name];
-    if (header) return header;
-
-    header = undefined;
-    angular.forEach(this.$$respHeaders, function(headerVal, headerName) {
-      if (!header && angular.lowercase(headerName) == name) header = headerVal;
-    });
-    return header;
-  };
-
-  this.getAllResponseHeaders = function() {
-    var lines = [];
-
-    angular.forEach(this.$$respHeaders, function(value, key) {
-      lines.push(key + ': ' + value);
-    });
-    return lines.join('\n');
-  };
-
-  this.abort = angular.noop;
-}
-
-
-/**
- * @ngdoc function
- * @name ngMock.$timeout
- * @description
- *
- * This service is just a simple decorator for {@link ng.$timeout $timeout} service
- * that adds a "flush" method.
- */
-
-/**
- * @ngdoc method
- * @name ngMock.$timeout#flush
- * @methodOf ngMock.$timeout
- * @description
- *
- * Flushes the queue of pending tasks.
- */
-
-/**
- *
- */
-angular.mock.$RootElementProvider = function() {
-  this.$get = function() {
-    return angular.element('<div ng-app></div>');
-  }
-};
-
-/**
- * @ngdoc overview
- * @name ngMock
- * @description
- *
- * The `ngMock` is an angular module which is used with `ng` module and adds unit-test configuration as well as useful
- * mocks to the {@link AUTO.$injector $injector}.
- */
-angular.module('ngMock', ['ng']).provider({
-  $browser: angular.mock.$BrowserProvider,
-  $exceptionHandler: angular.mock.$ExceptionHandlerProvider,
-  $log: angular.mock.$LogProvider,
-  $httpBackend: angular.mock.$HttpBackendProvider,
-  $rootElement: angular.mock.$RootElementProvider
-}).config(function($provide) {
-  $provide.decorator('$timeout', function($delegate, $browser) {
-    $delegate.flush = function() {
-      $browser.defer.flush();
-    };
-    return $delegate;
-  });
-});
-
-
-/**
- * @ngdoc overview
- * @name ngMockE2E
- * @description
- *
- * The `ngMockE2E` is an angular module which contains mocks suitable for end-to-end testing.
- * Currently there is only one mock present in this module -
- * the {@link ngMockE2E.$httpBackend e2e $httpBackend} mock.
- */
-angular.module('ngMockE2E', ['ng']).config(function($provide) {
-  $provide.decorator('$httpBackend', angular.mock.e2e.$httpBackendDecorator);
-});
-
-/**
- * @ngdoc object
- * @name ngMockE2E.$httpBackend
- * @description
- * Fake HTTP backend implementation suitable for end-to-end testing or backend-less development of
- * applications that use the {@link ng.$http $http service}.
- *
- * *Note*: For fake http backend implementation suitable for unit testing please see
- * {@link ngMock.$httpBackend unit-testing $httpBackend mock}.
- *
- * This implementation can be used to respond with static or dynamic responses via the `when` api
- * and its shortcuts (`whenGET`, `whenPOST`, etc) and optionally pass through requests to the
- * real $httpBackend for specific requests (e.g. to interact with certain remote apis or to fetch
- * templates from a webserver).
- *
- * As opposed to unit-testing, in an end-to-end testing scenario or in scenario when an application
- * is being developed with the real backend api replaced with a mock, it is often desirable for
- * certain category of requests to bypass the mock and issue a real http request (e.g. to fetch
- * templates or static files from the webserver). To configure the backend with this behavior
- * use the `passThrough` request handler of `when` instead of `respond`.
- *
- * Additionally, we don't want to manually have to flush mocked out requests like we do during unit
- * testing. For this reason the e2e $httpBackend automatically flushes mocked out requests
- * automatically, closely simulating the behavior of the XMLHttpRequest object.
- *
- * To setup the application to run with this http backend, you have to create a module that depends
- * on the `ngMockE2E` and your application modules and defines the fake backend:
- *
- * <pre>
- *   myAppDev = angular.module('myAppDev', ['myApp', 'ngMockE2E']);
- *   myAppDev.run(function($httpBackend) {
- *     phones = [{name: 'phone1'}, {name: 'phone2'}];
- *
- *     // returns the current list of phones
- *     $httpBackend.whenGET('/phones').respond(phones);
- *
- *     // adds a new phone to the phones array
- *     $httpBackend.whenPOST('/phones').respond(function(method, url, data) {
- *       phones.push(angular.fromJSON(data));
- *     });
- *     $httpBackend.whenGET(/^\/templates\//).passThrough();
- *     //...
- *   });
- * </pre>
- *
- * Afterwards, bootstrap your app with this new module.
- */
-
-/**
- * @ngdoc method
- * @name ngMockE2E.$httpBackend#when
- * @methodOf ngMockE2E.$httpBackend
- * @description
- * Creates a new backend definition.
- *
- * @param {string} method HTTP method.
- * @param {string|RegExp} url HTTP url.
- * @param {(string|RegExp)=} data HTTP request body.
- * @param {(Object|function(Object))=} headers HTTP headers or function that receives http header
- *   object and returns true if the headers match the current definition.
- * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
- *   control how a matched request is handled.
- *
- *  - respond – `{function([status,] data[, headers])|function(function(method, url, data, headers)}`
- *    – The respond method takes a set of static data to be returned or a function that can return
- *    an array containing response status (number), response data (string) and response headers
- *    (Object).
- *  - passThrough – `{function()}` – Any request matching a backend definition with `passThrough`
- *    handler, will be pass through to the real backend (an XHR request will be made to the
- *    server.
- */
-
-/**
- * @ngdoc method
- * @name ngMockE2E.$httpBackend#whenGET
- * @methodOf ngMockE2E.$httpBackend
- * @description
- * Creates a new backend definition for GET requests. For more info see `when()`.
- *
- * @param {string|RegExp} url HTTP url.
- * @param {(Object|function(Object))=} headers HTTP headers.
- * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
- *   control how a matched request is handled.
- */
-
-/**
- * @ngdoc method
- * @name ngMockE2E.$httpBackend#whenHEAD
- * @methodOf ngMockE2E.$httpBackend
- * @description
- * Creates a new backend definition for HEAD requests. For more info see `when()`.
- *
- * @param {string|RegExp} url HTTP url.
- * @param {(Object|function(Object))=} headers HTTP headers.
- * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
- *   control how a matched request is handled.
- */
-
-/**
- * @ngdoc method
- * @name ngMockE2E.$httpBackend#whenDELETE
- * @methodOf ngMockE2E.$httpBackend
- * @description
- * Creates a new backend definition for DELETE requests. For more info see `when()`.
- *
- * @param {string|RegExp} url HTTP url.
- * @param {(Object|function(Object))=} headers HTTP headers.
- * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
- *   control how a matched request is handled.
- */
-
-/**
- * @ngdoc method
- * @name ngMockE2E.$httpBackend#whenPOST
- * @methodOf ngMockE2E.$httpBackend
- * @description
- * Creates a new backend definition for POST requests. For more info see `when()`.
- *
- * @param {string|RegExp} url HTTP url.
- * @param {(string|RegExp)=} data HTTP request body.
- * @param {(Object|function(Object))=} headers HTTP headers.
- * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
- *   control how a matched request is handled.
- */
-
-/**
- * @ngdoc method
- * @name ngMockE2E.$httpBackend#whenPUT
- * @methodOf ngMockE2E.$httpBackend
- * @description
- * Creates a new backend definition for PUT requests.  For more info see `when()`.
- *
- * @param {string|RegExp} url HTTP url.
- * @param {(string|RegExp)=} data HTTP request body.
- * @param {(Object|function(Object))=} headers HTTP headers.
- * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
- *   control how a matched request is handled.
- */
-
-/**
- * @ngdoc method
- * @name ngMockE2E.$httpBackend#whenPATCH
- * @methodOf ngMockE2E.$httpBackend
- * @description
- * Creates a new backend definition for PATCH requests.  For more info see `when()`.
- *
- * @param {string|RegExp} url HTTP url.
- * @param {(string|RegExp)=} data HTTP request body.
- * @param {(Object|function(Object))=} headers HTTP headers.
- * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
- *   control how a matched request is handled.
- */
-
-/**
- * @ngdoc method
- * @name ngMockE2E.$httpBackend#whenJSONP
- * @methodOf ngMockE2E.$httpBackend
- * @description
- * Creates a new backend definition for JSONP requests. For more info see `when()`.
- *
- * @param {string|RegExp} url HTTP url.
- * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
- *   control how a matched request is handled.
- */
-angular.mock.e2e = {};
-angular.mock.e2e.$httpBackendDecorator = ['$delegate', '$browser', createHttpBackendMock];
-
-
-angular.mock.clearDataCache = function() {
-  var key,
-      cache = angular.element.cache;
-
-  for(key in cache) {
-    if (cache.hasOwnProperty(key)) {
-      var handle = cache[key].handle;
-
-      handle && angular.element(handle.elem).unbind();
-      delete cache[key];
-    }
-  }
-};
-
-
-window.jstestdriver && (function(window) {
-  /**
-   * Global method to output any number of objects into JSTD console. Useful for debugging.
-   */
-  window.dump = function() {
-    var args = [];
-    angular.forEach(arguments, function(arg) {
-      args.push(angular.mock.dump(arg));
-    });
-    jstestdriver.console.log.apply(jstestdriver.console, args);
-    if (window.console) {
-      window.console.log.apply(window.console, args);
-    }
-  };
-})(window);
-
-
-window.jasmine && (function(window) {
-
-  afterEach(function() {
-    var spec = getCurrentSpec();
-    var injector = spec.$injector;
-
-    spec.$injector = null;
-    spec.$modules = null;
-
-    if (injector) {
-      injector.get('$rootElement').unbind();
-      injector.get('$browser').pollFns.length = 0;
-    }
-
-    angular.mock.clearDataCache();
-
-    // clean up jquery's fragment cache
-    angular.forEach(angular.element.fragments, function(val, key) {
-      delete angular.element.fragments[key];
-    });
-
-    MockXhr.$$lastInstance = null;
-
-    angular.forEach(angular.callbacks, function(val, key) {
-      delete angular.callbacks[key];
-    });
-    angular.callbacks.counter = 0;
-  });
-
-  function getCurrentSpec() {
-    return jasmine.getEnv().currentSpec;
-  }
-
-  function isSpecRunning() {
-    var spec = getCurrentSpec();
-    return spec && spec.queue.running;
-  }
-
-  /**
-   * @ngdoc function
-   * @name angular.mock.module
-   * @description
-   *
-   * *NOTE*: This is function is also published on window for easy access.<br>
-   * *NOTE*: Only available with {@link http://pivotal.github.com/jasmine/ jasmine}.
-   *
-   * This function registers a module configuration code. It collects the configuration information
-   * which will be used when the injector is created by {@link angular.mock.inject inject}.
-   *
-   * See {@link angular.mock.inject inject} for usage example
-   *
-   * @param {...(string|Function)} fns any number of modules which are represented as string
-   *        aliases or as anonymous module initialization functions. The modules are used to
-   *        configure the injector. The 'ng' and 'ngMock' modules are automatically loaded.
-   */
-  window.module = angular.mock.module = function() {
-    var moduleFns = Array.prototype.slice.call(arguments, 0);
-    return isSpecRunning() ? workFn() : workFn;
-    /////////////////////
-    function workFn() {
-      var spec = getCurrentSpec();
-      if (spec.$injector) {
-        throw Error('Injector already created, can not register a module!');
-      } else {
-        var modules = spec.$modules || (spec.$modules = []);
-        angular.forEach(moduleFns, function(module) {
-          modules.push(module);
-        });
-      }
-    }
-  };
-
-  /**
-   * @ngdoc function
-   * @name angular.mock.inject
-   * @description
-   *
-   * *NOTE*: This is function is also published on window for easy access.<br>
-   * *NOTE*: Only available with {@link http://pivotal.github.com/jasmine/ jasmine}.
-   *
-   * The inject function wraps a function into an injectable function. The inject() creates new
-   * instance of {@link AUTO.$injector $injector} per test, which is then used for
-   * resolving references.
-   *
-   * See also {@link angular.mock.module module}
-   *
-   * Example of what a typical jasmine tests looks like with the inject method.
-   * <pre>
-   *
-   *   angular.module('myApplicationModule', [])
-   *       .value('mode', 'app')
-   *       .value('version', 'v1.0.1');
-   *
-   *
-   *   describe('MyApp', function() {
-   *
-   *     // You need to load modules that you want to test,
-   *     // it loads only the "ng" module by default.
-   *     beforeEach(module('myApplicationModule'));
-   *
-   *
-   *     // inject() is used to inject arguments of all given functions
-   *     it('should provide a version', inject(function(mode, version) {
-   *       expect(version).toEqual('v1.0.1');
-   *       expect(mode).toEqual('app');
-   *     }));
-   *
-   *
-   *     // The inject and module method can also be used inside of the it or beforeEach
-   *     it('should override a version and test the new version is injected', function() {
-   *       // module() takes functions or strings (module aliases)
-   *       module(function($provide) {
-   *         $provide.value('version', 'overridden'); // override version here
-   *       });
-   *
-   *       inject(function(version) {
-   *         expect(version).toEqual('overridden');
-   *       });
-   *     ));
-   *   });
-   *
-   * </pre>
-   *
-   * @param {...Function} fns any number of functions which will be injected using the injector.
-   */
-  window.inject = angular.mock.inject = function() {
-    var blockFns = Array.prototype.slice.call(arguments, 0);
-    var errorForStack = new Error('Declaration Location');
-    return isSpecRunning() ? workFn() : workFn;
-    /////////////////////
-    function workFn() {
-      var spec = getCurrentSpec();
-      var modules = spec.$modules || [];
-      modules.unshift('ngMock');
-      modules.unshift('ng');
-      var injector = spec.$injector;
-      if (!injector) {
-        injector = spec.$injector = angular.injector(modules);
-      }
-      for(var i = 0, ii = blockFns.length; i < ii; i++) {
-        try {
-          injector.invoke(blockFns[i] || angular.noop, this);
-        } catch (e) {
-          if(e.stack) e.stack +=  '\n' + errorForStack.stack;
-          throw e;
-        } finally {
-          errorForStack = null;
-        }
-      }
-    }
-  };
-})(window);


[51/54] [abbrv] [partial] git commit: more updates to look and feel

Posted by sn...@apache.org.
more updates to look and feel


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/11243eff
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/11243eff
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/11243eff

Branch: refs/heads/master
Commit: 11243effc239d214e1a2cf50e3714956438b8ca2
Parents: bb06687
Author: Rod Simpson <ro...@apigee.com>
Authored: Tue Jul 29 17:59:58 2014 -0600
Committer: Rod Simpson <ro...@apigee.com>
Committed: Tue Jul 29 17:59:58 2014 -0600

----------------------------------------------------------------------
 .gitignore                                      |     2 +-
 apigeeGlobalNavigation.css                      |   291 -
 bower.json                                      |    39 -
 deleted/archive/coming_soon.html                |    31 -
 deleted/archive/config.js                       |    72 -
 .../ui-bg_diagonals-thick_90_eeeeee_40x40.png   |   Bin 251 -> 0 bytes
 .../images/ui-bg_flat_100_deedf7_40x100.png     |   Bin 182 -> 0 bytes
 .../images/ui-bg_flat_100_e4f1fb_40x100.png     |   Bin 213 -> 0 bytes
 .../images/ui-bg_flat_100_f2f5f7_40x100.png     |   Bin 212 -> 0 bytes
 .../images/ui-bg_flat_15_cd0a0a_40x100.png      |   Bin 181 -> 0 bytes
 .../images/ui-bg_flat_50_3baae3_40x100.png      |   Bin 182 -> 0 bytes
 .../images/ui-bg_flat_80_d7ebf9_40x100.png      |   Bin 183 -> 0 bytes
 .../ui-bg_highlight-hard_70_000000_1x100.png    |   Bin 118 -> 0 bytes
 .../ui-bg_highlight-soft_25_ffef8f_1x100.png    |   Bin 153 -> 0 bytes
 .../images/ui-icons_000000_256x240.png          |   Bin 4369 -> 0 bytes
 .../images/ui-icons_2694e8_256x240.png          |   Bin 4369 -> 0 bytes
 .../images/ui-icons_2e83ff_256x240.png          |   Bin 4369 -> 0 bytes
 .../images/ui-icons_3d80b3_256x240.png          |   Bin 4369 -> 0 bytes
 .../images/ui-icons_72a7cf_256x240.png          |   Bin 4369 -> 0 bytes
 .../images/ui-icons_ffffff_256x240.png          |   Bin 4369 -> 0 bytes
 .../css/custom-theme/jquery-ui-1.8.9.custom.css |   573 -
 deleted/archive/css/jquery-ui-timepicker.css    |    53 -
 deleted/archive/css/jquery.ui.statusbar.css     |    25 -
 deleted/archive/css/prettify.css                |    52 -
 deleted/archive/css/usergrid-stripped.css       |  5199 ---
 deleted/archive/css/usergrid.css                |  5203 ---
 deleted/archive/dash/README.md                  |     3 -
 .../archive/dash/config/testacular-e2e.conf.js  |    22 -
 deleted/archive/dash/config/testacular.conf.js  |    20 -
 deleted/archive/dash/test/e2e/runner.html       |    10 -
 deleted/archive/dash/test/e2e/scenarios.js      |    45 -
 .../dash/test/lib/angular/angular-mocks.js      |  1764 -
 .../dash/test/lib/angular/angular-scenario.js   | 26195 -------------
 .../archive/dash/test/lib/angular/version.txt   |     1 -
 .../archive/dash/test/unit/controllersSpec.js   |    31 -
 .../archive/dash/test/unit/directivesSpec.js    |    19 -
 deleted/archive/dash/test/unit/filtersSpec.js   |    19 -
 deleted/archive/dash/test/unit/servicesSpec.js  |    14 -
 deleted/archive/images/APNS_cert_upload.png     |   Bin 33956 -> 0 bytes
 deleted/archive/images/APNS_certification.png   |   Bin 16855 -> 0 bytes
 deleted/archive/images/android-notification.png |   Bin 41629 -> 0 bytes
 deleted/archive/images/android-sdk-download.png |   Bin 4848 -> 0 bytes
 deleted/archive/images/api-activity.gif         |   Bin 10819 -> 0 bytes
 deleted/archive/images/apigee-logo.png          |   Bin 3647 -> 0 bytes
 deleted/archive/images/apigeetopbar.png         |   Bin 4658 -> 0 bytes
 deleted/archive/images/background_one_col.png   |   Bin 3126 -> 0 bytes
 deleted/archive/images/btn-copyCurl-up.png      |   Bin 2762 -> 0 bytes
 deleted/archive/images/clippy-bg.png            |   Bin 561 -> 0 bytes
 deleted/archive/images/close.gif                |   Bin 718 -> 0 bytes
 deleted/archive/images/dotnet-sdk-download.png  |   Bin 7149 -> 0 bytes
 deleted/archive/images/down_arrow.png           |   Bin 1285 -> 0 bytes
 deleted/archive/images/error.png                |   Bin 2009 -> 0 bytes
 deleted/archive/images/faviconApigee.ico        |   Bin 1150 -> 0 bytes
 .../images/glyphicons-halflings-white.png       |   Bin 4352 -> 0 bytes
 deleted/archive/images/glyphicons-halflings.png |   Bin 4352 -> 0 bytes
 .../glyphicons_halflings_135_wrench-white2.pdn  |   Bin 5400 -> 0 bytes
 .../glyphicons_halflings_135_wrench-white2.png  |   Bin 296 -> 0 bytes
 .../images/glyphicons_halflings_135_wrench.png  |   Bin 228 -> 0 bytes
 .../glyphicons_halflings_135_wrench_white.png   |   Bin 251 -> 0 bytes
 .../glyphicons_halflings_wrench_white.png       |   Bin 1016 -> 0 bytes
 deleted/archive/images/google_api_key.png       |   Bin 98118 -> 0 bytes
 deleted/archive/images/green_dot.png            |   Bin 3472 -> 0 bytes
 deleted/archive/images/grid.png                 |   Bin 166 -> 0 bytes
 deleted/archive/images/icons.png                |   Bin 13132 -> 0 bytes
 deleted/archive/images/ios-sdk-download.png     |   Bin 4886 -> 0 bytes
 deleted/archive/images/iphone_message.png       |   Bin 90307 -> 0 bytes
 .../archive/images/javascript-sdk-download.png  |   Bin 4618 -> 0 bytes
 deleted/archive/images/left_arrow.png           |   Bin 1257 -> 0 bytes
 deleted/archive/images/logo-white.png           |   Bin 2014 -> 0 bytes
 deleted/archive/images/menuActiveTriangle.png   |   Bin 315 -> 0 bytes
 deleted/archive/images/nodejs-sdk-download.png  |   Bin 5273 -> 0 bytes
 deleted/archive/images/notice.png               |   Bin 2112 -> 0 bytes
 deleted/archive/images/orange-arrow.png         |   Bin 242 -> 0 bytes
 .../archive/images/push_notifications_icon.png  |   Bin 338 -> 0 bytes
 deleted/archive/images/red_dot.png              |   Bin 3482 -> 0 bytes
 deleted/archive/images/right_arrow.png          |   Bin 1251 -> 0 bytes
 deleted/archive/images/ruby-sdk-download.png    |   Bin 6343 -> 0 bytes
 deleted/archive/images/step_1.png               |   Bin 1953 -> 0 bytes
 deleted/archive/images/step_2.png               |   Bin 2117 -> 0 bytes
 deleted/archive/images/step_3.png               |   Bin 2162 -> 0 bytes
 deleted/archive/images/success.png              |   Bin 1863 -> 0 bytes
 deleted/archive/images/swish_arrow.png          |   Bin 220 -> 0 bytes
 deleted/archive/images/topbackground.png        |   Bin 2890 -> 0 bytes
 deleted/archive/images/up_arrow.png             |   Bin 1292 -> 0 bytes
 deleted/archive/images/user-photo.png           |   Bin 3849 -> 0 bytes
 deleted/archive/images/user_profile.png         |   Bin 3775 -> 0 bytes
 deleted/archive/images/usergrid_200.png         |   Bin 6397 -> 0 bytes
 deleted/archive/images/usergrid_400.png         |   Bin 8746 -> 0 bytes
 deleted/archive/images/warning.png              |   Bin 1179 -> 0 bytes
 deleted/archive/images/yellow_dot.png           |   Bin 3475 -> 0 bytes
 deleted/archive/index-stripped2.html            |  1795 -
 deleted/archive/index.html                      |  1932 -
 deleted/archive/js/app/app.js                   |   131 -
 deleted/archive/js/app/console.js               |  5397 ---
 deleted/archive/js/app/helpers.js               |   241 -
 deleted/archive/js/app/navigation.js            |   251 -
 deleted/archive/js/app/pages.js                 |   161 -
 deleted/archive/js/app/params.js                |    30 -
 deleted/archive/js/app/quickLogin.js            |    30 -
 deleted/archive/js/app/session.js               |   176 -
 deleted/archive/js/app/sso.js                   |   135 -
 deleted/archive/js/app/status.js                |    37 -
 deleted/archive/js/app/ui/collections.entity.js |   320 -
 deleted/archive/js/app/ui/collections.user.js   |   120 -
 deleted/archive/js/app/ui/ui.js                 |   415 -
 deleted/archive/js/app/usergrid.appSDK.js       |  2097 --
 deleted/archive/js/app/usergrid.appSDK.orig.js  |  2070 --
 deleted/archive/js/lib/MD5.min.js               |     1 -
 deleted/archive/js/lib/backbone.js              |  1431 -
 deleted/archive/js/lib/bootstrap.min.js         |     7 -
 deleted/archive/js/lib/date.min.js              |     2 -
 deleted/archive/js/lib/jquery-1.7.2.min.js      |     4 -
 deleted/archive/js/lib/jquery-ui-1.8.18.min.js  |    15 -
 deleted/archive/js/lib/jquery.dataset.min.js    |     1 -
 .../archive/js/lib/jquery.dform-0.1.3.min.js    |    16 -
 .../archive/js/lib/jquery.jsonp-2.3.1.min.js    |     3 -
 deleted/archive/js/lib/jquery.tmpl.min.js       |    10 -
 .../archive/js/lib/jquery.ui.statusbar.min.js   |     1 -
 .../archive/js/lib/jquery.ui.timepicker.min.js  |     1 -
 deleted/archive/js/lib/prettify.js              |  1477 -
 deleted/archive/js/lib/underscore-min.js        |     5 -
 deleted/archive/js/spec/client-tests.js         |   159 -
 deleted/archive/js/spec/index.html              |    20 -
 deleted/archive/js/spec/qunit-git.css           |   238 -
 deleted/archive/js/spec/qunit-git.js            |  1865 -
 deleted/archive/js/unit-tests/appSDK-tests.js   |   255 -
 .../archive/js/unit-tests/ie-jquery-tests.js    |   191 -
 deleted/archive/js/unit-tests/qunit.css         |   231 -
 deleted/archive/js/unit-tests/qunit.js          |  1934 -
 deleted/archive/loading.html                    |     9 -
 deleted/archive/max/index.html                  |     0
 deleted/archive/planned_outage.html             |    48 -
 deleted/archive/push/index.html                 |    34 -
 deleted/archive/service_down.html               |    48 -
 .../apigee.ui.activities.table_rows.html        |    14 -
 .../templates/apigee.ui.admins.table_rows.html  |     8 -
 .../apigee.ui.applications.table_rows.html      |     4 -
 .../apigee.ui.collection.table_rows.html        |    67 -
 .../apigee.ui.collections.query.indexes.html    |     5 -
 .../apigee.ui.collections.table_rows.html       |     9 -
 .../apigee.ui.collections.user.header.html      |    21 -
 .../templates/apigee.ui.curl.detail.html        |    11 -
 .../templates/apigee.ui.feed.table_rows.html    |    15 -
 .../templates/apigee.ui.groups.table_rows.html  |    14 -
 .../apigee.ui.panels.group.activities.html      |    28 -
 .../apigee.ui.panels.group.details.html         |    97 -
 .../apigee.ui.panels.group.memberships.html     |    40 -
 .../apigee.ui.panels.group.permissions.html     |    99 -
 ...pigee.ui.panels.notifications.configure.html |    14 -
 .../apigee.ui.panels.role.permissions.html      |    58 -
 .../templates/apigee.ui.panels.role.users.html  |    38 -
 .../apigee.ui.panels.user.activities.html       |    40 -
 .../templates/apigee.ui.panels.user.graph.html  |    80 -
 .../apigee.ui.panels.user.memberships.html      |    40 -
 .../apigee.ui.panels.user.permissions.html      |   105 -
 .../apigee.ui.panels.user.profile.html          |   113 -
 .../apigee.ui.role.groups.table_rows.html       |    44 -
 .../templates/apigee.ui.roles.table_rows.html   |    15 -
 .../templates/apigee.ui.users.table_rows.html   |    18 -
 deleted/archive/templates/test/modalForm2.html  |    32 -
 deleted/archive/test/autocomplete.html          |    25 -
 deleted/archive/test/modalForm.html             |    32 -
 deleted/charts/chart-controller.js              |     6 -
 deleted/charts/chart-directives.js              |   141 -
 deleted/charts/chart-service.js                 |   494 -
 deleted/charts/highcharts.json                  |   329 -
 deleted/charts/sparklines.js                    |     2 -
 .../usergrid-portal/archive/coming_soon.html    |    31 -
 .../dist-cov/usergrid-portal/archive/config.js  |    72 -
 .../ui-bg_diagonals-thick_90_eeeeee_40x40.png   |   Bin 251 -> 0 bytes
 .../images/ui-bg_flat_100_deedf7_40x100.png     |   Bin 182 -> 0 bytes
 .../images/ui-bg_flat_100_e4f1fb_40x100.png     |   Bin 213 -> 0 bytes
 .../images/ui-bg_flat_100_f2f5f7_40x100.png     |   Bin 212 -> 0 bytes
 .../images/ui-bg_flat_15_cd0a0a_40x100.png      |   Bin 181 -> 0 bytes
 .../images/ui-bg_flat_50_3baae3_40x100.png      |   Bin 182 -> 0 bytes
 .../images/ui-bg_flat_80_d7ebf9_40x100.png      |   Bin 183 -> 0 bytes
 .../ui-bg_highlight-hard_70_000000_1x100.png    |   Bin 118 -> 0 bytes
 .../ui-bg_highlight-soft_25_ffef8f_1x100.png    |   Bin 153 -> 0 bytes
 .../images/ui-icons_000000_256x240.png          |   Bin 4369 -> 0 bytes
 .../images/ui-icons_2694e8_256x240.png          |   Bin 4369 -> 0 bytes
 .../images/ui-icons_2e83ff_256x240.png          |   Bin 4369 -> 0 bytes
 .../images/ui-icons_3d80b3_256x240.png          |   Bin 4369 -> 0 bytes
 .../images/ui-icons_72a7cf_256x240.png          |   Bin 4369 -> 0 bytes
 .../images/ui-icons_ffffff_256x240.png          |   Bin 4369 -> 0 bytes
 .../css/custom-theme/jquery-ui-1.8.9.custom.css |   573 -
 .../archive/css/jquery-ui-timepicker.css        |    53 -
 .../archive/css/jquery.ui.statusbar.css         |    25 -
 .../usergrid-portal/archive/css/prettify.css    |    52 -
 .../archive/css/usergrid-stripped.css           |  5199 ---
 .../usergrid-portal/archive/css/usergrid.css    |  5203 ---
 .../usergrid-portal/archive/dash/README.md      |     3 -
 .../archive/dash/config/testacular-e2e.conf.js  |    22 -
 .../archive/dash/config/testacular.conf.js      |    20 -
 .../archive/dash/test/e2e/runner.html           |    10 -
 .../archive/dash/test/e2e/scenarios.js          |    45 -
 .../dash/test/lib/angular/angular-mocks.js      |  1764 -
 .../dash/test/lib/angular/angular-scenario.js   | 26195 -------------
 .../archive/dash/test/lib/angular/version.txt   |     1 -
 .../archive/dash/test/unit/controllersSpec.js   |    31 -
 .../archive/dash/test/unit/directivesSpec.js    |    19 -
 .../archive/dash/test/unit/filtersSpec.js       |    19 -
 .../archive/dash/test/unit/servicesSpec.js      |    14 -
 .../archive/images/APNS_cert_upload.png         |   Bin 33956 -> 0 bytes
 .../archive/images/APNS_certification.png       |   Bin 16855 -> 0 bytes
 .../archive/images/android-notification.png     |   Bin 41629 -> 0 bytes
 .../archive/images/android-sdk-download.png     |   Bin 4848 -> 0 bytes
 .../archive/images/api-activity.gif             |   Bin 10819 -> 0 bytes
 .../archive/images/apigee-logo.png              |   Bin 3647 -> 0 bytes
 .../archive/images/apigeetopbar.png             |   Bin 4658 -> 0 bytes
 .../archive/images/background_one_col.png       |   Bin 3126 -> 0 bytes
 .../archive/images/btn-copyCurl-up.png          |   Bin 2762 -> 0 bytes
 .../archive/images/clippy-bg.png                |   Bin 561 -> 0 bytes
 .../usergrid-portal/archive/images/close.gif    |   Bin 718 -> 0 bytes
 .../archive/images/dotnet-sdk-download.png      |   Bin 7149 -> 0 bytes
 .../archive/images/down_arrow.png               |   Bin 1285 -> 0 bytes
 .../usergrid-portal/archive/images/error.png    |   Bin 2009 -> 0 bytes
 .../archive/images/faviconApigee.ico            |   Bin 1150 -> 0 bytes
 .../images/glyphicons-halflings-white.png       |   Bin 4352 -> 0 bytes
 .../archive/images/glyphicons-halflings.png     |   Bin 4352 -> 0 bytes
 .../glyphicons_halflings_135_wrench-white2.pdn  |   Bin 5400 -> 0 bytes
 .../glyphicons_halflings_135_wrench-white2.png  |   Bin 296 -> 0 bytes
 .../images/glyphicons_halflings_135_wrench.png  |   Bin 228 -> 0 bytes
 .../glyphicons_halflings_135_wrench_white.png   |   Bin 251 -> 0 bytes
 .../glyphicons_halflings_wrench_white.png       |   Bin 1016 -> 0 bytes
 .../archive/images/google_api_key.png           |   Bin 98118 -> 0 bytes
 .../archive/images/green_dot.png                |   Bin 3472 -> 0 bytes
 .../usergrid-portal/archive/images/grid.png     |   Bin 166 -> 0 bytes
 .../usergrid-portal/archive/images/icons.png    |   Bin 13132 -> 0 bytes
 .../archive/images/ios-sdk-download.png         |   Bin 4886 -> 0 bytes
 .../archive/images/iphone_message.png           |   Bin 90307 -> 0 bytes
 .../archive/images/javascript-sdk-download.png  |   Bin 4618 -> 0 bytes
 .../archive/images/left_arrow.png               |   Bin 1257 -> 0 bytes
 .../archive/images/logo-white.png               |   Bin 2014 -> 0 bytes
 .../archive/images/menuActiveTriangle.png       |   Bin 315 -> 0 bytes
 .../archive/images/nodejs-sdk-download.png      |   Bin 5273 -> 0 bytes
 .../usergrid-portal/archive/images/notice.png   |   Bin 2112 -> 0 bytes
 .../archive/images/orange-arrow.png             |   Bin 242 -> 0 bytes
 .../archive/images/push_notifications_icon.png  |   Bin 338 -> 0 bytes
 .../usergrid-portal/archive/images/red_dot.png  |   Bin 3482 -> 0 bytes
 .../archive/images/right_arrow.png              |   Bin 1251 -> 0 bytes
 .../archive/images/ruby-sdk-download.png        |   Bin 6343 -> 0 bytes
 .../usergrid-portal/archive/images/step_1.png   |   Bin 1953 -> 0 bytes
 .../usergrid-portal/archive/images/step_2.png   |   Bin 2117 -> 0 bytes
 .../usergrid-portal/archive/images/step_3.png   |   Bin 2162 -> 0 bytes
 .../usergrid-portal/archive/images/success.png  |   Bin 1863 -> 0 bytes
 .../archive/images/swish_arrow.png              |   Bin 220 -> 0 bytes
 .../archive/images/topbackground.png            |   Bin 2890 -> 0 bytes
 .../usergrid-portal/archive/images/up_arrow.png |   Bin 1292 -> 0 bytes
 .../archive/images/user-photo.png               |   Bin 3849 -> 0 bytes
 .../archive/images/user_profile.png             |   Bin 3775 -> 0 bytes
 .../archive/images/usergrid_200.png             |   Bin 6397 -> 0 bytes
 .../archive/images/usergrid_400.png             |   Bin 8746 -> 0 bytes
 .../usergrid-portal/archive/images/warning.png  |   Bin 1179 -> 0 bytes
 .../archive/images/yellow_dot.png               |   Bin 3475 -> 0 bytes
 .../archive/index-stripped2.html                |  1795 -
 .../dist-cov/usergrid-portal/archive/index.html |  1932 -
 .../usergrid-portal/archive/js/app/app.js       |   131 -
 .../usergrid-portal/archive/js/app/console.js   |  5397 ---
 .../usergrid-portal/archive/js/app/helpers.js   |   241 -
 .../archive/js/app/navigation.js                |   251 -
 .../usergrid-portal/archive/js/app/pages.js     |   161 -
 .../usergrid-portal/archive/js/app/params.js    |    30 -
 .../archive/js/app/quickLogin.js                |    30 -
 .../usergrid-portal/archive/js/app/session.js   |   176 -
 .../usergrid-portal/archive/js/app/sso.js       |   135 -
 .../usergrid-portal/archive/js/app/status.js    |    37 -
 .../archive/js/app/ui/collections.entity.js     |   320 -
 .../archive/js/app/ui/collections.user.js       |   120 -
 .../usergrid-portal/archive/js/app/ui/ui.js     |   415 -
 .../archive/js/app/usergrid.appSDK.js           |  2097 --
 .../archive/js/app/usergrid.appSDK.orig.js      |  2070 --
 .../usergrid-portal/archive/js/lib/MD5.min.js   |     1 -
 .../usergrid-portal/archive/js/lib/backbone.js  |  1431 -
 .../archive/js/lib/bootstrap.min.js             |     7 -
 .../usergrid-portal/archive/js/lib/date.min.js  |     2 -
 .../archive/js/lib/jquery-1.7.2.min.js          |     4 -
 .../archive/js/lib/jquery-ui-1.8.18.min.js      |    15 -
 .../archive/js/lib/jquery.dataset.min.js        |     1 -
 .../archive/js/lib/jquery.dform-0.1.3.min.js    |    16 -
 .../archive/js/lib/jquery.jsonp-2.3.1.min.js    |     3 -
 .../archive/js/lib/jquery.tmpl.min.js           |    10 -
 .../archive/js/lib/jquery.ui.statusbar.min.js   |     1 -
 .../archive/js/lib/jquery.ui.timepicker.min.js  |     1 -
 .../usergrid-portal/archive/js/lib/prettify.js  |  1477 -
 .../archive/js/lib/underscore-min.js            |     5 -
 .../archive/js/spec/client-tests.js             |   159 -
 .../usergrid-portal/archive/js/spec/index.html  |    20 -
 .../archive/js/spec/qunit-git.css               |   238 -
 .../archive/js/spec/qunit-git.js                |  1865 -
 .../archive/js/unit-tests/appSDK-tests.js       |   255 -
 .../archive/js/unit-tests/ie-jquery-tests.js    |   191 -
 .../archive/js/unit-tests/qunit.css             |   231 -
 .../archive/js/unit-tests/qunit.js              |  1934 -
 .../usergrid-portal/archive/loading.html        |     9 -
 .../usergrid-portal/archive/max/index.html      |     0
 .../usergrid-portal/archive/planned_outage.html |    48 -
 .../usergrid-portal/archive/push/index.html     |    34 -
 .../usergrid-portal/archive/service_down.html   |    48 -
 .../apigee.ui.activities.table_rows.html        |    14 -
 .../templates/apigee.ui.admins.table_rows.html  |     8 -
 .../apigee.ui.applications.table_rows.html      |     4 -
 .../apigee.ui.collection.table_rows.html        |    67 -
 .../apigee.ui.collections.query.indexes.html    |     5 -
 .../apigee.ui.collections.table_rows.html       |     9 -
 .../apigee.ui.collections.user.header.html      |    21 -
 .../templates/apigee.ui.curl.detail.html        |    11 -
 .../templates/apigee.ui.feed.table_rows.html    |    15 -
 .../templates/apigee.ui.groups.table_rows.html  |    14 -
 .../apigee.ui.panels.group.activities.html      |    28 -
 .../apigee.ui.panels.group.details.html         |    97 -
 .../apigee.ui.panels.group.memberships.html     |    40 -
 .../apigee.ui.panels.group.permissions.html     |    99 -
 ...pigee.ui.panels.notifications.configure.html |    14 -
 .../apigee.ui.panels.role.permissions.html      |    58 -
 .../templates/apigee.ui.panels.role.users.html  |    38 -
 .../apigee.ui.panels.user.activities.html       |    40 -
 .../templates/apigee.ui.panels.user.graph.html  |    80 -
 .../apigee.ui.panels.user.memberships.html      |    40 -
 .../apigee.ui.panels.user.permissions.html      |   105 -
 .../apigee.ui.panels.user.profile.html          |   113 -
 .../apigee.ui.role.groups.table_rows.html       |    44 -
 .../templates/apigee.ui.roles.table_rows.html   |    15 -
 .../templates/apigee.ui.users.table_rows.html   |    18 -
 .../archive/templates/test/modalForm2.html      |    32 -
 .../archive/test/autocomplete.html              |    25 -
 .../usergrid-portal/archive/test/modalForm.html |    32 -
 .../angular-intro.js/Gruntfile.js               |    40 -
 .../bower_components/angular-intro.js/LICENSE   |    20 -
 .../angular-intro.js/bower.json                 |    20 -
 .../angular-intro.js/build/angular-intro.min.js |     2 -
 .../angular-intro.js/example/app.js             |    61 -
 .../angular-intro.js/package.json               |    36 -
 .../angular-intro.js/src/angular-intro.js       |    60 -
 .../bower_components/angular/README.md          |    48 -
 .../bower_components/angular/angular-csp.css    |    13 -
 .../bower_components/angular/angular.js         | 22451 ------------
 .../bower_components/angular/angular.min.js     |   217 -
 .../angular/angular.min.js.gzip                 |   Bin 39855 -> 0 bytes
 .../bower_components/angular/angular.min.js.map |     8 -
 .../bower_components/angular/bower.json         |     7 -
 .../bower_components/angularitics/Gruntfile.js  |    62 -
 .../bower_components/angularitics/LICENSE       |    22 -
 .../bower_components/angularitics/README.md     |   115 -
 .../bower_components/angularitics/bower.json    |    12 -
 .../dist/angulartics-chartbeat.min.js           |     7 -
 .../dist/angulartics-ga-cordova.min.js          |     6 -
 .../angularitics/dist/angulartics-ga.min.js     |     7 -
 .../dist/angulartics-google-analytics.min.js    |     7 -
 .../dist/angulartics-kissmetrics.min.js         |     6 -
 .../dist/angulartics-mixpanel.min.js            |     7 -
 .../angularitics/dist/angulartics-scroll.min.js |    14 -
 .../dist/angulartics-segmentio.min.js           |     6 -
 .../angularitics/dist/angulartics.min.js        |     6 -
 .../bower_components/angularitics/karma.conf.js |    22 -
 .../bower_components/angularitics/package.json  |    43 -
 .../angularitics/samples/chartbeat.html         |    79 -
 .../angularitics/samples/google-analytics.html  |    68 -
 .../angularitics/samples/kissmetrics.html       |    75 -
 .../angularitics/samples/mixpanel.html          |    65 -
 .../angularitics/samples/partials/a.tpl.html    |     1 -
 .../angularitics/samples/partials/b.tpl.html    |     1 -
 .../angularitics/samples/partials/c.tpl.html    |     1 -
 .../angularitics/samples/partials/root.tpl.html |     1 -
 .../angularitics/samples/scroll.html            |    82 -
 .../angularitics/samples/segmentio.html         |    65 -
 .../angularitics/src/angulartics-chartbeat.js   |    29 -
 .../angularitics/src/angulartics-ga-cordova.js  |    91 -
 .../angularitics/src/angulartics-ga.js          |    32 -
 .../angularitics/src/angulartics-kissmetrics.js |    29 -
 .../angularitics/src/angulartics-mixpanel.js    |    29 -
 .../angularitics/src/angulartics-scroll.js      |    47 -
 .../angularitics/src/angulartics-segmentio.js   |    24 -
 .../angularitics/src/angulartics.js             |   132 -
 .../angularitics/test/angularticsSpec.js        |    38 -
 .../bower_components/apigee-sdk/apigee.js       |  3260 --
 .../bower_components/apigee-sdk/apigee.min.js   |     3 -
 .../bower_components/apigee-sdk/bower.json      |    13 -
 .../apigee-sdk/samples/books/index.html         |   139 -
 .../samples/collections/css/apigee.min.css      |   213 -
 .../collections/css/jquery.mobile.icons.min.css |     3 -
 .../samples/collections/css/theme.min.css       |   213 -
 .../apigee-sdk/samples/collections/index.html   |    91 -
 .../apigee-sdk/samples/collections/js/index.js  |   360 -
 .../entities/css/jquery.mobile.icons.min.css    |     3 -
 .../samples/entities/css/theme.min.css          |   213 -
 .../apigee-sdk/samples/entities/index.html      |    86 -
 .../apigee-sdk/samples/entities/js/index.js     |   228 -
 .../geolocation/css/jquery.mobile.icons.min.css |     3 -
 .../samples/geolocation/css/theme.min.css       |   213 -
 .../apigee-sdk/samples/geolocation/index.html   |    75 -
 .../apigee-sdk/samples/geolocation/js/index.js  |   133 -
 .../apigee-sdk/samples/messagee/app.js          |   634 -
 .../apigee-sdk/samples/messagee/index.html      |   176 -
 .../samples/messagee/usergrid.validation.js     |   249 -
 .../apigee-sdk/samples/monitoring/index.html    |   113 -
 .../samples/push/android/AndroidManifest.xml    |    79 -
 .../samples/push/android/ant.properties         |    17 -
 .../push/android/assets/www/PushNotification.js |    65 -
 .../push/android/assets/www/cordova-2.7.0.js    |  6836 ----
 .../push/android/assets/www/css/index.css       |   115 -
 .../push/android/assets/www/img/cordova.png     |   Bin 19932 -> 0 bytes
 .../push/android/assets/www/img/logo.png        |   Bin 21814 -> 0 bytes
 .../samples/push/android/assets/www/index.html  |    51 -
 .../samples/push/android/assets/www/js/index.js |   241 -
 .../samples/push/android/assets/www/main.js     |   165 -
 .../samples/push/android/assets/www/master.css  |   116 -
 .../screen/android/screen-hdpi-landscape.png    |   Bin 218302 -> 0 bytes
 .../res/screen/android/screen-hdpi-portrait.png |   Bin 222148 -> 0 bytes
 .../screen/android/screen-ldpi-landscape.png    |   Bin 42616 -> 0 bytes
 .../res/screen/android/screen-ldpi-portrait.png |   Bin 42034 -> 0 bytes
 .../screen/android/screen-mdpi-landscape.png    |   Bin 92347 -> 0 bytes
 .../res/screen/android/screen-mdpi-portrait.png |   Bin 90555 -> 0 bytes
 .../screen/android/screen-xhdpi-landscape.png   |   Bin 489604 -> 0 bytes
 .../screen/android/screen-xhdpi-portrait.png    |   Bin 504508 -> 0 bytes
 .../samples/push/android/assets/www/spec.html   |    68 -
 .../push/android/assets/www/spec/helper.js      |    33 -
 .../push/android/assets/www/spec/index.js       |    67 -
 .../www/spec/lib/jasmine-1.2.0/MIT.LICENSE      |    20 -
 .../www/spec/lib/jasmine-1.2.0/jasmine-html.js  |   616 -
 .../www/spec/lib/jasmine-1.2.0/jasmine.css      |    81 -
 .../www/spec/lib/jasmine-1.2.0/jasmine.js       |  2529 --
 .../apigee-sdk/samples/push/android/build.xml   |    92 -
 .../samples/push/android/cordova/appinfo.jar    |   Bin 1574 -> 0 bytes
 .../samples/push/android/cordova/build          |    24 -
 .../samples/push/android/cordova/clean          |    24 -
 .../samples/push/android/cordova/cordova        |   159 -
 .../apigee-sdk/samples/push/android/cordova/log |    24 -
 .../samples/push/android/cordova/release        |    24 -
 .../apigee-sdk/samples/push/android/cordova/run |    24 -
 .../push/android/libs/android-support-v13.jar   |   Bin 402581 -> 0 bytes
 .../samples/push/android/libs/cordova-2.7.0.jar |   Bin 256941 -> 0 bytes
 .../samples/push/android/libs/gcm.jar           |   Bin 13662 -> 0 bytes
 .../samples/push/android/proguard-project.txt   |    20 -
 .../samples/push/android/project.properties     |    14 -
 .../android/res/drawable-hdpi/ic_launcher.png   |   Bin 9397 -> 0 bytes
 .../push/android/res/drawable-hdpi/icon.png     |   Bin 6080 -> 0 bytes
 .../android/res/drawable-ldpi/ic_launcher.png   |   Bin 2729 -> 0 bytes
 .../push/android/res/drawable-ldpi/icon.png     |   Bin 3096 -> 0 bytes
 .../android/res/drawable-mdpi/ic_launcher.png   |   Bin 5237 -> 0 bytes
 .../push/android/res/drawable-mdpi/icon.png     |   Bin 4090 -> 0 bytes
 .../android/res/drawable-xhdpi/ic_launcher.png  |   Bin 14383 -> 0 bytes
 .../push/android/res/drawable-xhdpi/icon.png    |   Bin 7685 -> 0 bytes
 .../samples/push/android/res/drawable/icon.png  |   Bin 7685 -> 0 bytes
 .../samples/push/android/res/layout/main.xml    |    13 -
 .../samples/push/android/res/values/strings.xml |     4 -
 .../samples/push/android/res/xml/config.xml     |    62 -
 .../plugin/gcm/CordovaGCMBroadcastReceiver.java |    19 -
 .../src/com/plugin/gcm/GCMIntentService.java    |   163 -
 .../src/com/plugin/gcm/PushHandlerActivity.java |    66 -
 .../android/src/com/plugin/gcm/PushPlugin.java  |   216 -
 .../src/me/mdob/android/androidpush.java        |    36 -
 .../samples/push/ios/CordovaLib/Classes/CDV.h   |    57 -
 .../ios/CordovaLib/Classes/CDVAccelerometer.h   |    39 -
 .../ios/CordovaLib/Classes/CDVAccelerometer.m   |   128 -
 .../ios/CordovaLib/Classes/CDVAvailability.h    |    87 -
 .../push/ios/CordovaLib/Classes/CDVBattery.h    |    40 -
 .../push/ios/CordovaLib/Classes/CDVBattery.m    |   152 -
 .../push/ios/CordovaLib/Classes/CDVCamera.h     |    92 -
 .../push/ios/CordovaLib/Classes/CDVCamera.m     |   570 -
 .../push/ios/CordovaLib/Classes/CDVCapture.h    |   118 -
 .../push/ios/CordovaLib/Classes/CDVCapture.m    |   847 -
 .../ios/CordovaLib/Classes/CDVCommandDelegate.h |    54 -
 .../CordovaLib/Classes/CDVCommandDelegateImpl.h |    33 -
 .../CordovaLib/Classes/CDVCommandDelegateImpl.m |   145 -
 .../ios/CordovaLib/Classes/CDVCommandQueue.h    |    40 -
 .../ios/CordovaLib/Classes/CDVCommandQueue.m    |   169 -
 .../ios/CordovaLib/Classes/CDVConfigParser.h    |    28 -
 .../ios/CordovaLib/Classes/CDVConfigParser.m    |    70 -
 .../push/ios/CordovaLib/Classes/CDVConnection.h |    34 -
 .../push/ios/CordovaLib/Classes/CDVConnection.m |   132 -
 .../push/ios/CordovaLib/Classes/CDVContact.h    |   136 -
 .../push/ios/CordovaLib/Classes/CDVContact.m    |  1752 -
 .../push/ios/CordovaLib/Classes/CDVContacts.h   |   151 -
 .../push/ios/CordovaLib/Classes/CDVContacts.m   |   593 -
 .../push/ios/CordovaLib/Classes/CDVDebug.h      |    25 -
 .../ios/CordovaLib/Classes/CDVDebugConsole.h    |    28 -
 .../ios/CordovaLib/Classes/CDVDebugConsole.m    |    37 -
 .../push/ios/CordovaLib/Classes/CDVDevice.h     |    30 -
 .../push/ios/CordovaLib/Classes/CDVDevice.m     |    90 -
 .../push/ios/CordovaLib/Classes/CDVEcho.h       |    23 -
 .../push/ios/CordovaLib/Classes/CDVEcho.m       |    61 -
 .../push/ios/CordovaLib/Classes/CDVExif.h       |    43 -
 .../push/ios/CordovaLib/Classes/CDVFile.h       |   106 -
 .../push/ios/CordovaLib/Classes/CDVFile.m       |  1409 -
 .../ios/CordovaLib/Classes/CDVFileTransfer.h    |    74 -
 .../ios/CordovaLib/Classes/CDVFileTransfer.m    |   625 -
 .../ios/CordovaLib/Classes/CDVGlobalization.h   |   150 -
 .../ios/CordovaLib/Classes/CDVGlobalization.m   |   790 -
 .../ios/CordovaLib/Classes/CDVInAppBrowser.h    |    88 -
 .../ios/CordovaLib/Classes/CDVInAppBrowser.m    |   581 -
 .../CordovaLib/Classes/CDVInvokedUrlCommand.h   |    57 -
 .../CordovaLib/Classes/CDVInvokedUrlCommand.m   |   140 -
 .../push/ios/CordovaLib/Classes/CDVJSON.h       |    30 -
 .../push/ios/CordovaLib/Classes/CDVJSON.m       |    77 -
 .../CordovaLib/Classes/CDVJpegHeaderWriter.h    |    62 -
 .../CordovaLib/Classes/CDVJpegHeaderWriter.m    |   522 -
 .../ios/CordovaLib/Classes/CDVLocalStorage.h    |    50 -
 .../ios/CordovaLib/Classes/CDVLocalStorage.m    |   485 -
 .../push/ios/CordovaLib/Classes/CDVLocation.h   |   104 -
 .../push/ios/CordovaLib/Classes/CDVLocation.m   |   623 -
 .../push/ios/CordovaLib/Classes/CDVLogger.h     |    26 -
 .../push/ios/CordovaLib/Classes/CDVLogger.m     |    38 -
 .../ios/CordovaLib/Classes/CDVNotification.h    |    37 -
 .../ios/CordovaLib/Classes/CDVNotification.m    |   126 -
 .../push/ios/CordovaLib/Classes/CDVPlugin.h     |    64 -
 .../push/ios/CordovaLib/Classes/CDVPlugin.m     |   152 -
 .../ios/CordovaLib/Classes/CDVPluginResult.h    |    68 -
 .../ios/CordovaLib/Classes/CDVPluginResult.m    |   224 -
 .../ios/CordovaLib/Classes/CDVReachability.h    |    85 -
 .../ios/CordovaLib/Classes/CDVReachability.m    |   260 -
 .../Classes/CDVScreenOrientationDelegate.h      |    28 -
 .../push/ios/CordovaLib/Classes/CDVSound.h      |   116 -
 .../push/ios/CordovaLib/Classes/CDVSound.m      |   699 -
 .../ios/CordovaLib/Classes/CDVSplashScreen.h    |    33 -
 .../ios/CordovaLib/Classes/CDVSplashScreen.m    |   225 -
 .../ios/CordovaLib/Classes/CDVURLProtocol.h     |    29 -
 .../ios/CordovaLib/Classes/CDVURLProtocol.m     |   230 -
 .../ios/CordovaLib/Classes/CDVUserAgentUtil.h   |    27 -
 .../ios/CordovaLib/Classes/CDVUserAgentUtil.m   |   120 -
 .../ios/CordovaLib/Classes/CDVViewController.h  |    73 -
 .../ios/CordovaLib/Classes/CDVViewController.m  |   931 -
 .../ios/CordovaLib/Classes/CDVWebViewDelegate.h |    37 -
 .../ios/CordovaLib/Classes/CDVWebViewDelegate.m |   171 -
 .../push/ios/CordovaLib/Classes/CDVWhitelist.h  |    36 -
 .../push/ios/CordovaLib/Classes/CDVWhitelist.m  |   192 -
 .../CordovaLib/Classes/NSArray+Comparisons.h    |    26 -
 .../CordovaLib/Classes/NSArray+Comparisons.m    |    41 -
 .../push/ios/CordovaLib/Classes/NSData+Base64.h |    33 -
 .../push/ios/CordovaLib/Classes/NSData+Base64.m |   281 -
 .../Classes/NSDictionary+Extensions.h           |    35 -
 .../Classes/NSDictionary+Extensions.m           |   159 -
 .../Classes/NSMutableArray+QueueAdditions.h     |    29 -
 .../Classes/NSMutableArray+QueueAdditions.m     |    58 -
 .../CordovaLib/Classes/UIDevice+Extensions.h    |    31 -
 .../CordovaLib/Classes/UIDevice+Extensions.m    |    47 -
 .../Classes/compatibility/0.9.6/CDV.h           |    30 -
 .../Classes/compatibility/0.9.6/CDVPlugin.h     |    46 -
 .../Classes/compatibility/0.9.6/CDVPlugin.m     |    29 -
 .../Classes/compatibility/1.5.0/CDV.h           |    32 -
 .../Classes/compatibility/1.5.0/CDVPlugin.h     |    23 -
 .../CordovaLib/Classes/compatibility/README.txt |    23 -
 .../CordovaLib.xcodeproj/project.pbxproj        |   667 -
 .../push/ios/CordovaLib/CordovaLib_Prefix.pch   |    22 -
 .../samples/push/ios/CordovaLib/VERSION         |     1 -
 .../apigee-sdk/samples/push/ios/cordova/build   |    51 -
 .../apigee-sdk/samples/push/ios/cordova/emulate |    55 -
 .../apigee-sdk/samples/push/ios/cordova/log     |    23 -
 .../apigee-sdk/samples/push/ios/cordova/release |    51 -
 .../apigee-sdk/samples/push/ios/cordova/run     |    58 -
 .../push/ios/iospush.xcodeproj/project.pbxproj  |   623 -
 .../push/ios/iospush/Classes/AppDelegate.h      |    42 -
 .../push/ios/iospush/Classes/AppDelegate.m      |   122 -
 .../ios/iospush/Classes/MainViewController.h    |    40 -
 .../ios/iospush/Classes/MainViewController.m    |   174 -
 .../ios/iospush/Classes/MainViewController.xib  |   138 -
 .../iospush/Plugins/AppDelegate+notification.h  |    20 -
 .../iospush/Plugins/AppDelegate+notification.m  |   119 -
 .../push/ios/iospush/Plugins/PushPlugin.h       |    54 -
 .../push/ios/iospush/Plugins/PushPlugin.m       |   248 -
 .../samples/push/ios/iospush/Plugins/README     |    20 -
 .../Resources/Capture.bundle/controls_bg.png    |   Bin 955 -> 0 bytes
 .../Resources/Capture.bundle/controls_bg@2x.png |   Bin 971 -> 0 bytes
 .../Capture.bundle/controls_bg@2x~ipad.png      |   Bin 2858 -> 0 bytes
 .../Capture.bundle/controls_bg~ipad.png         |   Bin 969 -> 0 bytes
 .../microphone-568h@2x~iphone.png               |   Bin 531673 -> 0 bytes
 .../Resources/Capture.bundle/microphone.png     |   Bin 72226 -> 0 bytes
 .../Resources/Capture.bundle/microphone@2x.png  |   Bin 282409 -> 0 bytes
 .../Capture.bundle/microphone@2x~ipad.png       |   Bin 911582 -> 0 bytes
 .../Capture.bundle/microphone~ipad.png          |   Bin 393975 -> 0 bytes
 .../Resources/Capture.bundle/record_button.png  |   Bin 5852 -> 0 bytes
 .../Capture.bundle/record_button@2x.png         |   Bin 13875 -> 0 bytes
 .../Capture.bundle/record_button@2x~ipad.png    |   Bin 15822 -> 0 bytes
 .../Capture.bundle/record_button~ipad.png       |   Bin 7547 -> 0 bytes
 .../Resources/Capture.bundle/recording_bg.png   |   Bin 973 -> 0 bytes
 .../Capture.bundle/recording_bg@2x.png          |   Bin 990 -> 0 bytes
 .../Capture.bundle/recording_bg@2x~ipad.png     |   Bin 1026 -> 0 bytes
 .../Capture.bundle/recording_bg~ipad.png        |   Bin 996 -> 0 bytes
 .../Resources/Capture.bundle/stop_button.png    |   Bin 5514 -> 0 bytes
 .../Resources/Capture.bundle/stop_button@2x.png |   Bin 12965 -> 0 bytes
 .../Capture.bundle/stop_button@2x~ipad.png      |   Bin 14474 -> 0 bytes
 .../Capture.bundle/stop_button~ipad.png         |   Bin 7119 -> 0 bytes
 .../Resources/de.lproj/Localizable.strings      |    26 -
 .../Resources/en.lproj/Localizable.strings      |    25 -
 .../Resources/es.lproj/Localizable.strings      |    25 -
 .../ios/iospush/Resources/icons/icon-72.png     |   Bin 4944 -> 0 bytes
 .../ios/iospush/Resources/icons/icon-72@2x.png  |   Bin 11706 -> 0 bytes
 .../push/ios/iospush/Resources/icons/icon.png   |   Bin 3902 -> 0 bytes
 .../ios/iospush/Resources/icons/icon@2x.png     |   Bin 7869 -> 0 bytes
 .../Resources/se.lproj/Localizable.strings      |    26 -
 .../Resources/splash/Default-568h@2x~iphone.png |   Bin 34225 -> 0 bytes
 .../splash/Default-Landscape@2x~ipad.png        |   Bin 77300 -> 0 bytes
 .../Resources/splash/Default-Landscape~ipad.png |   Bin 34935 -> 0 bytes
 .../splash/Default-Portrait@2x~ipad.png         |   Bin 76546 -> 0 bytes
 .../Resources/splash/Default-Portrait~ipad.png  |   Bin 34278 -> 0 bytes
 .../Resources/splash/Default@2x~iphone.png      |   Bin 29475 -> 0 bytes
 .../iospush/Resources/splash/Default~iphone.png |   Bin 10394 -> 0 bytes
 .../samples/push/ios/iospush/config.xml         |    65 -
 .../samples/push/ios/iospush/iospush-Info.plist |    78 -
 .../samples/push/ios/iospush/iospush-Prefix.pch |    26 -
 .../apigee-sdk/samples/push/ios/iospush/main.m  |    35 -
 .../samples/push/ios/www/PushNotification.js    |    65 -
 .../samples/push/ios/www/cordova-2.6.0.js       |  6433 ----
 .../samples/push/ios/www/css/index.css          |   115 -
 .../samples/push/ios/www/img/logo.png           |   Bin 21814 -> 0 bytes
 .../apigee-sdk/samples/push/ios/www/index.html  |    48 -
 .../apigee-sdk/samples/push/ios/www/js/index.js |   217 -
 .../res/screen/ios/screen-ipad-landscape-2x.png |   Bin 1534088 -> 0 bytes
 .../res/screen/ios/screen-ipad-landscape.png    |   Bin 407370 -> 0 bytes
 .../res/screen/ios/screen-ipad-portrait-2x.png  |   Bin 1610434 -> 0 bytes
 .../www/res/screen/ios/screen-ipad-portrait.png |   Bin 422441 -> 0 bytes
 .../screen/ios/screen-iphone-landscape-2x.png   |   Bin 339639 -> 0 bytes
 .../res/screen/ios/screen-iphone-landscape.png  |   Bin 92301 -> 0 bytes
 .../screen/ios/screen-iphone-portrait-2x.png    |   Bin 350593 -> 0 bytes
 .../res/screen/ios/screen-iphone-portrait.png   |   Bin 93897 -> 0 bytes
 .../apigee-sdk/samples/push/ios/www/spec.html   |    68 -
 .../samples/push/ios/www/spec/helper.js         |    33 -
 .../samples/push/ios/www/spec/index.js          |    67 -
 .../ios/www/spec/lib/jasmine-1.2.0/MIT.LICENSE  |    20 -
 .../www/spec/lib/jasmine-1.2.0/jasmine-html.js  |   616 -
 .../ios/www/spec/lib/jasmine-1.2.0/jasmine.css  |    81 -
 .../ios/www/spec/lib/jasmine-1.2.0/jasmine.js   |  2529 --
 .../apigee-sdk/samples/readmeSample/index.html  |    64 -
 .../samples/usersAndGroups/README.txt           |    22 -
 .../usersAndGroups/css/codiqa.ext.min.css       |     1 -
 .../usersAndGroups/css/images/ajax-loader.gif   |   Bin 7825 -> 0 bytes
 .../css/images/icons-18-black.png               |   Bin 1968 -> 0 bytes
 .../css/images/icons-18-white.png               |   Bin 1988 -> 0 bytes
 .../css/images/icons-36-black.png               |   Bin 3859 -> 0 bytes
 .../css/images/icons-36-white.png               |   Bin 3861 -> 0 bytes
 .../css/jquery.mobile-1.3.1.min.css             |     3 -
 .../samples/usersAndGroups/index.html           |   159 -
 .../samples/usersAndGroups/js/codiqa.ext.min.js |     6 -
 .../samples/usersAndGroups/js/index.js          |   345 -
 .../usersAndGroups/js/jquery-1.9.1.min.js       |     5 -
 .../js/jquery.mobile-1.3.1.min.js               |     7 -
 .../bower_components/intro.js/BUILD/BUILD.js    |    43 -
 .../bower_components/intro.js/Makefile          |     6 -
 .../bower_components/intro.js/README.md         |   487 -
 .../bower_components/intro.js/bower.json        |     9 -
 .../bower_components/intro.js/component.json    |    13 -
 .../intro.js/example/RTL/index.html             |    81 -
 .../assets/css/bootstrap-responsive.min.css     |     9 -
 .../example/assets/css/bootstrap.min.css        |     9 -
 .../intro.js/example/assets/css/demo.css        |    36 -
 .../assets/img/glyphicons-halflings-white.png   |   Bin 8777 -> 0 bytes
 .../example/assets/img/glyphicons-halflings.png |   Bin 12799 -> 0 bytes
 .../intro.js/example/custom-class/index.html    |    84 -
 .../intro.js/example/hello-world/index.html     |    72 -
 .../example/hello-world/withoutBullets.html     |    72 -
 .../example/hello-world/withoutButtons.html     |    72 -
 .../intro.js/example/html-tooltip/index.html    |   108 -
 .../intro.js/example/index.html                 |    35 -
 .../intro.js/example/multi-page/index.html      |    73 -
 .../intro.js/example/multi-page/second.html     |    75 -
 .../intro.js/example/programmatic/index.html    |   107 -
 .../bower_components/intro.js/intro.js          |   940 -
 .../bower_components/intro.js/introjs-rtl.css   |    22 -
 .../bower_components/intro.js/introjs.css       |   248 -
 .../intro.js/minified/intro.min.js              |    24 -
 .../intro.js/minified/introjs-rtl.min.css       |     1 -
 .../intro.js/minified/introjs.min.css           |     1 -
 .../bower_components/intro.js/package.json      |    17 -
 .../jquery-waypoints/CHANGELOG.md               |    92 -
 .../jquery-waypoints/README.markdown            |    47 -
 .../jquery-waypoints/bower.json                 |    19 -
 .../jquery-waypoints/licenses.txt               |    23 -
 .../jquery-waypoints/package.json               |    19 -
 .../infinite-scroll/waypoints-infinite.js       |    67 -
 .../infinite-scroll/waypoints-infinite.min.js   |     8 -
 .../sticky-elements/waypoints-sticky.js         |    55 -
 .../sticky-elements/waypoints-sticky.min.js     |     8 -
 .../jquery-waypoints/waypoints.js               |   520 -
 .../jquery-waypoints/waypoints.min.js           |     8 -
 .../bower_components/jquery/MIT-LICENSE.txt     |    21 -
 .../bower_components/jquery/bower.json          |    27 -
 .../bower_components/jquery/dist/jquery.js      |  9174 -----
 .../bower_components/jquery/dist/jquery.min.js  |     5 -
 .../bower_components/jquery/dist/jquery.min.map |     1 -
 .../bower_components/jquery/src/ajax.js         |   806 -
 .../bower_components/jquery/src/ajax/jsonp.js   |    89 -
 .../bower_components/jquery/src/ajax/load.js    |    75 -
 .../jquery/src/ajax/parseJSON.js                |    13 -
 .../jquery/src/ajax/parseXML.js                 |    28 -
 .../bower_components/jquery/src/ajax/script.js  |    64 -
 .../jquery/src/ajax/var/nonce.js                |     5 -
 .../jquery/src/ajax/var/rquery.js               |     3 -
 .../bower_components/jquery/src/ajax/xhr.js     |   135 -
 .../bower_components/jquery/src/attributes.js   |    11 -
 .../jquery/src/attributes/attr.js               |   143 -
 .../jquery/src/attributes/classes.js            |   158 -
 .../jquery/src/attributes/prop.js               |    96 -
 .../jquery/src/attributes/support.js            |    35 -
 .../jquery/src/attributes/val.js                |   163 -
 .../bower_components/jquery/src/callbacks.js    |   205 -
 .../bower_components/jquery/src/core.js         |   498 -
 .../bower_components/jquery/src/core/access.js  |    60 -
 .../bower_components/jquery/src/core/init.js    |   123 -
 .../jquery/src/core/parseHTML.js                |    39 -
 .../bower_components/jquery/src/core/ready.js   |    97 -
 .../jquery/src/core/var/rsingleTag.js           |     4 -
 .../bower_components/jquery/src/css.js          |   451 -
 .../jquery/src/css/addGetHookIf.js              |    24 -
 .../bower_components/jquery/src/css/curCSS.js   |    57 -
 .../jquery/src/css/defaultDisplay.js            |    70 -
 .../jquery/src/css/hiddenVisibleSelectors.js    |    15 -
 .../bower_components/jquery/src/css/support.js  |    91 -
 .../bower_components/jquery/src/css/swap.js     |    28 -
 .../jquery/src/css/var/cssExpand.js             |     3 -
 .../jquery/src/css/var/getStyles.js             |     5 -
 .../jquery/src/css/var/isHidden.js              |    13 -
 .../jquery/src/css/var/rmargin.js               |     3 -
 .../jquery/src/css/var/rnumnonpx.js             |     5 -
 .../bower_components/jquery/src/data.js         |   175 -
 .../bower_components/jquery/src/data/Data.js    |   181 -
 .../bower_components/jquery/src/data/accepts.js |    20 -
 .../jquery/src/data/var/data_priv.js            |     5 -
 .../jquery/src/data/var/data_user.js            |     5 -
 .../bower_components/jquery/src/deferred.js     |   149 -
 .../bower_components/jquery/src/deprecated.js   |    13 -
 .../bower_components/jquery/src/dimensions.js   |    50 -
 .../bower_components/jquery/src/effects.js      |   647 -
 .../jquery/src/effects/Tween.js                 |   114 -
 .../jquery/src/effects/animatedSelector.js      |    13 -
 .../bower_components/jquery/src/event.js        |   868 -
 .../bower_components/jquery/src/event/alias.js  |    39 -
 .../jquery/src/event/support.js                 |     9 -
 .../bower_components/jquery/src/exports/amd.js  |    24 -
 .../jquery/src/exports/global.js                |    32 -
 .../bower_components/jquery/src/intro.js        |    44 -
 .../bower_components/jquery/src/jquery.js       |    36 -
 .../bower_components/jquery/src/manipulation.js |   582 -
 .../jquery/src/manipulation/_evalUrl.js         |    18 -
 .../jquery/src/manipulation/support.js          |    31 -
 .../src/manipulation/var/rcheckableType.js      |     3 -
 .../bower_components/jquery/src/offset.js       |   204 -
 .../bower_components/jquery/src/outro.js        |     1 -
 .../bower_components/jquery/src/queue.js        |   142 -
 .../bower_components/jquery/src/queue/delay.js  |    22 -
 .../jquery/src/selector-native.js               |   172 -
 .../jquery/src/selector-sizzle.js               |    14 -
 .../bower_components/jquery/src/selector.js     |     1 -
 .../bower_components/jquery/src/serialize.js    |   111 -
 .../jquery/src/sizzle/dist/sizzle.js            |  2034 --
 .../jquery/src/sizzle/dist/sizzle.min.js        |     3 -
 .../jquery/src/sizzle/dist/sizzle.min.map       |     1 -
 .../bower_components/jquery/src/traversing.js   |   200 -
 .../jquery/src/traversing/findFilter.js         |   100 -
 .../jquery/src/traversing/var/rneedsContext.js  |     6 -
 .../bower_components/jquery/src/var/arr.js      |     3 -
 .../jquery/src/var/class2type.js                |     4 -
 .../bower_components/jquery/src/var/concat.js   |     5 -
 .../bower_components/jquery/src/var/hasOwn.js   |     5 -
 .../bower_components/jquery/src/var/indexOf.js  |     5 -
 .../bower_components/jquery/src/var/pnum.js     |     3 -
 .../bower_components/jquery/src/var/push.js     |     5 -
 .../jquery/src/var/rnotwhite.js                 |     3 -
 .../bower_components/jquery/src/var/slice.js    |     5 -
 .../jquery/src/var/strundefined.js              |     3 -
 .../bower_components/jquery/src/var/support.js  |     4 -
 .../bower_components/jquery/src/var/toString.js |     5 -
 .../bower_components/jquery/src/wrap.js         |    78 -
 .../bower_components/sizzle/dist/sizzle.js      |  2015 -
 .../bower_components/sizzle/dist/sizzle.min.js  |     3 -
 .../bower_components/sizzle/dist/sizzle.min.map |     1 -
 .../bower_components/sizzle/tasks/commit.js     |    10 -
 .../bower_components/sizzle/tasks/compile.js    |    34 -
 .../bower_components/sizzle/tasks/dist.js       |    35 -
 .../bower_components/sizzle/tasks/release.js    |    43 -
 .../bower_components/sizzle/tasks/tag.js        |     9 -
 .../bower_components/sizzle/tasks/version.js    |    35 -
 .../bower_components/sizzle/test/data/empty.js  |     0
 .../sizzle/test/data/mixed_sort.html            |    22 -
 .../sizzle/test/data/testinit.js                |   136 -
 .../bower_components/sizzle/test/index.html     |   242 -
 .../bower_components/sizzle/test/jquery.js      |  9597 -----
 .../sizzle/test/libs/qunit/qunit.css            |   244 -
 .../sizzle/test/libs/qunit/qunit.js             |  2212 --
 .../sizzle/test/unit/extending.js               |    95 -
 .../sizzle/test/unit/selector.js                |  1138 -
 .../sizzle/test/unit/utilities.js               |   169 -
 deleted/dist-cov/usergrid-portal/config.js      |    72 -
 .../css/apigeeGlobalNavigation.css              |   291 -
 .../css/arsmarquette/ARSMaquettePro-Light.otf   |   Bin 184600 -> 0 bytes
 .../css/arsmarquette/ARSMaquettePro-Medium.otf  |   Bin 188020 -> 0 bytes
 .../css/arsmarquette/ARSMaquettePro-Regular.otf |   Bin 188096 -> 0 bytes
 .../dist-cov/usergrid-portal/css/dash.min.css   |     1 -
 .../usergrid-portal/css/entypo/entypo.eot       |   Bin 35540 -> 0 bytes
 .../usergrid-portal/css/entypo/entypo.svg       |    13 -
 .../usergrid-portal/css/entypo/entypo.ttf       |   Bin 35392 -> 0 bytes
 .../usergrid-portal/css/entypo/entypo.woff      |   Bin 21916 -> 0 bytes
 deleted/dist-cov/usergrid-portal/css/main.css   |  1998 -
 .../img/appswitcher/apiPlatform_lg.png          |   Bin 2397 -> 0 bytes
 .../img/appswitcher/appServices_lg.png          |   Bin 2295 -> 0 bytes
 .../img/appswitcher/console_lg.png              |   Bin 1453 -> 0 bytes
 .../usergrid-portal/img/appswitcher/home_lg.png |   Bin 1522 -> 0 bytes
 .../img/appswitcher/logo_color.png              |   Bin 3459 -> 0 bytes
 .../usergrid-portal/img/appswitcher/max_lg.png  |   Bin 1970 -> 0 bytes
 .../img/appswitcher/triangleMenuItem_right.png  |   Bin 1158 -> 0 bytes
 .../triangleMenuItem_right_hover.png            |   Bin 1169 -> 0 bytes
 .../dist-cov/usergrid-portal/img/blue-bars.png  |   Bin 3635 -> 0 bytes
 .../dist-cov/usergrid-portal/img/blue-bolt.png  |   Bin 3942 -> 0 bytes
 .../dist-cov/usergrid-portal/img/blue-carat.png |   Bin 1006 -> 0 bytes
 .../dist-cov/usergrid-portal/img/green_dot.png  |   Bin 3472 -> 0 bytes
 .../img/introjs_arrow_step_next.png             |   Bin 219 -> 0 bytes
 .../img/introjs_arrow_step_next_disabled.png    |   Bin 220 -> 0 bytes
 .../img/introjs_arrow_step_prev.png             |   Bin 217 -> 0 bytes
 .../img/introjs_arrow_step_prev_disabled.png    |   Bin 218 -> 0 bytes
 .../usergrid-portal/img/introjs_close.png       |   Bin 274 -> 0 bytes
 deleted/dist-cov/usergrid-portal/img/logo.gif   |   Bin 2279 -> 0 bytes
 .../dist-cov/usergrid-portal/img/nav-device.gif |   Bin 2184 -> 0 bytes
 .../usergrid-portal/img/nav-sprites.png         |   Bin 7953 -> 0 bytes
 .../dist-cov/usergrid-portal/img/no-data1.png   |   Bin 45300 -> 0 bytes
 .../usergrid-portal/img/phone-small.gif         |   Bin 1300 -> 0 bytes
 .../img/push/APNS_cert_upload.png               |   Bin 33956 -> 0 bytes
 .../img/push/APNS_certification.png             |   Bin 16855 -> 0 bytes
 .../img/push/android-notification.png           |   Bin 41629 -> 0 bytes
 .../usergrid-portal/img/push/google_api_key.png |   Bin 98118 -> 0 bytes
 .../usergrid-portal/img/push/iphone_message.png |   Bin 90307 -> 0 bytes
 .../usergrid-portal/img/push/step_1.png         |   Bin 1953 -> 0 bytes
 .../usergrid-portal/img/push/step_2.png         |   Bin 2117 -> 0 bytes
 .../usergrid-portal/img/push/step_3.png         |   Bin 2162 -> 0 bytes
 .../dist-cov/usergrid-portal/img/red_dot.png    |   Bin 3482 -> 0 bytes
 .../usergrid-portal/img/sdk-sprites-large.png   |   Bin 14642 -> 0 bytes
 .../usergrid-portal/img/sdk-sprites.png         |   Bin 5027 -> 0 bytes
 .../usergrid-portal/img/tablet-small.gif        |   Bin 1390 -> 0 bytes
 .../dist-cov/usergrid-portal/img/user-photo.png |   Bin 3849 -> 0 bytes
 .../usergrid-portal/img/user_profile.png        |   Bin 3775 -> 0 bytes
 deleted/dist-cov/usergrid-portal/img/verify.png |   Bin 22934 -> 0 bytes
 .../dist-cov/usergrid-portal/img/yellow_dot.png |   Bin 3475 -> 0 bytes
 deleted/dist-cov/usergrid-portal/index.html     |   168 -
 .../usergrid-portal/js/charts/highcharts.json   |   329 -
 .../js/libs/Highcharts-2.3.5/index.htm          |    79 -
 .../js/adapters/mootools-adapter.js             |    13 -
 .../js/adapters/mootools-adapter.src.js         |   328 -
 .../js/adapters/prototype-adapter.js            |    16 -
 .../js/adapters/prototype-adapter.src.js        |   385 -
 .../libs/Highcharts-2.3.5/js/highcharts-more.js |    35 -
 .../Highcharts-2.3.5/js/highcharts-more.src.js  |  1581 -
 .../js/libs/Highcharts-2.3.5/js/highcharts.js   |   250 -
 .../libs/Highcharts-2.3.5/js/highcharts.src.js  | 15281 --------
 .../Highcharts-2.3.5/js/modules/canvas-tools.js |   133 -
 .../js/modules/canvas-tools.src.js              |  3113 --
 .../js/libs/Highcharts-2.3.5/js/modules/data.js |    14 -
 .../Highcharts-2.3.5/js/modules/data.src.js     |   512 -
 .../Highcharts-2.3.5/js/modules/exporting.js    |    23 -
 .../js/modules/exporting.src.js                 |   752 -
 .../Highcharts-2.3.5/js/themes/dark-blue.js     |   263 -
 .../Highcharts-2.3.5/js/themes/dark-green.js    |   263 -
 .../js/libs/Highcharts-2.3.5/js/themes/gray.js  |   262 -
 .../js/libs/Highcharts-2.3.5/js/themes/grid.js  |    95 -
 .../js/libs/Highcharts-2.3.5/js/themes/skies.js |    89 -
 .../dist-cov/usergrid-portal/js/libs/MD5.min.js |     1 -
 .../js/libs/angular-1.0.5/angular-cookies.js    |   183 -
 .../libs/angular-1.0.5/angular-cookies.min.js   |     7 -
 .../js/libs/angular-1.0.5/angular-loader.js     |   276 -
 .../js/libs/angular-1.0.5/angular-loader.min.js |     7 -
 .../js/libs/angular-1.0.5/angular-mocks.js      |  1886 -
 .../js/libs/angular-1.0.5/angular-resource.js   |   445 -
 .../libs/angular-1.0.5/angular-resource.min.js  |    10 -
 .../js/libs/angular-1.0.5/angular-sanitize.js   |   535 -
 .../libs/angular-1.0.5/angular-sanitize.min.js  |    13 -
 .../js/libs/angular-1.0.5/angular.js            | 14733 --------
 .../js/libs/angular-1.0.5/angular.min.js        |   161 -
 .../js/libs/angular-1.0.5/version.txt           |     1 -
 .../js/libs/angular-1.1.5/angular-1.1.5.js      | 16876 ---------
 .../js/libs/angular-1.1.5/angular-merge.min.js  |     8 -
 .../angular-1.1.5/angular-resource-1.1.5.js     |   537 -
 .../js/libs/angular-1.2.5/angular-animate.js    |  1323 -
 .../libs/angular-1.2.5/angular-animate.min.js   |    23 -
 .../angular-1.2.5/angular-animate.min.js.map    |     8 -
 .../js/libs/angular-1.2.5/angular-cookies.js    |   202 -
 .../libs/angular-1.2.5/angular-cookies.min.js   |     8 -
 .../angular-1.2.5/angular-cookies.min.js.map    |     8 -
 .../js/libs/angular-1.2.5/angular-csp.css       |    24 -
 .../js/libs/angular-1.2.5/angular-loader.js     |   410 -
 .../js/libs/angular-1.2.5/angular-loader.min.js |     9 -
 .../angular-1.2.5/angular-loader.min.js.map     |     8 -
 .../js/libs/angular-1.2.5/angular-mocks.js      |  2116 --
 .../js/libs/angular-1.2.5/angular-resource.js   |   565 -
 .../libs/angular-1.2.5/angular-resource.min.js  |    13 -
 .../angular-1.2.5/angular-resource.min.js.map   |     8 -
 .../js/libs/angular-1.2.5/angular-route.js      |   911 -
 .../js/libs/angular-1.2.5/angular-route.min.js  |    14 -
 .../libs/angular-1.2.5/angular-route.min.js.map |     8 -
 .../js/libs/angular-1.2.5/angular-sanitize.js   |   622 -
 .../libs/angular-1.2.5/angular-sanitize.min.js  |    14 -
 .../angular-1.2.5/angular-sanitize.min.js.map   |     8 -
 .../js/libs/angular-1.2.5/angular-scenario.js   | 32374 -----------------
 .../js/libs/angular-1.2.5/angular-touch.js      |   563 -
 .../js/libs/angular-1.2.5/angular-touch.min.js  |    13 -
 .../libs/angular-1.2.5/angular-touch.min.js.map |     8 -
 .../js/libs/angular-1.2.5/angular.js            | 20369 -----------
 .../js/libs/angular-1.2.5/angular.min.js        |   201 -
 .../js/libs/angular-1.2.5/angular.min.js.map    |     8 -
 .../js/libs/angular-1.2.5/errors.json           |     1 -
 .../js/libs/angular-1.2.5/version.json          |     1 -
 .../js/libs/angular-1.2.5/version.txt           |     1 -
 .../angularitics-0.8.5-google-analytics.js      |     7 -
 .../js/libs/angularitics/angularitics-0.8.5.js  |     6 -
 .../libs/bootstrap/css/bootstrap-responsive.css |  1345 -
 .../bootstrap/css/bootstrap-responsive.min.css  |  1245 -
 .../js/libs/bootstrap/css/bootstrap.css         |  6169 ----
 .../js/libs/bootstrap/css/bootstrap.min.css     |  5469 ---
 .../js/libs/bootstrap/custom/css/bootstrap.css  |  6316 ----
 .../libs/bootstrap/custom/css/bootstrap.min.css |     9 -
 .../custom/img/glyphicons-halflings-white.png   |   Bin 8777 -> 0 bytes
 .../custom/img/glyphicons-halflings.png         |   Bin 12799 -> 0 bytes
 .../js/libs/bootstrap/custom/js/bootstrap.js    |  2291 --
 .../libs/bootstrap/custom/js/bootstrap.min.js   |     7 -
 .../img/glyphicons-halflings-white.png          |   Bin 8777 -> 0 bytes
 .../libs/bootstrap/img/glyphicons-halflings.png |   Bin 12799 -> 0 bytes
 .../js/libs/bootstrap/js/bootstrap.js           |  2117 --
 .../js/libs/bootstrap/js/bootstrap.min.js       |   644 -
 .../usergrid-portal/js/libs/google-viz-api.js   |    49 -
 .../js/libs/jquery/jquery-1.9.1.min.js          |     5 -
 .../js/libs/jquery/jquery-migrate-1.1.1.min.js  |     3 -
 .../js/libs/jquery/jquery.sparkline.min.js      |     5 -
 .../js/libs/jqueryui/date.min.js                |     2 -
 .../ui-bg_diagonals-thick_90_eeeeee_40x40.png   |   Bin 251 -> 0 bytes
 .../images/ui-bg_flat_100_deedf7_40x100.png     |   Bin 182 -> 0 bytes
 .../images/ui-bg_flat_100_e4f1fb_40x100.png     |   Bin 213 -> 0 bytes
 .../images/ui-bg_flat_100_f2f5f7_40x100.png     |   Bin 212 -> 0 bytes
 .../images/ui-bg_flat_15_cd0a0a_40x100.png      |   Bin 181 -> 0 bytes
 .../images/ui-bg_flat_50_3baae3_40x100.png      |   Bin 182 -> 0 bytes
 .../images/ui-bg_flat_80_d7ebf9_40x100.png      |   Bin 183 -> 0 bytes
 .../ui-bg_highlight-hard_70_000000_1x100.png    |   Bin 118 -> 0 bytes
 .../ui-bg_highlight-soft_25_ffef8f_1x100.png    |   Bin 153 -> 0 bytes
 .../jqueryui/images/ui-icons_000000_256x240.png |   Bin 4369 -> 0 bytes
 .../jqueryui/images/ui-icons_2694e8_256x240.png |   Bin 4369 -> 0 bytes
 .../jqueryui/images/ui-icons_2e83ff_256x240.png |   Bin 4369 -> 0 bytes
 .../jqueryui/images/ui-icons_3d80b3_256x240.png |   Bin 4369 -> 0 bytes
 .../jqueryui/images/ui-icons_72a7cf_256x240.png |   Bin 4369 -> 0 bytes
 .../jqueryui/images/ui-icons_ffffff_256x240.png |   Bin 4369 -> 0 bytes
 .../js/libs/jqueryui/jquery-ui-1.8.18.min.js    |    15 -
 .../js/libs/jqueryui/jquery-ui-1.8.9.custom.css |     1 -
 .../js/libs/jqueryui/jquery-ui-timepicker.css   |     1 -
 .../libs/jqueryui/jquery.ui.timepicker.min.js   |     1 -
 .../ui-bootstrap-custom-0.3.0.min.js            |     1 -
 .../ui-bootstrap-custom-tpls-0.3.0.min.js       |     1 -
 .../js/libs/usergrid-libs.min.js                |    41 -
 .../usergrid-portal/js/libs/usergrid.sdk.js     |  2490 --
 .../usergrid-portal/js/usergrid-coverage.min.js |    25 -
 .../usergrid-portal/js/usergrid-dev.min.js      |  5047 ---
 .../dist-cov/usergrid-portal/js/usergrid.min.js |    22 -
 .../usergrid-portal/sdk/usergrid.0.10.4.js      |  1402 -
 .../usergrid-portal/sdk/usergrid.0.10.5.js      |  1755 -
 .../usergrid-portal/sdk/usergrid.0.10.7.js      |  2265 --
 portal/Gruntfile.js                             |    58 +-
 portal/README.md                                |     2 +-
 portal/bower.json                               |     3 -
 portal/build.sh                                 |     7 +-
 portal/config.js                                |    29 +-
 portal/css/main.css                             |    12 +-
 portal/css/main.min.css                         |     2 +-
 portal/favicon.ico                              |   Bin 1150 -> 3989 bytes
 portal/helpJson.json                            |    47 +
 portal/index-template.html                      |    33 +-
 .../js/app-overview/app-overview-controller.js  |    48 +-
 .../app-overview/getting-started-controller.js  |   107 -
 portal/js/app-overview/getting-started.html     |   119 -
 portal/js/app.js                                |    21 +-
 portal/js/global/app-switcher-directive.js      |    53 -
 portal/js/global/help-service.js                |    22 +-
 portal/js/global/page-controller.js             |    17 +-
 portal/js/global/ug-service.js                  |    32 +-
 .../angularitics-0.8.5-google-analytics.js      |     7 -
 .../js/libs/angularitics/angularitics-0.8.5.js  |     6 -
 portal/package.json                             |     3 +-
 968 files changed, 103 insertions(+), 401799 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 39b210b..4ec3b9b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,7 +14,7 @@ Icon
 .Trashes
 /portal/performance/
 /portal/node_modules/
-/portal/dist/appsvc-ui.*.zip
+/portal/dist/
 /portal/dist-cov/
 /portal/bower_components
 /portal/.idea

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/apigeeGlobalNavigation.css
----------------------------------------------------------------------
diff --git a/apigeeGlobalNavigation.css b/apigeeGlobalNavigation.css
deleted file mode 100644
index 7722422..0000000
--- a/apigeeGlobalNavigation.css
+++ /dev/null
@@ -1,291 +0,0 @@
-/**
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-.dropdown {
-  position: relative;
-}
-.dropdown-toggle {
-  *margin-bottom: -3px;
-}
-.dropdown-toggle:active,
-.open .dropdown-toggle {
-  outline: 0;
-}
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  vertical-align: top;
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-top: 4px solid #000000;
-  opacity: 0.3;
-  filter: alpha(opacity=30);
-  content: "";
-}
-.dropdown .caret {
-  margin-top: 8px;
-  margin-left: 2px;
-}
-.dropdown:hover .caret,
-.open.dropdown .caret {
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  float: left;
-  display: none;
-  min-width: 160px;
-  padding: 4px 0;
-  margin: 0;
-  list-style: none;
-  background-color: #ffffff;
-  border-color: #ccc;
-  border-color: rgba(0, 0, 0, 0.2);
-  border-style: solid;
-  border-width: 1px;
-  -webkit-border-radius: 0 0 5px 5px;
-  -moz-border-radius: 0 0 5px 5px;
-  border-radius: 0 0 5px 5px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding;
-  background-clip: padding-box;
-  *border-right-width: 2px;
-  *border-bottom-width: 2px;
-}
-.dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-}
-.dropdown-menu .divider {
-  height: 1px;
-  margin: 8px 1px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-  *width: 100%;
-  *margin: -5px 0 5px;
-}
-.dropdown-menu a {
-  display: block;
-  padding: 3px 15px;
-  clear: both;
-  font-weight: normal;
-  line-height: 18px;
-  color: #333333;
-  white-space: nowrap;
-}
-.dropdown-menu li > a:hover,
-.dropdown-menu .active > a,
-.dropdown-menu .active > a:hover {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #0088cc;
-}
-.dropdown.open {
-  *z-index: 1000;
-}
-.dropdown.open .dropdown-toggle {
-  color: #ffffff;
-  background: #ccc;
-  background: rgba(0, 0, 0, 0.3);
-}
-.dropdown.open .dropdown-menu {
-  display: block;
-}
-.pull-right .dropdown-menu {
-  left: auto;
-  right: 0;
-}
-.dropup .caret,
-.navbar-fixed-bottom .dropdown .caret {
-  border-top: 0;
-  border-bottom: 4px solid #000000;
-  content: "\2191";
-}
-.dropup .dropdown-menu,
-.navbar-fixed-bottom .dropdown .dropdown-menu {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 1px;
-}
-
-.dropdownContainingSubmenu .dropdown-menu {
-  padding: 0;
-  margin-top: -4px;
-  min-width: auto;
-  background-color: #ffffff;
-  -webkit-border-radius: 0 0 0 0;
-  -moz-border-radius: 0 0 0 0;
-  border-radius: 0 0 0 0;
-  -webkit-box-shadow: 4px 4px 16px rgba(0, 0, 0, 0.25);
-  -moz-box-shadow: 4px 4px 16px rgba(0, 0, 0, 0.25);
-  box-shadow: 4px 4px 16px rgba(0, 0, 0, 0.25);
-  border-width: 1px;
-  border-top-width: 4px;
-  border-color: #bb2d16;
-}
-.dropdownContainingSubmenu .dropdown-menu a {
-  color: #494949;
-  padding: 7px 10px;
-}
-.dropdownContainingSubmenu .dropdown-menu a:hover {
-  color: #ffffff;
-  background-color: #f03800;
-}
-.dropdownContainingSubmenu .dropdown-menu .nav-header {
-  background-color: #f0f0f0;
-  margin-top: 0;
-  padding-left: 10px;
-}
-.dropdownContainingSubmenu .dropdown-menu .divider {
-  margin: 0;
-}
-.navbar .dropdown-menu:before {
-  content: normal;
-}
-.navbar .dropdown-menu:after {
-  content: normal;
-}
-/*#E02E01;*/
-#globalNav {
-  margin-left: 20px;
-  background-color: transparent;
-}
-#globalNav .dropdown-toggle {
-  border-radius: 3px;
-  padding-top: 3px;
-  padding-bottom: 3px;
-  margin-top: 7.5px;
-  margin-bottom: 7.5px;
-}
-#globalNav .dropdown-toggle :hover {
-  background-color: transparent;
-}
-#globalNav.active .caret {
-  opacity: .7;
-}
-#globalNav.active :hover .caret {
-  opacity: 1;
-}
-
-#globalNav ul ul a {
-  border-left: 1px solid #bb2d16;
-}
-#globalNav ul ul li {
-  position: relative;
-}
-#globalNav ul ul li:first-child {
-  border-bottom: 1px solid #bb2d16;
-}
-#globalNav ul ul a:before {
-  content: "";
-  width: 6px;
-  height: 32px;
-  position: absolute;
-  left: -6px;
-  top: 0;
-}
-#globalNav ul ul .active a:hover:before,
-#globalNav ul ul .active a:before {
-  background-image: url('images/triangleMenuItem_right.png');
-}
-#globalNav ul ul:hover a:before {
-  background-image: none;
-}
-#globalNav ul ul a:hover:before {
-  background-image: url('images/triangleMenuItem_right_hover.png');
-}
-#globalNav ul ul li a:hover {
-  border-color: transparent;
-}
-#globalNav .dropdown-menu {
-  width: 400px;
-}
-#globalNavDetail {
-  padding: 20px 10px 0 10px;
-  width: 250px;
-  height: 100%;
-  position: relative;
-  top: 0;
-}
-#globalNavDetail > div {
-  display: none;
-  color: graytext;
-  background-image: none;
-  background-repeat: no-repeat;
-  background-position: 0 0;
-  min-height: 64px;
-}
-#globalNavDetail > div.open {
-  display: inline-block;
-}
-#globalNavDetail > div .globalNavDetailApigeeLogo,
-#globalNavDetail > div .globalNavDetailSubtitle,
-#globalNavDetail > div .globalNavDetailTitle,
-#globalNavDetail > div .globalNavDetailDescription {
-  margin-left: 80px;
-}
-#globalNavDetail > div .globalNavDetailSubtitle {
-  font-size: 10px;
-  text-transform: uppercase;
-}
-#globalNavDetail > div .globalNavDetailTitle {
-  margin-top: 5px;
-  font-size: 20px;
-}
-#globalNavDetail > div .globalNavDetailDescription {
-  margin-top: 10px;
-  line-height: 17px;
-  font-style: oblique;
-}
-#globalNavDetail #globalNavDetailApigeeHome {
-  margin-top: -10px;
-  background-image: url('img/appswitcher/home_lg.png');
-}
-#globalNavDetail #globalNavDetailApigeeHome .globalNavDetailApigeeLogo {
-  margin-top: 10px;
-  background-image: url('img/appswitcher/logo_color.png');
-  width: 116px;
-  height: 40px;
-}
-#globalNavDetail #globalNavDetailAppServices {
-  background-image: url('img/appswitcher/appServices_lg.png');
-}
-#globalNavDetail #globalNavDetailApiPlatform {
-  background-image: url('img/appswitcher/apiPlatform_lg.png');
-}
-#globalNavDetail #globalNavDetailMobileAnalytics {
-  background-image: url('img/appswitcher/max_lg.png');
-}
-#globalNavDetail #globalNavDetailApiConsoles {
-  background-image: url('img/appswitcher/console_lg.png');
-}
-#globalNavSubmenuContainer {
-  float: right;
-}
-#globalNavSubmenuContainer ul {
-  margin-left: 0;
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/bower.json
----------------------------------------------------------------------
diff --git a/bower.json b/bower.json
deleted file mode 100644
index c34480f..0000000
--- a/bower.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "name": "usergrid-portal",
-  "version": "2.0.2",
-  "main":"portal/dist/",
-  "ignore": [
-    "sdks/",
-    "stack/",
-    "ugc/",
-    "portal/.jshintrc",
-    "**/*.txt",
-    "**/*.md",
-    "portal/js/",
-    "portal/css/",
-    "portal/img/",
-    "portal/archive/",
-    "portal/bower_components/",
-    "portal/scripts/",
-    "portal/sdk/",
-    "portal/tests/",
-    "portal/test/",
-    "portal/*.*",
-    "portal/LICENSE",
-    "bower.json",
-    "LICENSE",
-    "NOTICE",
-    "**/.gitignore"
-  ],
-  "dependencies": {
-    "angularitics": "~0.8.7",
-    "apigee-sdk": "~2.0.8",
-    "angular-intro.js": "*",
-    "sizzle":"1.10.16"
-  },
-  "devDependencies": {},
-  "keywords": [
-    "apigee",
-    "usergrid"
-  ]
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/coming_soon.html
----------------------------------------------------------------------
diff --git a/deleted/archive/coming_soon.html b/deleted/archive/coming_soon.html
deleted file mode 100644
index ae609d3..0000000
--- a/deleted/archive/coming_soon.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<body>
-<div id="fullContainer">
-  <div class="navbar navbar-fixed-top">
-    <h1 class="apigee"><a href="https://apigee.com" target="_blank"><img src="images/apigee-logo.png">apigee</a></h1>
-    <h2 id="ActualPage1">App Services Admin Portal</h2>
-    <ul id="loginMenu" class="nav secondary-nav">
-      <li><a id="login-link" href="#"><i class="icon-user"></i> Login</a></li>
-      <li><a id="signup-link" href="#">Sign Up</a></li>
-      <li><a id="forgot-password-link" href="#"><i class="icon-lock"></i> Forgot Password</a></li>
-    </ul>
-  </div>
-  <div id="coming_soon">
-    <div class="huge">
-      Coming Soon
-    </div>
-    <br />
-    <div class="bigbig">
-      Thanks for checking us out, we're almost ready!
-    </div>
-    <div class="big">
-      Find out more about App Services <a href="#"><strong>here</strong></a>
-    </div>
-  </div>
-  <footer>
-    <div class="container-fluid">
-      <span id="copyright" class="pull-right">&copy; 2012 Apigee Corp. All rights reserved.</span>
-    </div>
-  </footer>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/config.js
----------------------------------------------------------------------
diff --git a/deleted/archive/config.js b/deleted/archive/config.js
deleted file mode 100644
index 9cebdac..0000000
--- a/deleted/archive/config.js
+++ /dev/null
@@ -1,72 +0,0 @@
-var Usergrid = Usergrid || {};
-
-Usergrid.showNotifcations = true;
-
-
-// used only if hostname does not match a real server name
-Usergrid.overrideUrl = 'https://api.usergrid.com/';
-
-Usergrid.options = {
-  client:{
-    requiresDeveloperKey:false
-   // apiKey:'123456'
-  },
-  showAutoRefresh:true,
-  autoUpdateTimer:61, //seconds
-  menuItems:[
-    {path:'#!/org-overview', active:true,pic:'&#128362;',title:'Org Administration'},
-    {path:'#!/getting-started/setup',pic:'&#128640;',title:'Getting Started'},
-    {path:'#!/app-overview/summary',pic:'&#59214;',title:'App Overview',
-      items:[
-        {path:'#!/app-overview/summary',pic:'&#128241;',title:'Summary'}
-      ]
-    },
-    {
-      path:'#!/users',pic:'&#128100;',title:'Users',
-      items:[
-        {path:'#!/users',pic:'&#128100;',title:'Users'},
-        {path:'#!/groups',pic:'&#128101;',title:'Groups'},
-        {path:'#!/roles',pic:'&#59170;',title:'Roles'}
-      ]
-    },
-    {
-      path:'#!/data',pic:'&#128248;',title:'Data',
-      items:[
-        {path:'#!/data',pic:'&#128254;',title:'Collections'}
-      ]
-    },
-    {
-      path:'#!/activities',pic:'&#59194;',title:'Activities'
-    },
-    {path:'#!/shell',pic:'&#9000;',title:'Shell'}
-  ]
-};
-
-Usergrid.regex = {
-  appNameRegex: new RegExp("^[0-9a-zA-Z.-]{3,25}$"),
-  usernameRegex: new RegExp("^[0-9a-zA-Z\.\_-]{4,25}$"),
-  nameRegex: new RegExp("^([0-9a-zA-Z@#$%^&!?;:.,'\"~*-:+_\[\\](){}/\\ |]{3,60})+$"),
-  roleNameRegex: new RegExp("^([0-9a-zA-Z./-]{3,25})+$"),
-  emailRegex: new RegExp("^(([0-9a-zA-Z]+[_\+.-]?)+@[0-9a-zA-Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+$"),
-  passwordRegex: /(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/,
-  pathRegex: new RegExp("^/[a-zA-Z0-9\.\*_~-]+(\/[a-zA-Z0-9\.\*_~-]+)*$"),
-  titleRegex: new RegExp("[a-zA-Z0-9.!-?]+[\/]?"),
-  urlRegex: new RegExp("^(http?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$"),
-  zipRegex: new RegExp("^[0-9]{5}(?:-[0-9]{4})?$"),
-  countryRegex: new RegExp("^[A-Za-z ]{3,100}$"),
-  stateRegex: new RegExp("^[A-Za-z ]{2,100}$"),
-  collectionNameRegex: new RegExp("^[0-9a-zA-Z_.]{3,25}$"),
-  appNameRegexDescription: "This field only allows : A-Z, a-z, 0-9, dot, and dash and must be between 3-25 characters.",
-  usernameRegexDescription: "This field only allows : A-Z, a-z, 0-9, dot, underscore and dash. Must be between 4 and 15 characters.",
-  nameRegexDescription: "Please enter a valid name. Must be betwee 3 and 60 characters.",
-  roleNameRegexDescription: "Role only allows : /, a-z, 0-9, dot, and dash. Must be between 3 and 25 characters.",
-  emailRegexDescription: "Please enter a valid email.",
-  passwordRegexDescription: "Password must contain at least 1 upper and lower case letter, one number or special character and be at least 8 characters.",
-  pathRegexDescription: "Path must begin with a slash, path only allows: /, a-z, 0-9, dot, and dash, paths of the format:  /path/ or /path//path are not allowed",
-  titleRegexDescription: "Please enter a valid title.",
-  urlRegexDescription: "Please enter a valid url",
-  zipRegexDescription: "Please enter a valid zip code.",
-  countryRegexDescription: "Sorry only alphabetical characters or spaces are allowed. Must be between 3-100 characters.",
-  stateRegexDescription: "Sorry only alphabetical characters or spaces are allowed. Must be between 2-100 characters.",
-  collectionNameRegexDescription: "Collection name only allows : a-z A-Z 0-9. Must be between 3-25 characters."
-};

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/css/custom-theme/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png
----------------------------------------------------------------------
diff --git a/deleted/archive/css/custom-theme/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png b/deleted/archive/css/custom-theme/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png
deleted file mode 100755
index 6348115..0000000
Binary files a/deleted/archive/css/custom-theme/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/css/custom-theme/images/ui-bg_flat_100_deedf7_40x100.png
----------------------------------------------------------------------
diff --git a/deleted/archive/css/custom-theme/images/ui-bg_flat_100_deedf7_40x100.png b/deleted/archive/css/custom-theme/images/ui-bg_flat_100_deedf7_40x100.png
deleted file mode 100755
index 85aaedf..0000000
Binary files a/deleted/archive/css/custom-theme/images/ui-bg_flat_100_deedf7_40x100.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/css/custom-theme/images/ui-bg_flat_100_e4f1fb_40x100.png
----------------------------------------------------------------------
diff --git a/deleted/archive/css/custom-theme/images/ui-bg_flat_100_e4f1fb_40x100.png b/deleted/archive/css/custom-theme/images/ui-bg_flat_100_e4f1fb_40x100.png
deleted file mode 100755
index 5a501f8..0000000
Binary files a/deleted/archive/css/custom-theme/images/ui-bg_flat_100_e4f1fb_40x100.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/css/custom-theme/images/ui-bg_flat_100_f2f5f7_40x100.png
----------------------------------------------------------------------
diff --git a/deleted/archive/css/custom-theme/images/ui-bg_flat_100_f2f5f7_40x100.png b/deleted/archive/css/custom-theme/images/ui-bg_flat_100_f2f5f7_40x100.png
deleted file mode 100755
index f0d20dd..0000000
Binary files a/deleted/archive/css/custom-theme/images/ui-bg_flat_100_f2f5f7_40x100.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/css/custom-theme/images/ui-bg_flat_15_cd0a0a_40x100.png
----------------------------------------------------------------------
diff --git a/deleted/archive/css/custom-theme/images/ui-bg_flat_15_cd0a0a_40x100.png b/deleted/archive/css/custom-theme/images/ui-bg_flat_15_cd0a0a_40x100.png
deleted file mode 100755
index 7680b54..0000000
Binary files a/deleted/archive/css/custom-theme/images/ui-bg_flat_15_cd0a0a_40x100.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/css/custom-theme/images/ui-bg_flat_50_3baae3_40x100.png
----------------------------------------------------------------------
diff --git a/deleted/archive/css/custom-theme/images/ui-bg_flat_50_3baae3_40x100.png b/deleted/archive/css/custom-theme/images/ui-bg_flat_50_3baae3_40x100.png
deleted file mode 100755
index a966891..0000000
Binary files a/deleted/archive/css/custom-theme/images/ui-bg_flat_50_3baae3_40x100.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/css/custom-theme/images/ui-bg_flat_80_d7ebf9_40x100.png
----------------------------------------------------------------------
diff --git a/deleted/archive/css/custom-theme/images/ui-bg_flat_80_d7ebf9_40x100.png b/deleted/archive/css/custom-theme/images/ui-bg_flat_80_d7ebf9_40x100.png
deleted file mode 100755
index 3f3d137..0000000
Binary files a/deleted/archive/css/custom-theme/images/ui-bg_flat_80_d7ebf9_40x100.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/css/custom-theme/images/ui-bg_highlight-hard_70_000000_1x100.png
----------------------------------------------------------------------
diff --git a/deleted/archive/css/custom-theme/images/ui-bg_highlight-hard_70_000000_1x100.png b/deleted/archive/css/custom-theme/images/ui-bg_highlight-hard_70_000000_1x100.png
deleted file mode 100755
index d588297..0000000
Binary files a/deleted/archive/css/custom-theme/images/ui-bg_highlight-hard_70_000000_1x100.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/css/custom-theme/images/ui-bg_highlight-soft_25_ffef8f_1x100.png
----------------------------------------------------------------------
diff --git a/deleted/archive/css/custom-theme/images/ui-bg_highlight-soft_25_ffef8f_1x100.png b/deleted/archive/css/custom-theme/images/ui-bg_highlight-soft_25_ffef8f_1x100.png
deleted file mode 100755
index 54aff0c..0000000
Binary files a/deleted/archive/css/custom-theme/images/ui-bg_highlight-soft_25_ffef8f_1x100.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/css/custom-theme/images/ui-icons_000000_256x240.png
----------------------------------------------------------------------
diff --git a/deleted/archive/css/custom-theme/images/ui-icons_000000_256x240.png b/deleted/archive/css/custom-theme/images/ui-icons_000000_256x240.png
deleted file mode 100644
index 7c211aa..0000000
Binary files a/deleted/archive/css/custom-theme/images/ui-icons_000000_256x240.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/css/custom-theme/images/ui-icons_2694e8_256x240.png
----------------------------------------------------------------------
diff --git a/deleted/archive/css/custom-theme/images/ui-icons_2694e8_256x240.png b/deleted/archive/css/custom-theme/images/ui-icons_2694e8_256x240.png
deleted file mode 100755
index e62b8f7..0000000
Binary files a/deleted/archive/css/custom-theme/images/ui-icons_2694e8_256x240.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/css/custom-theme/images/ui-icons_2e83ff_256x240.png
----------------------------------------------------------------------
diff --git a/deleted/archive/css/custom-theme/images/ui-icons_2e83ff_256x240.png b/deleted/archive/css/custom-theme/images/ui-icons_2e83ff_256x240.png
deleted file mode 100755
index 09d1cdc..0000000
Binary files a/deleted/archive/css/custom-theme/images/ui-icons_2e83ff_256x240.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/css/custom-theme/images/ui-icons_3d80b3_256x240.png
----------------------------------------------------------------------
diff --git a/deleted/archive/css/custom-theme/images/ui-icons_3d80b3_256x240.png b/deleted/archive/css/custom-theme/images/ui-icons_3d80b3_256x240.png
deleted file mode 100755
index 52c3cc6..0000000
Binary files a/deleted/archive/css/custom-theme/images/ui-icons_3d80b3_256x240.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/css/custom-theme/images/ui-icons_72a7cf_256x240.png
----------------------------------------------------------------------
diff --git a/deleted/archive/css/custom-theme/images/ui-icons_72a7cf_256x240.png b/deleted/archive/css/custom-theme/images/ui-icons_72a7cf_256x240.png
deleted file mode 100755
index 0d20b73..0000000
Binary files a/deleted/archive/css/custom-theme/images/ui-icons_72a7cf_256x240.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/css/custom-theme/images/ui-icons_ffffff_256x240.png
----------------------------------------------------------------------
diff --git a/deleted/archive/css/custom-theme/images/ui-icons_ffffff_256x240.png b/deleted/archive/css/custom-theme/images/ui-icons_ffffff_256x240.png
deleted file mode 100755
index 42f8f99..0000000
Binary files a/deleted/archive/css/custom-theme/images/ui-icons_ffffff_256x240.png and /dev/null differ


[21/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/index.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/index.html b/deleted/dist-cov/usergrid-portal/archive/index.html
deleted file mode 100644
index 72f5780..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/index.html
+++ /dev/null
@@ -1,1932 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html"
-      xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html">
-<html>
-<head>
-  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
-  <title>Apigee App Services Admin Portal </title>
-  <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
-  <link rel="stylesheet" type="text/css" href="css/usergrid.css"/>
-  <script src="./config.js" type="text/javascript"></script>
-  <script src="../config.js" type="text/javascript"></script>
-  <script src="js/app/usergrid.appSDK.js" type="text/javascript"></script>
-  <script src="js/app/session.js" type="text/javascript"></script>
-  <script src="js/app/quickLogin.js" type="text/javascript"></script>
-  <script src="js/app/params.js" type="text/javascript"></script>
-  <script src="js/app/sso.js" type="text/javascript"></script>
-  <script type="text/javascript">
-    /*
-     Quick Login: script loads the minimal amount of resources to be able to detect if the user is logged in
-     and if not, send him directly to the SSO page
-     */
-    Usergrid.apiUrl = Usergrid.overrideUrl;
-    Usergrid.Params.parseParams();
-    Usergrid.SSO.setUseSSO(Usergrid.Params.queryParams.use_sso);
-    Usergrid.QuickLogin.init(Usergrid.Params.queryParams,Usergrid.userSession.loggedIn(),
-    Usergrid.SSO.usingSSO());
-
-  </script>
-  <script src="js/lib/jquery-1.7.2.min.js" type="text/javascript"></script>
-  <script src="js/lib/underscore-min.js" type="text/javascript"></script>
-  <script src="js/lib/backbone.js" type="text/javascript"></script>
-  <script src="js/lib/jquery-ui-1.8.18.min.js" type="text/javascript"></script>
-  <script src="js/lib/jquery.jsonp-2.3.1.min.js" type="text/javascript"></script>
-  <script src="js/lib/jquery.dataset.min.js" type="text/javascript"></script>
-  <script src="js/lib/jquery.tmpl.min.js" type="text/javascript"></script>
-  <script src="js/lib/jquery.dform-0.1.3.min.js" type="text/javascript"></script>
-  <script src="js/lib/jquery.ui.timepicker.min.js" type="text/javascript"></script>
-  <script src="js/lib/jquery.ui.statusbar.min.js" type="text/javascript"></script>
-  <script src="js/lib/date.min.js" type="text/javascript"></script>
-  <script src="js/app/helpers.js" type="text/javascript"></script>
-  <script src="js/app/navigation.js" type="text/javascript"></script>
-  <script src="js/app/console.js" type="text/javascript"></script>
-  <script src="js/app/ui/ui.js" type="text/javascript"></script>
-
-</head>
-<body>
-
-<div id="alert-error-message-container" class="alert alert-error" style="width:96.5%; z-index: 99; position: fixed; top: 84px;display: none;">
-  <a href="#" class="close" data-dismiss="alert">&times;</a>
-  <strong id="alert-error-header"></strong>
-  <span id="alert-error-message"></span>
-</div>
-
-<div id="header">
-  <div class="column-in">
-    <div data-dropdown="dropdown" class="main-nav navbar navbar-fixed-top">
-      <div class="header-menus">
-        <div id="publicMenu" class="navbar-inner">
-          <div class="left-header">
-            <h1 class="apigee"><a href="https://apigee.com" target="_blank"><img src="images/logo-white.png">apigee</a></h1>
-            <h2 id="ActualPage1">Admin Portal</h2>
-          </div>
-          <div class="right-header">
-            <ul id="loginMenu" class="nav secondary-nav">
-              <li><a id="login-link" ><i class="icon-user"></i> Login</a></li>
-              <li><a id="signup-link" > Sign Up</a></li>
-              <li><a id="forgot-password-link" ><i class="icon-lock"></i> Forgot Password</a></li>
-            </ul>
-          </div>
-        </div>
-        <div class="navbar-inner privateMenu">
-          <div class="left-header">
-            <h1 class="apigee"><a href="https://apigee.com" target="_blank"><img class="logo" src="images/logo-white.png">apigee</a></h1>
-            <ul class="nav">
-              <li class="portal-name" ><a class="go-home">App Services</a></li>
-             <!-- <li><a href="app/index.html" target="_blank"> Try the New App Services</a></li> -->
-            </ul>
-          </div>
-          <div class="right-header">
-            <ul id="profileMenu" class="nav secondary-nav">
-              <li ><a href="https://accounts.apigee.com/accounts/dashboard" target="_blank">Dashboard</a></li>
-              <li class="dropdown">
-                <a id="account-link1" class="dropdown-toggle" data-toggle="dropdown" ><span id="userEmail">test</span> <span class="caret"></span></a>
-                <ul class="dropdown-menu">
-                  <li><a id="account-link" ><i class="icon-user"></i> Profile</a></li>
-                  <li><a id="logout-link" ><i class="icon-off"></i> Sign Out</a></li>
-                </ul>
-              </li>
-            </ul>
-          </div>
-        </div>
-        <div id="api-activity" class="alert">Loading...</div>
-      </div>
-    </div>
-    <div class="sub-nav navbar navbar-fixed privateMenu" style="display: none">
-      <div class="left-header nav pull-left">
-        <li id="organizations-menu" class="dropdown">
-          <a id="console-links" class="dropdown-toggle" data-toggle="dropdown">
-            <i class="icon-folder-close icon-white"></i>
-            <span>Organizations</span>
-            <span class="caret"></span>
-          </a>
-          <ul class="dropdown-menu">
-            <li><a >loading...</a></li>
-          </ul>
-        </li>
-        <li class="dropdown">
-          <a class="dropdown-toggle" data-toggle="dropdown">
-            <i class="icon-cog icon-white"></i>
-            <span id="nav-app-name">App Name</span>
-            <span class="caret"></span>
-          </a>
-          <ul class="dropdown-menu applications-menu" >
-            <li><a >loading apps...</a></li>
-          </ul>
-        </li>
-      </div>
-      <div class="right-header pull-right">
-        <ul class="nav">
-          <li><a href="http://community.apigee.com/content/apigee-customer-support" target="_blank"> Support</a></li>
-          <li><a href="http://apigee.com/docs/app_services" target="_blank"> Docs</a></li>
-          <li><a href="http://apigee.com/docs/usergrid/codesamples" target="_blank">Examples & SDKs</a></li>
-          <li><a href="https://groups.google.com/forum/?fromgroups#!forum/usergrid" target="_blank"> Google Group</a></li>
-          <li><a href="http://apigee.com/about/products/usergrid" target="_blank"> About</a></li>
-        </ul>
-      </div>
-    </div>
-  </div>
-</div>
-
-<div id="pages">
-
-<div id="message-page" class="container-fluid">
-  <div id="message-area" class="alert alert-info curl-data" style="padding: 20px;">
-    Whoops! We encounterd an error connecting to the API.  Press refresh to try loading the Admin Portal again.
-    <button id="reload-button" class="btn btn-primary" style="float: right; margin: -4px 30px;" onClick="window.location.reload()">Refresh</button>
-  </div>
-</div>
-<div id="login-page" class="container-fluid">
-  <div class="row">
-    <div id="login-area" class="span6 offset1">
-      <div id="login-message" class="alert alert-error">
-        <strong>ERROR</strong>: Your details were incorrect.<br/>
-      </div>
-      <div class="console-section">
-        <div class="well thingy"><span style="margin-left: 30px" class="title">Login</span></div>
-        <form name="login-form" id="login-form" class="form-horizontal">
-          <div class="control-group">
-            <label class="control-label" for="login-email">Email:</label>
-            <div class="controls">
-              <input type="text" name="login-email" id="login-email" class="" value="" size="20"/>
-            </div>
-
-          </div>
-          <div class="control-group">
-            <label class="control-label" for="login-password">Password:</label>
-            <div class="controls">
-              <input type="password" name="login-password" id="login-password" class="" value="" size="20"/>
-
-            </div>
-          </div>
-          <div class="control-group">
-            <div class="controls">
-              <input type="checkbox" value="true" id="remember" name="remember"/>
-              <span>Remember me</span>
-            </div>
-          </div>
-          <div class="form-actions">
-            <div class="submit">
-              <input type="submit" name="button-login" id="button-login" value="Log In" class="btn btn-usergrid"/>
-            </div>
-          </div>
-        </form>
-      </div>
-    </div>
-  </div>
-</div>
-<div id="post-signup-page" class="container-fluid">
-  <div class="row">
-    <div id="login-area" class="span6 offset1">
-      <div class="console-section well thingy">
-        <span class="title">We're holding a seat for you!</span>
-        <br /><br />
-        <p>Thanks for signing up for a spot on our private beta. We will send you an email as soon as we're ready for you!</p>
-        <p>In the mean time, you can stay up to date with App Services on our <a href="https://groups.google.com/forum/?fromgroups#!forum/usergrid">Google Group</a>.</p>
-      </div>
-    </div>
-  </div>
-</div>
-<div id="signup-page" class="container-fluid">
-  <div class="row">
-    <div id="signup-area" class="span6 offset1">
-      <div id="signup-message" class="alert alert-error"></div>
-      <div class="console-section">
-        <div class="well thingy"><span class="title">Register</span> </div>
-        <form name="signup-form" id="signup-form" onsubmit="return false;" class="form-horizontal">
-          <div class="control-group">
-            <label class="control-label" for="signup-organization-name">Organization Account</label>
-            <div class="controls">
-              <input type="text" name="signup-organization-name" id="signup-organization-name" class="" value="" size="20"/>
-            </div>
-          </div>
-          <div class="control-group">
-            <label class="control-label" for="signup-username">Username</label>
-            <div class="controls">
-              <input type="text" name="signup-username" id="signup-username" class="" value="" size="20"/>
-            </div>
-          </div>
-          <div class="control-group">
-            <label class="control-label" for="signup-name">Name </label>
-            <div class="controls">
-              <input type="text" name="signup-name" id="signup-name" class="" value="" size="20"/>
-            </div>
-          </div>
-          <div class="control-group">
-            <label class="control-label" for="signup-email">Email </label>
-            <div class="controls">
-              <input type="text" name="signup-email" id="signup-email" class="" value="" size="20"/>
-            </div>
-          </div>
-          <div class="control-group">
-            <label class="control-label" for="signup-password">Password </label>
-            <div class="controls">
-              <input type="password" name="signup-password" id="signup-password" class="" value="" size="20"/>
-            </div>
-          </div>
-          <div class="control-group">
-            <label class="control-label" for="signup-password-confirm">Confirm </label>
-            <div class="controls">
-              <input type="password" name="signup-password-confirm" id="signup-password-confirm" class="" value="" size="20"/>
-            </div>
-          </div>
-          <div class="form-actions">
-            <div class="submit">
-              <input type="button" name="button-signup" id="button-signup" value="Sign up" class="btn btn-usergrid"/>
-            </div>
-          </div>
-        </form>
-      </div>
-    </div>
-  </div>
-</div>
-<div id="forgot-password-page" class="container">
-  <iframe class="container"></iframe>
-</div>
-
-<div id="console-page" class="">
-<div id="main1">
-<div id="main2">
-
-
-<div id="left" style="">
-  <div class="column-in">
-
-    <div id="sidebar-menu" style="padding-top: 10px;">
-      <ul id="application-panel-buttons" class="nav nav-list">
-        <li id="application-panel-button-dashboard"><a href="#"><i class="icon-th"></i> <span class="nav-menu-text">Org Overview</span></a></li>
-        <li id="application-panel-button-dashboard"><a href="#dashboard" id="dashboard-link"><i class="icon-th"></i> <span class="nav-menu-text">App Overview</span></a></li>
-        <li id="users-link-li"><a href="#users" id="users-link"><i class="icon-user"></i> <span class="nav-menu-text">User Management</span></a></li>
-        <li><a href="#collections" id="collections-link"><i class="icon-book"></i> <span class="nav-menu-text">Data Explorer</span></a></li>
-        <li><a style="display:none" href="#notifications" id="notifications-link"><!--i class="push-notifications-icon"></i--><span style="color: red; font-weight: bold; margin-left: -6px;padding-right: 3px;">New!</span>Notifications</a></li>
-        <li><a href="#activities" id="activities-link"><i class="icon-calendar"></i> <span class="nav-menu-text">Activities</span></a></li>
-        <li><a href="#analytics" id="analytics-link"><i class="icon-signal"></i> <span class="nav-menu-text">Analytics</span></a></li>
-        <li><a href="#properties" id="properties-link"><i class="wrench "></i><span class="nav-menu-text">App Settings</span></a></li>
-        <li><a href="#shell" id="shell-link"><i class="icon-warning-sign"></i> <span class="nav-menu-text">Shell</span></a></li>
-      </ul>
-    </div>
-
-
-  </div>
-</div>
-
-<div id="left2" style="display: none;">
-  <div id="left2-content" class="column-in">
-
-    <div id="sidebar-menu2" style="padding-top: 10px; display: none;">
-      <p class="panel-desc">Data related to your application end-users.</p>
-      <hr style="margin: 0 0 0 10px; width:130px;">
-      <ul id="app-end-users-buttons" class="nav nav-list">
-        <li><a href="#users" id="users-sublink"><span class="nav-menu-text">Users</span></a></li>
-        <li><a href="#groups" id="groups-sublink"><span class="nav-menu-text">Groups</span></a></li>
-        <li><a href="#roles" id="roles-sublink"> <span class="nav-menu-text">Roles</span></a></li>
-      </ul>
-    </div>
-
-    <div id="left-collections-menu" style="display: none;">
-      <p class="panel-desc">Explore your application's data collections.</p>
-      <hr class="col-divider">
-      <div id="collections-menu" style="padding: 10px">
-        <a class="btn" data-toggle="modal" href="#dialog-form-new-collection">Add Collection</a>
-      </div>
-      <hr class="col-divider">
-      <div id="left-collections-content"></div>
-    </div>
-
-    <div id="left-notifications-menu" style="display: none;">
-      <p class="panel-desc">Configure and send push notifications to your app.</p>
-      <hr class="col-divider">
-
-      <ul id="notification-buttons" class="nav nav-list" style="margin-bottom: 5px;">
-        <li><a href="#sendNotification" id="sendNotification-sublink"><span class="nav-menu-text">Send Notification</span></a></li>
-        <li><a href="#messageHistory" id="messageHistory-sublink"><span class="nav-menu-text">Notification History</span></a></li>
-        <li><a href="#configuration" id="configuration-sublink"> <span class="nav-menu-text">Configuration</span></a></li>
-        <li><a href="#getStarted" id="getStarted-sublink"> <span class="nav-menu-text">Getting Started</span></a></li>
-      </ul>
-    </div>
-
-  </div>
-</div>
-
-
-
-
-<div id="middle">
-<div class="column-in" style="padding-top: 10px;">
-
-
-<div id="console-panels" class="container-fluid">
-<div id="organization-panel" style="display: none">
-  <div id="console-panel-nav-bar"></div>
-  <div id="home-messages" class="alert" style="display: none;"></div>
-  <div class="console-section">
-    <div class="well thingy"><span class="title"> Current Organization </span></div>
-    <table id="organizations-table" class="hideable table">
-      <tbody></tbody>
-    </table>
-  </div>
-  <div class="org-page-sections">
-    <div class="well thingy"><span class="title" style="float: left;"> Applications </span>
-      <div class="bar">
-        <a class="btn button bottom-space" data-toggle="modal" href="#dialog-form-new-application"> New Application</a>
-      </div>
-    </div>
-    <table id="organization-applications-table" class="hideable table">
-      <tbody></tbody>
-    </table>
-  </div>
-  <div class="org-page-sections">
-    <div class="well thingy">
-      <span class="title"> Activities </span>
-    </div>
-    <table id="organization-feed-table" class="hideable table">
-      <tbody></tbody>
-    </table>
-  </div>
-  <div class="org-page-sections">
-    <div class="well thingy"><span class="title" style="float: left;"> Organization's Administrators </span>
-      <div class="bar">
-        <a class="btn button bottom-space" data-toggle="modal" href="#dialog-form-new-admin"> New Administrator</a>
-      </div>
-    </div>
-    <table id="organization-admins-table" class="hideable table">
-      <tbody></tbody>
-    </table>
-  </div>
-  <div class="org-page-sections">
-    <div class="well thingy"><span class="title" style="float: left;"> Organization API Credentials </span>
-      <div class="bar">
-        <a class="btn button bottom-space" onclick="Usergrid.console.newOrganizationCredentials(); return false;"> Regenerate Credentials</a>
-      </div>
-    </div>
-    <table class="hideable table">
-      <tbody>
-      <tr>
-        <td>
-          <span class="span2">Client ID</span>
-        </td>
-        <td>
-          <span id="organization-panel-key">...</span>
-        </td>
-      </tr>
-      <tr>
-        <td>
-          <span class="span2">Client Secret</span>
-        </td>
-        <td>
-          <span id="organization-panel-secret">...</span>
-        </td>
-      </tr>
-      </tbody>
-    </table>
-  </div>
-  <form id="dialog-form-force-new-application" class="modal hide fade" action="#">
-    <div class="modal-header">
-      <h4>No applications for this organization</h4>
-    </div>
-    <div class="modal-body">
-      <p class="validateTips">All organizations require at least one application. Please create one.</p>
-      <fieldset>
-        <div class="control-group">
-          <label for="new-application-name">Name</label>
-          <div class="controls">
-            <input type="text" name="name" id="" value="" class="input-xlarge new-application-name"/>
-            <p class="help-block">Length of name must be between 4 and 80</p>
-          </div>
-        </div>
-      </fieldset>
-    </div>
-    <div class="modal-footer">
-      <input type="submit" class="btn btn-usergrid" value="Create"/>
-      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-  </form>
-  <form id="dialog-form-new-admin" class="modal hide fade">
-    <div class="modal-header">
-      <a class="close" data-dismiss="modal">&times</a>
-      <h4>Create new administrator</h4>
-    </div>
-    <div class="modal-body">
-      <fieldset>
-        <div class="control-group">
-          <label for="new-admin-email">Email</label>
-          <div class="controls">
-            <input type="text" name="email" id="new-admin-email" value="" class="input-xlarge"/>
-            <input type="hidden" name="password" id="new-admin-password" value=""/>
-            <input type="hidden" name="" id="new-admin-password-confirm" value=""/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-      </fieldset>
-    </div>
-    <div class="modal-footer">
-      <input type="submit" class="btn btn-usergrid" value="Create"/>
-      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-  </form>
-</div>
-
-<div id="dashboard-panel" style="display: none">
-  <div class="console-section">
-    <div class="well thingy">
-      <span class="title"> Application Dashboard: <span class="app_title"></span> </span>
-    </div>
-    <div class="console-section-contents">
-      <div id="application-panel-table" style="overflow: hidden;">
-        <div id="application-panel-entity-graph" class="span graph"></div>
-        <div id="application-panel-text" class="span">...</div>
-      </div>
-
-      <div style="max-width: 680px; overflow: hidden;">
-        <div>
-          <div id="application-entities-timeline" class="span graph"></div>
-          <div id="application-cpu-time" class="span graph"></div>
-        </div>
-        <div>
-          <div id="application-data-uploaded" class="span graph"></div>
-          <div id="application-data-downloaded" class="span graph"></div>
-        </div>
-      </div>
-    </div>
-  </div>
-</div>
-<div id="account-panel" class="container-fluid hide">
-  <div id="account-update-modal" class="modal hide fade">
-    <div class="modal-header">
-      <a class="close" data-dismiss="modal">&times</a>
-      <h4>Account Settings</h4>
-    </div>
-    <div class="modal-body">
-      <p>Account settings updated.</p>
-    </div>
-    <div class="modal-footer">
-      <button class="btn btn-usergrid" data-dismiss="modal">OK</button>
-    </div>
-  </div>
-  <div class="span offset1">
-    <h2>Account Settings </h2>
-    <div id="account-panels">
-      <div class="panel-content">
-        <div class="console-section">
-          <div class="well thingy"><span class="title"> Personal Account </span> </div>
-          <div class="console-section-contents">
-            <form name="update-account-form" id="update-account-form" class="form-horizontal">
-              <fieldset>
-                <div class="control-group">
-                  <label id="update-account-id-label" class="control-label" for="update-account-id">UUID</label>
-                  <div class="controls">
-                    <span id="update-account-id" class="monospace"></span>
-                  </div>
-                </div>
-                <div class="control-group">
-                  <label class="control-label" for="update-account-username">Username </label>
-                  <div class="controls">
-                    <input type="text" name="update-account-username" id="update-account-username" class="span4" value="" size="20"/>
-                  </div>
-                </div>
-                <div class="control-group">
-                  <label class="control-label" for="update-account-name">Name </label>
-                  <div class="controls">
-                    <input type="text" name="update-account-name" id="update-account-name" class="span4" value="" size="20"/>
-                  </div>
-                </div>
-                <div class="control-group">
-                  <label class="control-label" for="update-account-email"> Email</label>
-                  <div class="controls">
-                    <input type="text" name="update-account-email" id="update-account-email" class="span4" value="" size="20"/>
-                  </div>
-                </div>
-                <div class="control-group">
-                  <label class="control-label" for="update-account-picture-img">Picture <br />(from <a href="http://gravatar.com">gravatar.com</a>) </label>
-                  <div class="controls">
-                    <img id="update-account-picture-img" src="" class="" width="50" />
-                  </div>
-                </div>
-                <span class="help-block">Leave blank any of the following to keep the current password unchanged</span>
-                <br />
-                <div class="control-group">
-                  <label class="control-label" for="old-account-password">Old Password</label>
-                  <div class="controls">
-                    <input type="password" name="old-account-password" id="old-account-password" class="span4" value="" size="20"/>
-                  </div>
-                </div>
-                <div class="control-group">
-                  <label class="control-label" for="update-account-password">New Password</label>
-                  <div class="controls">
-                    <input type="password" name="update-account-password" id="update-account-password" class="span4" value="" size="20"/>
-                  </div>
-                </div>
-                <div class="control-group">
-                  <label class="control-label" for="update-account-password-repeat">Confirm New Password</label>
-                  <div class="controls">
-                    <input type="password" name="update-account-password-repeat" id="update-account-password-repeat" class="span4" value="" size="20"/>
-                  </div>
-                </div>
-              </fieldset>
-              <div class="form-actions">
-                <input type="button" name="button-update-account" id="button-update-account" value="Update" class="btn btn-usergrid span"/>
-              </div>
-            </form>
-          </div>
-        </div>
-      </div>
-    </div>
-    <div class="panel-content">
-      <div class="console-section">
-        <div class="well thingy"><span class="title"> Organizations </span>
-          <div class="bar">
-            <a class="" data-toggle="modal" href="#dialog-form-new-organization"> Add </a>
-          </div>
-        </div>
-        <table class="table" id="organizations">
-        </table>
-      </div>
-    </div>
-    <form id="dialog-form-new-organization" class="modal hide fade">
-      <div class="modal-header">
-        <a class="close" data-dismiss="modal">&times</a>
-        <h4>Create new organization</h4>
-      </div>
-      <div class="modal-body">
-        <p class="validateTips">All form fields are required.</p>
-        <fieldset>
-          <div class="control-group">
-            <label for="new-organization-name">Name</label>
-            <div class="controls">
-              <input type="text" name="organization" id="new-organization-name" class="input-xlarge"/>
-              <p class="help-block hide"></p>
-            </div>
-          </div>
-        </fieldset>
-      </div>
-      <div class="modal-footer">
-        <input type="submit" class="btn btn-usergrid" value="Create"/>
-        <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-      </div>
-    </form>
-  </div>
-</div>
-<div id="users-panel" class="panel-buffer">
-  <ul id="users-panel-tab-bar" class="nav nav-tabs">
-    <li class="active"><a id="button-users-list">List</a></li>
-  </ul>
-  <div id="users-panel-list" class="panel-content">
-    <div id="users-messages" class="alert" style="display: none;"></div>
-
-    <div class="console-section">
-      <span class="title"> App Users </span>
-      <div class="well thingy">
-        <div class="bar">
-          <input onkeyup="Usergrid.console.searchUsers();" type="text" name="search-user-username" id="search-user-username" class="input-small search" placeholder="Search"/>
-          <select id="search-user-type" onChange="Usergrid.console.searchUsers();" class="input-medium search">
-            <option value="username">Username</option>
-            <option value="name">Full Name</option>
-          </select>
-
-          <a class="btn " data-toggle="modal" id="delete-users-link" > Delete</a>
-          <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-new-user"> Create new user</a>
-
-
-
-        </div>
-      </div>
-      <table id="users-table" class="table">
-        <tbody></tbody>
-      </table>
-      <ul id="users-pagination" class="pager">
-        <li id="users-previous" class="previous"><a >&larr; Previous</a></li>
-        <li id="users-next" class="next"><a >Next &rarr;</a></li>
-      </ul>
-    </div>
-    <div id="users-curl-container" class="row-fluid curl-container ">
-    </div>
-  </div>
-  <form id="dialog-form-new-user" class="modal hide fade">
-    <div class="modal-header">
-      <a class="close" data-dismiss="modal">&times</a>
-      <h4>Create new user</h4>
-    </div>
-    <div class="modal-body">
-      <p class="validateTips">Username is required.</p>
-      <fieldset>
-        <div class="control-group">
-          <label for="new-user-username">Username</label>
-          <div class="controls">
-            <input type="text" name="username" id="new-user-username" class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-        <div class="control-group">
-          <label for="new-user-fullname">Full name</label>
-          <div class="controls">
-            <input type="text" name="name" id="new-user-fullname" class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-        <div class="control-group">
-          <label for="new-user-email">Email</label>
-          <div class="controls">
-            <input type="text" name="email" id="new-user-email" class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-        <div class="control-group">
-          <label for="new-user-password">Password</label>
-          <div class="controls">
-            <input type="password" name="password" id="new-user-password" class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-        <div class="control-group">
-          <label for="new-user-validate-password">Confirm password</label>
-          <div class="controls">
-            <input type="password" name="validate-password" id="new-user-validate-password" class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-      </fieldset>
-    </div>
-    <div class="modal-footer">
-      <input type="submit" class="btn btn-usergrid" value="Create"/>
-      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-  </form>
-</div>
-
-<form id="confirmAction" class="modal hide fade">
-  <div class="modal-header">
-    <a class="close" data-dismiss="modal">&times</a>
-    <h4></h4>
-  </div>
-  <div class="modal-body">
-    <p></p>
-  </div>
-  <div class="modal-footer">
-    <input type="submit" class="btn btn-danger" value="Yes, continue"/>
-    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-  </div>
-</form>
-<form id="confirmDialog" class="modal hide fade">
-  <div class="modal-header">
-    <a class="close" data-dismiss="modal">&times</a>
-    <h4>Are you sure?</h4>
-  </div>
-  <div class="modal-body">
-    <p></p>
-  </div>
-  <div class="modal-footer">
-    <input type="submit" class="btn btn-danger" value="Yes, delete"/>
-    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-  </div>
-</form>
-<form id="alertModal" class="modal hide fade">
-  <div class="modal-header">
-    <a class="close" data-dismiss="modal">&times</a>
-    <h4></h4>
-  </div>
-  <div class="modal-body">
-    <p></p>
-  </div>
-  <div class="modal-footer">
-    <input type="reset" class="btn btn-usergrid" value="OK" data-dismiss="modal"/>
-  </div>
-</form>
-
-<form id="queryHelpModal" class="modal hide fade">
-  <div class="modal-header">
-    <a class="close" data-dismiss="modal">&times</a>
-    <h4>Making Queries</h4>
-  </div>
-  <div class="modal-body">
-    <p><strong>Making Queries</strong></p>
-    <p>Use the Query String field to enter SQL-style queries against your collections.  For example, to select
-      all users whose name starts with <strong>fred</strong>:</p>
-    <pre>select * where name = 'fred*'</pre>
-    <p>To select all activities where a category is <strong>usermessage</strong> and content contains the word
-      <strong>hello</strong> in a string:</p>
-    <pre class="code-para">select * where category = 'usermessage' and content contains 'hello'</pre>
-    <a class="outside-link" target="_blank" href="http://apigee.com/docs/usergrid/content/queries-and-parameters"><strong>Learn more about Queries and Parameters.</strong></a>
-  </div>
-  <div class="modal-footer">
-    <input type="reset" class="btn btn-usergrid" value="close" data-dismiss="modal"/>
-  </div>
-</form>
-
-<form id="queryPathHelpModal" class="modal hide fade">
-  <div class="modal-header">
-    <a class="close" data-dismiss="modal">&times</a>
-    <h4>Query Path</h4>
-  </div>
-  <div class="modal-body">
-    <p><strong>Query Path</strong></p>
-    <p>The query path is typically just the name of the collection you want to access.  For example, if you want to work with a <strong>dogs</strong> collection,
-      then your path will be:
-    </p>
-    <pre>/dogs</pre>
-    <p>You may also have a more complex path, such as the case when you want to make a connection between two entities.
-      To create a <strong>likes</strong> connection between a user named <strong>Fred</strong> and a dog named <strong>Dino</strong>,
-      do a <strong>POST</strong> operation to:
-    </p>
-    <pre class="code-para">/users/fred/likes/dogs/dino</pre>
-    <a class="outside-link" target="_blank" href="http://apigee.com/docs/usergrid/content/entity-relationships"><strong>Learn more about Entity Relationships.</strong></a>
-  </div>
-  <div class="modal-footer">
-    <input type="reset" class="btn btn-usergrid" value="close" data-dismiss="modal"/>
-  </div>
-</form>
-
-<form id="queryLimitHelpModal" class="modal hide fade">
-  <div class="modal-header">
-    <a class="close" data-dismiss="modal">&times</a>
-    <h4>Limit</h4>
-  </div>
-  <div class="modal-body">
-    <p><strong>Limit</strong></p>
-    <p>The <strong>limit parameter</strong> is used to tell the API how many results you want to have returned from the API call.</p>
-    <p>The <strong>default</strong> setting is <strong>10</strong>.</p>
-    <p>The <strong>max</strong> setting is <strong>999</strong>.</p>
-    <p>This parameter is appended to the end of the query string to be sent to the API.  For example, a limit of 100:</p>
-    <pre>GET /dogs?limit=100</pre>
-    <a class="outside-link" target="_blank" href="http://apigee.com/docs/usergrid/content/queries-and-parameters"><strong>Learn more about Queries and Parameters.</strong></a>
-  </div>
-  <div class="modal-footer">
-    <input type="reset" class="btn btn-usergrid" value="close" data-dismiss="modal"/>
-  </div>
-</form>
-
-<form id="queryJsonHelpModal" class="modal hide fade">
-  <div class="modal-header">
-    <a class="close" data-dismiss="modal">&times</a>
-    <h4>JSON</h4>
-  </div>
-  <div class="modal-body">
-    <p><strong>JSON</strong></p>
-    <p>The <strong>JSON</strong> is the object notation used to describe your object.</p>
-    <p>This parameter makes up the body that is sent with POST and PUT requests</p>
-    <pre>{
-            "uuid":"00000000-0000-0000-000000000000",
-            "type":"book",
-            "title":"Great Expectations"
-          }</pre>
-    <a class="outside-link" target="_blank" href="http://apigee.com/docs/usergrid/content/using-api"><strong>Learn more about using the API.</strong></a>
-  </div>
-  <div class="modal-footer">
-    <input type="reset" class="btn btn-usergrid" value="close" data-dismiss="modal"/>
-  </div>
-</form>
-
-<form id="queryMethodHelpModal" class="modal hide fade">
-  <div class="modal-header">
-    <a class="close" data-dismiss="modal">&times</a>
-    <h4>Method</h4>
-  </div>
-  <div class="modal-body">
-    <p><strong>Method</strong></p>
-    <p>The <strong>Method</strong> is used to tell the API what type of operation you want to perform.
-      These <strong>http methods</strong> map to the standard <strong>CRUD</strong> methods:</p>
-    <p><strong>POST</strong> is used for <strong>CREATE</strong></p>
-    <p><strong>GET</strong> is used for <strong>READ</strong></p>
-    <p><strong>PUT</strong> is used for <strong>UPDATE</strong></p>
-    <p><strong>DELETE</strong> is used for <strong>DELETE</strong></p>
-    <p>Using these four methods, you can perform any type of operation against the API.  For example, to READ
-      from a collection called <strong>/dogs</strong>:</p>
-    <pre>GET /dogs</pre>
-    <a class="outside-link" target="_blank" href="http://apigee.com/docs/usergrid/content/using-api"><strong>Learn more about using the API.</strong></a>
-  </div>
-  <div class="modal-footer">
-    <input type="reset" class="btn btn-usergrid" value="close" data-dismiss="modal"/>
-  </div>
-</form>
-
-
-<form id="dialog-form-new-application" class="modal hide fade" action="#">
-  <div class="modal-header">
-    <a class="close" data-dismiss="modal">&times</a>
-    <h4>Create new application</h4>
-  </div>
-  <div class="modal-body">
-    <p class="validateTips">All form fields are required.</p>
-    <fieldset>
-      <div class="control-group">
-        <label for="new-application-name">Name</label>
-        <div class="controls">
-          <input type="text" name="name" id="" value="" class="input-xlarge new-application-name"/>
-          <p class="help-block">Length of name must be between 4 and 80</p>
-        </div>
-      </div>
-    </fieldset>
-  </div>
-  <div class="modal-footer">
-    <input type="submit" class="btn btn-usergrid" value="Create"/>
-    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-  </div>
-</form>
-
-<div id="user-panel" class="panel-buffer">
-  <ul id="user-panel-tab-bar" class="nav nav-tabs">
-    <li><a id="button-user-list">List</a></li>
-    <li class="active"><a id="button-user-profile">Profile</a></li>
-    <li><a id="button-user-memberships">Groups</a></li>
-    <li><a id="button-user-activities">Activities</a></li>
-    <li><a id="button-user-graph">Graph</a></li>
-    <li><a id="button-user-permissions">Roles &amp; Permissions</a></li>
-  </ul>
-  <!--
-  <div id="user-panel-tab-bar">
-    <a class="tab-button btn" id="button-user-list" >List</a>
-    <a class="tab-button btn active" id="button-user-profile" >Profile</a>
-    <a class="tab-button btn" id="button-user-memberships" >Groups</a>
-    <a class="tab-button btn" id="button-user-activities" >Activities</a>
-    <a class="tab-button btn" id="button-user-graph" >Graph</a>
-    <a class="tab-button btn" id="button-user-permissions" >Roles & Permissions</a>
-  </div>
-  -->
-  <div id="user-panel-profile" class="panel-content"></div>
-  <div id="user-panel-memberships" class="panel-content" style="display: none;"></div>
-  <div id="user-panel-activities" class="panel-content" style="display: none;"></div>
-  <div id="user-panel-graph" class="panel-content" style="display: none;"></div>
-  <div id="user-panel-permissions" class="panel-content" style="display: none;"></div>
-  <form id="dialog-form-add-user-to-role" class="modal hide fade">
-    <div class="modal-header">
-      <a class="close" data-dismiss="modal">&times</a>
-      <h4>Add this user to a Role</h4>
-    </div>
-    <div class="modal-body">
-      <p class="validateTips">Search for the role you want to add to this user.</p>
-      <fieldset>
-        <div class="control-group">
-          <label for="search-role-name-input">Role</label>
-          <div class="controls">
-            <input type="text" name="search-role-name-input" id="search-role-name-input" class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-      </fieldset>
-    </div>
-    <div class="modal-footer">
-      <input type="submit" class="btn btn-usergrid" value="Add"/>
-      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-  </form>
-  <form id="dialog-form-add-group-to-user" class="modal hide fade">
-    <div class="modal-header">
-      <a class="close" data-dismiss="modal">&times</a>
-      <h4>Add this user to a Group</h4>
-    </div>
-    <div class="modal-body">
-      <p class="validateTips">Search for the group you want to add this user to.</p>
-      <fieldset>
-        <div class="control-group">
-          <label for="search-group-name-input">Group</label>
-          <div class="controls">
-            <input type="text" name="search-group-name-input" id="search-group-name-input" class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-      </fieldset>
-    </div>
-    <div class="modal-footer">
-      <input type="submit" class="btn btn-usergrid" value="Add"/>
-      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-  </form>
-  <form id="dialog-form-follow-user" class="modal hide fade">
-    <div class="modal-header">
-      <a class="close" data-dismiss="modal">&times</a>
-      <h4>Follow this User</h4>
-    </div>
-    <div class="modal-body">
-      <p class="validateTips">Search for the user you want to Follow.</p>
-      <fieldset>
-        <div class="control-group">
-          <label for="search-follow-username-input">User</label>
-          <div class="controls">
-            <input type="text" name="search-follow-username-input" id="search-follow-username-input"
-                   class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-      </fieldset>
-    </div>
-    <div class="modal-footer">
-      <input type="submit" class="btn btn-usergrid" value="Follow"/>
-      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-  </form>
-</div>
-
-
-
-<div id="groups-panel" class="panel-buffer">
-  <ul class="nav nav-tabs">
-    <li class="active"><a id="button-groups-list">List</a></li>
-  </ul>
-  <div id="groups-panel-list" class="panel-content">
-    <div id="groups-messages" class="alert" style="display: none;"></div>
-    <div class="console-section">
-      <span class="title"> App Groups </span>
-      <div class="well thingy">
-        <div class="bar">
-          <input onkeyup="Usergrid.console.searchGroups();" type="text" name="search-user-groupname" id="search-user-groupname" class="input-small search" placeholder="Search"/>
-          <select id="search-group-type" onChange="Usergrid.console.searchGroups();" class="input-medium search">
-            <option value="path">Path</option>
-            <option value="title">Group Name</option>
-          </select>
-
-          <a class="btn" id="delete-groups-link" > Delete</a>
-          <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-new-group"> Create new group</a>
-
-        </div>
-      </div>
-      <table id="groups-table" class="table">
-        <tbody></tbody>
-      </table>
-      <ul id="groups-pagination" class="pager">
-        <li id="groups-previous" class="previous"><a >&larr; Previous</a></li>
-        <li id="groups-next" class="next"><a >Next &rarr;</a></li>
-      </ul>
-    </div>
-    <div id="groups-curl-container" class="row-fluid curl-container ">
-    </div>
-  </div>
-  <form id="dialog-form-new-group" class="modal hide fade">
-    <div class="modal-header">
-      <a class="close" data-dismiss="modal">&times</a>
-      <h4>Create new group</h4>
-    </div>
-    <div class="modal-body">
-      <p class="validateTips">All form fields are required.</p>
-      <fieldset>
-        <div class="control-group">
-          <label for="new-group-title">Display Name</label>
-          <div class="controls">
-            <input type="text" name="title" id="new-group-title" value="" class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-        <div class="control-group">
-          <label for="new-group-path">Group Path</label>
-          <div class="controls">
-            <input type="text" name="path" id="new-group-path" value="" class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-      </fieldset>
-    </div>
-    <div class="modal-footer">
-      <input type="submit" class="btn btn-usergrid" value="Create"/>
-      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-  </form>
-</div>
-<div id="group-panel" class="panel-buffer">
-  <ul id="group-panel-tab-bar" class="nav nav-tabs">
-    <li><a id="button-group-list">List</a></li>
-    <li class="active"><a id="button-group-details">Details</a></li>
-    <li><a id="button-group-memberships">Members</a></li>
-    <li><a id="button-group-activities">Activities</a></li>
-    <li><a id="button-group-permissions">Roles &amp; Permissions</a></li>
-  </ul>
-  <!--
-  <div id="group-panel-tab-bar">
-    <a class="tab-button btn" id="button-group-list" >List</a>
-    <a class="tab-button btn active" id="button-group-details" >Details</a>
-    <a class="tab-button btn" id="button-group-memberships" >Members</a>
-    <a class="tab-button btn" id="button-group-activities" >Activities</a>
-    <a class="tab-button btn" id="button-group-permissions" >Roles & Permissions</a>
-  </div-->
-  <div id="group-panel-details" class="panel-content"></div>
-  <div id="group-panel-memberships" class="panel-content" style="display: none;"></div>
-  <div id="group-panel-activities" class="panel-content" style="display: none;"></div>
-  <div id="group-panel-permissions" class="panel-content" style="display: none;"></div>
-  <form id="dialog-form-add-user-to-group" class="modal hide fade">
-    <div class="modal-header">
-      <a class="close" data-dismiss="modal">&times</a>
-      <h4>Add a User to this Group</h4>
-    </div>
-    <div class="modal-body">
-      <p class="validateTips">Search for the user you want to add to this group.</p>
-      <fieldset>
-        <div class="control-group">
-          <label for="search-user-name-input">User</label>
-          <div class="controls">
-            <input type="text" name="search-user-name-input" id="search-user-name-input" class="input-xlarge" autocomplete="off"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-      </fieldset>
-    </div>
-    <div class="modal-footer">
-      <input type="submit" class="btn btn-usergrid" value="Add"/>
-      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-  </form>
-  <form id="dialog-form-add-role-to-group" class="modal hide fade">
-    <div class="modal-header">
-      <a class="close" data-dismiss="modal">&times</a>
-      <h4>Add a Role to this Group</h4>
-    </div>
-    <div class="modal-body">
-      <p class="validateTips">Search for the role you want to add to this group.</p>
-      <fieldset>
-        <div class="control-group">
-          <label for="search-groups-role-name-input">Role</label>
-          <div class="controls">
-            <input type="text" name="search-groups-role-name-input" id="search-groups-role-name-input" class="input-xlarge" autocomplete="off"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-      </fieldset>
-    </div>
-    <div class="modal-footer">
-      <input type="submit" class="btn btn-usergrid" value="Add"/>
-      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-  </form>
-</div>
-<div id="roles-panel" class="panel-buffer">
-  <ul id="roles-panel-tab-bar" class="nav nav-tabs">
-    <li class="active"><a id="button-roles-list">List</a></li>
-  </ul>
-  <div id="roles-panel-list" class="panel-content">
-    <div id="roles-messages" class="alert" style="display: none;"></div>
-    <div class="console-section">
-      <span class="title"> App Roles </span>
-      <div class="well thingy">
-        <div class="bar">
-
-          <a class="btn" id="delete-roles-link" > Delete</a>
-          <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-new-role"> Add Role</a>
-
-
-        </div>
-      </div>
-      <table id="roles-table" class="table">
-        <tbody></tbody>
-      </table>
-      <ul id="roles-pagination" class="pager">
-        <li id="roles-previous" class="previous"><a >&larr; Previous</a></li>
-        <li id="roles-next" class="next"><a >Next &rarr;</a></li>
-      </ul>
-    </div>
-    <div id="roles-curl-container" class="row-fluid curl-container ">
-    </div>
-  </div>
-  <div id="roles-panel-search" class="panel-content" style="display: none;">
-    <div class="console-section">
-      <div class="well thingy"><span class="title"> Role Settings: <span class="app_title"></span></span></div>
-      <div class="console-section-contents">
-        <div id="roles-settings">
-          <h2>No Permissions.</h2>
-        </div>
-      </div>
-    </div>
-  </div>
-  <form id="dialog-form-new-role" class="modal hide fade">
-    <div class="modal-header">
-      <a class="close" data-dismiss="modal">&times</a>
-      <h4>Create new Role</h4>
-    </div>
-    <div class="modal-body">
-      <p class="validateTips">All form fields are required.</p>
-      <fieldset>
-        <div class="control-group">
-          <label for="new-role-title">Display Name</label>
-          <div class="controls">
-            <input type="text" name="title" id="new-role-title" class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-        <div class="control-group">
-          <label for="new-role-name">Name</label>
-          <div class="controls">
-            <input type="text" name="name" id="new-role-name" class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-      </fieldset>
-    </div>
-    <div class="modal-footer">
-      <input type="submit" class="btn btn-usergrid" value="Create"/>
-      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-  </form>
-</div>
-<div id="role-panel" class="panel-buffer">
-  <ul id="role-panel-tab-bar" class="nav nav-tabs">
-    <li><a id="button-role-list">List</a></li>
-    <li class="active"><a id="button-role-settings">Settings</a></li>
-    <li><a id="button-role-users">Users</a></li>
-    <li><a id="button-role-groups">Groups</a></li>
-  </ul>
-
-  <!--div id="role-panel-tab-bar">
-    <a class="tab-button btn" id="button-role-list" >List</a>
-    <a class="tab-button btn active" id="button-role-settings" >Settings</a>
-    <a class="tab-button btn" id="button-role-users" >Users</a>
-    <a class="tab-button btn" id="button-role-groups" >Groups</a>
-  </div-->
-
-  <div id="role-panel-settings" class="panel-content">
-    <div class="console-section">
-      <div class="well thingy"> <span id="role-section-title" class="title">Role</span> </div>
-      <div class="console-section-contents">
-        <div id="role-permissions-messages" class="alert" style="display: none"></div>
-        <div id="role-permissions">
-          <h2>...</h2>
-        </div>
-      </div>
-    </div>
-    <div id="role-permissions-curl-container" class="curl-container">
-    </div>
-  </div>
-  <div id="role-panel-users" class="panel-content">
-    <div class="console-section" id="role-users"></div>
-    <div id="role-users-curl-container" class="curl-container">
-    </div>
-  </div>
-  <div id="role-panel-groups" class="panel-content"></div>
-  <form id="dialog-form-add-group-to-role" class="modal hide fade">
-    <div class="modal-header">
-      <a class="close" data-dismiss="modal">&times</a>
-      <h4>Add a Group to this Role</h4>
-    </div>
-    <div class="modal-body">
-      <p class="validateTips">Search for the group you want to add to this role.</p>
-      <fieldset>
-        <div class="control-group">
-          <label for="search-roles-group-name-input">Group</label>
-          <div class="controls">
-            <input type="text" name="search-roles-group-name-input" id="search-roles-group-name-input" class="input-xlarge" autocomplete="off"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-      </fieldset>
-    </div>
-    <div class="modal-footer">
-      <input type="submit" class="btn btn-usergrid" value="Add"/>
-      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-  </form>
-  <form id="dialog-form-add-role-to-user" class="modal hide fade">
-    <div class="modal-header">
-      <a class="close" data-dismiss="modal">&times</a>
-      <h4>Add a user to this Role</h4>
-    </div>
-    <div class="modal-body">
-      <p class="validateTips">Search for the user you want to add to this role.</p>
-      <fieldset>
-        <div class="control-group">
-          <label for="search-roles-user-name-input">User</label>
-          <div class="controls">
-            <input type="text" name="search-roles-user-name-input" id="search-roles-user-name-input" class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-      </fieldset>
-    </div>
-    <div class="modal-footer">
-      <input type="submit" class="btn btn-usergrid" value="Add"/>
-      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-  </form>
-</div>
-<div id="activities-panel" style="margin-top: 10px; display: none;">
-  <div id="activities-panel-list" class="panel-content">
-    <div class="console-section">
-      <span class="title"> Activities </span>
-      <div class="well thingy">
-        <div class="bar" style="margin-bottom: 25px;">
-          <input onkeyup="Usergrid.console.searchActivities();" type="text" name="search-activities" id="search-activities" class="input-small search" placeholder="Search"/>
-          <select id="search-activities-type" onChange="Usergrid.console.searchActivities();" class="input-medium search">
-            <option value="content">Content</option>
-            <option value="actor">Actor</option>
-          </select>
-          <a class="btn" onclick="Usergrid.console.requestActivities(); return false;">Update Activities</a>
-        </div>
-      </div>
-      <table id="activities-table" class="table">
-        <tbody></tbody>
-      </table>
-      <ul id="activities-pagination" class="pager">
-        <li id="activities-previous" class="previous"><a >&larr; Previous</a></li>
-        <li id="activities-next" class="next"><a >Next &rarr;</a></li>
-      </ul>
-    </div>
-  </div>
-</div>
-<div id="analytics-panel" style="display: none">
-  <div class="panel-content">
-    <div class="console-section">
-      <div class="well thingy"><span class="title"> Analytics </span></div>
-      <div class="console-section-contents">
-        <div id="analytics-time">
-          <form id="resolutionSelectForm" action="" class="form-horizontal">
-            <div class="row">
-              <fieldset class="span">
-                <div id="analytics-start-time-span" class="control-group">
-                  <label class="control-label" for="start-date">Start:</label>
-                  <div class="controls">
-                    <input type="text" id="start-date" class="fixSpan2"/>
-                    <input type="text" id="start-time" value="12:00 AM" class="fixSpan2"/>
-                  </div>
-                </div>
-                <div id="analytics-end-time-span" class="control-group" style="float: left">
-                  <label class="control-label" for="end-date">End:</label>
-                  <div class="controls">
-                    <input type="text" id="end-date" class="fixSpan2"/>
-                    <input type="text" id="end-time" value="12:00 AM" class="fixSpan2"/>
-                  </div>
-                </div>
-                <div class="control-group">
-                  <label class="control-label" for="resolutionSelect">Resolution</label>
-                  <div class="controls">
-                    <select name="resolutionSelect" id="resolutionSelect">
-                      <option value="all">All</option>
-                      <option value="minute">Minute</option>
-                      <option value="five_minutes">5 Minutes</option>
-                      <option value="half_hour">30 Minutes</option>
-                      <option value="hour">Hour</option>
-                      <option value="six_hour">6 Hours</option>
-                      <option value="half_day">Half Day</option>
-                      <option value="day" selected="selected">Day</option>
-                      <option value="week">Week</option>
-                      <option value="month">Month</option>
-                    </select>
-                  </div>
-                </div>
-              </fieldset>
-              <fieldset class="span offset1">
-                <div id="analytics-counter-names"></div>
-              </fieldset>
-            </div>
-            <div class="form-actions">
-              <button class="btn btn-primary" id="button-analytics-generate" style="margin-left: -80px">Generate</button>
-            </div>
-          </form>
-        </div>
-      </div>
-    </div>
-    <div class="console-section">
-      <div class="well thingy"><span class="title"> Result Analytics <span class="app_title"></span></span></div>
-      <div class="console-section-contents">
-        <div id="analytics-graph"></div>
-        <div id="analytics-graph-area" style="overflow-x: auto;"></div>
-      </div>
-    </div>
-  </div>
-</div>
-<div id="properties-panel" style="display: none">
-  <div class="console-section">
-    <div class="well thingy"><span class="title"> Application Properties: <span class="app_title"></span></span>
-      <div class="bar" style="margin-bottom: 25px;">
-        <a class="btn"  onclick="Usergrid.console.newApplicationCredentials(); return false;">Regenerate Credentials</a>
-      </div>
-    </div>
-    <div class="console-section-contents">
-      <table id="application-panel-key-table" class="table">
-        <tr>
-          <td>
-            <span class="span3">Client ID</span>
-          </td>
-          <td>
-            <span id="application-panel-key">...</span>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <span class="span3">Client Secret</span>
-          </td>
-          <td>
-            <span id="application-panel-secret">...</span>
-          </td>
-        </tr>
-      </table>
-    </div>
-  </div>
-</div>
-<div id="shell-panel" style="display: none">
-  <div id="shell-content" class="console-section">
-    <div class="well thingy"> <span class="title"> Interactive Shell </span></div>
-    <div class="console-section-contents">
-      <div id="shell-input-div">
-        <p>   Type "help" to view a list of the available commands.</p><hr />
-        <span>&nbsp;&gt&gt; </span>
-        <textarea id="shell-input" rows="2" autofocus="autofocus"></textarea>
-      </div>
-                    <pre id="shell-output" class="prettyprint lang-js" style="overflow-x: auto; height: 400px;">
-                      <p>  Response:</p><hr />
-                    </pre>
-    </div>
-  </div>
-  <a href="#" id="fixme">-</a>
-</div>
-
-
-
-
-<div id="notifications-panel" class="panel-buffer">
-  <div id="notifications-content" class="console-section"></div>
-</div>
-
-<div id="sendNotification-panel" class="panel-buffer" style="margin-top: 10px;">
-  <div class="alert" id="notification-scheduled-status" style="display:none;"></div>
-  <span class="title"> Compose Push Notification </span>
-  <div style="padding-top: 10px;">
-    <form id="query-inputs" class="notifcations-form">
-      <div class="well" style="padding: 0px; margin-bottom: 0px;">
-        <span class="title">Notifier and Recipients</span>
-      </div>
-      Choose the Notifier (a configured notification service) to connect with for this push notification. Only users
-      with devices registered with this notifier will receive the push notification. If a group is selected, only the users
-      in the selected goup, with devices registered with this notifier, will receive the push notification.
-
-      <label for="send-notification-notifier">Notifier:</label>
-      <select id="send-notification-notifier">
-        <option value="">Choose Notifier</option>
-      </select>
-
-      <div class="control-group">
-        <input type="radio" name="notification-user-group" id="notification-user-group-all" value="all" checked> All Devices
-        <input type="radio" name="notification-user-group" id="notification-user-group-devices" value="devices"> Devices
-        <input type="radio" name="notification-user-group" id="notification-user-group-users" value="users"> Users
-        <input type="radio" name="notification-user-group" id="notification-user-group-group" value="groups"> Groups
-      </div>
-
-      <div class="control-group">
-        <div id="notificaitons-devices-select-container" style="display: none">
-          Enter the device uuids:<br>
-          <textarea id="devices-list" placeholder="device-UUID-1,device-UUID-2,device-UUID-3,etc..."  class="span6 pull-left" rows="5"></textarea>
-        </div><div id="notificaitons-users-select-container" style="display: none">
-        Enter the usernames:<br>
-        <textarea id="user-list" placeholder="username1,username2,username3,etc..."  class="span6 pull-left" rows="5"></textarea>
-        <!--br>
-        <div class="thingy">
-        Or, use a form to look them up:<br>
-        <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-add-user-to-notification"> Add User</a>
-        </div-->
-      </div>
-        <div id="notificaitons-group-select-container" style="display: none">
-          Enter the group paths:<br>
-          <textarea id="group-list" placeholder="group-path-1,group-path-2,group-path-3,etc..."  class="span6 pull-left" rows="5"></textarea>
-          <!--br>
-          <div class="thingy">
-          <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-add-group-to-notification"> Add Group</a>
-          </div-->
-        </div>
-      </div>
-
-      <hr>
-      <div class="well thingy">
-        <span class="title">Notifier Message</span>
-      </div>
-      Edit the "alert" message in the JSON payload.
-      <div class="controls">
-        <div>
-          <textarea id="notification-json" class="span6 pull-left" rows="3">Your text here</textarea>
-          <br>
-          <a target="_blank" href="http://apigee.com/docs/usergrid/content/push-notifications" class="notifications-links">Learn more about messages in our docs</a>
-        </div>
-      </div>
-      <div style="display: none;">
-        <a class="btn" id="reset-notifications-payload" >Reset Payload</a>
-        <a class="btn" id="validate-notifications-json" >Validate JSON</a>
-        <span id="notifications-json-status" class="alert" style="width: 400px;">Validate your JSON!</span>
-      </div>
-      <hr>
-      <div class="well thingy">
-        <span class="title">Delivery</span>
-      </div>
-      Select whether to schedule this push notification for immediate delivery or at a future date and time.
-
-      <div class="control-group">
-        <input type="radio" name="notification-schedule-time" id="notification-schedule-time-now"  value="now" checked> Now
-        <input type="radio" name="notification-schedule-time" id="notification-schedule-time-later"  value="later"> Schedule for later
-      </div>
-      <div id="notification-schedule-time-controls" style="display: none;">
-        <div id="notifications-start-time-span" class="control-group">
-          <label class="control-label" for="notification-schedule-time-date">Start Date/Time:</label>
-          <div class="controls">
-            <input type="text" id="notification-schedule-time-date" class="fixSpan2"/>
-            <input type="text" id="notification-schedule-time-time" value="12:00 AM" class="fixSpan2"/> (<span id="gmt_display"></span>)
-          </div>
-        </div>
-      </div>
-      <div style="display:none;">
-        <hr>
-        <div class="well thingy">
-          <span class="title">Push Notification API Preview</span>
-        </div>
-        Review the API call and payload that will be sent to the App Services Push Notification Scheduler.
-        Advanced users can also send this command via <a href="">UGC (Usergrid Command Line)</a>.
-
-        <div id="notifications-command" class="well">
-          POST users/
-        </div>
-      </div>
-      <a class="btn btn-primary" id="schedule-notification">Schedule Notification</a>
-    </form>
-  </div>
-</div>
-
-<form id="dialog-form-add-user-to-notification" class="modal hide fade">
-  <div class="modal-header">
-    <a class="close" data-dismiss="modal">&times</a>
-    <h4>Add a user to this Notification</h4>
-  </div>
-  <div class="modal-body">
-    <p class="validateTips">Search for the user you want to add to this notification.</p>
-    <fieldset>
-      <div class="control-group">
-        <label for="search-notification-user-name-input">User</label>
-        <div class="controls">
-          <input type="text" name="search-notification-user-name-input" id="search-notification-user-name-input" class="input-xlarge"/>
-          <p class="help-block hide"></p>
-        </div>
-      </div>
-    </fieldset>
-  </div>
-  <div class="modal-footer">
-    <input type="submit" class="btn btn-usergrid" value="Add"/>
-    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-  </div>
-</form>
-
-<form id="dialog-form-add-group-to-notification" class="modal hide fade">
-  <div class="modal-header">
-    <a class="close" data-dismiss="modal">&times</a>
-    <h4>Add a group to this Notification</h4>
-  </div>
-  <div class="modal-body">
-    <p class="validateTips">Search for the group you want to add to this notification.</p>
-    <fieldset>
-      <div class="control-group">
-        <label for="search-notification-group-name-input">Group</label>
-        <div class="controls">
-          <input type="text" name="search-notification-group-name-input" id="search-notification-group-name-input" class="input-xlarge"/>
-          <p class="help-block hide"></p>
-        </div>
-      </div>
-    </fieldset>
-  </div>
-  <div class="modal-footer">
-    <input type="submit" class="btn btn-usergrid" value="Add"/>
-    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-  </div>
-</form>
-
-<div id="messageHistory-panel" class="panel-buffer">
-  <div class="well thingy">
-    <span class="title">Notification History</span>
-  </div>
-  <div style="float: left">
-    <ul class="nav nav-pills">
-      <li class="active"><a href="#" id="view-notifications-all">All</a></li>
-      <li><a href="#" id="view-notifications-scheduled">Scheduled</a></li>
-      <li><a href="#" id="view-notifications-started">Sending</a></li>
-      <li><a href="#" id="view-notifications-sent">Sent</a></li>
-      <li><a href="#" id="view-notifications-failed">Failed</a></li>
-      <li><a href="#" id="view-notifications-canceled">Canceled</a></li>
-    </ul>
-  </div>
-  <!--
-  <input id="notifications-history-search" type="text" name="path" class="span6" autocomplete="off" placeholder="search"/>
-  <a class="btn" id="view-notifications-search">Search</a>
-  -->
-  <div style="margin-top:35px;">&nbsp;</div>
-  <div id="notifications-history-display">
-    No Notifications found.
-  </div>
-
-  <ul id="notifications-history-pagination" class="pager">
-    <li style="display: none" id="notifications-history-previous" class="previous"><a >&larr; Previous</a></li>
-    <li style="display: none" id="notifications-history-next" class="next"><a >Next &rarr;</a></li>
-  </ul>
-</div>
-
-<div id="notificationsReceipt-panel" class="panel-buffer">
-  <div class="well thingy">
-    <span class="title">Notification Receipts</span>
-    <span style="float: right"><a href="#" class="notifications-links" id="return-to-notifications"><- Return to All Notifications</a></span>
-  </div>
-  <div style="float: left">
-    <ul class="nav nav-pills">
-      <li class="active"><a href="#" id="view-notification-receipt-all">All</a></li>
-      <li><a href="#" id="view-notification-receipt-received">Received</a></li>
-      <li><a href="#" id="view-notification-receipt-failed">Failed</a></li>
-    </ul>
-  </div>
-  <!--
-  <input id="notifications-history-search" type="text" name="path" class="span6" autocomplete="off" placeholder="search"/>
-  <a class="btn" id="view-notifications-search">Search</a>
-  -->
-  <div style="margin-top:35px;">&nbsp;</div>
-  <div id="notification-receipts-display">
-    No Notifications found.
-  </div>
-
-  <ul id="notification-receipt-pagination" class="pager">
-    <li style="display: none" id="notification-receipt-previous" class="previous"><a >&larr; Previous</a></li>
-    <li style="display: none" id="notification-receipt-next" class="next"><a >Next &rarr;</a></li>
-  </ul>
-
-</div>
-
-
-
-<div id="configuration-panel" class="panel-buffer" style="padding-top: 10px;">
-  <div id="cert-upload-message" class="alert alert-info" style="display:none"></div>
-  <span class="title">Configuration</span>
-  <div class="well thingy" id="cert-list-buttons" style="display: none;">
-    <div style="float: left;margin-top:10px;">
-      <span class="title" style="float: left">Notifiers</span>
-    </div>
-    <div style="float: right;">
-      <a class="btn" style="float: right" id="delete-certs-link">Delete Notifier</a>
-    </div>
-  </div>
-  <div id="notification-cert-list" style="padding-bottom: 10px"></div>
-
-  <ul id="user-panel-tab-bar" class="nav nav-tabs">
-    <li class="active"><a id="button-notifications-apple-create-notifier">Apple</a></li>
-    <li><a id="button-notifications-android-create-notifier">Android</a></li>
-  </ul>
-
-  <div id="notifications-apple-create-notifier">
-    <div style="margin-top: 10px;">
-      <span class="title">Apple Push Notification Service</span>
-      <br>
-      A Notifier allows App Services to connect to and deliver a message to a communication provider such as
-      Apple's APNs. Upload Development and Production Certificates (.p12) to set up a bridge between your app
-      and APNs for push notifications on iOS devices.
-
-
-      <form id="query-inputs" class="notifcations-form">
-        For more help: view our
-        <a href="#" class="notifications-links" onclick="Usergrid.Navigation.router.navigateTo('getStarted'); return false;">getting started page</a>
-        for more info on how to generate and download an iOS .p12 certificate at the Apple Developer Connection website.
-
-        <fieldset>
-          <div class="control-group">
-            <label class="control-label" for="new-notifier-name"><strong>Name this notifier </strong></label>
-            <div class="controls">
-              <div class="input-append">
-                <input id="new-notifier-name" type="text" name="path" class="span6" autocomplete="off" placeholder="ex: appledev"/>
-              </div>
-              The notifier name is used as the key for push data.  Give this a name that describes the certificate being uploaded.
-            </div>
-          </div>
-          <br>
-          <div class="control-group">
-            <label class="control-label" for="new-notifier-certificate"><strong>Certificate </strong></label>
-            <div class="controls">
-              <div class="input-append">
-                <input id="new-notifier-certificate" name="new-notifier-certificate" type="file" multiple>
-              </div>
-            </div>
-          </div>
-          <br>
-          <div class="control-group">
-            <label class="control-label" for="new-notification-environment"><strong>Environment </strong></label>
-            <div class="controls">
-              <div class="input-append">
-                <select id="new-notification-environment">
-                  <option value="development">development</option>
-                  <option value="production">production</option>
-                </select>
-              </div>
-            </div>
-          </div>
-          <br>
-          <div class="control-group">
-            <label class="control-label" for="new-notifier-cert-password"><strong>Certificate Password</strong></label>
-            <div class="controls">
-              <div class="input-append">
-                <input id="new-notifier-cert-password" type="text" name="path" class="span6" autocomplete="off" placeholder="ex: appledev"/>
-              </div>
-              Only applicable if your certificate is password protected
-            </div>
-          </div>
-
-
-          <a class="btn btn-primary" id="save-certificate-btn">Create Notifier</a>
-        </fieldset>
-
-      </form>
-    </div>
-  </div>
-
-  <div id="notifications-android-create-notifier" style="display:none;">
-    <div style="margin-top: 10px;">
-      <span class="title">Google Cloud Messaging</span>
-      <br>
-      A Notifier allows App Services to connect to and deliver a message to a communication provider such as
-      Google Cloud Messaging (GCM). Copy and paste your API key to create a bridge between your app
-      and GCM for push notifications on Android devices..
-
-
-      <form id="android-create-notifier-form" class="notifcations-form">
-        For more help: <a href="">see our <a href="#" class="notifications-links" onclick="Usergrid.Navigation.router.navigateTo('getStarted'); return false;">getting started page</a> page</a>.
-
-        <fieldset>
-          <div class="control-group">
-            <label class="control-label" for="android-new-notifier-name"><strong>Name this notifier </strong></label>
-            <div class="controls">
-              <div class="input-append">
-                <input id="android-new-notifier-name" type="text" name="path" class="span6" autocomplete="off" placeholder="ex: appledev"/>
-              </div>
-              The notifier name is used as the key for push data.  Give this a name that describes the API key being uploaded.
-            </div>
-          </div>
-
-          <div class="control-group">
-            <label class="control-label" for="android-new-notifier-api-key"><strong>API Key </strong></label>
-            <div class="controls">
-              <div class="input-append">
-                <input id="android-new-notifier-api-key" name="android-new-notifier-api-key" type="text" name="path" class="span6" autocomplete="off"/>
-              </div>
-            </div>
-          </div>
-
-          <a class="btn btn-primary" id="save-certificate-btn-android">Create Notifier</a>
-        </fieldset>
-
-      </form>
-    </div>
-  </div>
-
-
-</div>
-
-
-
-<div id="getStarted-panel" class="panel-buffer">
-  <div class="well thingy" style="padding-bottom: 10px;">
-    <span class="title">Getting Started with Push Notifications</span>
-    <br>
-    Before you can send a notification, you must follow these three steps to enable push notifications for your app.
-    <br>
-    <a target="_blank" href="http://apigee.com/docs/usergrid/content/push-notifications" class="notifications-links">Learn more in our docs</a>
-  </div>
-
-  <ul id="user-panel-tab-bar" class="nav nav-tabs">
-    <li class="active"><a id="button-notifications-apple-get-started">Apple</a></li>
-    <li><a id="button-notifications-android-get-started">Android</a></li>
-  </ul>
-
-  <div id="notifications-apple-get-started">
-    <span class="title">Set up Push Notifications for Apple iOS</span>
-    <div class="notifications-get-started">
-      <div class="header">
-        <img src="images/step_1.png" style="float: left;padding-right: 10px;">
-        <div style="padding-top: 9px;">
-          Follow <a target="_blank" href="http://apigee.com/docs/usergrid/content/push-notifications" class="notifications-links">the process</a> to generate and download an iOS .p12 certificate at the <a href="https://developer.apple.com/ios/manage/overview/index.action">Apple Developer Connection website</a>.
-        </div>
-      </div>
-      <img style="margin-bottom: -5px;" src="images/APNS_cert_upload.png">
-    </div>
-
-    <div class="notifications-get-started">
-      <div class="header">
-        <img src="images/step_2.png" style="float: left;padding-right: 10px;">
-        <div style="padding-top: 9px;">
-          Add the certificates to set up your notifiers.
-        </div>
-      </div>
-      <div style="">
-        <a href="#" onclick="Usergrid.Navigation.router.navigateTo('configuration'); return false;">Upload a certificate and create the connection to APNs.</a>
-      </div>
-      <img style="margin-left: 50px; margin-bottom: -5px;" src="images/APNS_certification.png">
-    </div>
-
-    <div class="notifications-get-started">
-      <div class="header">
-        <img src="images/step_3.png" style="float: left;padding-right: 10px;">
-        <div style="padding-top: 9px;">
-          Compose and schedule a push notification.
-        </div>
-      </div>
-      <div style="">
-        <a href="#" onclick="Usergrid.Navigation.router.navigateTo('sendNotification'); return false;">Send a push notification.</a>
-      </div>
-      <br><br>
-      <img style="margin-left: 58px; margin-bottom: -5px;" src="images/iphone_message.png">
-    </div>
-
-  </div>
-
-  <div id="notifications-android-get-started" style="display: none">
-    <span class="title">Set up Push Notifications for Google Android</span>
-    <div class="notifications-get-started">
-      <div class="header">
-        <img src="images/step_1.png" style="float: left;padding-right: 10px;">
-        <div style="padding-top: 9px;">
-          Retrieve your API key from the <a href="https://code.google.com/apis/console/" target="_blank">Android API Developer website</a>
-        </div>
-      </div>
-      <img style="margin-bottom: -5px;" src="images/google_api_key.png">
-    </div>
-
-    <div class="notifications-get-started">
-      <div class="header">
-        <img src="images/step_2.png" style="float: left;padding-right: 10px;">
-        <div style="padding-top: 9px;">
-          Add your API key to set up your notifiers.
-        </div>
-      </div>
-      <div style="">
-        <a href="#" onclick="Usergrid.Navigation.router.navigateTo('configuration'); return false;">Copy and paste your Google API Access key.</a>
-      </div>
-      <img style="margin-left: 50px; margin-bottom: -5px;" src="images/APNS_certification.png">
-    </div>
-
-    <div class="notifications-get-started">
-      <div class="header">
-        <img src="images/step_3.png" style="float: left;padding-right: 10px;">
-        <div style="padding-top: 9px;">
-          Compose and schedule a push notification.
-        </div>
-      </div>
-      <div style="">
-        <a href="#" onclick="Usergrid.Navigation.router.navigateTo('sendNotification'); return false;">Send a push notification.</a>
-      </div>
-      <br><br>
-      <img style="margin-left: 58px; margin-bottom: -5px;" src="images/android-notification.png">
-    </div>
-  </div>
-</div>
-
-
-<div id="collections-panel" class="panel-buffer">
-  <div id="query-path-area" class="console-section query-path-area">
-
-    <form id="dialog-form-new-collection" class="modal hide fade">
-      <div class="modal-header">
-        <a class="close" data-dismiss="modal">&times</a>
-        <h4>Create new collection</h4>
-      </div>
-      <div class="modal-body">
-        <p class="validateTips">All form fields are required.</p>
-        <fieldset>
-          <div class="control-group">
-            <label for="new-collection-name">Name</label>
-            <div class="controls">
-              <input type="text" name="name" id="new-collection-name" value="" class="input-xlarge"/>
-              <p class="help-block hide"></p>
-            </div>
-          </div>
-        </fieldset>
-      </div>
-      <div class="modal-footer">
-        <input type="submit" class="btn btn-usergrid" value="Create"/>
-        <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-      </div>
-    </form>
-
-
-    <!--a class="data-explorer-link"  style="float: right" onclick="$('#data-explorer').toggle(); return false;">Data Explorer</a -->
-
-
-    <div id="data-explorer" class="">
-      <div class="well thingy">
-        <span class="title">Data Explorer</span>
-      </div>
-
-      <div style="padding-right: 20px;">
-        <form id="query-inputs" class="">
-          <div class="control-group">
-            <div class="" data-toggle="buttons-radio">
-              <!--a class="btn" id="button-query-back">&#9664; Back</a-->
-              <!--Added disabled class to change the way button looks but their functionality is as usual -->
-              <label class="control-label"><strong>Method</strong> <a id="query-method-help" href="#" class="help-link">get help</a></label>
-              <input type="radio" name="query-action" value="get" style="margin-top: -2px;" id="button-query-get" checked> GET &nbsp; &nbsp;
-              <input type="radio" name="query-action" value="post" style="margin-top: -2px;" id="button-query-post"> POST &nbsp; &nbsp;
-              <input type="radio" name="query-action" value="put" style="margin-top: -2px;" id="button-query-put"> PUT &nbsp; &nbsp;
-              <input type="radio" name="query-action" value="delete" style="margin-top: -2px;" id="button-query-delete"> DELETE
-            </div>
-          </div>
-          <div class="control-group">
-            <label class="control-label" for="query-path"><strong>Path</strong> <a id="query-path-help" href="#" class="help-link">get help</a></label>
-            <div class="controls">
-              <div class="input-append">
-                <input id="query-path" type="text" name="path" class="span6" autocomplete="off" placeholder="ex: /users"/>
-              </div>
-            </div>
-          </div>
-          <div class="control-group">
-            <a id="back-to-collection" class="outside-link" style="display:none">Back to collection</a>
-          </div>
-          <div class="control-group" id="query-ql-box">
-            <label class="control-label" for="query-ql"><strong>Query String</strong> <a id="query-help" href="#" class="help-link">get help</a> </label>
-            <div class="controls">
-              <div class="input-append">
-                <input id="query-ql" type="text" name="query" class="span5" placeholder="ex: select * where name='fred'"/>
-                <div class="btn-group pull-right">
-                  <a class="btn dropdown-toggle " data-toggle="dropdown">
-                    <span id='query-collections-caret' class="caret"></span>
-                  </a>
-                  <ul id="query-collections-indexes-list"  class="dropdown-menu ">
-                  </ul>
-                </div>
-              </div>
-            </div>
-          </div>
-          <div class="control-group" id="query-limit-box">
-            <label class="control-label" for="query-limit"><strong>Limit</strong> <a id="query-limit-help" href="#" class="help-link">get help</a></label>
-            <div class="controls">
-              <div class="input-append">
-                <input id="query-limit" type="text" name="query-limit" class="span5" placeholder="ex: 10"/>
-              </div>
-            </div>
-          </div>
-          <div class="control-group" id="query-json-box" style="display:none">
-            <label class="control-label" for="query-source"><strong>JSON Body</strong> <a id="query-json-help" href="#" class="help-link">get help</a></label>
-            <div class="controls">
-              <div class="input-append">
-                <textarea id="query-source" class="span6 pull-left" rows="4">
-                  { "name":"value" }
-                </textarea>
-              </div>
-              <a class="btn pull-left" id="button-query-validate" >Validate JSON</a>
-              <div id="statusbar-placeholder" style="width: 100px; float: right;"></div>
-            </div>
-          </div>
-          <div style="clear: both; height: 10px;"></div>
-          <div class="control-group">
-            <button type="button" class="btn btn-primary" id="button-query">Run Query</button>
-          </div>
-        </form>
-      </div>
-    </div>
-
-
-
-
-
-    <div id="query-response-area" class="console-section" style="display: none;">
-      <div class="well thingy" id="query-received-header">
-        <div class="bar" style="height: 40px;">
-          <div id="data-explorer-status" class="alert" style="float: left; width: 410px;margin-top: -5px;display:none;"></div>
-          <a class="btn " data-toggle="modal" id="delete-entity-link" > Delete</a>
-        </div>
-      </div>
-      <div class="console-section-contents">
-        <!--<pre class="query-response-json">{ }</pre>-->
-        <table id="query-response-table">
-
-        </table>
-        <ul id="query-response-pagination" class="pager">
-          <li style="display: none" id="query-response-previous" class="previous"><a >&larr; Previous</a></li>
-          <li style="display: none" id="query-response-next" class="next"><a >Next &rarr;</a></li>
-        </ul>
-      </div>
-    </div>
-  </div>
-</div>
-
-</div>
-</div>
-<div class="cleaner">&nbsp;</div>
-</div>
-</div>
-</div>
-</div>
-<!--
-<div id="footer">
-  <div class="column-in">
-    <div id="copyright" class="pull-right">&copy; 2013 Apigee Corp. All rights reserved.</div>
-  </div>
-</div>
--->
-
-<script src="js/app/ui/collections.entity.js" type="text/javascript"></script>
-<script src="js/app/ui/collections.user.js" type="text/javascript"></script>
-<script type="text/javascript">
-
-  var _gaq = _gaq || [];
-  _gaq.push(['_setAccount', 'UA-4084158-4']);
-  _gaq.push(['_trackPageview']);
-
-  (function() {
-    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
-  })();
-
-</script>
-
-<link rel="stylesheet" type="text/css" href="css/custom-theme/jquery-ui-1.8.9.custom.css"/>
-<link rel="stylesheet" type="text/css" href="css/jquery-ui-timepicker.css"/>
-<link rel="stylesheet" type="text/css" href="css/jquery.ui.statusbar.css"/>
-<link rel="stylesheet" type="text/css" href="css/prettify.css"/>
-
-<script src="js/lib/MD5.min.js" type="text/javascript"></script>
-<script src="https://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22visualization%22%2C%22version%22%3A%221.0%22%2C%22packages%22%3A%5B%22corechart%22%5D%7D%5D%7D" type="text/javascript"></script>
-<script src="js/lib/bootstrap.min.js" type="text/javascript"></script>
-<script src="js/app/pages.js" type="text/javascript"></script>
-<script src="js/app/app.js" type="text/javascript"></script>
-<script src="js/app/status.js" type="text/javascript"></script>
-<script src="js/lib/prettify.js" type="text/javascript"></script>
-<script type="text/javascript" charset="utf-8">prettyPrint();</script>
-</body>
-</html>


[43/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/index.html
----------------------------------------------------------------------
diff --git a/deleted/archive/index.html b/deleted/archive/index.html
deleted file mode 100644
index 72f5780..0000000
--- a/deleted/archive/index.html
+++ /dev/null
@@ -1,1932 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html"
-      xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html">
-<html>
-<head>
-  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
-  <title>Apigee App Services Admin Portal </title>
-  <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
-  <link rel="stylesheet" type="text/css" href="css/usergrid.css"/>
-  <script src="./config.js" type="text/javascript"></script>
-  <script src="../config.js" type="text/javascript"></script>
-  <script src="js/app/usergrid.appSDK.js" type="text/javascript"></script>
-  <script src="js/app/session.js" type="text/javascript"></script>
-  <script src="js/app/quickLogin.js" type="text/javascript"></script>
-  <script src="js/app/params.js" type="text/javascript"></script>
-  <script src="js/app/sso.js" type="text/javascript"></script>
-  <script type="text/javascript">
-    /*
-     Quick Login: script loads the minimal amount of resources to be able to detect if the user is logged in
-     and if not, send him directly to the SSO page
-     */
-    Usergrid.apiUrl = Usergrid.overrideUrl;
-    Usergrid.Params.parseParams();
-    Usergrid.SSO.setUseSSO(Usergrid.Params.queryParams.use_sso);
-    Usergrid.QuickLogin.init(Usergrid.Params.queryParams,Usergrid.userSession.loggedIn(),
-    Usergrid.SSO.usingSSO());
-
-  </script>
-  <script src="js/lib/jquery-1.7.2.min.js" type="text/javascript"></script>
-  <script src="js/lib/underscore-min.js" type="text/javascript"></script>
-  <script src="js/lib/backbone.js" type="text/javascript"></script>
-  <script src="js/lib/jquery-ui-1.8.18.min.js" type="text/javascript"></script>
-  <script src="js/lib/jquery.jsonp-2.3.1.min.js" type="text/javascript"></script>
-  <script src="js/lib/jquery.dataset.min.js" type="text/javascript"></script>
-  <script src="js/lib/jquery.tmpl.min.js" type="text/javascript"></script>
-  <script src="js/lib/jquery.dform-0.1.3.min.js" type="text/javascript"></script>
-  <script src="js/lib/jquery.ui.timepicker.min.js" type="text/javascript"></script>
-  <script src="js/lib/jquery.ui.statusbar.min.js" type="text/javascript"></script>
-  <script src="js/lib/date.min.js" type="text/javascript"></script>
-  <script src="js/app/helpers.js" type="text/javascript"></script>
-  <script src="js/app/navigation.js" type="text/javascript"></script>
-  <script src="js/app/console.js" type="text/javascript"></script>
-  <script src="js/app/ui/ui.js" type="text/javascript"></script>
-
-</head>
-<body>
-
-<div id="alert-error-message-container" class="alert alert-error" style="width:96.5%; z-index: 99; position: fixed; top: 84px;display: none;">
-  <a href="#" class="close" data-dismiss="alert">&times;</a>
-  <strong id="alert-error-header"></strong>
-  <span id="alert-error-message"></span>
-</div>
-
-<div id="header">
-  <div class="column-in">
-    <div data-dropdown="dropdown" class="main-nav navbar navbar-fixed-top">
-      <div class="header-menus">
-        <div id="publicMenu" class="navbar-inner">
-          <div class="left-header">
-            <h1 class="apigee"><a href="https://apigee.com" target="_blank"><img src="images/logo-white.png">apigee</a></h1>
-            <h2 id="ActualPage1">Admin Portal</h2>
-          </div>
-          <div class="right-header">
-            <ul id="loginMenu" class="nav secondary-nav">
-              <li><a id="login-link" ><i class="icon-user"></i> Login</a></li>
-              <li><a id="signup-link" > Sign Up</a></li>
-              <li><a id="forgot-password-link" ><i class="icon-lock"></i> Forgot Password</a></li>
-            </ul>
-          </div>
-        </div>
-        <div class="navbar-inner privateMenu">
-          <div class="left-header">
-            <h1 class="apigee"><a href="https://apigee.com" target="_blank"><img class="logo" src="images/logo-white.png">apigee</a></h1>
-            <ul class="nav">
-              <li class="portal-name" ><a class="go-home">App Services</a></li>
-             <!-- <li><a href="app/index.html" target="_blank"> Try the New App Services</a></li> -->
-            </ul>
-          </div>
-          <div class="right-header">
-            <ul id="profileMenu" class="nav secondary-nav">
-              <li ><a href="https://accounts.apigee.com/accounts/dashboard" target="_blank">Dashboard</a></li>
-              <li class="dropdown">
-                <a id="account-link1" class="dropdown-toggle" data-toggle="dropdown" ><span id="userEmail">test</span> <span class="caret"></span></a>
-                <ul class="dropdown-menu">
-                  <li><a id="account-link" ><i class="icon-user"></i> Profile</a></li>
-                  <li><a id="logout-link" ><i class="icon-off"></i> Sign Out</a></li>
-                </ul>
-              </li>
-            </ul>
-          </div>
-        </div>
-        <div id="api-activity" class="alert">Loading...</div>
-      </div>
-    </div>
-    <div class="sub-nav navbar navbar-fixed privateMenu" style="display: none">
-      <div class="left-header nav pull-left">
-        <li id="organizations-menu" class="dropdown">
-          <a id="console-links" class="dropdown-toggle" data-toggle="dropdown">
-            <i class="icon-folder-close icon-white"></i>
-            <span>Organizations</span>
-            <span class="caret"></span>
-          </a>
-          <ul class="dropdown-menu">
-            <li><a >loading...</a></li>
-          </ul>
-        </li>
-        <li class="dropdown">
-          <a class="dropdown-toggle" data-toggle="dropdown">
-            <i class="icon-cog icon-white"></i>
-            <span id="nav-app-name">App Name</span>
-            <span class="caret"></span>
-          </a>
-          <ul class="dropdown-menu applications-menu" >
-            <li><a >loading apps...</a></li>
-          </ul>
-        </li>
-      </div>
-      <div class="right-header pull-right">
-        <ul class="nav">
-          <li><a href="http://community.apigee.com/content/apigee-customer-support" target="_blank"> Support</a></li>
-          <li><a href="http://apigee.com/docs/app_services" target="_blank"> Docs</a></li>
-          <li><a href="http://apigee.com/docs/usergrid/codesamples" target="_blank">Examples & SDKs</a></li>
-          <li><a href="https://groups.google.com/forum/?fromgroups#!forum/usergrid" target="_blank"> Google Group</a></li>
-          <li><a href="http://apigee.com/about/products/usergrid" target="_blank"> About</a></li>
-        </ul>
-      </div>
-    </div>
-  </div>
-</div>
-
-<div id="pages">
-
-<div id="message-page" class="container-fluid">
-  <div id="message-area" class="alert alert-info curl-data" style="padding: 20px;">
-    Whoops! We encounterd an error connecting to the API.  Press refresh to try loading the Admin Portal again.
-    <button id="reload-button" class="btn btn-primary" style="float: right; margin: -4px 30px;" onClick="window.location.reload()">Refresh</button>
-  </div>
-</div>
-<div id="login-page" class="container-fluid">
-  <div class="row">
-    <div id="login-area" class="span6 offset1">
-      <div id="login-message" class="alert alert-error">
-        <strong>ERROR</strong>: Your details were incorrect.<br/>
-      </div>
-      <div class="console-section">
-        <div class="well thingy"><span style="margin-left: 30px" class="title">Login</span></div>
-        <form name="login-form" id="login-form" class="form-horizontal">
-          <div class="control-group">
-            <label class="control-label" for="login-email">Email:</label>
-            <div class="controls">
-              <input type="text" name="login-email" id="login-email" class="" value="" size="20"/>
-            </div>
-
-          </div>
-          <div class="control-group">
-            <label class="control-label" for="login-password">Password:</label>
-            <div class="controls">
-              <input type="password" name="login-password" id="login-password" class="" value="" size="20"/>
-
-            </div>
-          </div>
-          <div class="control-group">
-            <div class="controls">
-              <input type="checkbox" value="true" id="remember" name="remember"/>
-              <span>Remember me</span>
-            </div>
-          </div>
-          <div class="form-actions">
-            <div class="submit">
-              <input type="submit" name="button-login" id="button-login" value="Log In" class="btn btn-usergrid"/>
-            </div>
-          </div>
-        </form>
-      </div>
-    </div>
-  </div>
-</div>
-<div id="post-signup-page" class="container-fluid">
-  <div class="row">
-    <div id="login-area" class="span6 offset1">
-      <div class="console-section well thingy">
-        <span class="title">We're holding a seat for you!</span>
-        <br /><br />
-        <p>Thanks for signing up for a spot on our private beta. We will send you an email as soon as we're ready for you!</p>
-        <p>In the mean time, you can stay up to date with App Services on our <a href="https://groups.google.com/forum/?fromgroups#!forum/usergrid">Google Group</a>.</p>
-      </div>
-    </div>
-  </div>
-</div>
-<div id="signup-page" class="container-fluid">
-  <div class="row">
-    <div id="signup-area" class="span6 offset1">
-      <div id="signup-message" class="alert alert-error"></div>
-      <div class="console-section">
-        <div class="well thingy"><span class="title">Register</span> </div>
-        <form name="signup-form" id="signup-form" onsubmit="return false;" class="form-horizontal">
-          <div class="control-group">
-            <label class="control-label" for="signup-organization-name">Organization Account</label>
-            <div class="controls">
-              <input type="text" name="signup-organization-name" id="signup-organization-name" class="" value="" size="20"/>
-            </div>
-          </div>
-          <div class="control-group">
-            <label class="control-label" for="signup-username">Username</label>
-            <div class="controls">
-              <input type="text" name="signup-username" id="signup-username" class="" value="" size="20"/>
-            </div>
-          </div>
-          <div class="control-group">
-            <label class="control-label" for="signup-name">Name </label>
-            <div class="controls">
-              <input type="text" name="signup-name" id="signup-name" class="" value="" size="20"/>
-            </div>
-          </div>
-          <div class="control-group">
-            <label class="control-label" for="signup-email">Email </label>
-            <div class="controls">
-              <input type="text" name="signup-email" id="signup-email" class="" value="" size="20"/>
-            </div>
-          </div>
-          <div class="control-group">
-            <label class="control-label" for="signup-password">Password </label>
-            <div class="controls">
-              <input type="password" name="signup-password" id="signup-password" class="" value="" size="20"/>
-            </div>
-          </div>
-          <div class="control-group">
-            <label class="control-label" for="signup-password-confirm">Confirm </label>
-            <div class="controls">
-              <input type="password" name="signup-password-confirm" id="signup-password-confirm" class="" value="" size="20"/>
-            </div>
-          </div>
-          <div class="form-actions">
-            <div class="submit">
-              <input type="button" name="button-signup" id="button-signup" value="Sign up" class="btn btn-usergrid"/>
-            </div>
-          </div>
-        </form>
-      </div>
-    </div>
-  </div>
-</div>
-<div id="forgot-password-page" class="container">
-  <iframe class="container"></iframe>
-</div>
-
-<div id="console-page" class="">
-<div id="main1">
-<div id="main2">
-
-
-<div id="left" style="">
-  <div class="column-in">
-
-    <div id="sidebar-menu" style="padding-top: 10px;">
-      <ul id="application-panel-buttons" class="nav nav-list">
-        <li id="application-panel-button-dashboard"><a href="#"><i class="icon-th"></i> <span class="nav-menu-text">Org Overview</span></a></li>
-        <li id="application-panel-button-dashboard"><a href="#dashboard" id="dashboard-link"><i class="icon-th"></i> <span class="nav-menu-text">App Overview</span></a></li>
-        <li id="users-link-li"><a href="#users" id="users-link"><i class="icon-user"></i> <span class="nav-menu-text">User Management</span></a></li>
-        <li><a href="#collections" id="collections-link"><i class="icon-book"></i> <span class="nav-menu-text">Data Explorer</span></a></li>
-        <li><a style="display:none" href="#notifications" id="notifications-link"><!--i class="push-notifications-icon"></i--><span style="color: red; font-weight: bold; margin-left: -6px;padding-right: 3px;">New!</span>Notifications</a></li>
-        <li><a href="#activities" id="activities-link"><i class="icon-calendar"></i> <span class="nav-menu-text">Activities</span></a></li>
-        <li><a href="#analytics" id="analytics-link"><i class="icon-signal"></i> <span class="nav-menu-text">Analytics</span></a></li>
-        <li><a href="#properties" id="properties-link"><i class="wrench "></i><span class="nav-menu-text">App Settings</span></a></li>
-        <li><a href="#shell" id="shell-link"><i class="icon-warning-sign"></i> <span class="nav-menu-text">Shell</span></a></li>
-      </ul>
-    </div>
-
-
-  </div>
-</div>
-
-<div id="left2" style="display: none;">
-  <div id="left2-content" class="column-in">
-
-    <div id="sidebar-menu2" style="padding-top: 10px; display: none;">
-      <p class="panel-desc">Data related to your application end-users.</p>
-      <hr style="margin: 0 0 0 10px; width:130px;">
-      <ul id="app-end-users-buttons" class="nav nav-list">
-        <li><a href="#users" id="users-sublink"><span class="nav-menu-text">Users</span></a></li>
-        <li><a href="#groups" id="groups-sublink"><span class="nav-menu-text">Groups</span></a></li>
-        <li><a href="#roles" id="roles-sublink"> <span class="nav-menu-text">Roles</span></a></li>
-      </ul>
-    </div>
-
-    <div id="left-collections-menu" style="display: none;">
-      <p class="panel-desc">Explore your application's data collections.</p>
-      <hr class="col-divider">
-      <div id="collections-menu" style="padding: 10px">
-        <a class="btn" data-toggle="modal" href="#dialog-form-new-collection">Add Collection</a>
-      </div>
-      <hr class="col-divider">
-      <div id="left-collections-content"></div>
-    </div>
-
-    <div id="left-notifications-menu" style="display: none;">
-      <p class="panel-desc">Configure and send push notifications to your app.</p>
-      <hr class="col-divider">
-
-      <ul id="notification-buttons" class="nav nav-list" style="margin-bottom: 5px;">
-        <li><a href="#sendNotification" id="sendNotification-sublink"><span class="nav-menu-text">Send Notification</span></a></li>
-        <li><a href="#messageHistory" id="messageHistory-sublink"><span class="nav-menu-text">Notification History</span></a></li>
-        <li><a href="#configuration" id="configuration-sublink"> <span class="nav-menu-text">Configuration</span></a></li>
-        <li><a href="#getStarted" id="getStarted-sublink"> <span class="nav-menu-text">Getting Started</span></a></li>
-      </ul>
-    </div>
-
-  </div>
-</div>
-
-
-
-
-<div id="middle">
-<div class="column-in" style="padding-top: 10px;">
-
-
-<div id="console-panels" class="container-fluid">
-<div id="organization-panel" style="display: none">
-  <div id="console-panel-nav-bar"></div>
-  <div id="home-messages" class="alert" style="display: none;"></div>
-  <div class="console-section">
-    <div class="well thingy"><span class="title"> Current Organization </span></div>
-    <table id="organizations-table" class="hideable table">
-      <tbody></tbody>
-    </table>
-  </div>
-  <div class="org-page-sections">
-    <div class="well thingy"><span class="title" style="float: left;"> Applications </span>
-      <div class="bar">
-        <a class="btn button bottom-space" data-toggle="modal" href="#dialog-form-new-application"> New Application</a>
-      </div>
-    </div>
-    <table id="organization-applications-table" class="hideable table">
-      <tbody></tbody>
-    </table>
-  </div>
-  <div class="org-page-sections">
-    <div class="well thingy">
-      <span class="title"> Activities </span>
-    </div>
-    <table id="organization-feed-table" class="hideable table">
-      <tbody></tbody>
-    </table>
-  </div>
-  <div class="org-page-sections">
-    <div class="well thingy"><span class="title" style="float: left;"> Organization's Administrators </span>
-      <div class="bar">
-        <a class="btn button bottom-space" data-toggle="modal" href="#dialog-form-new-admin"> New Administrator</a>
-      </div>
-    </div>
-    <table id="organization-admins-table" class="hideable table">
-      <tbody></tbody>
-    </table>
-  </div>
-  <div class="org-page-sections">
-    <div class="well thingy"><span class="title" style="float: left;"> Organization API Credentials </span>
-      <div class="bar">
-        <a class="btn button bottom-space" onclick="Usergrid.console.newOrganizationCredentials(); return false;"> Regenerate Credentials</a>
-      </div>
-    </div>
-    <table class="hideable table">
-      <tbody>
-      <tr>
-        <td>
-          <span class="span2">Client ID</span>
-        </td>
-        <td>
-          <span id="organization-panel-key">...</span>
-        </td>
-      </tr>
-      <tr>
-        <td>
-          <span class="span2">Client Secret</span>
-        </td>
-        <td>
-          <span id="organization-panel-secret">...</span>
-        </td>
-      </tr>
-      </tbody>
-    </table>
-  </div>
-  <form id="dialog-form-force-new-application" class="modal hide fade" action="#">
-    <div class="modal-header">
-      <h4>No applications for this organization</h4>
-    </div>
-    <div class="modal-body">
-      <p class="validateTips">All organizations require at least one application. Please create one.</p>
-      <fieldset>
-        <div class="control-group">
-          <label for="new-application-name">Name</label>
-          <div class="controls">
-            <input type="text" name="name" id="" value="" class="input-xlarge new-application-name"/>
-            <p class="help-block">Length of name must be between 4 and 80</p>
-          </div>
-        </div>
-      </fieldset>
-    </div>
-    <div class="modal-footer">
-      <input type="submit" class="btn btn-usergrid" value="Create"/>
-      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-  </form>
-  <form id="dialog-form-new-admin" class="modal hide fade">
-    <div class="modal-header">
-      <a class="close" data-dismiss="modal">&times</a>
-      <h4>Create new administrator</h4>
-    </div>
-    <div class="modal-body">
-      <fieldset>
-        <div class="control-group">
-          <label for="new-admin-email">Email</label>
-          <div class="controls">
-            <input type="text" name="email" id="new-admin-email" value="" class="input-xlarge"/>
-            <input type="hidden" name="password" id="new-admin-password" value=""/>
-            <input type="hidden" name="" id="new-admin-password-confirm" value=""/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-      </fieldset>
-    </div>
-    <div class="modal-footer">
-      <input type="submit" class="btn btn-usergrid" value="Create"/>
-      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-  </form>
-</div>
-
-<div id="dashboard-panel" style="display: none">
-  <div class="console-section">
-    <div class="well thingy">
-      <span class="title"> Application Dashboard: <span class="app_title"></span> </span>
-    </div>
-    <div class="console-section-contents">
-      <div id="application-panel-table" style="overflow: hidden;">
-        <div id="application-panel-entity-graph" class="span graph"></div>
-        <div id="application-panel-text" class="span">...</div>
-      </div>
-
-      <div style="max-width: 680px; overflow: hidden;">
-        <div>
-          <div id="application-entities-timeline" class="span graph"></div>
-          <div id="application-cpu-time" class="span graph"></div>
-        </div>
-        <div>
-          <div id="application-data-uploaded" class="span graph"></div>
-          <div id="application-data-downloaded" class="span graph"></div>
-        </div>
-      </div>
-    </div>
-  </div>
-</div>
-<div id="account-panel" class="container-fluid hide">
-  <div id="account-update-modal" class="modal hide fade">
-    <div class="modal-header">
-      <a class="close" data-dismiss="modal">&times</a>
-      <h4>Account Settings</h4>
-    </div>
-    <div class="modal-body">
-      <p>Account settings updated.</p>
-    </div>
-    <div class="modal-footer">
-      <button class="btn btn-usergrid" data-dismiss="modal">OK</button>
-    </div>
-  </div>
-  <div class="span offset1">
-    <h2>Account Settings </h2>
-    <div id="account-panels">
-      <div class="panel-content">
-        <div class="console-section">
-          <div class="well thingy"><span class="title"> Personal Account </span> </div>
-          <div class="console-section-contents">
-            <form name="update-account-form" id="update-account-form" class="form-horizontal">
-              <fieldset>
-                <div class="control-group">
-                  <label id="update-account-id-label" class="control-label" for="update-account-id">UUID</label>
-                  <div class="controls">
-                    <span id="update-account-id" class="monospace"></span>
-                  </div>
-                </div>
-                <div class="control-group">
-                  <label class="control-label" for="update-account-username">Username </label>
-                  <div class="controls">
-                    <input type="text" name="update-account-username" id="update-account-username" class="span4" value="" size="20"/>
-                  </div>
-                </div>
-                <div class="control-group">
-                  <label class="control-label" for="update-account-name">Name </label>
-                  <div class="controls">
-                    <input type="text" name="update-account-name" id="update-account-name" class="span4" value="" size="20"/>
-                  </div>
-                </div>
-                <div class="control-group">
-                  <label class="control-label" for="update-account-email"> Email</label>
-                  <div class="controls">
-                    <input type="text" name="update-account-email" id="update-account-email" class="span4" value="" size="20"/>
-                  </div>
-                </div>
-                <div class="control-group">
-                  <label class="control-label" for="update-account-picture-img">Picture <br />(from <a href="http://gravatar.com">gravatar.com</a>) </label>
-                  <div class="controls">
-                    <img id="update-account-picture-img" src="" class="" width="50" />
-                  </div>
-                </div>
-                <span class="help-block">Leave blank any of the following to keep the current password unchanged</span>
-                <br />
-                <div class="control-group">
-                  <label class="control-label" for="old-account-password">Old Password</label>
-                  <div class="controls">
-                    <input type="password" name="old-account-password" id="old-account-password" class="span4" value="" size="20"/>
-                  </div>
-                </div>
-                <div class="control-group">
-                  <label class="control-label" for="update-account-password">New Password</label>
-                  <div class="controls">
-                    <input type="password" name="update-account-password" id="update-account-password" class="span4" value="" size="20"/>
-                  </div>
-                </div>
-                <div class="control-group">
-                  <label class="control-label" for="update-account-password-repeat">Confirm New Password</label>
-                  <div class="controls">
-                    <input type="password" name="update-account-password-repeat" id="update-account-password-repeat" class="span4" value="" size="20"/>
-                  </div>
-                </div>
-              </fieldset>
-              <div class="form-actions">
-                <input type="button" name="button-update-account" id="button-update-account" value="Update" class="btn btn-usergrid span"/>
-              </div>
-            </form>
-          </div>
-        </div>
-      </div>
-    </div>
-    <div class="panel-content">
-      <div class="console-section">
-        <div class="well thingy"><span class="title"> Organizations </span>
-          <div class="bar">
-            <a class="" data-toggle="modal" href="#dialog-form-new-organization"> Add </a>
-          </div>
-        </div>
-        <table class="table" id="organizations">
-        </table>
-      </div>
-    </div>
-    <form id="dialog-form-new-organization" class="modal hide fade">
-      <div class="modal-header">
-        <a class="close" data-dismiss="modal">&times</a>
-        <h4>Create new organization</h4>
-      </div>
-      <div class="modal-body">
-        <p class="validateTips">All form fields are required.</p>
-        <fieldset>
-          <div class="control-group">
-            <label for="new-organization-name">Name</label>
-            <div class="controls">
-              <input type="text" name="organization" id="new-organization-name" class="input-xlarge"/>
-              <p class="help-block hide"></p>
-            </div>
-          </div>
-        </fieldset>
-      </div>
-      <div class="modal-footer">
-        <input type="submit" class="btn btn-usergrid" value="Create"/>
-        <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-      </div>
-    </form>
-  </div>
-</div>
-<div id="users-panel" class="panel-buffer">
-  <ul id="users-panel-tab-bar" class="nav nav-tabs">
-    <li class="active"><a id="button-users-list">List</a></li>
-  </ul>
-  <div id="users-panel-list" class="panel-content">
-    <div id="users-messages" class="alert" style="display: none;"></div>
-
-    <div class="console-section">
-      <span class="title"> App Users </span>
-      <div class="well thingy">
-        <div class="bar">
-          <input onkeyup="Usergrid.console.searchUsers();" type="text" name="search-user-username" id="search-user-username" class="input-small search" placeholder="Search"/>
-          <select id="search-user-type" onChange="Usergrid.console.searchUsers();" class="input-medium search">
-            <option value="username">Username</option>
-            <option value="name">Full Name</option>
-          </select>
-
-          <a class="btn " data-toggle="modal" id="delete-users-link" > Delete</a>
-          <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-new-user"> Create new user</a>
-
-
-
-        </div>
-      </div>
-      <table id="users-table" class="table">
-        <tbody></tbody>
-      </table>
-      <ul id="users-pagination" class="pager">
-        <li id="users-previous" class="previous"><a >&larr; Previous</a></li>
-        <li id="users-next" class="next"><a >Next &rarr;</a></li>
-      </ul>
-    </div>
-    <div id="users-curl-container" class="row-fluid curl-container ">
-    </div>
-  </div>
-  <form id="dialog-form-new-user" class="modal hide fade">
-    <div class="modal-header">
-      <a class="close" data-dismiss="modal">&times</a>
-      <h4>Create new user</h4>
-    </div>
-    <div class="modal-body">
-      <p class="validateTips">Username is required.</p>
-      <fieldset>
-        <div class="control-group">
-          <label for="new-user-username">Username</label>
-          <div class="controls">
-            <input type="text" name="username" id="new-user-username" class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-        <div class="control-group">
-          <label for="new-user-fullname">Full name</label>
-          <div class="controls">
-            <input type="text" name="name" id="new-user-fullname" class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-        <div class="control-group">
-          <label for="new-user-email">Email</label>
-          <div class="controls">
-            <input type="text" name="email" id="new-user-email" class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-        <div class="control-group">
-          <label for="new-user-password">Password</label>
-          <div class="controls">
-            <input type="password" name="password" id="new-user-password" class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-        <div class="control-group">
-          <label for="new-user-validate-password">Confirm password</label>
-          <div class="controls">
-            <input type="password" name="validate-password" id="new-user-validate-password" class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-      </fieldset>
-    </div>
-    <div class="modal-footer">
-      <input type="submit" class="btn btn-usergrid" value="Create"/>
-      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-  </form>
-</div>
-
-<form id="confirmAction" class="modal hide fade">
-  <div class="modal-header">
-    <a class="close" data-dismiss="modal">&times</a>
-    <h4></h4>
-  </div>
-  <div class="modal-body">
-    <p></p>
-  </div>
-  <div class="modal-footer">
-    <input type="submit" class="btn btn-danger" value="Yes, continue"/>
-    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-  </div>
-</form>
-<form id="confirmDialog" class="modal hide fade">
-  <div class="modal-header">
-    <a class="close" data-dismiss="modal">&times</a>
-    <h4>Are you sure?</h4>
-  </div>
-  <div class="modal-body">
-    <p></p>
-  </div>
-  <div class="modal-footer">
-    <input type="submit" class="btn btn-danger" value="Yes, delete"/>
-    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-  </div>
-</form>
-<form id="alertModal" class="modal hide fade">
-  <div class="modal-header">
-    <a class="close" data-dismiss="modal">&times</a>
-    <h4></h4>
-  </div>
-  <div class="modal-body">
-    <p></p>
-  </div>
-  <div class="modal-footer">
-    <input type="reset" class="btn btn-usergrid" value="OK" data-dismiss="modal"/>
-  </div>
-</form>
-
-<form id="queryHelpModal" class="modal hide fade">
-  <div class="modal-header">
-    <a class="close" data-dismiss="modal">&times</a>
-    <h4>Making Queries</h4>
-  </div>
-  <div class="modal-body">
-    <p><strong>Making Queries</strong></p>
-    <p>Use the Query String field to enter SQL-style queries against your collections.  For example, to select
-      all users whose name starts with <strong>fred</strong>:</p>
-    <pre>select * where name = 'fred*'</pre>
-    <p>To select all activities where a category is <strong>usermessage</strong> and content contains the word
-      <strong>hello</strong> in a string:</p>
-    <pre class="code-para">select * where category = 'usermessage' and content contains 'hello'</pre>
-    <a class="outside-link" target="_blank" href="http://apigee.com/docs/usergrid/content/queries-and-parameters"><strong>Learn more about Queries and Parameters.</strong></a>
-  </div>
-  <div class="modal-footer">
-    <input type="reset" class="btn btn-usergrid" value="close" data-dismiss="modal"/>
-  </div>
-</form>
-
-<form id="queryPathHelpModal" class="modal hide fade">
-  <div class="modal-header">
-    <a class="close" data-dismiss="modal">&times</a>
-    <h4>Query Path</h4>
-  </div>
-  <div class="modal-body">
-    <p><strong>Query Path</strong></p>
-    <p>The query path is typically just the name of the collection you want to access.  For example, if you want to work with a <strong>dogs</strong> collection,
-      then your path will be:
-    </p>
-    <pre>/dogs</pre>
-    <p>You may also have a more complex path, such as the case when you want to make a connection between two entities.
-      To create a <strong>likes</strong> connection between a user named <strong>Fred</strong> and a dog named <strong>Dino</strong>,
-      do a <strong>POST</strong> operation to:
-    </p>
-    <pre class="code-para">/users/fred/likes/dogs/dino</pre>
-    <a class="outside-link" target="_blank" href="http://apigee.com/docs/usergrid/content/entity-relationships"><strong>Learn more about Entity Relationships.</strong></a>
-  </div>
-  <div class="modal-footer">
-    <input type="reset" class="btn btn-usergrid" value="close" data-dismiss="modal"/>
-  </div>
-</form>
-
-<form id="queryLimitHelpModal" class="modal hide fade">
-  <div class="modal-header">
-    <a class="close" data-dismiss="modal">&times</a>
-    <h4>Limit</h4>
-  </div>
-  <div class="modal-body">
-    <p><strong>Limit</strong></p>
-    <p>The <strong>limit parameter</strong> is used to tell the API how many results you want to have returned from the API call.</p>
-    <p>The <strong>default</strong> setting is <strong>10</strong>.</p>
-    <p>The <strong>max</strong> setting is <strong>999</strong>.</p>
-    <p>This parameter is appended to the end of the query string to be sent to the API.  For example, a limit of 100:</p>
-    <pre>GET /dogs?limit=100</pre>
-    <a class="outside-link" target="_blank" href="http://apigee.com/docs/usergrid/content/queries-and-parameters"><strong>Learn more about Queries and Parameters.</strong></a>
-  </div>
-  <div class="modal-footer">
-    <input type="reset" class="btn btn-usergrid" value="close" data-dismiss="modal"/>
-  </div>
-</form>
-
-<form id="queryJsonHelpModal" class="modal hide fade">
-  <div class="modal-header">
-    <a class="close" data-dismiss="modal">&times</a>
-    <h4>JSON</h4>
-  </div>
-  <div class="modal-body">
-    <p><strong>JSON</strong></p>
-    <p>The <strong>JSON</strong> is the object notation used to describe your object.</p>
-    <p>This parameter makes up the body that is sent with POST and PUT requests</p>
-    <pre>{
-            "uuid":"00000000-0000-0000-000000000000",
-            "type":"book",
-            "title":"Great Expectations"
-          }</pre>
-    <a class="outside-link" target="_blank" href="http://apigee.com/docs/usergrid/content/using-api"><strong>Learn more about using the API.</strong></a>
-  </div>
-  <div class="modal-footer">
-    <input type="reset" class="btn btn-usergrid" value="close" data-dismiss="modal"/>
-  </div>
-</form>
-
-<form id="queryMethodHelpModal" class="modal hide fade">
-  <div class="modal-header">
-    <a class="close" data-dismiss="modal">&times</a>
-    <h4>Method</h4>
-  </div>
-  <div class="modal-body">
-    <p><strong>Method</strong></p>
-    <p>The <strong>Method</strong> is used to tell the API what type of operation you want to perform.
-      These <strong>http methods</strong> map to the standard <strong>CRUD</strong> methods:</p>
-    <p><strong>POST</strong> is used for <strong>CREATE</strong></p>
-    <p><strong>GET</strong> is used for <strong>READ</strong></p>
-    <p><strong>PUT</strong> is used for <strong>UPDATE</strong></p>
-    <p><strong>DELETE</strong> is used for <strong>DELETE</strong></p>
-    <p>Using these four methods, you can perform any type of operation against the API.  For example, to READ
-      from a collection called <strong>/dogs</strong>:</p>
-    <pre>GET /dogs</pre>
-    <a class="outside-link" target="_blank" href="http://apigee.com/docs/usergrid/content/using-api"><strong>Learn more about using the API.</strong></a>
-  </div>
-  <div class="modal-footer">
-    <input type="reset" class="btn btn-usergrid" value="close" data-dismiss="modal"/>
-  </div>
-</form>
-
-
-<form id="dialog-form-new-application" class="modal hide fade" action="#">
-  <div class="modal-header">
-    <a class="close" data-dismiss="modal">&times</a>
-    <h4>Create new application</h4>
-  </div>
-  <div class="modal-body">
-    <p class="validateTips">All form fields are required.</p>
-    <fieldset>
-      <div class="control-group">
-        <label for="new-application-name">Name</label>
-        <div class="controls">
-          <input type="text" name="name" id="" value="" class="input-xlarge new-application-name"/>
-          <p class="help-block">Length of name must be between 4 and 80</p>
-        </div>
-      </div>
-    </fieldset>
-  </div>
-  <div class="modal-footer">
-    <input type="submit" class="btn btn-usergrid" value="Create"/>
-    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-  </div>
-</form>
-
-<div id="user-panel" class="panel-buffer">
-  <ul id="user-panel-tab-bar" class="nav nav-tabs">
-    <li><a id="button-user-list">List</a></li>
-    <li class="active"><a id="button-user-profile">Profile</a></li>
-    <li><a id="button-user-memberships">Groups</a></li>
-    <li><a id="button-user-activities">Activities</a></li>
-    <li><a id="button-user-graph">Graph</a></li>
-    <li><a id="button-user-permissions">Roles &amp; Permissions</a></li>
-  </ul>
-  <!--
-  <div id="user-panel-tab-bar">
-    <a class="tab-button btn" id="button-user-list" >List</a>
-    <a class="tab-button btn active" id="button-user-profile" >Profile</a>
-    <a class="tab-button btn" id="button-user-memberships" >Groups</a>
-    <a class="tab-button btn" id="button-user-activities" >Activities</a>
-    <a class="tab-button btn" id="button-user-graph" >Graph</a>
-    <a class="tab-button btn" id="button-user-permissions" >Roles & Permissions</a>
-  </div>
-  -->
-  <div id="user-panel-profile" class="panel-content"></div>
-  <div id="user-panel-memberships" class="panel-content" style="display: none;"></div>
-  <div id="user-panel-activities" class="panel-content" style="display: none;"></div>
-  <div id="user-panel-graph" class="panel-content" style="display: none;"></div>
-  <div id="user-panel-permissions" class="panel-content" style="display: none;"></div>
-  <form id="dialog-form-add-user-to-role" class="modal hide fade">
-    <div class="modal-header">
-      <a class="close" data-dismiss="modal">&times</a>
-      <h4>Add this user to a Role</h4>
-    </div>
-    <div class="modal-body">
-      <p class="validateTips">Search for the role you want to add to this user.</p>
-      <fieldset>
-        <div class="control-group">
-          <label for="search-role-name-input">Role</label>
-          <div class="controls">
-            <input type="text" name="search-role-name-input" id="search-role-name-input" class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-      </fieldset>
-    </div>
-    <div class="modal-footer">
-      <input type="submit" class="btn btn-usergrid" value="Add"/>
-      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-  </form>
-  <form id="dialog-form-add-group-to-user" class="modal hide fade">
-    <div class="modal-header">
-      <a class="close" data-dismiss="modal">&times</a>
-      <h4>Add this user to a Group</h4>
-    </div>
-    <div class="modal-body">
-      <p class="validateTips">Search for the group you want to add this user to.</p>
-      <fieldset>
-        <div class="control-group">
-          <label for="search-group-name-input">Group</label>
-          <div class="controls">
-            <input type="text" name="search-group-name-input" id="search-group-name-input" class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-      </fieldset>
-    </div>
-    <div class="modal-footer">
-      <input type="submit" class="btn btn-usergrid" value="Add"/>
-      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-  </form>
-  <form id="dialog-form-follow-user" class="modal hide fade">
-    <div class="modal-header">
-      <a class="close" data-dismiss="modal">&times</a>
-      <h4>Follow this User</h4>
-    </div>
-    <div class="modal-body">
-      <p class="validateTips">Search for the user you want to Follow.</p>
-      <fieldset>
-        <div class="control-group">
-          <label for="search-follow-username-input">User</label>
-          <div class="controls">
-            <input type="text" name="search-follow-username-input" id="search-follow-username-input"
-                   class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-      </fieldset>
-    </div>
-    <div class="modal-footer">
-      <input type="submit" class="btn btn-usergrid" value="Follow"/>
-      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-  </form>
-</div>
-
-
-
-<div id="groups-panel" class="panel-buffer">
-  <ul class="nav nav-tabs">
-    <li class="active"><a id="button-groups-list">List</a></li>
-  </ul>
-  <div id="groups-panel-list" class="panel-content">
-    <div id="groups-messages" class="alert" style="display: none;"></div>
-    <div class="console-section">
-      <span class="title"> App Groups </span>
-      <div class="well thingy">
-        <div class="bar">
-          <input onkeyup="Usergrid.console.searchGroups();" type="text" name="search-user-groupname" id="search-user-groupname" class="input-small search" placeholder="Search"/>
-          <select id="search-group-type" onChange="Usergrid.console.searchGroups();" class="input-medium search">
-            <option value="path">Path</option>
-            <option value="title">Group Name</option>
-          </select>
-
-          <a class="btn" id="delete-groups-link" > Delete</a>
-          <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-new-group"> Create new group</a>
-
-        </div>
-      </div>
-      <table id="groups-table" class="table">
-        <tbody></tbody>
-      </table>
-      <ul id="groups-pagination" class="pager">
-        <li id="groups-previous" class="previous"><a >&larr; Previous</a></li>
-        <li id="groups-next" class="next"><a >Next &rarr;</a></li>
-      </ul>
-    </div>
-    <div id="groups-curl-container" class="row-fluid curl-container ">
-    </div>
-  </div>
-  <form id="dialog-form-new-group" class="modal hide fade">
-    <div class="modal-header">
-      <a class="close" data-dismiss="modal">&times</a>
-      <h4>Create new group</h4>
-    </div>
-    <div class="modal-body">
-      <p class="validateTips">All form fields are required.</p>
-      <fieldset>
-        <div class="control-group">
-          <label for="new-group-title">Display Name</label>
-          <div class="controls">
-            <input type="text" name="title" id="new-group-title" value="" class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-        <div class="control-group">
-          <label for="new-group-path">Group Path</label>
-          <div class="controls">
-            <input type="text" name="path" id="new-group-path" value="" class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-      </fieldset>
-    </div>
-    <div class="modal-footer">
-      <input type="submit" class="btn btn-usergrid" value="Create"/>
-      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-  </form>
-</div>
-<div id="group-panel" class="panel-buffer">
-  <ul id="group-panel-tab-bar" class="nav nav-tabs">
-    <li><a id="button-group-list">List</a></li>
-    <li class="active"><a id="button-group-details">Details</a></li>
-    <li><a id="button-group-memberships">Members</a></li>
-    <li><a id="button-group-activities">Activities</a></li>
-    <li><a id="button-group-permissions">Roles &amp; Permissions</a></li>
-  </ul>
-  <!--
-  <div id="group-panel-tab-bar">
-    <a class="tab-button btn" id="button-group-list" >List</a>
-    <a class="tab-button btn active" id="button-group-details" >Details</a>
-    <a class="tab-button btn" id="button-group-memberships" >Members</a>
-    <a class="tab-button btn" id="button-group-activities" >Activities</a>
-    <a class="tab-button btn" id="button-group-permissions" >Roles & Permissions</a>
-  </div-->
-  <div id="group-panel-details" class="panel-content"></div>
-  <div id="group-panel-memberships" class="panel-content" style="display: none;"></div>
-  <div id="group-panel-activities" class="panel-content" style="display: none;"></div>
-  <div id="group-panel-permissions" class="panel-content" style="display: none;"></div>
-  <form id="dialog-form-add-user-to-group" class="modal hide fade">
-    <div class="modal-header">
-      <a class="close" data-dismiss="modal">&times</a>
-      <h4>Add a User to this Group</h4>
-    </div>
-    <div class="modal-body">
-      <p class="validateTips">Search for the user you want to add to this group.</p>
-      <fieldset>
-        <div class="control-group">
-          <label for="search-user-name-input">User</label>
-          <div class="controls">
-            <input type="text" name="search-user-name-input" id="search-user-name-input" class="input-xlarge" autocomplete="off"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-      </fieldset>
-    </div>
-    <div class="modal-footer">
-      <input type="submit" class="btn btn-usergrid" value="Add"/>
-      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-  </form>
-  <form id="dialog-form-add-role-to-group" class="modal hide fade">
-    <div class="modal-header">
-      <a class="close" data-dismiss="modal">&times</a>
-      <h4>Add a Role to this Group</h4>
-    </div>
-    <div class="modal-body">
-      <p class="validateTips">Search for the role you want to add to this group.</p>
-      <fieldset>
-        <div class="control-group">
-          <label for="search-groups-role-name-input">Role</label>
-          <div class="controls">
-            <input type="text" name="search-groups-role-name-input" id="search-groups-role-name-input" class="input-xlarge" autocomplete="off"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-      </fieldset>
-    </div>
-    <div class="modal-footer">
-      <input type="submit" class="btn btn-usergrid" value="Add"/>
-      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-  </form>
-</div>
-<div id="roles-panel" class="panel-buffer">
-  <ul id="roles-panel-tab-bar" class="nav nav-tabs">
-    <li class="active"><a id="button-roles-list">List</a></li>
-  </ul>
-  <div id="roles-panel-list" class="panel-content">
-    <div id="roles-messages" class="alert" style="display: none;"></div>
-    <div class="console-section">
-      <span class="title"> App Roles </span>
-      <div class="well thingy">
-        <div class="bar">
-
-          <a class="btn" id="delete-roles-link" > Delete</a>
-          <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-new-role"> Add Role</a>
-
-
-        </div>
-      </div>
-      <table id="roles-table" class="table">
-        <tbody></tbody>
-      </table>
-      <ul id="roles-pagination" class="pager">
-        <li id="roles-previous" class="previous"><a >&larr; Previous</a></li>
-        <li id="roles-next" class="next"><a >Next &rarr;</a></li>
-      </ul>
-    </div>
-    <div id="roles-curl-container" class="row-fluid curl-container ">
-    </div>
-  </div>
-  <div id="roles-panel-search" class="panel-content" style="display: none;">
-    <div class="console-section">
-      <div class="well thingy"><span class="title"> Role Settings: <span class="app_title"></span></span></div>
-      <div class="console-section-contents">
-        <div id="roles-settings">
-          <h2>No Permissions.</h2>
-        </div>
-      </div>
-    </div>
-  </div>
-  <form id="dialog-form-new-role" class="modal hide fade">
-    <div class="modal-header">
-      <a class="close" data-dismiss="modal">&times</a>
-      <h4>Create new Role</h4>
-    </div>
-    <div class="modal-body">
-      <p class="validateTips">All form fields are required.</p>
-      <fieldset>
-        <div class="control-group">
-          <label for="new-role-title">Display Name</label>
-          <div class="controls">
-            <input type="text" name="title" id="new-role-title" class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-        <div class="control-group">
-          <label for="new-role-name">Name</label>
-          <div class="controls">
-            <input type="text" name="name" id="new-role-name" class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-      </fieldset>
-    </div>
-    <div class="modal-footer">
-      <input type="submit" class="btn btn-usergrid" value="Create"/>
-      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-  </form>
-</div>
-<div id="role-panel" class="panel-buffer">
-  <ul id="role-panel-tab-bar" class="nav nav-tabs">
-    <li><a id="button-role-list">List</a></li>
-    <li class="active"><a id="button-role-settings">Settings</a></li>
-    <li><a id="button-role-users">Users</a></li>
-    <li><a id="button-role-groups">Groups</a></li>
-  </ul>
-
-  <!--div id="role-panel-tab-bar">
-    <a class="tab-button btn" id="button-role-list" >List</a>
-    <a class="tab-button btn active" id="button-role-settings" >Settings</a>
-    <a class="tab-button btn" id="button-role-users" >Users</a>
-    <a class="tab-button btn" id="button-role-groups" >Groups</a>
-  </div-->
-
-  <div id="role-panel-settings" class="panel-content">
-    <div class="console-section">
-      <div class="well thingy"> <span id="role-section-title" class="title">Role</span> </div>
-      <div class="console-section-contents">
-        <div id="role-permissions-messages" class="alert" style="display: none"></div>
-        <div id="role-permissions">
-          <h2>...</h2>
-        </div>
-      </div>
-    </div>
-    <div id="role-permissions-curl-container" class="curl-container">
-    </div>
-  </div>
-  <div id="role-panel-users" class="panel-content">
-    <div class="console-section" id="role-users"></div>
-    <div id="role-users-curl-container" class="curl-container">
-    </div>
-  </div>
-  <div id="role-panel-groups" class="panel-content"></div>
-  <form id="dialog-form-add-group-to-role" class="modal hide fade">
-    <div class="modal-header">
-      <a class="close" data-dismiss="modal">&times</a>
-      <h4>Add a Group to this Role</h4>
-    </div>
-    <div class="modal-body">
-      <p class="validateTips">Search for the group you want to add to this role.</p>
-      <fieldset>
-        <div class="control-group">
-          <label for="search-roles-group-name-input">Group</label>
-          <div class="controls">
-            <input type="text" name="search-roles-group-name-input" id="search-roles-group-name-input" class="input-xlarge" autocomplete="off"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-      </fieldset>
-    </div>
-    <div class="modal-footer">
-      <input type="submit" class="btn btn-usergrid" value="Add"/>
-      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-  </form>
-  <form id="dialog-form-add-role-to-user" class="modal hide fade">
-    <div class="modal-header">
-      <a class="close" data-dismiss="modal">&times</a>
-      <h4>Add a user to this Role</h4>
-    </div>
-    <div class="modal-body">
-      <p class="validateTips">Search for the user you want to add to this role.</p>
-      <fieldset>
-        <div class="control-group">
-          <label for="search-roles-user-name-input">User</label>
-          <div class="controls">
-            <input type="text" name="search-roles-user-name-input" id="search-roles-user-name-input" class="input-xlarge"/>
-            <p class="help-block hide"></p>
-          </div>
-        </div>
-      </fieldset>
-    </div>
-    <div class="modal-footer">
-      <input type="submit" class="btn btn-usergrid" value="Add"/>
-      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-  </form>
-</div>
-<div id="activities-panel" style="margin-top: 10px; display: none;">
-  <div id="activities-panel-list" class="panel-content">
-    <div class="console-section">
-      <span class="title"> Activities </span>
-      <div class="well thingy">
-        <div class="bar" style="margin-bottom: 25px;">
-          <input onkeyup="Usergrid.console.searchActivities();" type="text" name="search-activities" id="search-activities" class="input-small search" placeholder="Search"/>
-          <select id="search-activities-type" onChange="Usergrid.console.searchActivities();" class="input-medium search">
-            <option value="content">Content</option>
-            <option value="actor">Actor</option>
-          </select>
-          <a class="btn" onclick="Usergrid.console.requestActivities(); return false;">Update Activities</a>
-        </div>
-      </div>
-      <table id="activities-table" class="table">
-        <tbody></tbody>
-      </table>
-      <ul id="activities-pagination" class="pager">
-        <li id="activities-previous" class="previous"><a >&larr; Previous</a></li>
-        <li id="activities-next" class="next"><a >Next &rarr;</a></li>
-      </ul>
-    </div>
-  </div>
-</div>
-<div id="analytics-panel" style="display: none">
-  <div class="panel-content">
-    <div class="console-section">
-      <div class="well thingy"><span class="title"> Analytics </span></div>
-      <div class="console-section-contents">
-        <div id="analytics-time">
-          <form id="resolutionSelectForm" action="" class="form-horizontal">
-            <div class="row">
-              <fieldset class="span">
-                <div id="analytics-start-time-span" class="control-group">
-                  <label class="control-label" for="start-date">Start:</label>
-                  <div class="controls">
-                    <input type="text" id="start-date" class="fixSpan2"/>
-                    <input type="text" id="start-time" value="12:00 AM" class="fixSpan2"/>
-                  </div>
-                </div>
-                <div id="analytics-end-time-span" class="control-group" style="float: left">
-                  <label class="control-label" for="end-date">End:</label>
-                  <div class="controls">
-                    <input type="text" id="end-date" class="fixSpan2"/>
-                    <input type="text" id="end-time" value="12:00 AM" class="fixSpan2"/>
-                  </div>
-                </div>
-                <div class="control-group">
-                  <label class="control-label" for="resolutionSelect">Resolution</label>
-                  <div class="controls">
-                    <select name="resolutionSelect" id="resolutionSelect">
-                      <option value="all">All</option>
-                      <option value="minute">Minute</option>
-                      <option value="five_minutes">5 Minutes</option>
-                      <option value="half_hour">30 Minutes</option>
-                      <option value="hour">Hour</option>
-                      <option value="six_hour">6 Hours</option>
-                      <option value="half_day">Half Day</option>
-                      <option value="day" selected="selected">Day</option>
-                      <option value="week">Week</option>
-                      <option value="month">Month</option>
-                    </select>
-                  </div>
-                </div>
-              </fieldset>
-              <fieldset class="span offset1">
-                <div id="analytics-counter-names"></div>
-              </fieldset>
-            </div>
-            <div class="form-actions">
-              <button class="btn btn-primary" id="button-analytics-generate" style="margin-left: -80px">Generate</button>
-            </div>
-          </form>
-        </div>
-      </div>
-    </div>
-    <div class="console-section">
-      <div class="well thingy"><span class="title"> Result Analytics <span class="app_title"></span></span></div>
-      <div class="console-section-contents">
-        <div id="analytics-graph"></div>
-        <div id="analytics-graph-area" style="overflow-x: auto;"></div>
-      </div>
-    </div>
-  </div>
-</div>
-<div id="properties-panel" style="display: none">
-  <div class="console-section">
-    <div class="well thingy"><span class="title"> Application Properties: <span class="app_title"></span></span>
-      <div class="bar" style="margin-bottom: 25px;">
-        <a class="btn"  onclick="Usergrid.console.newApplicationCredentials(); return false;">Regenerate Credentials</a>
-      </div>
-    </div>
-    <div class="console-section-contents">
-      <table id="application-panel-key-table" class="table">
-        <tr>
-          <td>
-            <span class="span3">Client ID</span>
-          </td>
-          <td>
-            <span id="application-panel-key">...</span>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <span class="span3">Client Secret</span>
-          </td>
-          <td>
-            <span id="application-panel-secret">...</span>
-          </td>
-        </tr>
-      </table>
-    </div>
-  </div>
-</div>
-<div id="shell-panel" style="display: none">
-  <div id="shell-content" class="console-section">
-    <div class="well thingy"> <span class="title"> Interactive Shell </span></div>
-    <div class="console-section-contents">
-      <div id="shell-input-div">
-        <p>   Type "help" to view a list of the available commands.</p><hr />
-        <span>&nbsp;&gt&gt; </span>
-        <textarea id="shell-input" rows="2" autofocus="autofocus"></textarea>
-      </div>
-                    <pre id="shell-output" class="prettyprint lang-js" style="overflow-x: auto; height: 400px;">
-                      <p>  Response:</p><hr />
-                    </pre>
-    </div>
-  </div>
-  <a href="#" id="fixme">-</a>
-</div>
-
-
-
-
-<div id="notifications-panel" class="panel-buffer">
-  <div id="notifications-content" class="console-section"></div>
-</div>
-
-<div id="sendNotification-panel" class="panel-buffer" style="margin-top: 10px;">
-  <div class="alert" id="notification-scheduled-status" style="display:none;"></div>
-  <span class="title"> Compose Push Notification </span>
-  <div style="padding-top: 10px;">
-    <form id="query-inputs" class="notifcations-form">
-      <div class="well" style="padding: 0px; margin-bottom: 0px;">
-        <span class="title">Notifier and Recipients</span>
-      </div>
-      Choose the Notifier (a configured notification service) to connect with for this push notification. Only users
-      with devices registered with this notifier will receive the push notification. If a group is selected, only the users
-      in the selected goup, with devices registered with this notifier, will receive the push notification.
-
-      <label for="send-notification-notifier">Notifier:</label>
-      <select id="send-notification-notifier">
-        <option value="">Choose Notifier</option>
-      </select>
-
-      <div class="control-group">
-        <input type="radio" name="notification-user-group" id="notification-user-group-all" value="all" checked> All Devices
-        <input type="radio" name="notification-user-group" id="notification-user-group-devices" value="devices"> Devices
-        <input type="radio" name="notification-user-group" id="notification-user-group-users" value="users"> Users
-        <input type="radio" name="notification-user-group" id="notification-user-group-group" value="groups"> Groups
-      </div>
-
-      <div class="control-group">
-        <div id="notificaitons-devices-select-container" style="display: none">
-          Enter the device uuids:<br>
-          <textarea id="devices-list" placeholder="device-UUID-1,device-UUID-2,device-UUID-3,etc..."  class="span6 pull-left" rows="5"></textarea>
-        </div><div id="notificaitons-users-select-container" style="display: none">
-        Enter the usernames:<br>
-        <textarea id="user-list" placeholder="username1,username2,username3,etc..."  class="span6 pull-left" rows="5"></textarea>
-        <!--br>
-        <div class="thingy">
-        Or, use a form to look them up:<br>
-        <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-add-user-to-notification"> Add User</a>
-        </div-->
-      </div>
-        <div id="notificaitons-group-select-container" style="display: none">
-          Enter the group paths:<br>
-          <textarea id="group-list" placeholder="group-path-1,group-path-2,group-path-3,etc..."  class="span6 pull-left" rows="5"></textarea>
-          <!--br>
-          <div class="thingy">
-          <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-add-group-to-notification"> Add Group</a>
-          </div-->
-        </div>
-      </div>
-
-      <hr>
-      <div class="well thingy">
-        <span class="title">Notifier Message</span>
-      </div>
-      Edit the "alert" message in the JSON payload.
-      <div class="controls">
-        <div>
-          <textarea id="notification-json" class="span6 pull-left" rows="3">Your text here</textarea>
-          <br>
-          <a target="_blank" href="http://apigee.com/docs/usergrid/content/push-notifications" class="notifications-links">Learn more about messages in our docs</a>
-        </div>
-      </div>
-      <div style="display: none;">
-        <a class="btn" id="reset-notifications-payload" >Reset Payload</a>
-        <a class="btn" id="validate-notifications-json" >Validate JSON</a>
-        <span id="notifications-json-status" class="alert" style="width: 400px;">Validate your JSON!</span>
-      </div>
-      <hr>
-      <div class="well thingy">
-        <span class="title">Delivery</span>
-      </div>
-      Select whether to schedule this push notification for immediate delivery or at a future date and time.
-
-      <div class="control-group">
-        <input type="radio" name="notification-schedule-time" id="notification-schedule-time-now"  value="now" checked> Now
-        <input type="radio" name="notification-schedule-time" id="notification-schedule-time-later"  value="later"> Schedule for later
-      </div>
-      <div id="notification-schedule-time-controls" style="display: none;">
-        <div id="notifications-start-time-span" class="control-group">
-          <label class="control-label" for="notification-schedule-time-date">Start Date/Time:</label>
-          <div class="controls">
-            <input type="text" id="notification-schedule-time-date" class="fixSpan2"/>
-            <input type="text" id="notification-schedule-time-time" value="12:00 AM" class="fixSpan2"/> (<span id="gmt_display"></span>)
-          </div>
-        </div>
-      </div>
-      <div style="display:none;">
-        <hr>
-        <div class="well thingy">
-          <span class="title">Push Notification API Preview</span>
-        </div>
-        Review the API call and payload that will be sent to the App Services Push Notification Scheduler.
-        Advanced users can also send this command via <a href="">UGC (Usergrid Command Line)</a>.
-
-        <div id="notifications-command" class="well">
-          POST users/
-        </div>
-      </div>
-      <a class="btn btn-primary" id="schedule-notification">Schedule Notification</a>
-    </form>
-  </div>
-</div>
-
-<form id="dialog-form-add-user-to-notification" class="modal hide fade">
-  <div class="modal-header">
-    <a class="close" data-dismiss="modal">&times</a>
-    <h4>Add a user to this Notification</h4>
-  </div>
-  <div class="modal-body">
-    <p class="validateTips">Search for the user you want to add to this notification.</p>
-    <fieldset>
-      <div class="control-group">
-        <label for="search-notification-user-name-input">User</label>
-        <div class="controls">
-          <input type="text" name="search-notification-user-name-input" id="search-notification-user-name-input" class="input-xlarge"/>
-          <p class="help-block hide"></p>
-        </div>
-      </div>
-    </fieldset>
-  </div>
-  <div class="modal-footer">
-    <input type="submit" class="btn btn-usergrid" value="Add"/>
-    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-  </div>
-</form>
-
-<form id="dialog-form-add-group-to-notification" class="modal hide fade">
-  <div class="modal-header">
-    <a class="close" data-dismiss="modal">&times</a>
-    <h4>Add a group to this Notification</h4>
-  </div>
-  <div class="modal-body">
-    <p class="validateTips">Search for the group you want to add to this notification.</p>
-    <fieldset>
-      <div class="control-group">
-        <label for="search-notification-group-name-input">Group</label>
-        <div class="controls">
-          <input type="text" name="search-notification-group-name-input" id="search-notification-group-name-input" class="input-xlarge"/>
-          <p class="help-block hide"></p>
-        </div>
-      </div>
-    </fieldset>
-  </div>
-  <div class="modal-footer">
-    <input type="submit" class="btn btn-usergrid" value="Add"/>
-    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-  </div>
-</form>
-
-<div id="messageHistory-panel" class="panel-buffer">
-  <div class="well thingy">
-    <span class="title">Notification History</span>
-  </div>
-  <div style="float: left">
-    <ul class="nav nav-pills">
-      <li class="active"><a href="#" id="view-notifications-all">All</a></li>
-      <li><a href="#" id="view-notifications-scheduled">Scheduled</a></li>
-      <li><a href="#" id="view-notifications-started">Sending</a></li>
-      <li><a href="#" id="view-notifications-sent">Sent</a></li>
-      <li><a href="#" id="view-notifications-failed">Failed</a></li>
-      <li><a href="#" id="view-notifications-canceled">Canceled</a></li>
-    </ul>
-  </div>
-  <!--
-  <input id="notifications-history-search" type="text" name="path" class="span6" autocomplete="off" placeholder="search"/>
-  <a class="btn" id="view-notifications-search">Search</a>
-  -->
-  <div style="margin-top:35px;">&nbsp;</div>
-  <div id="notifications-history-display">
-    No Notifications found.
-  </div>
-
-  <ul id="notifications-history-pagination" class="pager">
-    <li style="display: none" id="notifications-history-previous" class="previous"><a >&larr; Previous</a></li>
-    <li style="display: none" id="notifications-history-next" class="next"><a >Next &rarr;</a></li>
-  </ul>
-</div>
-
-<div id="notificationsReceipt-panel" class="panel-buffer">
-  <div class="well thingy">
-    <span class="title">Notification Receipts</span>
-    <span style="float: right"><a href="#" class="notifications-links" id="return-to-notifications"><- Return to All Notifications</a></span>
-  </div>
-  <div style="float: left">
-    <ul class="nav nav-pills">
-      <li class="active"><a href="#" id="view-notification-receipt-all">All</a></li>
-      <li><a href="#" id="view-notification-receipt-received">Received</a></li>
-      <li><a href="#" id="view-notification-receipt-failed">Failed</a></li>
-    </ul>
-  </div>
-  <!--
-  <input id="notifications-history-search" type="text" name="path" class="span6" autocomplete="off" placeholder="search"/>
-  <a class="btn" id="view-notifications-search">Search</a>
-  -->
-  <div style="margin-top:35px;">&nbsp;</div>
-  <div id="notification-receipts-display">
-    No Notifications found.
-  </div>
-
-  <ul id="notification-receipt-pagination" class="pager">
-    <li style="display: none" id="notification-receipt-previous" class="previous"><a >&larr; Previous</a></li>
-    <li style="display: none" id="notification-receipt-next" class="next"><a >Next &rarr;</a></li>
-  </ul>
-
-</div>
-
-
-
-<div id="configuration-panel" class="panel-buffer" style="padding-top: 10px;">
-  <div id="cert-upload-message" class="alert alert-info" style="display:none"></div>
-  <span class="title">Configuration</span>
-  <div class="well thingy" id="cert-list-buttons" style="display: none;">
-    <div style="float: left;margin-top:10px;">
-      <span class="title" style="float: left">Notifiers</span>
-    </div>
-    <div style="float: right;">
-      <a class="btn" style="float: right" id="delete-certs-link">Delete Notifier</a>
-    </div>
-  </div>
-  <div id="notification-cert-list" style="padding-bottom: 10px"></div>
-
-  <ul id="user-panel-tab-bar" class="nav nav-tabs">
-    <li class="active"><a id="button-notifications-apple-create-notifier">Apple</a></li>
-    <li><a id="button-notifications-android-create-notifier">Android</a></li>
-  </ul>
-
-  <div id="notifications-apple-create-notifier">
-    <div style="margin-top: 10px;">
-      <span class="title">Apple Push Notification Service</span>
-      <br>
-      A Notifier allows App Services to connect to and deliver a message to a communication provider such as
-      Apple's APNs. Upload Development and Production Certificates (.p12) to set up a bridge between your app
-      and APNs for push notifications on iOS devices.
-
-
-      <form id="query-inputs" class="notifcations-form">
-        For more help: view our
-        <a href="#" class="notifications-links" onclick="Usergrid.Navigation.router.navigateTo('getStarted'); return false;">getting started page</a>
-        for more info on how to generate and download an iOS .p12 certificate at the Apple Developer Connection website.
-
-        <fieldset>
-          <div class="control-group">
-            <label class="control-label" for="new-notifier-name"><strong>Name this notifier </strong></label>
-            <div class="controls">
-              <div class="input-append">
-                <input id="new-notifier-name" type="text" name="path" class="span6" autocomplete="off" placeholder="ex: appledev"/>
-              </div>
-              The notifier name is used as the key for push data.  Give this a name that describes the certificate being uploaded.
-            </div>
-          </div>
-          <br>
-          <div class="control-group">
-            <label class="control-label" for="new-notifier-certificate"><strong>Certificate </strong></label>
-            <div class="controls">
-              <div class="input-append">
-                <input id="new-notifier-certificate" name="new-notifier-certificate" type="file" multiple>
-              </div>
-            </div>
-          </div>
-          <br>
-          <div class="control-group">
-            <label class="control-label" for="new-notification-environment"><strong>Environment </strong></label>
-            <div class="controls">
-              <div class="input-append">
-                <select id="new-notification-environment">
-                  <option value="development">development</option>
-                  <option value="production">production</option>
-                </select>
-              </div>
-            </div>
-          </div>
-          <br>
-          <div class="control-group">
-            <label class="control-label" for="new-notifier-cert-password"><strong>Certificate Password</strong></label>
-            <div class="controls">
-              <div class="input-append">
-                <input id="new-notifier-cert-password" type="text" name="path" class="span6" autocomplete="off" placeholder="ex: appledev"/>
-              </div>
-              Only applicable if your certificate is password protected
-            </div>
-          </div>
-
-
-          <a class="btn btn-primary" id="save-certificate-btn">Create Notifier</a>
-        </fieldset>
-
-      </form>
-    </div>
-  </div>
-
-  <div id="notifications-android-create-notifier" style="display:none;">
-    <div style="margin-top: 10px;">
-      <span class="title">Google Cloud Messaging</span>
-      <br>
-      A Notifier allows App Services to connect to and deliver a message to a communication provider such as
-      Google Cloud Messaging (GCM). Copy and paste your API key to create a bridge between your app
-      and GCM for push notifications on Android devices..
-
-
-      <form id="android-create-notifier-form" class="notifcations-form">
-        For more help: <a href="">see our <a href="#" class="notifications-links" onclick="Usergrid.Navigation.router.navigateTo('getStarted'); return false;">getting started page</a> page</a>.
-
-        <fieldset>
-          <div class="control-group">
-            <label class="control-label" for="android-new-notifier-name"><strong>Name this notifier </strong></label>
-            <div class="controls">
-              <div class="input-append">
-                <input id="android-new-notifier-name" type="text" name="path" class="span6" autocomplete="off" placeholder="ex: appledev"/>
-              </div>
-              The notifier name is used as the key for push data.  Give this a name that describes the API key being uploaded.
-            </div>
-          </div>
-
-          <div class="control-group">
-            <label class="control-label" for="android-new-notifier-api-key"><strong>API Key </strong></label>
-            <div class="controls">
-              <div class="input-append">
-                <input id="android-new-notifier-api-key" name="android-new-notifier-api-key" type="text" name="path" class="span6" autocomplete="off"/>
-              </div>
-            </div>
-          </div>
-
-          <a class="btn btn-primary" id="save-certificate-btn-android">Create Notifier</a>
-        </fieldset>
-
-      </form>
-    </div>
-  </div>
-
-
-</div>
-
-
-
-<div id="getStarted-panel" class="panel-buffer">
-  <div class="well thingy" style="padding-bottom: 10px;">
-    <span class="title">Getting Started with Push Notifications</span>
-    <br>
-    Before you can send a notification, you must follow these three steps to enable push notifications for your app.
-    <br>
-    <a target="_blank" href="http://apigee.com/docs/usergrid/content/push-notifications" class="notifications-links">Learn more in our docs</a>
-  </div>
-
-  <ul id="user-panel-tab-bar" class="nav nav-tabs">
-    <li class="active"><a id="button-notifications-apple-get-started">Apple</a></li>
-    <li><a id="button-notifications-android-get-started">Android</a></li>
-  </ul>
-
-  <div id="notifications-apple-get-started">
-    <span class="title">Set up Push Notifications for Apple iOS</span>
-    <div class="notifications-get-started">
-      <div class="header">
-        <img src="images/step_1.png" style="float: left;padding-right: 10px;">
-        <div style="padding-top: 9px;">
-          Follow <a target="_blank" href="http://apigee.com/docs/usergrid/content/push-notifications" class="notifications-links">the process</a> to generate and download an iOS .p12 certificate at the <a href="https://developer.apple.com/ios/manage/overview/index.action">Apple Developer Connection website</a>.
-        </div>
-      </div>
-      <img style="margin-bottom: -5px;" src="images/APNS_cert_upload.png">
-    </div>
-
-    <div class="notifications-get-started">
-      <div class="header">
-        <img src="images/step_2.png" style="float: left;padding-right: 10px;">
-        <div style="padding-top: 9px;">
-          Add the certificates to set up your notifiers.
-        </div>
-      </div>
-      <div style="">
-        <a href="#" onclick="Usergrid.Navigation.router.navigateTo('configuration'); return false;">Upload a certificate and create the connection to APNs.</a>
-      </div>
-      <img style="margin-left: 50px; margin-bottom: -5px;" src="images/APNS_certification.png">
-    </div>
-
-    <div class="notifications-get-started">
-      <div class="header">
-        <img src="images/step_3.png" style="float: left;padding-right: 10px;">
-        <div style="padding-top: 9px;">
-          Compose and schedule a push notification.
-        </div>
-      </div>
-      <div style="">
-        <a href="#" onclick="Usergrid.Navigation.router.navigateTo('sendNotification'); return false;">Send a push notification.</a>
-      </div>
-      <br><br>
-      <img style="margin-left: 58px; margin-bottom: -5px;" src="images/iphone_message.png">
-    </div>
-
-  </div>
-
-  <div id="notifications-android-get-started" style="display: none">
-    <span class="title">Set up Push Notifications for Google Android</span>
-    <div class="notifications-get-started">
-      <div class="header">
-        <img src="images/step_1.png" style="float: left;padding-right: 10px;">
-        <div style="padding-top: 9px;">
-          Retrieve your API key from the <a href="https://code.google.com/apis/console/" target="_blank">Android API Developer website</a>
-        </div>
-      </div>
-      <img style="margin-bottom: -5px;" src="images/google_api_key.png">
-    </div>
-
-    <div class="notifications-get-started">
-      <div class="header">
-        <img src="images/step_2.png" style="float: left;padding-right: 10px;">
-        <div style="padding-top: 9px;">
-          Add your API key to set up your notifiers.
-        </div>
-      </div>
-      <div style="">
-        <a href="#" onclick="Usergrid.Navigation.router.navigateTo('configuration'); return false;">Copy and paste your Google API Access key.</a>
-      </div>
-      <img style="margin-left: 50px; margin-bottom: -5px;" src="images/APNS_certification.png">
-    </div>
-
-    <div class="notifications-get-started">
-      <div class="header">
-        <img src="images/step_3.png" style="float: left;padding-right: 10px;">
-        <div style="padding-top: 9px;">
-          Compose and schedule a push notification.
-        </div>
-      </div>
-      <div style="">
-        <a href="#" onclick="Usergrid.Navigation.router.navigateTo('sendNotification'); return false;">Send a push notification.</a>
-      </div>
-      <br><br>
-      <img style="margin-left: 58px; margin-bottom: -5px;" src="images/android-notification.png">
-    </div>
-  </div>
-</div>
-
-
-<div id="collections-panel" class="panel-buffer">
-  <div id="query-path-area" class="console-section query-path-area">
-
-    <form id="dialog-form-new-collection" class="modal hide fade">
-      <div class="modal-header">
-        <a class="close" data-dismiss="modal">&times</a>
-        <h4>Create new collection</h4>
-      </div>
-      <div class="modal-body">
-        <p class="validateTips">All form fields are required.</p>
-        <fieldset>
-          <div class="control-group">
-            <label for="new-collection-name">Name</label>
-            <div class="controls">
-              <input type="text" name="name" id="new-collection-name" value="" class="input-xlarge"/>
-              <p class="help-block hide"></p>
-            </div>
-          </div>
-        </fieldset>
-      </div>
-      <div class="modal-footer">
-        <input type="submit" class="btn btn-usergrid" value="Create"/>
-        <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-      </div>
-    </form>
-
-
-    <!--a class="data-explorer-link"  style="float: right" onclick="$('#data-explorer').toggle(); return false;">Data Explorer</a -->
-
-
-    <div id="data-explorer" class="">
-      <div class="well thingy">
-        <span class="title">Data Explorer</span>
-      </div>
-
-      <div style="padding-right: 20px;">
-        <form id="query-inputs" class="">
-          <div class="control-group">
-            <div class="" data-toggle="buttons-radio">
-              <!--a class="btn" id="button-query-back">&#9664; Back</a-->
-              <!--Added disabled class to change the way button looks but their functionality is as usual -->
-              <label class="control-label"><strong>Method</strong> <a id="query-method-help" href="#" class="help-link">get help</a></label>
-              <input type="radio" name="query-action" value="get" style="margin-top: -2px;" id="button-query-get" checked> GET &nbsp; &nbsp;
-              <input type="radio" name="query-action" value="post" style="margin-top: -2px;" id="button-query-post"> POST &nbsp; &nbsp;
-              <input type="radio" name="query-action" value="put" style="margin-top: -2px;" id="button-query-put"> PUT &nbsp; &nbsp;
-              <input type="radio" name="query-action" value="delete" style="margin-top: -2px;" id="button-query-delete"> DELETE
-            </div>
-          </div>
-          <div class="control-group">
-            <label class="control-label" for="query-path"><strong>Path</strong> <a id="query-path-help" href="#" class="help-link">get help</a></label>
-            <div class="controls">
-              <div class="input-append">
-                <input id="query-path" type="text" name="path" class="span6" autocomplete="off" placeholder="ex: /users"/>
-              </div>
-            </div>
-          </div>
-          <div class="control-group">
-            <a id="back-to-collection" class="outside-link" style="display:none">Back to collection</a>
-          </div>
-          <div class="control-group" id="query-ql-box">
-            <label class="control-label" for="query-ql"><strong>Query String</strong> <a id="query-help" href="#" class="help-link">get help</a> </label>
-            <div class="controls">
-              <div class="input-append">
-                <input id="query-ql" type="text" name="query" class="span5" placeholder="ex: select * where name='fred'"/>
-                <div class="btn-group pull-right">
-                  <a class="btn dropdown-toggle " data-toggle="dropdown">
-                    <span id='query-collections-caret' class="caret"></span>
-                  </a>
-                  <ul id="query-collections-indexes-list"  class="dropdown-menu ">
-                  </ul>
-                </div>
-              </div>
-            </div>
-          </div>
-          <div class="control-group" id="query-limit-box">
-            <label class="control-label" for="query-limit"><strong>Limit</strong> <a id="query-limit-help" href="#" class="help-link">get help</a></label>
-            <div class="controls">
-              <div class="input-append">
-                <input id="query-limit" type="text" name="query-limit" class="span5" placeholder="ex: 10"/>
-              </div>
-            </div>
-          </div>
-          <div class="control-group" id="query-json-box" style="display:none">
-            <label class="control-label" for="query-source"><strong>JSON Body</strong> <a id="query-json-help" href="#" class="help-link">get help</a></label>
-            <div class="controls">
-              <div class="input-append">
-                <textarea id="query-source" class="span6 pull-left" rows="4">
-                  { "name":"value" }
-                </textarea>
-              </div>
-              <a class="btn pull-left" id="button-query-validate" >Validate JSON</a>
-              <div id="statusbar-placeholder" style="width: 100px; float: right;"></div>
-            </div>
-          </div>
-          <div style="clear: both; height: 10px;"></div>
-          <div class="control-group">
-            <button type="button" class="btn btn-primary" id="button-query">Run Query</button>
-          </div>
-        </form>
-      </div>
-    </div>
-
-
-
-
-
-    <div id="query-response-area" class="console-section" style="display: none;">
-      <div class="well thingy" id="query-received-header">
-        <div class="bar" style="height: 40px;">
-          <div id="data-explorer-status" class="alert" style="float: left; width: 410px;margin-top: -5px;display:none;"></div>
-          <a class="btn " data-toggle="modal" id="delete-entity-link" > Delete</a>
-        </div>
-      </div>
-      <div class="console-section-contents">
-        <!--<pre class="query-response-json">{ }</pre>-->
-        <table id="query-response-table">
-
-        </table>
-        <ul id="query-response-pagination" class="pager">
-          <li style="display: none" id="query-response-previous" class="previous"><a >&larr; Previous</a></li>
-          <li style="display: none" id="query-response-next" class="next"><a >Next &rarr;</a></li>
-        </ul>
-      </div>
-    </div>
-  </div>
-</div>
-
-</div>
-</div>
-<div class="cleaner">&nbsp;</div>
-</div>
-</div>
-</div>
-</div>
-<!--
-<div id="footer">
-  <div class="column-in">
-    <div id="copyright" class="pull-right">&copy; 2013 Apigee Corp. All rights reserved.</div>
-  </div>
-</div>
--->
-
-<script src="js/app/ui/collections.entity.js" type="text/javascript"></script>
-<script src="js/app/ui/collections.user.js" type="text/javascript"></script>
-<script type="text/javascript">
-
-  var _gaq = _gaq || [];
-  _gaq.push(['_setAccount', 'UA-4084158-4']);
-  _gaq.push(['_trackPageview']);
-
-  (function() {
-    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
-  })();
-
-</script>
-
-<link rel="stylesheet" type="text/css" href="css/custom-theme/jquery-ui-1.8.9.custom.css"/>
-<link rel="stylesheet" type="text/css" href="css/jquery-ui-timepicker.css"/>
-<link rel="stylesheet" type="text/css" href="css/jquery.ui.statusbar.css"/>
-<link rel="stylesheet" type="text/css" href="css/prettify.css"/>
-
-<script src="js/lib/MD5.min.js" type="text/javascript"></script>
-<script src="https://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22visualization%22%2C%22version%22%3A%221.0%22%2C%22packages%22%3A%5B%22corechart%22%5D%7D%5D%7D" type="text/javascript"></script>
-<script src="js/lib/bootstrap.min.js" type="text/javascript"></script>
-<script src="js/app/pages.js" type="text/javascript"></script>
-<script src="js/app/app.js" type="text/javascript"></script>
-<script src="js/app/status.js" type="text/javascript"></script>
-<script src="js/lib/prettify.js" type="text/javascript"></script>
-<script type="text/javascript" charset="utf-8">prettyPrint();</script>
-</body>
-</html>


[11/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery.dataset.min.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery.dataset.min.js b/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery.dataset.min.js
deleted file mode 100644
index 4dc2168..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery.dataset.min.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(a){function h(a){var c,d=a&&a.length;if(d===undefined){for(c in a){this.removeAttr(b+c)}}else{for(c=0;c<d;c++){this.removeAttr(b+a[c])}}return this}function g(a){if(typeof a=="string"){return this.removeAttr(b+a)}return h(a)}function f(a){for(var c in a){this.attr(b+c,a[c])}return this}function e(){return this.foldAttr(function(a,b,d){var e=c.exec(this.name);if(e)d[e[1]]=this.value})}function d(a,c){if(c!==undefined){return this.attr(b+a,c)}switch(typeof a){case"string":return this.attr(b+a);case"object":return f.call(this,a);case"undefined":return e.call(this);default:throw"dataset: invalid argument "+a}}var b="data-",c=/^data\-(.*)$/;a.fn.dataset=d;a.fn.removeDataset=h})(jQuery);(function(a){function e(a,b){if(b===undefined)b=[];return d(this,a,b)}function d(a,b,c){var d=a&&a.length;if(c===undefined)c={};if(!a)return c;if(d!==undefined){for(var e=0,f=a[e];e<d&&b.call(f,e,f,c)!==false;f=a[++e]){};}else{for(var g in a){if(b.call(a[g],g,a[g],c)===false)break}}return c}funct
 ion c(a,b){return d(this.length>0&&this[0].attributes,a,b)}function b(b){if(this.length>0){a.each(this[0].attributes,b)}return this}a.fn.eachAttr=b;a.fn.foldAttr=c;a.fn.fold=e;a.fold=d})(jQuery)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery.dform-0.1.3.min.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery.dform-0.1.3.min.js b/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery.dform-0.1.3.min.js
deleted file mode 100644
index 3d1c3ec..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery.dform-0.1.3.min.js
+++ /dev/null
@@ -1,16 +0,0 @@
-(function(a){function h(b,c,e){if(typeof c=="string"){a.isArray(b[c])||(b[c]=[]);b[c].push(e)}else typeof c=="object"&&a.each(c,function(g,i){h(b,g,i)})}var f={},d={};a.fn.extend({runSubscription:function(b,c,e){var g=this;a.dform.hasSubscription(b)&&a.each(f[b],function(i,j){j.call(g,c,e)});return this},runAll:function(b){var c=b.type,e=this;this.runSubscription("[pre]",b,c);a.each(b,function(g,i){a(e).runSubscription(g,i,c)});this.runSubscription("[post]",b,c);return this},formElement:function(b){var c=
-a.dform.createElement(b);this.append(a(c));a(c).runAll(b);return this},buildForm:function(b,c,e){if(typeof b=="string"){var g=a(this);a.get(b,c,function(i,j,k){a(g).buildForm(i);a.isFunction(e)&&e(i,j,k)},a.dform.options.ajaxFormat)}else if(b.type)this.formElement(b);else{c=this.is("form")?this:this.append("<form>").children("form:last");b=a.extend({type:"form"},b);a(c).dformAttr(b);a(c).runAll(b)}return this},dformAttr:function(b,c){var e=a.keyset(f);a.isArray(c)&&a.merge(e,c);this.attr(a.withoutKeys(b,
-e));return this}});a.extend(a,{keyset:function(b){var c=[];a.each(b,function(e){c.push(e)});return c},withKeys:function(b,c){var e={};a.each(c,function(g,i){if(b[i])e[i]=b[i]});return e},withoutKeys:function(b,c){var e={};a.each(b,function(g,i){if(a.inArray(g,c)==-1)e[g]=i});return e},getValueAt:function(b,c){for(var e=a.isArray(c)?c:c.split("."),g=b,i=0;i<e.length;i++){var j=e[i];if(!g[j])return false;g=g[j]}return g}});a.dform={options:{prefix:"ui-dform-",ajaxFormat:"json",defaultType:function(b){return a("<"+
-b.type+">").dformAttr(b)}},removeType:function(b){delete d[b]},typeNames:function(){return a.keyset(d)},addType:function(b,c){h(d,b,c)},addTypeIf:function(b,c,e){b&&a.dform.addType(c,e)},subscriberNames:function(){return a.keyset(f)},subscribe:function(b,c){h(f,b,c)},subscribeIf:function(b,c,e){b&&a.dform.subscribe(c,e)},removeSubscription:function(b){delete f[b]},hasSubscription:function(b){return f[b]?true:false},createElement:function(b){var c=b.type;if(!c)throw"No element type given! Must always exist.";
-var e=null;if(d[c]){var g=a.withoutKeys(b,"type");a.each(d[c],function(i,j){e=j.call(e,g)})}else e=a.dform.options.defaultType(b);return a(e)}}})(jQuery);
-(function(a){a.fn.placeholder=function(h){var f=this;a(this).data("placeholder",h);a(this).val(h);a(this).focus(function(){a(this).val()==a(this).data("placeholder")&&a(this).val("")});a(this).blur(function(){a(this).val()==""&&a(this).val(a(this).data("placeholder"))});a(this).parents("form").submit(function(){a(f).val()==a(f).data("placeholder")&&a(f).val("")});return this}})(jQuery);
-(function(a){function h(f,d){return function(b){return a(f).dformAttr(b,d)}}a.dform.addType({text:h('<input type="text" />'),password:h('<input type="password" />'),submit:h('<input type="submit" />'),reset:h('<input type="reset" />'),hidden:h('<input type="hidden" />'),radio:h('<input type="radio" />'),checkbox:h('<input type="checkbox" />'),checkboxes:h("<div>",["name"]),radiobuttons:h("<div>",["name"]),container:h("<div>"),file:h('<input type="file" />')});a.dform.subscribe({"class":function(f){this.addClass(f)},
-html:function(f){this.html(f)},elements:function(f){var d=a(this);a.each(f,function(b,c){if(typeof b=="string")c.name=name;a(d).formElement(c)})},value:function(f){this.val(f)},options:function(f,d){var b=a(this);if(d=="select")a.each(f,function(c,e){var g;if(typeof e=="string")g=a("<option>").attr("value",c).html(e);if(typeof e=="object")g=h("<option>",{})(a.withoutKeys(e,["value"])).html(e.value);a(b).append(g)});else if(d=="checkboxes"||d=="radiobuttons"){b=this;a.each(f,function(c,e){var g=d==
-"radiobuttons"?{type:"radio"}:{type:"checkbox"};if(typeof e=="string")g.caption=e;else a.extend(g,e);g.value=c;a(b).formElement(g)})}},caption:function(f,d){var b={};if(typeof f=="string")b.html=f;else a.extend(b,f);if(d=="fieldset"){b.type="legend";var c=a.dform.createElement(b);this.prepend(c);a(c).runAll(b)}else{b.type="label";if(this.attr("id"))b["for"]=this.attr("id");c=a.dform.createElement(b);d=="checkbox"||d=="radio"?this.parent().append(a(c)):a(c).insertBefore(a(this));a(c).runAll(b)}},type:function(f,
-d){a.dform.options.prefix&&this.addClass(a.dform.options.prefix+d)},"[post]":function(f,d){if(d=="checkboxes"||d=="radiobuttons")this.children("[type="+(d=="checkboxes"?"checkbox":"radio")+"]").each(function(){a(this).attr("name",f.name)})}})})(jQuery);
-(function(a){function h(d,b){var c=a.keyset(a.ui[d].prototype.options);return a.withKeys(b,c)}function f(d){d=d.split(".");if(d.length>1){var b=d.shift();if(b=jQuery.global.localize(b))return a.getValueAt(b,d)}return false}a.dform.subscribeIf(a.isFunction(a.fn.placeholder),"placeholder",function(d,b){if(b=="text"||b=="textarea")a(this).placeholder(d)});a.dform.addTypeIf(a.isFunction(a.fn.progressbar),"progressbar",function(d){return a("<div>").dformAttr(d).progressbar(h("progressbar",d))});a.dform.addTypeIf(a.isFunction(a.fn.slider),
-"slider",function(d){return a("<div>").dformAttr(d).slider(h("slider",d))});a.dform.addTypeIf(a.isFunction(a.fn.accordion),"accordion",function(d){return a("<div>").dformAttr(d)});a.dform.addTypeIf(a.isFunction(a.fn.tabs),"tabs",function(d){return a("<div>").dformAttr(d)});a.dform.subscribeIf(a.isFunction(a.fn.accordion),"entries",function(d,b){var c=this;b=="accordion"&&a.each(d,function(e,g){a.extend(g,{type:"container"});a(c).formElement(g);a(c).children("div:last").prev().wrapInner(a("<a>").attr("href",
-"#"))})});a.dform.subscribeIf(a.isFunction(a.fn.tabs),"entries",function(d,b){var c=this;if(b=="tabs"){this.append("<ul>");var e=a(c).children("ul:first");a.each(d,function(g,i){var j=i.id?i.id:g;a.extend(i,{type:"container",id:j});a(c).formElement(i);var k=a(c).children("div:last").prev();a(k).wrapInner(a("<a>").attr("href","#"+j));a(e).append(a("<li>").wrapInner(k))})}});a.dform.subscribeIf(a.isFunction(a.fn.dialog),"dialog",function(d,b){if(b=="form"||b=="fieldset")this.dialog(d)});a.dform.subscribeIf(a.isFunction(a.fn.resizable),
-"resizable",function(d){this.resizable(d)});a.dform.subscribeIf(a.isFunction(a.fn.datepicker),"datepicker",function(d,b){b=="text"&&this.datepicker(d)});a.dform.subscribeIf(a.isFunction(a.fn.autocomplete),"autocomplete",function(d,b){b=="text"&&this.autocomplete(d)});a.dform.subscribe("[post]",function(d,b){if(this.parents("form").hasClass("ui-widget")){if((b=="button"||b=="submit")&&a.isFunction(a.fn.button))this.button();a.inArray(b,["text","textarea","password","fieldset"])!=-1&&this.addClass("ui-widget-content ui-corner-all")}if(b==
-"accordion"){var c=h(b,d);a.extend(c,{header:"label"});this.accordion(c)}else if(b=="tabs"){c=h(b,d);this.tabs(c)}});a.dform.subscribeIf(a.isFunction(a.fn.validate),{"[pre]":function(d,b){if(b=="form"){var c={};if(this.hasClass("ui-widget"))c={highlight:function(e){a(e).addClass("ui-state-highlight")},unhighlight:function(e){a(e).removeClass("ui-state-highlight")}};this.validate(c)}},validate:function(d){this.rules("add",d)}});a.dform.subscribeIf(a.isFunction(a.fn.ajaxForm),"ajax",function(d,b){b==
-"form"&&this.ajaxForm(d)});a.dform.subscribeIf(a.global&&a.isFunction(a.global.localize),"html",function(d){(d=f(d))&&a(this).html(d)});a.dform.subscribeIf(a.global,"options",function(d,b){if(b=="select"&&typeof d=="string"){a(this).html("");var c=f(d);c&&a(this).runSubscription("options",c,b)}});a.dform.subscribeIf(a.isFunction(a.fn.wysiwyg),"wysiwyg",function(){})})(jQuery);

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery.jsonp-2.3.1.min.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery.jsonp-2.3.1.min.js b/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery.jsonp-2.3.1.min.js
deleted file mode 100644
index 25a6997..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery.jsonp-2.3.1.min.js
+++ /dev/null
@@ -1,3 +0,0 @@
-// jquery.jsonp 2.3.1 (c)2012 Julian Aubourg | MIT License
-// https://github.com/jaubourg/jquery-jsonp
-(function(a){function b(){}function c(a){A=[a]}function d(a,b,c,d){try{d=a&&a.apply(b.context||b,c)}catch(e){d=!1}return d}function e(a){return/\?/.test(a)?"&":"?"}function D(l){function Y(a){Q++||(R(),K&&(y[M]={s:[a]}),G&&(a=G.apply(l,[a])),d(D,l,[a,t]),d(F,l,[l,t]))}function Z(a){Q++||(R(),K&&a!=u&&(y[M]=a),d(E,l,[l,a]),d(F,l,[l,a]))}l=a.extend({},B,l);var D=l.success,E=l.error,F=l.complete,G=l.dataFilter,H=l.callbackParameter,I=l.callback,J=l.cache,K=l.pageCache,L=l.charset,M=l.url,N=l.data,O=l.timeout,P,Q=0,R=b,S,T,U,V,W,X;return w&&w(function(a){a.done(D).fail(E),D=a.resolve,E=a.reject}).promise(l),l.abort=function(){!(Q++)&&R()},d(l.beforeSend,l,[l])===!1||Q?l:(M=M||h,N=N?typeof N=="string"?N:a.param(N,l.traditional):h,M+=N?e(M)+N:h,H&&(M+=e(M)+encodeURIComponent(H)+"=?"),!J&&!K&&(M+=e(M)+"_"+(new Date).getTime()+"="),M=M.replace(/=\?(&|$)/,"="+I+"$1"),K&&(P=y[M])?P.s?Y(P.s[0]):Z(P):(v[I]=c,V=a(s)[0],V.id=k+z++,L&&(V[g]=L),C&&C.version()<11.6?(W=a(s)[0]).text="document.getElem
 entById('"+V.id+"')."+n+"()":V[f]=f,p in V&&(V.htmlFor=V.id,V.event=m),V[o]=V[n]=V[p]=function(a){if(!V[q]||!/i/.test(V[q])){try{V[m]&&V[m]()}catch(b){}a=A,A=0,a?Y(a[0]):Z(i)}},V.src=M,R=function(a){X&&clearTimeout(X),V[p]=V[o]=V[n]=null,x[r](V),W&&x[r](W)},x[j](V,U=x.firstChild),W&&x[j](W,U),X=O>0&&setTimeout(function(){Z(u)},O)),l)}var f="async",g="charset",h="",i="error",j="insertBefore",k="_jqjsp",l="on",m=l+"click",n=l+i,o=l+"load",p=l+"readystatechange",q="readyState",r="removeChild",s="<script>",t="success",u="timeout",v=window,w=a.Deferred,x=a("head")[0]||document.documentElement,y={},z=0,A,B={callback:k,url:location.href},C=v.opera;D.setup=function(b){a.extend(B,b)},a.jsonp=D})(jQuery)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery.tmpl.min.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery.tmpl.min.js b/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery.tmpl.min.js
deleted file mode 100644
index 5d61533..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery.tmpl.min.js
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
- * jQuery Templates Plugin 1.0.0pre
- * http://github.com/jquery/jquery-tmpl
- * Requires jQuery 1.4.2
- *
- * Copyright Software Freedom Conservancy, Inc.
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- */
-(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0
 ])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,
 "tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.child
 Nodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d
 ?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAt
 tribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery.ui.statusbar.min.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery.ui.statusbar.min.js b/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery.ui.statusbar.min.js
deleted file mode 100644
index e9b149b..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery.ui.statusbar.min.js
+++ /dev/null
@@ -1 +0,0 @@
-$.widget("ui.statusbar",{options:{hideAfter:10,hidden:true},_create:function(){this.element.html("<ul></ul>");this.element.addClass("ui-statusbar");if(this.options.hidden){this.element.hide()}else{this.element.show()}this._init()},_init:function(){},add:function(a,b,c){var d="ui-state-default";var e="ui-icon-info";if(c=="alert"){d="ui-state-highlight";e="ui-icon-notice"}else if(c=="error"){d="ui-state-error";e="ui-icon-alert"}var f="<span class='ui-icon "+e+"' style='float:left;margin-right:0.3em;'></span> ";var g=$("<li class='"+d+"'>"+f+a+"</li>");this.element.find("ul").prepend(g);this._trigger("messageadd",{},a);this.element.show();var h=this;var i=(b||h.options.hideAfter)*1e3;setTimeout(function(){g.fadeOut("slow",function(){g.remove();h._trigger("messageremove",{},a)})},i)},destroy:function(){$.Widget.prototype.destroy.apply(this,arguments);this.element.empty()}})
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery.ui.timepicker.min.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery.ui.timepicker.min.js b/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery.ui.timepicker.min.js
deleted file mode 100644
index 64946b5..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery.ui.timepicker.min.js
+++ /dev/null
@@ -1 +0,0 @@
-(function($,undefined){function extendRemove(a,b){$.extend(a,b);for(var c in b)if(b[c]==null||b[c]==undefined)a[c]=b[c];return a}function Timepicker(){this.debug=true;this._curInst=null;this._isInline=false;this._disabledInputs=[];this._timepickerShowing=false;this._inDialog=false;this._dialogClass="ui-timepicker-dialog";this._mainDivId="ui-timepicker-div";this._inlineClass="ui-timepicker-inline";this._currentClass="ui-timepicker-current";this._dayOverClass="ui-timepicker-days-cell-over";this.regional=[];this.regional[""]={hourText:"Hour",minuteText:"Minute",amPmText:["AM","PM"]};this._defaults={showOn:"focus",button:null,showAnim:"fadeIn",showOptions:{},appendText:"",onSelect:null,onClose:null,timeSeparator:":",showPeriod:false,showPeriodLabels:true,showLeadingZero:true,showMinutesLeadingZero:true,altField:"",defaultTime:"now",onHourShow:null,onMinuteShow:null,zIndex:null,hours:{starts:0,ends:23},minutes:{starts:0,ends:55,interval:5},rows:4};$.extend(this._defaults,this.regional[""
 ]);this.tpDiv=$('<div id="'+this._mainDivId+'" class="ui-timepicker ui-widget ui-helper-clearfix ui-corner-all " style="display: none"></div>')}$.extend($.ui,{timepicker:{version:"0.2.3"}});var PROP_NAME="timepicker";var tpuuid=(new Date).getTime();$.extend(Timepicker.prototype,{markerClassName:"hasTimepicker",log:function(){if(this.debug)console.log.apply("",arguments)},_widgetTimepicker:function(){return this.tpDiv},_getTimeTimepicker:function(a){return a?a.value:""},setDefaults:function(a){extendRemove(this._defaults,a||{});return this},_attachTimepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("time:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase();var inline=nodeName=="div"||nodeName=="span";if(!target.id){this.uuid+=1;target.id="tp"+this.uuid}var inst=this
 ._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{});if(nodeName=="input"){this._connectTimepicker(target,inst)}else if(inline){this._inlineTimepicker(target,inst)}},_newInst:function(a,b){var c=a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1");return{id:c,input:a,inline:b,tpDiv:!b?this.tpDiv:$('<div class="'+this._inlineClass+' ui-timepicker ui-widget  ui-helper-clearfix"></div>')}},_connectTimepicker:function(a,b){var c=$(a);b.append=$([]);b.trigger=$([]);if(c.hasClass(this.markerClassName)){return}this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keyup(this._doKeyUp).bind("setData.timepicker",function(a,c,d){b.settings[c]=d}).bind("getData.timepicker",function(a,c){return this._get(b,c)});$.data(a,PROP_NAME,b)},_doKeyDown:function(a){var b=$.timepicker._getInst(a.target);var c=true;b._keyEvent=true;if($.timepicker._timepickerShowing){switch(a.keyCode){case 9:$.timepicker._hideTimepicker();c=false;break;case 13:$.timepic
 ker._updateSelectedValue(b);$.timepicker._hideTimepicker();return false;break;case 27:$.timepicker._hideTimepicker();break;default:c=false}}else if(a.keyCode==36&&a.ctrlKey){$.timepicker._showTimepicker(this)}else{c=false}if(c){a.preventDefault();a.stopPropagation()}},_doKeyUp:function(a){var b=$.timepicker._getInst(a.target);$.timepicker._setTimeFromField(b);$.timepicker._updateTimepicker(b)},_attachments:function(a,b){var c=this._get(b,"appendText");var d=this._get(b,"isRTL");if(b.append){b.append.remove()}if(c){b.append=$('<span class="'+this._appendClass+'">'+c+"</span>");a[d?"before":"after"](b.append)}a.unbind("focus.timepicker",this._showTimepicker);if(b.trigger){b.trigger.remove()}var e=this._get(b,"showOn");if(e=="focus"||e=="both"){a.bind("focus.timepicker",this._showTimepicker)}if(e=="button"||e=="both"){var f=this._get(b,"button");$(f).bind("click.timepicker",function(){if($.timepicker._timepickerShowing&&$.timepicker._lastInput==a[0]){$.timepicker._hideTimepicker()}else
 {$.timepicker._showTimepicker(a[0])}return false})}},_inlineTimepicker:function(a,b){var c=$(a);if(c.hasClass(this.markerClassName))return;c.addClass(this.markerClassName).append(b.tpDiv).bind("setData.timepicker",function(a,c,d){b.settings[c]=d}).bind("getData.timepicker",function(a,c){return this._get(b,c)});$.data(a,PROP_NAME,b);this._setTimeFromField(b);this._updateTimepicker(b);b.tpDiv.show()},_showTimepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input"){a=$("input",a.parentNode)[0]}if($.timepicker._isDisabledTimepicker(a)||$.timepicker._lastInput==a){return}$.timepicker._hideTimepicker();var b=$.timepicker._getInst(a);if($.timepicker._curInst&&$.timepicker._curInst!=b){$.timepicker._curInst.tpDiv.stop(true,true)}var c=$.timepicker._get(b,"beforeShow");extendRemove(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;$.timepicker._lastInput=a;$.timepicker._setTimeFromField(b);if($.timepicker._inDialog){a.value=""}if(!$.timepicker._pos){$.timepicker._pos=$.timepick
 er._findPos(a);$.timepicker._pos[1]+=a.offsetHeight}var d=false;$(a).parents().each(function(){d|=$(this).css("position")=="fixed";return!d});if(d&&$.browser.opera){$.timepicker._pos[0]-=document.documentElement.scrollLeft;$.timepicker._pos[1]-=document.documentElement.scrollTop}var e={left:$.timepicker._pos[0],top:$.timepicker._pos[1]};$.timepicker._pos=null;b.tpDiv.css({position:"absolute",display:"block",top:"-1000px"});$.timepicker._updateTimepicker(b);b._hoursClicked=false;b._minutesClicked=false;e=$.timepicker._checkOffset(b,e,d);b.tpDiv.css({position:$.timepicker._inDialog&&$.blockUI?"static":d?"fixed":"absolute",display:"none",left:e.left+"px",top:e.top+"px"});if(!b.inline){var f=$.timepicker._get(b,"showAnim");var g=$.timepicker._get(b,"duration");var h=$.timepicker._get(b,"zIndex");var i=function(){$.timepicker._timepickerShowing=true;var a=$.timepicker._getBorders(b.tpDiv);b.tpDiv.find("iframe.ui-timepicker-cover").css({left:-a[0],top:-a[1],width:b.tpDiv.outerWidth(),heig
 ht:b.tpDiv.outerHeight()})};if(!h){h=$(a).zIndex()+1}b.tpDiv.zIndex(h);if($.effects&&$.effects[f]){b.tpDiv.show(f,$.timepicker._get(b,"showOptions"),g,i)}else{b.tpDiv[f||"show"](f?g:null,i)}if(!f||!g){i()}if(b.input.is(":visible")&&!b.input.is(":disabled")){b.input.focus()}$.timepicker._curInst=b}},_updateTimepicker:function(a){var b=this;var c=$.timepicker._getBorders(a.tpDiv);a.tpDiv.empty().append(this._generateHTML(a)).find("iframe.ui-timepicker-cover").css({left:-c[0],top:-c[1],width:a.tpDiv.outerWidth(),height:a.tpDiv.outerHeight()}).end().find(".ui-timepicker-minute-cell").bind("click",{fromDoubleClick:false},$.proxy($.timepicker.selectMinutes,this)).bind("dblclick",{fromDoubleClick:true},$.proxy($.timepicker.selectMinutes,this)).end().find(".ui-timepicker-hour-cell").bind("click",{fromDoubleClick:false},$.proxy($.timepicker.selectHours,this)).bind("dblclick",{fromDoubleClick:true},$.proxy($.timepicker.selectHours,this)).end().find(".ui-timepicker td a").bind("mouseout",funct
 ion(){$(this).removeClass("ui-state-hover");if(this.className.indexOf("ui-timepicker-prev")!=-1)$(this).removeClass("ui-timepicker-prev-hover");if(this.className.indexOf("ui-timepicker-next")!=-1)$(this).removeClass("ui-timepicker-next-hover")}).bind("mouseover",function(){if(!b._isDisabledTimepicker(a.inline?a.tpDiv.parent()[0]:a.input[0])){$(this).parents(".ui-timepicker-calendar").find("a").removeClass("ui-state-hover");$(this).addClass("ui-state-hover");if(this.className.indexOf("ui-timepicker-prev")!=-1)$(this).addClass("ui-timepicker-prev-hover");if(this.className.indexOf("ui-timepicker-next")!=-1)$(this).addClass("ui-timepicker-next-hover")}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end()},_generateHTML:function(a){var b,c,d,e="",f=this._get(a,"showPeriod")==true,g=this._get(a,"showPeriodLabels")==true,h=this._get(a,"showLeadingZero")==true,i=this._get(a,"amPmText"),j=this._get(a,"rows"),k=j/2,l=k+1,m=Array(),n=this._get(a,"hours"),o=null,p=0,q=this._get(
 a,"hourText");for(b=n.starts;b<=n.ends;b++){m.push(b)}o=Math.round(m.length/j+.49);e='<table class="ui-timepicker-table ui-widget-content ui-corner-all"><tr>'+'<td class="ui-timepicker-hours">'+'<div class="ui-timepicker-title ui-widget-header ui-helper-clearfix ui-corner-all">'+q+"</div>"+'<table class="ui-timepicker">';for(d=1;d<=j;d++){e+="<tr>";if(d==1&&g){e+='<th rowspan="'+k.toString()+'" class="periods">'+i[0]+"</th>"}if(d==l&&g){e+='<th rowspan="'+k.toString()+'" class="periods">'+i[1]+"</th>"}while(p<o*d){e+=this._generateHTMLHourCell(a,m[p],f,h);p++}e+="</tr>"}e+="</tr></table>"+"</td>"+'<td class="ui-timepicker-minutes">';e+=this._generateHTMLMinutes(a);e+="</td></tr></table>";e+=$.browser.msie&&parseInt($.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-timepicker-cover" frameborder="0"></iframe>':"";return e},_updateMinuteDisplay:function(a){var b=this._generateHTMLMinutes(a);a.tpDiv.find("td.ui-timepicker-minutes").html(b).find(".ui-timepicke
 r-minute-cell").bind("click",{fromDoubleClick:false},$.proxy($.timepicker.selectMinutes,this)).bind("dblclick",{fromDoubleClick:true},$.proxy($.timepicker.selectMinutes,this))},_generateHTMLMinutes:function(a){var b,c,d="",e=this._get(a,"rows"),f=Array(),g=this._get(a,"minutes"),h=null,i=0,j=this._get(a,"showMinutesLeadingZero")==true,k=this._get(a,"onMinuteShow"),l=this._get(a,"minuteText");if(!g.starts){g.starts=0}if(!g.ends){g.ends=59}for(b=g.starts;b<=g.ends;b+=g.interval){f.push(b)}h=Math.round(f.length/e+.49);if(k&&k.apply(a.input?a.input[0]:null,[a.hours,a.minutes])==false){for(i=0;i<f.length;i+=1){b=f[i];if(k.apply(a.input?a.input[0]:null,[a.hours,b])){a.minutes=b;break}}}d+='<div class="ui-timepicker-title ui-widget-header ui-helper-clearfix ui-corner-all">'+l+"</div>"+'<table class="ui-timepicker">';i=0;for(c=1;c<=e;c++){d+="<tr>";while(i<c*h){var b=f[i];var m="";if(b!==undefined){m=b<10&&j?"0"+b.toString():b.toString()}d+=this._generateHTMLMinuteCell(a,b,m);i++}d+="</tr>"
 }d+="</table>";return d},_generateHTMLHourCell:function(a,b,c,d){var e=b;if(b>12&&c){e=b-12}if(e==0&&c){e=12}if(e<10&&d){e="0"+e}var f="";var g=true;var h=this._get(a,"onHourShow");if(b==undefined){f='<td class="ui-state-default ui-state-disabled"> </td>';return f}if(h){g=h.apply(a.input?a.input[0]:null,[b])}if(g){f='<td class="ui-timepicker-hour-cell" data-timepicker-instance-id="#'+a.id.replace("\\\\","\\")+'" data-hour="'+b.toString()+'">'+'<a class="ui-state-default '+(b==a.hours?"ui-state-active":"")+'">'+e.toString()+"</a></td>"}else{f="<td>"+'<span class="ui-state-default ui-state-disabled '+(b==a.hours?" ui-state-active ":" ")+'">'+e.toString()+"</span>"+"</td>"}return f},_generateHTMLMinuteCell:function(a,b,c){var d="";var e=true;var f=this._get(a,"onMinuteShow");if(f){e=f.apply(a.input?a.input[0]:null,[a.hours,b])}if(b==undefined){d='<td class=ui-state-default ui-state-disabled"> </td>';return d}if(e){d='<td class="ui-timepicker-minute-cell" data-timepicker-instance-id="
 #'+a.id.replace("\\\\","\\")+'" data-minute="'+b.toString()+'" >'+'<a class="ui-state-default '+(b==a.minutes?"ui-state-active":"")+'" >'+c+"</a></td>"}else{d="<td>"+'<span class="ui-state-default ui-state-disabled" >'+c+"</span>"+"</td>"}return d},_isDisabledTimepicker:function(a){if(!a){return false}for(var b=0;b<this._disabledInputs.length;b++){if(this._disabledInputs[b]==a){return true}}return false},_checkOffset:function(a,b,c){var d=a.tpDiv.outerWidth();var e=a.tpDiv.outerHeight();var f=a.input?a.input.outerWidth():0;var g=a.input?a.input.outerHeight():0;var h=document.documentElement.clientWidth+$(document).scrollLeft();var i=document.documentElement.clientHeight+$(document).scrollTop();b.left-=this._get(a,"isRTL")?d-f:0;b.left-=c&&b.left==a.input.offset().left?$(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+g?$(document).scrollTop():0;b.left-=Math.min(b.left,b.left+d>h&&h>d?Math.abs(b.left+d-h):0);b.top-=Math.min(b.top,b.top+e>i&&i>e?Math.abs(e+g):0);return 
 b},_findPos:function(a){var b=this._getInst(a);var c=this._get(b,"isRTL");while(a&&(a.type=="hidden"||a.nodeType!=1)){a=a[c?"previousSibling":"nextSibling"]}var d=$(a).offset();return[d.left,d.top]},_getBorders:function(a){var b=function(a){return{thin:1,medium:2,thick:3}[a]||a};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkExternalClick:function(a){if(!$.timepicker._curInst){return}var b=$(a.target);if(b[0].id!=$.timepicker._mainDivId&&b.parents("#"+$.timepicker._mainDivId).length==0&&!b.hasClass($.timepicker.markerClassName)&&!b.hasClass($.timepicker._triggerClass)&&$.timepicker._timepickerShowing&&!($.timepicker._inDialog&&$.blockUI))$.timepicker._hideTimepicker()},_hideTimepicker:function(a){var b=this._curInst;if(!b||a&&b!=$.data(a,PROP_NAME)){return}if(this._timepickerShowing){var c=this._get(b,"showAnim");var d=this._get(b,"duration");var e=function(){$.timepicker._tidyDialog(b);this._curInst=null};if($.effects&&$.effects[c]
 ){b.tpDiv.hide(c,$.timepicker._get(b,"showOptions"),d,e)}else{b.tpDiv[c=="slideDown"?"slideUp":c=="fadeIn"?"fadeOut":"hide"](c?d:null,e)}if(!c){e()}var f=this._get(b,"onClose");if(f){f.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b])}this._timepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if($.blockUI){$.unblockUI();$("body").append(this.tpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.tpDiv.removeClass(this._dialogClass).unbind(".ui-timepicker")},_getInst:function(a){try{return $.data(a,PROP_NAME)}catch(b){throw"Missing instance data for this timepicker"}},_get:function(a,b){return a.settings[b]!==undefined?a.settings[b]:this._defaults[b]},_setTimeFromField:function(a){if(a.input.val()==a.lastVal){return}var b=this._get(a,"defaultTime");var c=b=="now"?this._getCurrentTimeRounded(a):b;if(a.inline==false&&a.input.val()!=""){c=a.input.val()}var d=a.lastVal=c;if(c==""){a.hours=-1;a.minut
 es=-1}else{var e=this.parseTime(a,d);a.hours=e.hours;a.minutes=e.minutes}$.timepicker._updateTimepicker(a)},_setTimeTimepicker:function(a,b){var c=this._getInst(a);if(c){this._setTime(c,b);this._updateTimepicker(c);this._updateAlternate(c,b)}},_setTime:function(a,b,c){var d=a.hours;var e=a.minutes;var b=this.parseTime(a,b);a.hours=b.hours;a.minutes=b.minutes;if((d!=a.hours||e!=a.minuts)&&!c){a.input.trigger("change")}this._updateTimepicker(a);this._updateSelectedValue(a)},_getCurrentTimeRounded:function(a){var b=new Date;var c=this._get(a,"timeSeparator");var d=b.getMinutes();d=Math.round(d/5)*5;return b.getHours().toString()+c+d.toString()},parseTime:function(a,b){var c=new Object;c.hours=-1;c.minutes=-1;var d=this._get(a,"timeSeparator");var e=this._get(a,"amPmText");var f=b.indexOf(d);if(f==-1){return c}c.hours=parseInt(b.substr(0,f),10);c.minutes=parseInt(b.substr(f+1),10);var g=this._get(a,"showPeriod")==true;var h=b.toUpperCase();if(c.hours<12&&g&&h.indexOf(e[1].toUpperCase())
 !=-1){c.hours+=12}if(c.hours==12&&g&&h.indexOf(e[0].toUpperCase())!=-1){c.hours=0}return c},selectHours:function(a){var b=$(a.currentTarget);var c=b.attr("data-timepicker-instance-id");var d=b.attr("data-hour");var e=a.data.fromDoubleClick;var f=$(c);var g=this._getInst(f[0]);b.parents(".ui-timepicker-hours:first").find("a").removeClass("ui-state-active");b.children("a").addClass("ui-state-active");g.hours=d;this._updateSelectedValue(g);g._hoursClicked=true;if(g._minutesClicked||e){$.timepicker._hideTimepicker();return false}var h=this._get(g,"onMinuteShow");if(h){this._updateMinuteDisplay(g)}return false},selectMinutes:function(a){var b=$(a.currentTarget);var c=b.attr("data-timepicker-instance-id");var d=b.attr("data-minute");var e=a.data.fromDoubleClick;var f=$(c);var g=this._getInst(f[0]);b.parents(".ui-timepicker-minutes:first").find("a").removeClass("ui-state-active");b.children("a").addClass("ui-state-active");g.minutes=d;this._updateSelectedValue(g);g._minutesClicked=true;if(
 g._hoursClicked||e){$.timepicker._hideTimepicker();return false}return false},_updateSelectedValue:function(a){if(a.hours<0||a.hours>23){a.hours=12}if(a.minutes<0||a.minutes>59){a.minutes=0}var b="";var c=this._get(a,"showPeriod")==true;var d=this._get(a,"showLeadingZero")==true;var e=this._get(a,"amPmText");var f=a.hours?a.hours:0;var g=a.minutes?a.minutes:0;var h=f;if(!h){h=0}if(c){if(a.hours==0){h=12}if(a.hours<12){b=e[0]}else{b=e[1];if(h>12){h-=12}}}var i=h.toString();if(d&&h<10){i="0"+i}var j=g.toString();if(g<10){j="0"+j}var k=i+this._get(a,"timeSeparator")+j;if(b.length>0){k+=" "+b}if(a.input){a.input.val(k);a.input.trigger("change")}var l=this._get(a,"onSelect");if(l){l.apply(a.input?a.input[0]:null,[k,a])}this._updateAlternate(a,k);return k},_updateAlternate:function(a,b){var c=this._get(a,"altField");if(c){$(c).each(function(a,c){$(c).val(b)})}}});$.fn.timepicker=function(a){if(!$.timepicker.initialized){$(document).mousedown($.timepicker._checkExternalClick).find("body").
 append($.timepicker.tpDiv);$.timepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getTime"||a=="widget"))return $.timepicker["_"+a+"Timepicker"].apply($.timepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return $.timepicker["_"+a+"Timepicker"].apply($.timepicker,[this[0]].concat(b));return this.each(function(){typeof a=="string"?$.timepicker["_"+a+"Timepicker"].apply($.timepicker,[this].concat(b)):$.timepicker._attachTimepicker(this,a)})};$.timepicker=new Timepicker;$.timepicker.initialized=false;$.timepicker.uuid=(new Date).getTime();$.timepicker.version="0.2.3";window["TP_jQuery_"+tpuuid]=$})(jQuery)


[12/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery-ui-1.8.18.min.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery-ui-1.8.18.min.js b/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery-ui-1.8.18.min.js
deleted file mode 100644
index 59d4a5e..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery-ui-1.8.18.min.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/*!
- * jQuery UI 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI
- */(function(a,b){function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;if(!b.href||!g||f.nodeName.toLowerCase()!=="map")return!1;h=a("img[usemap=#"+g+"]")[0];return!!h&&d(h)}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}a.ui=a.ui||{};a.ui.version||(a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="numb
 er"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelecti
 on:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(c,d){function h(b,c,d,f){a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)});return c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){if(c===b)return g["inner"+d].call(this);return this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){if(typeof b!="number")return g["outer"+d].call(this,b);return this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:function(b,c,d){return!!a.data(b,d[3])},
 focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));c.offsetHeight,a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!!d&&!!a.element[0].parentNode)for(var e=0;e<d.length;e++)a.options[d[e][0]]&&d[e][1].apply(a.element,c)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(b,c){if(a(b).css("overflow")==="hidden")return!1;var d=c&&c==="left"?"scrollLeft":"scrollTop",e=!1;if(b[d]>0)return!0;b[d]=
 1,e=b[d]>0,b[d]=0;return e},isOverAxis:function(a,b,c){return a>b&&a<b+c},isOver:function(b,c,d,e,f,g){return a.ui.isOverAxis(b,d,f)&&a.ui.isOverAxis(c,e,g)}}))})(jQuery),function(a,b){if(a.cleanData){var c=a.cleanData;a.cleanData=function(b){for(var d=0,e;(e=b[d])!=null;d++)try{a(e).triggerHandler("remove")}catch(f){}c(b)}}else{var d=a.fn.remove;a.fn.remove=function(b,c){return this.each(function(){c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(b){}});return d.call(a(this),b,c)})}}a.widget=function(b,c,d){var e=b.split(".")[0],f;b=b.split(".")[1],f=e+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][f]=function(c){return!!a.data(c,b)},a[e]=a[e]||{},a[e][b]=function(a,b){arguments.length&&this._createWidget(a,b)};var g=new c;g.options=a.extend(!0,{},g.options),a[e][b].prototype=a.extend(!0,g,{namespace:e,widgetName:b,widgetEventPrefix:a[e][b].prototype.widgetEventPrefix||b,widgetBaseClass:f},d),a.widget.bridge(b,a[e][b])},a
 .widget.bridge=function(c,d){a.fn[c]=function(e){var f=typeof e=="string",g=Array.prototype.slice.call(arguments,1),h=this;e=!f&&g.length?a.extend.apply(null,[!0,e].concat(g)):e;if(f&&e.charAt(0)==="_")return h;f?this.each(function(){var d=a.data(this,c),f=d&&a.isFunction(d[e])?d[e].apply(d,g):d;if(f!==d&&f!==b){h=f;return!1}}):this.each(function(){var b=a.data(this,c);b?b.option(e||{})._init():a.data(this,c,new d(e,this))});return h}},a.Widget=function(a,b){arguments.length&&this._createWidget(a,b)},a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(b,c){a.data(c,this.widgetName,this),this.element=a(c),this.options=a.extend(!0,{},this.options,this._getCreateOptions(),b);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}),this._create(),this._trigger("create"),this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:func
 tion(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName),this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+"ui-state-disabled")},widget:function(){return this.element},option:function(c,d){var e=c;if(arguments.length===0)return a.extend({},this.options);if(typeof c=="string"){if(d===b)return this.options[c];e={},e[c]=d}this._setOptions(e);return this},_setOptions:function(b){var c=this;a.each(b,function(a,b){c._setOption(a,b)});return this},_setOption:function(a,b){this.options[a]=b,a==="disabled"&&this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",b);return this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(b,c,d){var e,f,g=this.options[b];d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).
 toLowerCase(),c.target=this.element[0],f=c.originalEvent;if(f)for(e in f)e in c||(c[e]=f[e]);this.element.trigger(c,d);return!(a.isFunction(g)&&g.call(this.element[0],c,d)===!1||c.isDefaultPrevented())}}}(jQuery),function(a,b){var c=!1;a(document).mouseup(function(a){c=!1}),a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(a){return b._mouseDown(a)}).bind("click."+this.widgetName,function(c){if(!0===a.data(c.target,b.widgetName+".preventClickEvent")){a.removeData(c.target,b.widgetName+".preventClickEvent"),c.stopImmediatePropagation();return!1}}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(b){if(!c){this._mouseStarted&&this._mouseUp(b),this._mouseDownEvent=b;var d=this,e=b.which==1,f=typeof this.options.cancel=="string"&&b.target.nodeName?a(b.target).closest(this.options.cancel).length:!1;if(!e||f||!this._mouseCap
 ture(b))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){d.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=this._mouseStart(b)!==!1;if(!this._mouseStarted){b.preventDefault();return!0}}!0===a.data(b.target,this.widgetName+".preventClickEvent")&&a.removeData(b.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(a){return d._mouseMove(a)},this._mouseUpDelegate=function(a){return d._mouseUp(a)},a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),b.preventDefault(),c=!0;return!0}},_mouseMove:function(b){if(a.browser.msie&&!(document.documentMode>=9)&&!b.button)return this._mouseUp(b);if(this._mouseStarted){this._mouseDrag(b);return b.preventDefault()}this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==
 !1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b));return!this._mouseStarted},_mouseUp:function(b){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b));return!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})}(jQuery),function(a,b){a.widget("ui.draggable",a.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refresh
 Positions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1},_create:function(){this.options.helper=="original"&&!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},destroy:function(){if(!!this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy();return this}},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is(".ui-resizable-handle"))return!1;this.handle=this._getHandle(b);if(!this.handle)return!1;c.iframeFix&&a(c.iframeFix===!0?"iframe":c.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"><
 /div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(a(this).offset()).appendTo("body")});return!0},_mouseStart:function(b){var c=this.options;this.helper=this._createHelper(b),this._cacheHelperProportions(),a.ui.ddmanager&&(a.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt),c.containment&&this._setContainment();if(this._trigger("start",b)===!1){this._clear();return!1
 }this._cacheHelperProportions(),a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.helper.addClass("ui-draggable-dragging"),this._mouseDrag(b,!0),a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,b);return!0},_mouseDrag:function(b,c){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute");if(!c){var d=this._uiHash();if(this._trigger("drag",b,d)===!1){this._mouseUp({});return!1}this.position=d.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";a.ui.ddmanager&&a.ui.ddmanager.drag(this,b);return!1},_mouseStop:function(b){var c=!1;a.ui.ddmanager&&!this.options.dropBehaviour&&(c=a.ui.ddmanager.drop(this,b)),this.dropped&&(c=this.dropped,this.dropped=!1);if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return!1;if(this.options.revert=="invalid"&&!c||t
 his.options.revert=="valid"&&c||this.options.revert===!0||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var d=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){d._trigger("stop",b)!==!1&&d._clear()})}else this._trigger("stop",b)!==!1&&this._clear();return!1},_mouseUp:function(b){this.options.iframeFix===!0&&a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),a.ui.ddmanager&&a.ui.ddmanager.dragStop(this,b);return a.ui.mouse.prototype._mouseUp.call(this,b)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?!0:!1;a(this.options.handle,this.element).find("*").andSelf().each(function(){this==b.target&&(c=!0)});return c},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b])):c
 .helper=="clone"?this.element.clone().removeAttr("id"):this.element;d.parents("body").length||d.appendTo(c.appendTo=="parent"?this.element[0].parentNode:c.appendTo),d[0]!=this.element[0]&&!/(fixed|absolute)/.test(d.css("position"))&&d.css("position","absolute");return d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop
 ());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function
 (){var b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[b.containment=="document"?0:a(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,b.containment=="document"?0:a(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(b.containment=="document"?0:a(window).scrollLeft())+a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(b.containment=="document"?0:a(window).scrollTop())+(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)&&b.containment.constructor!=Array){var c=a(b.containment),d=c[0];if(!d)return;var e=c.offset(),f=a(d).css("overflow")!="hidden";this.containment=[(parseInt(a(d).css("borderLeftWidth"),10)||0)+(parseInt(a(d).css("paddingLeft"),10)||0),(p
 arseInt(a(d).css("borderTopWidth"),10)||0)+(parseInt(a(d).css("paddingTop"),10)||0),(f?Math.max(d.scrollWidth,d.offsetWidth):d.offsetWidth)-(parseInt(a(d).css("borderLeftWidth"),10)||0)-(parseInt(a(d).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(f?Math.max(d.scrollHeight,d.offsetHeight):d.offsetHeight)-(parseInt(a(d).css("borderTopWidth"),10)||0)-(parseInt(a(d).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=c}else b.containment.constructor==Array&&(this.containment=b.containment)},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&a.browser
 .version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(d[0].tagName),f=b.pageX,g=b.pageY;if(this.originalPosition){var h;if(this.containment){if(this.relative_container){var i=this.relative_container.offset();h=[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]}else h=this.containment;b.pageX-this.offset.click.left<h[0]&&(f=h[0]+this.offset.click.left),b.pageY-this.offset.click.top<h[1]&&(g=h[1]+this.offset.click.top),
 b.pageX-this.offset.click.left>h[2]&&(f=h[2]+this.offset.click.left),b.pageY-this.offset.click.top>h[3]&&(g=h[3]+this.offset.click.top)}if(c.grid){var j=c.grid[1]?this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY;g=h?j-this.offset.click.top<h[1]||j-this.offset.click.top>h[3]?j-this.offset.click.top<h[1]?j+c.grid[1]:j-c.grid[1]:j:j;var k=c.grid[0]?this.originalPageX+Math.round((f-this.originalPageX)/c.grid[0])*c.grid[0]:this.originalPageX;f=h?k-this.offset.click.left<h[0]||k-this.offset.click.left>h[2]?k-this.offset.click.left<h[0]?k+c.grid[0]:k-c.grid[0]:k:k}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:d.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssP
 osition=="fixed"?-this.scrollParent.scrollLeft():e?0:d.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(b,c,d){d=d||this._uiHash(),a.ui.plugin.call(this,b,[c,d]),b=="drag"&&(this.positionAbs=this._convertPositionTo("absolute"));return a.Widget.prototype._trigger.call(this,b,c,d)},plugins:{},_uiHash:function(a){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),a.extend(a.ui.draggable,{version:"1.8.18"}),a.ui.plugin.add("draggable","connectToSortable",{start:function(b,c){var d=a(this).data("draggable"),e=d.options,f=a.extend({},c,{item:d.element});d.sortables=[],a(e.connectToSortable).each(function(){var c=a.data(this,"sortable");c&&!c.options.disabled&&(d.sortables.push({instance:c,shouldRevert:c.options.revert}),c.refreshPositions(),c._trigg
 er("activate",b,f))})},stop:function(b,c){var d=a(this).data("draggable"),e=a.extend({},c,{item:d.element});a.each(d.sortables,function(){this.instance.isOver?(this.instance.isOver=0,d.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(b),this.instance.options.helper=this.instance.options._helper,d.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",b,e))})},drag:function(b,c){var d=a(this).data("draggable"),e=this,f=function(b){var c=this.offset.click.top,d=this.offset.click.left,e=this.positionAbs.top,f=this.positionAbs.left,g=b.height,h=b.width,i=b.top,j=b.left;return a.ui.isOver(e+c,f+d,i,j,g,h)};a.each(d.sortables,function(f){this.instance.positionAbs=d.positionAbs,this.instance.helperProportions=d.helperProportions,this.instance.offset.click=d.offset.click,this.instance._intersectsWith(
 this.instance.containerCache)?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=a(e).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return c.helper[0]},b.target=this.instance.currentItem[0],this.instance._mouseCapture(b,!0),this.instance._mouseStart(b,!0,!0),this.instance.offset.click.top=d.offset.click.top,this.instance.offset.click.left=d.offset.click.left,this.instance.offset.parent.left-=d.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=d.offset.parent.top-this.instance.offset.parent.top,d._trigger("toSortable",b),d.dropped=this.instance.element,d.currentItem=d.element,this.instance.fromOutside=d),this.instance.currentItem&&this.instance._mouseDrag(b)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger(
 "out",b,this.instance._uiHash(this.instance)),this.instance._mouseStop(b,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),d._trigger("fromSortable",b),d.dropped=!1)})}}),a.ui.plugin.add("draggable","cursor",{start:function(b,c){var d=a("body"),e=a(this).data("draggable").options;d.css("cursor")&&(e._cursor=d.css("cursor")),d.css("cursor",e.cursor)},stop:function(b,c){var d=a(this).data("draggable").options;d._cursor&&a("body").css("cursor",d._cursor)}}),a.ui.plugin.add("draggable","opacity",{start:function(b,c){var d=a(c.helper),e=a(this).data("draggable").options;d.css("opacity")&&(e._opacity=d.css("opacity")),d.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("draggable").options;d._opacity&&a(c.helper).css("opacity",d._opacity)}}),a.ui.plugin.add("draggable","scroll",{start:function(b,c){var d=a(this).data("draggable");d.scrollParent[0]!=document&&d.scroll
 Parent[0].tagName!="HTML"&&(d.overflowOffset=d.scrollParent.offset())},drag:function(b,c){var d=a(this).data("draggable"),e=d.options,f=!1;if(d.scrollParent[0]!=document&&d.scrollParent[0].tagName!="HTML"){if(!e.axis||e.axis!="x")d.overflowOffset.top+d.scrollParent[0].offsetHeight-b.pageY<e.scrollSensitivity?d.scrollParent[0].scrollTop=f=d.scrollParent[0].scrollTop+e.scrollSpeed:b.pageY-d.overflowOffset.top<e.scrollSensitivity&&(d.scrollParent[0].scrollTop=f=d.scrollParent[0].scrollTop-e.scrollSpeed);if(!e.axis||e.axis!="y")d.overflowOffset.left+d.scrollParent[0].offsetWidth-b.pageX<e.scrollSensitivity?d.scrollParent[0].scrollLeft=f=d.scrollParent[0].scrollLeft+e.scrollSpeed:b.pageX-d.overflowOffset.left<e.scrollSensitivity&&(d.scrollParent[0].scrollLeft=f=d.scrollParent[0].scrollLeft-e.scrollSpeed)}else{if(!e.axis||e.axis!="x")b.pageY-a(document).scrollTop()<e.scrollSensitivity?f=a(document).scrollTop(a(document).scrollTop()-e.scrollSpeed):a(window).height()-(b.pageY-a(document).sc
 rollTop())<e.scrollSensitivity&&(f=a(document).scrollTop(a(document).scrollTop()+e.scrollSpeed));if(!e.axis||e.axis!="y")b.pageX-a(document).scrollLeft()<e.scrollSensitivity?f=a(document).scrollLeft(a(document).scrollLeft()-e.scrollSpeed):a(window).width()-(b.pageX-a(document).scrollLeft())<e.scrollSensitivity&&(f=a(document).scrollLeft(a(document).scrollLeft()+e.scrollSpeed))}f!==!1&&a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(d,b)}}),a.ui.plugin.add("draggable","snap",{start:function(b,c){var d=a(this).data("draggable"),e=d.options;d.snapElements=[],a(e.snap.constructor!=String?e.snap.items||":data(draggable)":e.snap).each(function(){var b=a(this),c=b.offset();this!=d.element[0]&&d.snapElements.push({item:this,width:b.outerWidth(),height:b.outerHeight(),top:c.top,left:c.left})})},drag:function(b,c){var d=a(this).data("draggable"),e=d.options,f=e.snapTolerance,g=c.offset.left,h=g+d.helperProportions.width,i=c.offset.top,j=i+d.helperProportions.height;for(var k=d
 .snapElements.length-1;k>=0;k--){var l=d.snapElements[k].left,m=l+d.snapElements[k].width,n=d.snapElements[k].top,o=n+d.snapElements[k].height;if(!(l-f<g&&g<m+f&&n-f<i&&i<o+f||l-f<g&&g<m+f&&n-f<j&&j<o+f||l-f<h&&h<m+f&&n-f<i&&i<o+f||l-f<h&&h<m+f&&n-f<j&&j<o+f)){d.snapElements[k].snapping&&d.options.snap.release&&d.options.snap.release.call(d.element,b,a.extend(d._uiHash(),{snapItem:d.snapElements[k].item})),d.snapElements[k].snapping=!1;continue}if(e.snapMode!="inner"){var p=Math.abs(n-j)<=f,q=Math.abs(o-i)<=f,r=Math.abs(l-h)<=f,s=Math.abs(m-g)<=f;p&&(c.position.top=d._convertPositionTo("relative",{top:n-d.helperProportions.height,left:0}).top-d.margins.top),q&&(c.position.top=d._convertPositionTo("relative",{top:o,left:0}).top-d.margins.top),r&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l-d.helperProportions.width}).left-d.margins.left),s&&(c.position.left=d._convertPositionTo("relative",{top:0,left:m}).left-d.margins.left)}var t=p||q||r||s;if(e.snapMode!="outer"){
 var p=Math.abs(n-i)<=f,q=Math.abs(o-j)<=f,r=Math.abs(l-g)<=f,s=Math.abs(m-h)<=f;p&&(c.position.top=d._convertPositionTo("relative",{top:n,left:0}).top-d.margins.top),q&&(c.position.top=d._convertPositionTo("relative",{top:o-d.helperProportions.height,left:0}).top-d.margins.top),r&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l}).left-d.margins.left),s&&(c.position.left=d._convertPositionTo("relative",{top:0,left:m-d.helperProportions.width}).left-d.margins.left)}!d.snapElements[k].snapping&&(p||q||r||s||t)&&d.options.snap.snap&&d.options.snap.snap.call(d.element,b,a.extend(d._uiHash(),{snapItem:d.snapElements[k].item})),d.snapElements[k].snapping=p||q||r||s||t}}}),a.ui.plugin.add("draggable","stack",{start:function(b,c){var d=a(this).data("draggable").options,e=a.makeArray(a(d.stack)).sort(function(b,c){return(parseInt(a(b).css("zIndex"),10)||0)-(parseInt(a(c).css("zIndex"),10)||0)});if(!!e.length){var f=parseInt(e[0].style.zIndex)||0;a(e).each(function(a){this.style
 .zIndex=f+a}),this[0].style.zIndex=f+e.length}}}),a.ui.plugin.add("draggable","zIndex",{start:function(b,c){var d=a(c.helper),e=a(this).data("draggable").options;d.css("zIndex")&&(e._zIndex=d.css("zIndex")),d.css("zIndex",e.zIndex)},stop:function(b,c){var d=a(this).data("draggable").options;d._zIndex&&a(c.helper).css("zIndex",d._zIndex)}})}(jQuery),function(a,b){a.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect"},_create:function(){var b=this.options,c=b.accept;this.isover=0,this.isout=1,this.accept=a.isFunction(c)?c:function(a){return a.is(c)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},a.ui.ddmanager.droppables[b.scope]=a.ui.ddmanager.droppables[b.scope]||[],a.ui.ddmanager.droppables[b.scope].push(this),b.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){var b=a.ui.ddmanager.droppables[this.options.scope];for
 (var c=0;c<b.length;c++)b[c]==this&&b.splice(c,1);this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");return this},_setOption:function(b,c){b=="accept"&&(this.accept=a.isFunction(c)?c:function(a){return a.is(c)}),a.Widget.prototype._setOption.apply(this,arguments)},_activate:function(b){var c=a.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),c&&this._trigger("activate",b,this.ui(c))},_deactivate:function(b){var c=a.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),c&&this._trigger("deactivate",b,this.ui(c))},_over:function(b){var c=a.ui.ddmanager.current;!!c&&(c.currentItem||c.element)[0]!=this.element[0]&&this.accept.call(this.element[0],c.currentItem||c.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",b,this.ui(c)))},_out:function(b){var c=a.ui.ddmanager.current;!!c&&(c.currentI
 tem||c.element)[0]!=this.element[0]&&this.accept.call(this.element[0],c.currentItem||c.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",b,this.ui(c)))},_drop:function(b,c){var d=c||a.ui.ddmanager.current;if(!d||(d.currentItem||d.element)[0]==this.element[0])return!1;var e=!1;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var b=a.data(this,"droppable");if(b.options.greedy&&!b.options.disabled&&b.options.scope==d.options.scope&&b.accept.call(b.element[0],d.currentItem||d.element)&&a.ui.intersect(d,a.extend(b,{offset:b.element.offset()}),b.options.tolerance)){e=!0;return!1}});if(e)return!1;if(this.accept.call(this.element[0],d.currentItem||d.element)){this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",b,this.ui(d));return this.element}return!1},ui:function(a){return{draggab
 le:a.currentItem||a.element,helper:a.helper,position:a.position,offset:a.positionAbs}}}),a.extend(a.ui.droppable,{version:"1.8.18"}),a.ui.intersect=function(b,c,d){if(!c.offset)return!1;var e=(b.positionAbs||b.position.absolute).left,f=e+b.helperProportions.width,g=(b.positionAbs||b.position.absolute).top,h=g+b.helperProportions.height,i=c.offset.left,j=i+c.proportions.width,k=c.offset.top,l=k+c.proportions.height;switch(d){case"fit":return i<=e&&f<=j&&k<=g&&h<=l;case"intersect":return i<e+b.helperProportions.width/2&&f-b.helperProportions.width/2<j&&k<g+b.helperProportions.height/2&&h-b.helperProportions.height/2<l;case"pointer":var m=(b.positionAbs||b.position.absolute).left+(b.clickOffset||b.offset.click).left,n=(b.positionAbs||b.position.absolute).top+(b.clickOffset||b.offset.click).top,o=a.ui.isOver(n,m,k,i,c.proportions.height,c.proportions.width);return o;case"touch":return(g>=k&&g<=l||h>=k&&h<=l||g<k&&h>l)&&(e>=i&&e<=j||f>=i&&f<=j||e<i&&f>j);default:return!1}},a.ui.ddmanager
 ={current:null,droppables:{"default":[]},prepareOffsets:function(b,c){var d=a.ui.ddmanager.droppables[b.options.scope]||[],e=c?c.type:null,f=(b.currentItem||b.element).find(":data(droppable)").andSelf();droppablesLoop:for(var g=0;g<d.length;g++){if(d[g].options.disabled||b&&!d[g].accept.call(d[g].element[0],b.currentItem||b.element))continue;for(var h=0;h<f.length;h++)if(f[h]==d[g].element[0]){d[g].proportions.height=0;continue droppablesLoop}d[g].visible=d[g].element.css("display")!="none";if(!d[g].visible)continue;e=="mousedown"&&d[g]._activate.call(d[g],c),d[g].offset=d[g].element.offset(),d[g].proportions={width:d[g].element[0].offsetWidth,
-height:d[g].element[0].offsetHeight}}},drop:function(b,c){var d=!1;a.each(a.ui.ddmanager.droppables[b.options.scope]||[],function(){!this.options||(!this.options.disabled&&this.visible&&a.ui.intersect(b,this,this.options.tolerance)&&(d=this._drop.call(this,c)||d),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],b.currentItem||b.element)&&(this.isout=1,this.isover=0,this._deactivate.call(this,c)))});return d},dragStart:function(b,c){b.element.parents(":not(body,html)").bind("scroll.droppable",function(){b.options.refreshPositions||a.ui.ddmanager.prepareOffsets(b,c)})},drag:function(b,c){b.options.refreshPositions&&a.ui.ddmanager.prepareOffsets(b,c),a.each(a.ui.ddmanager.droppables[b.options.scope]||[],function(){if(!(this.options.disabled||this.greedyChild||!this.visible)){var d=a.ui.intersect(b,this,this.options.tolerance),e=!d&&this.isover==1?"isout":d&&this.isover==0?"isover":null;if(!e)return;var f;if(this.options.greedy){var g=this.element.parents(":data(dr
 oppable):eq(0)");g.length&&(f=a.data(g[0],"droppable"),f.greedyChild=e=="isover"?1:0)}f&&e=="isover"&&(f.isover=0,f.isout=1,f._out.call(f,c)),this[e]=1,this[e=="isout"?"isover":"isout"]=0,this[e=="isover"?"_over":"_out"].call(this,c),f&&e=="isout"&&(f.isout=0,f.isover=1,f._over.call(f,c))}})},dragStop:function(b,c){b.element.parents(":not(body,html)").unbind("scroll.droppable"),b.options.refreshPositions||a.ui.ddmanager.prepareOffsets(b,c)}}}(jQuery),function(a,b){a.widget("ui.resizable",a.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1e3},_create:function(){var b=this,c=this.options;this.element.addClass("ui-resizable"),a.extend(this,{_aspectRatio:!!c.aspectRatio,aspectRatio:c.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:c.helper||c
 .ghost||c.animate?c.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(a('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,displ
 ay:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=c.handles||(a(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se");if(this.handles.constructor==String){this.handles=="all"&&(this.handles="n,e,s,w,se,sw,ne,nw");var d=this.handles.split(",");this.handles={};for(var e=0;e<d.length;e++){var f=a.trim(d[e]),g="ui-resizable-"+f,h=a('<div class="ui-resizable-handle '+g+'"></div>');/sw|se|ne|nw/.test(f)&&h.css({zIndex:++c.zIndex}),"se"==f&&h.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[f]=".ui-resizable-"+f,this.element.append(h)}}this._renderAxis=function(b){b=b||this.element;for(var c in this.handles){this.handles[c].constructor==String&&(this.handles[c]=a(this.handles[c],this.element).show());if(this.elementIsWrapper&&this.or
 iginalElement[0].nodeName.match(/textarea|input|select|button/i)){var d=a(this.handles[c],this.element),e=0;e=/sw|ne|nw|se|n|s/.test(c)?d.outerHeight():d.outerWidth();var f=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join("");b.css(f,e),this._proportionallyResize()}if(!a(this.handles[c]).length)continue}},this._renderAxis(this.element),this._handles=a(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!b.resizing){if(this.className)var a=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=a&&a[1]?a[1]:"se"}}),c.autoHide&&(this._handles.hide(),a(this.element).addClass("ui-resizable-autohide").hover(function(){c.disabled||(a(this).removeClass("ui-resizable-autohide"),b._handles.show())},function(){c.disabled||b.resizing||(a(this).addClass("ui-resizable-autohide"),b._handles.hide())})),this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(b){a(b).removeClass("ui
 -resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var c=this.element;c.after(this.originalElement.css({position:c.css("position"),width:c.outerWidth(),height:c.outerHeight(),top:c.css("top"),left:c.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle),b(this.originalElement);return this},_mouseCapture:function(b){var c=!1;for(var d in this.handles)a(this.handles[d])[0]==b.target&&(c=!0);return!this.options.disabled&&c},_mouseStart:function(b){var d=this.options,e=this.element.position(),f=this.element;this.resizing=!0,this.documentScroll={top:a(document).scrollTop(),left:a(document).scrollLeft()},(f.is(".ui-draggable")||/absolute/.test(f.css("position")))&&f.css({position:"absolute",top:e.top,left:e.left}),this._renderProxy();var g=c(this.helper.css("left")),h=c(this.helper.css("top"));d.containment&&(g+=a(d.containment).s
 crollLeft()||0,h+=a(d.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:g,top:h},this.size=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalSize=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalPosition={left:g,top:h},this.sizeDiff={width:f.outerWidth()-f.width(),height:f.outerHeight()-f.height()},this.originalMousePosition={left:b.pageX,top:b.pageY},this.aspectRatio=typeof d.aspectRatio=="number"?d.aspectRatio:this.originalSize.width/this.originalSize.height||1;var i=a(".ui-resizable-"+this.axis).css("cursor");a("body").css("cursor",i=="auto"?this.axis+"-resize":i),f.addClass("ui-resizable-resizing"),this._propagate("start",b);return!0},_mouseDrag:function(b){var c=this.helper,d=this.options,e={},f=this,g=this.originalMousePosition,h=this.axis,i=b.pageX-g.left||0,j=b.pageY-g.top||0,k=this._change[h];if(!k)return!1;var l=k.apply(this,[
 b,i,j]),m=a.browser.msie&&a.browser.version<7,n=this.sizeDiff;this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)l=this._updateRatio(l,b);l=this._respectSize(l,b),this._propagate("resize",b),c.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"}),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),this._updateCache(l),this._trigger("resize",b,this.ui());return!1},_mouseStop:function(b){this.resizing=!1;var c=this.options,d=this;if(this._helper){var e=this._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName),g=f&&a.ui.hasScroll(e[0],"left")?0:d.sizeDiff.height,h=f?0:d.sizeDiff.width,i={width:d.helper.width()-h,height:d.helper.height()-g},j=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,k=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;c.animate||this.element.css(a.extend(i,{
 top:k,left:j})),d.helper.height(d.size.height),d.helper.width(d.size.width),this._helper&&!c.animate&&this._proportionallyResize()}a("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",b),this._helper&&this.helper.remove();return!1},_updateVirtualBoundaries:function(a){var b=this.options,c,e,f,g,h;h={minWidth:d(b.minWidth)?b.minWidth:0,maxWidth:d(b.maxWidth)?b.maxWidth:Infinity,minHeight:d(b.minHeight)?b.minHeight:0,maxHeight:d(b.maxHeight)?b.maxHeight:Infinity};if(this._aspectRatio||a)c=h.minHeight*this.aspectRatio,f=h.minWidth/this.aspectRatio,e=h.maxHeight*this.aspectRatio,g=h.maxWidth/this.aspectRatio,c>h.minWidth&&(h.minWidth=c),f>h.minHeight&&(h.minHeight=f),e<h.maxWidth&&(h.maxWidth=e),g<h.maxHeight&&(h.maxHeight=g);this._vBoundaries=h},_updateCache:function(a){var b=this.options;this.offset=this.helper.offset(),d(a.left)&&(this.position.left=a.left),d(a.top)&&(this.position.top=a.top),d(a.height)&&(this.size.height=a.height),
 d(a.width)&&(this.size.width=a.width)},_updateRatio:function(a,b){var c=this.options,e=this.position,f=this.size,g=this.axis;d(a.height)?a.width=a.height*this.aspectRatio:d(a.width)&&(a.height=a.width/this.aspectRatio),g=="sw"&&(a.left=e.left+(f.width-a.width),a.top=null),g=="nw"&&(a.top=e.top+(f.height-a.height),a.left=e.left+(f.width-a.width));return a},_respectSize:function(a,b){var c=this.helper,e=this._vBoundaries,f=this._aspectRatio||b.shiftKey,g=this.axis,h=d(a.width)&&e.maxWidth&&e.maxWidth<a.width,i=d(a.height)&&e.maxHeight&&e.maxHeight<a.height,j=d(a.width)&&e.minWidth&&e.minWidth>a.width,k=d(a.height)&&e.minHeight&&e.minHeight>a.height;j&&(a.width=e.minWidth),k&&(a.height=e.minHeight),h&&(a.width=e.maxWidth),i&&(a.height=e.maxHeight);var l=this.originalPosition.left+this.originalSize.width,m=this.position.top+this.size.height,n=/sw|nw|w/.test(g),o=/nw|ne|n/.test(g);j&&n&&(a.left=l-e.minWidth),h&&n&&(a.left=l-e.maxWidth),k&&o&&(a.top=m-e.minHeight),i&&o&&(a.top=m-e.maxHeig
 ht);var p=!a.width&&!a.height;p&&!a.left&&a.top?a.top=null:p&&!a.top&&a.left&&(a.left=null);return a},_proportionallyResize:function(){var b=this.options;if(!!this._proportionallyResizeElements.length){var c=this.helper||this.element;for(var d=0;d<this._proportionallyResizeElements.length;d++){var e=this._proportionallyResizeElements[d];if(!this.borderDif){var f=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],g=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];this.borderDif=a.map(f,function(a,b){var c=parseInt(a,10)||0,d=parseInt(g[b],10)||0;return c+d})}if(a.browser.msie&&(!!a(c).is(":hidden")||!!a(c).parents(":hidden").length))continue;e.css({height:c.height()-this.borderDif[0]-this.borderDif[2]||0,width:c.width()-this.borderDif[1]-this.borderDif[3]||0})}}},_renderProxy:function(){var b=this.element,c=this.options;this.elementOffset=b.offset();if(this._helper){this.helper=this.helper||a(
 '<div style="overflow:hidden;"></div>');var d=a.browser.msie&&a.browser.version<7,e=d?1:0,f=d?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+f,height:this.element.outerHeight()+f,position:"absolute",left:this.elementOffset.left-e+"px",top:this.elementOffset.top-e+"px",zIndex:++c.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(a,b,c){return{width:this.originalSize.width+b}},w:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{left:f.left+b,width:e.width-b}},n:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{top:f.top+c,height:e.height-c}},s:function(a,b,c){return{height:this.originalSize.height+c}},se:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},sw:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,c,d]))},ne:function(
 b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},nw:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,c,d]))}},_propagate:function(b,c){a.ui.plugin.call(this,b,[c,this.ui()]),b!="resize"&&this._trigger(b,c,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),a.extend(a.ui.resizable,{version:"1.8.18"}),a.ui.plugin.add("resizable","alsoResize",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=function(b){a(b).each(function(){var b=a(this);b.data("resizable-alsoresize",{width:parseInt(b.width(),10),height:parseInt(b.height(),10),left:parseInt(b.css("left"),10),top:parseInt(b.css("top"),10)})})};typeof e.alsoResize=="object"&&!e.alsoResize.parentNode?e.alsoResize.length?(e.alsoResize=e.alsoResize[0]
 ,f(e.alsoResize)):a.each(e.alsoResize,function(a){f(a)}):f(e.alsoResize)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.originalSize,g=d.originalPosition,h={height:d.size.height-f.height||0,width:d.size.width-f.width||0,top:d.position.top-g.top||0,left:d.position.left-g.left||0},i=function(b,d){a(b).each(function(){var b=a(this),e=a(this).data("resizable-alsoresize"),f={},g=d&&d.length?d:b.parents(c.originalElement[0]).length?["width","height"]:["width","height","top","left"];a.each(g,function(a,b){var c=(e[b]||0)+(h[b]||0);c&&c>=0&&(f[b]=c||null)}),b.css(f)})};typeof e.alsoResize=="object"&&!e.alsoResize.nodeType?a.each(e.alsoResize,function(a,b){i(a,b)}):i(e.alsoResize)},stop:function(b,c){a(this).removeData("resizable-alsoresize")}}),a.ui.plugin.add("resizable","animate",{stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d._proportionallyResizeElements,g=f.length&&/textarea/i.test(f[0].nodeName),h=g&&a.ui.hasScroll(f[0],"left")?0:d.sizeDiff.h
 eight,i=g?0:d.sizeDiff.width,j={width:d.size.width-i,height:d.size.height-h},k=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,l=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;d.element.animate(a.extend(j,l&&k?{top:l,left:k}:{}),{duration:e.animateDuration,easing:e.animateEasing,step:function(){var c={width:parseInt(d.element.css("width"),10),height:parseInt(d.element.css("height"),10),top:parseInt(d.element.css("top"),10),left:parseInt(d.element.css("left"),10)};f&&f.length&&a(f[0]).css({width:c.width,height:c.height}),d._updateCache(c),d._propagate("resize",b)}})}}),a.ui.plugin.add("resizable","containment",{start:function(b,d){var e=a(this).data("resizable"),f=e.options,g=e.element,h=f.containment,i=h instanceof a?h.get(0):/parent/.test(h)?g.parent().get(0):h;if(!!i){e.containerElement=a(i);if(/document/.test(h)||h==document)e.containerOffset={left:0,top:0},e.containerPosition={left:0,top:0},e.parentData={element
 :a(document),left:0,top:0,width:a(document).width(),height:a(document).height()||document.body.parentNode.scrollHeight};else{var j=a(i),k=[];a(["Top","Right","Left","Bottom"]).each(function(a,b){k[a]=c(j.css("padding"+b))}),e.containerOffset=j.offset(),e.containerPosition=j.position(),e.containerSize={height:j.innerHeight()-k[3],width:j.innerWidth()-k[1]};var l=e.containerOffset,m=e.containerSize.height,n=e.containerSize.width,o=a.ui.hasScroll(i,"left")?i.scrollWidth:n,p=a.ui.hasScroll(i)?i.scrollHeight:m;e.parentData={element:i,left:l.left,top:l.top,width:o,height:p}}}},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.containerSize,g=d.containerOffset,h=d.size,i=d.position,j=d._aspectRatio||b.shiftKey,k={top:0,left:0},l=d.containerElement;l[0]!=document&&/static/.test(l.css("position"))&&(k=g),i.left<(d._helper?g.left:0)&&(d.size.width=d.size.width+(d._helper?d.position.left-g.left:d.position.left-k.left),j&&(d.size.height=d.size.width/e.aspectRatio),d.position.
 left=e.helper?g.left:0),i.top<(d._helper?g.top:0)&&(d.size.height=d.size.height+(d._helper?d.position.top-g.top:d.position.top),j&&(d.size.width=d.size.height*e.aspectRatio),d.position.top=d._helper?g.top:0),d.offset.left=d.parentData.left+d.position.left,d.offset.top=d.parentData.top+d.position.top;var m=Math.abs((d._helper?d.offset.left-k.left:d.offset.left-k.left)+d.sizeDiff.width),n=Math.abs((d._helper?d.offset.top-k.top:d.offset.top-g.top)+d.sizeDiff.height),o=d.containerElement.get(0)==d.element.parent().get(0),p=/relative|absolute/.test(d.containerElement.css("position"));o&&p&&(m-=d.parentData.left),m+d.size.width>=d.parentData.width&&(d.size.width=d.parentData.width-m,j&&(d.size.height=d.size.width/d.aspectRatio)),n+d.size.height>=d.parentData.height&&(d.size.height=d.parentData.height-n,j&&(d.size.width=d.size.height*d.aspectRatio))},stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.position,g=d.containerOffset,h=d.containerPosition,i=d.containerElement,j=
 a(d.helper),k=j.offset(),l=j.outerWidth()-d.sizeDiff.width,m=j.outerHeight()-d.sizeDiff.height;d._helper&&!e.animate&&/relative/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m}),d._helper&&!e.animate&&/static/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m})}}),a.ui.plugin.add("resizable","ghost",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size;d.ghost=d.originalElement.clone(),d.ghost.css({opacity:.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof e.ghost=="string"?e.ghost:""),d.ghost.appendTo(d.helper)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})},stop:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.helper&&d.helper.get(0).removeChild(d.ghost.get(0))}}),a.ui.plugin.add("resizab
 le","grid",{resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size,g=d.originalSize,h=d.originalPosition,i=d.axis,j=e._aspectRatio||b.shiftKey;e.grid=typeof e.grid=="number"?[e.grid,e.grid]:e.grid;var k=Math.round((f.width-g.width)/(e.grid[0]||1))*(e.grid[0]||1),l=Math.round((f.height-g.height)/(e.grid[1]||1))*(e.grid[1]||1);/^(se|s|e)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l):/^(ne)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l):/^(sw)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.left=h.left-k):(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l,d.position.left=h.left-k)}});var c=function(a){return parseInt(a,10)||0},d=function(a){return!isNaN(parseInt(a,10))}}(jQuery),function(a,b){a.widget("ui.selectable",a.ui.mouse,{options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var b=this;this.element.addClass("ui-selectable")
 ,this.dragged=!1;var c;this.refresh=function(){c=a(b.options.filter,b.element[0]),c.addClass("ui-selectee"),c.each(function(){var b=a(this),c=b.offset();a.data(this,"selectable-item",{element:this,$element:b,left:c.left,top:c.top,right:c.left+b.outerWidth(),bottom:c.top+b.outerHeight(),startselected:!1,selected:b.hasClass("ui-selected"),selecting:b.hasClass("ui-selecting"),unselecting:b.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=c.addClass("ui-selectee"),this._mouseInit(),this.helper=a("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable"),this._mouseDestroy();return this},_mouseStart:function(b){var c=this;this.opos=[b.pageX,b.pageY];if(!this.options.disabled){var d=this.options;this.selectees=a(d.filter,this.element[0]),this._trigger("start",b),a(d.appendTo).append(this.he
 lper),this.helper.css({left:b.clientX,top:b.clientY,width:0,height:0}),d.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var d=a.data(this,"selectable-item");d.startselected=!0,!b.metaKey&&!b.ctrlKey&&(d.$element.removeClass("ui-selected"),d.selected=!1,d.$element.addClass("ui-unselecting"),d.unselecting=!0,c._trigger("unselecting",b,{unselecting:d.element}))}),a(b.target).parents().andSelf().each(function(){var d=a.data(this,"selectable-item");if(d){var e=!b.metaKey&&!b.ctrlKey||!d.$element.hasClass("ui-selected");d.$element.removeClass(e?"ui-unselecting":"ui-selected").addClass(e?"ui-selecting":"ui-unselecting"),d.unselecting=!e,d.selecting=e,d.selected=e,e?c._trigger("selecting",b,{selecting:d.element}):c._trigger("unselecting",b,{unselecting:d.element});return!1}})}},_mouseDrag:function(b){var c=this;this.dragged=!0;if(!this.options.disabled){var d=this.options,e=this.opos[0],f=this.opos[1],g=b.pageX,h=b.pageY;if(e>g){var i=g;g=e,e=i}if(f>h){var
  i=h;h=f,f=i}this.helper.css({left:e,top:f,width:g-e,height:h-f}),this.selectees.each(function(){var i=a.data(this,"selectable-item");if(!!i&&i.element!=c.element[0]){var j=!1;d.tolerance=="touch"?j=!(i.left>g||i.right<e||i.top>h||i.bottom<f):d.tolerance=="fit"&&(j=i.left>e&&i.right<g&&i.top>f&&i.bottom<h),j?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,c._trigger("selecting",b,{selecting:i.element}))):(i.selecting&&((b.metaKey||b.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),c._trigger("unselecting",b,{unselecting:i.element}))),i.selected&&!b.metaKey&&!b.ctrlKey&&!i.startselected&&(i.$element.removeClass("ui-selec
 ted"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,c._trigger("unselecting",b,{unselecting:i.element})))}});return!1}},_mouseStop:function(b){var c=this;this.dragged=!1;var d=this.options;a(".ui-unselecting",this.element[0]).each(function(){var d=a.data(this,"selectable-item");d.$element.removeClass("ui-unselecting"),d.unselecting=!1,d.startselected=!1,c._trigger("unselected",b,{unselected:d.element})}),a(".ui-selecting",this.element[0]).each(function(){var d=a.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected"),d.selecting=!1,d.selected=!0,d.startselected=!0,c._trigger("selected",b,{selected:d.element})}),this._trigger("stop",b),this.helper.remove();return!1}}),a.extend(a.ui.selectable,{version:"1.8.18"})}(jQuery),function(a,b){a.widget("ui.sortable",a.ui.mouse,{widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSiz
 e:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3},_create:function(){var a=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?a.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},destroy:function(){a.Widget.prototype.destroy.call(this),this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var b=this.items.length-1;b>=0;b--)this.items[b].item.removeData(this.widgetName+"-item");return this},_setOption:function(b,c){b==="disabled"?(this.options[b]=c,this.widget()[c?"addClass":"removeClass"]("ui-sortable-disabled")):a.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(b,c)
 {var d=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type=="static")return!1;this._refreshItems(b);var e=null,f=this,g=a(b.target).parents().each(function(){if(a.data(this,d.widgetName+"-item")==f){e=a(this);return!1}});a.data(b.target,d.widgetName+"-item")==f&&(e=a(b.target));if(!e)return!1;if(this.options.handle&&!c){var h=!1;a(this.options.handle,e).find("*").andSelf().each(function(){this==b.target&&(h=!0)});if(!h)return!1}this.currentItem=e,this._removeCurrentsFromItems();return!0},_mouseStart:function(b,c,d){var e=this.options,f=this;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(b),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),a.extend(this.offset,{click:{le
 ft:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,e.cursorAt&&this._adjustOffsetFromHelper(e.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!=this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),e.containment&&this._setContainment(),e.cursor&&(a("body").css("cursor")&&(this._storedCursor=a("body").css("cursor")),a("body").css("cursor",e.cursor)),e.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",e.opacity)),e.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",e.zIndex)),this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",b
 ,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!d)for(var g=this.containers.length-1;g>=0;g--)this.containers[g]._trigger("activate",b,f._uiHash(this));a.ui.ddmanager&&(a.ui.ddmanager.current=this),a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(b);return!0},_mouseDrag:function(b){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var c=this.options,d=!1;this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-b.pageY<c.scrollSensitivity?this.scrollParent[0].scrollTop=d=this.scrollParent[0].scrollTop+c.scrollSpeed:b.pageY-this.overflowOffset.top<c.scrollSensitivity&&(this.scrollParent[0].scrollTop=d=this.scrollParent[0].scrollTop-c.scrollSpeed),this.ove
 rflowOffset.left+this.scrollParent[0].offsetWidth-b.pageX<c.scrollSensitivity?this.scrollParent[0].scrollLeft=d=this.scrollParent[0].scrollLeft+c.scrollSpeed:b.pageX-this.overflowOffset.left<c.scrollSensitivity&&(this.scrollParent[0].scrollLeft=d=this.scrollParent[0].scrollLeft-c.scrollSpeed)):(b.pageY-a(document).scrollTop()<c.scrollSensitivity?d=a(document).scrollTop(a(document).scrollTop()-c.scrollSpeed):a(window).height()-(b.pageY-a(document).scrollTop())<c.scrollSensitivity&&(d=a(document).scrollTop(a(document).scrollTop()+c.scrollSpeed)),b.pageX-a(document).scrollLeft()<c.scrollSensitivity?d=a(document).scrollLeft(a(document).scrollLeft()-c.scrollSpeed):a(window).width()-(b.pageX-a(document).scrollLeft())<c.scrollSensitivity&&(d=a(document).scrollLeft(a(document).scrollLeft()+c.scrollSpeed))),d!==!1&&a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.hel
 per[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(var e=this.items.length-1;e>=0;e--){var f=this.items[e],g=f.item[0],h=this._intersectsWithPointer(f);if(!h)continue;if(g!=this.currentItem[0]&&this.placeholder[h==1?"next":"prev"]()[0]!=g&&!a.ui.contains(this.placeholder[0],g)&&(this.options.type=="semi-dynamic"?!a.ui.contains(this.element[0],g):!0)){this.direction=h==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(f))this._rearrange(b,f);else break;this._trigger("change",b,this._uiHash());break}}this._contactContainers(b),a.ui.ddmanager&&a.ui.ddmanager.drag(this,b),this._trigger("sort",b,this._uiHash()),this.lastPositionAbs=this.positionAbs;return!1},_mouseStop:function(b,c){if(!!b){a.ui.ddmanager&&!this.options.dropBehaviour&&a.ui.ddmanager.drop(this,b);if(this.options.revert){var d=this,e=d.placeholder.offset();d.reverting=!0,a(this.helper).animate({left:e.left-t
 his.offset.parent.left-d.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:e.top-this.offset.parent.top-d.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){d._clear(b)})}else this._clear(b,c);return!1}},cancel:function(){var b=this;if(this.dragging){this._mouseUp({target:null}),this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("deactivate",null,b._uiHash(this)),this.containers[c].containerCache.over&&(this.containers[c]._trigger("out",null,b._uiHash(this)),this.containers[c].containerCache.over=0)}this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),a.extend(this
 ,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?a(this.domPosition.prev).after(this.currentItem):a(this.domPosition.parent).prepend(this.currentItem));return this},serialize:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];b=b||{},a(c).each(function(){var c=(a(b.item||this).attr(b.attribute||"id")||"").match(b.expression||/(.+)[-=_](.+)/);c&&d.push((b.key||c[1]+"[]")+"="+(b.key&&b.expression?c[1]:c[2]))}),!d.length&&b.key&&d.push(b.key+"=");return d.join("&")},toArray:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];b=b||{},c.each(function(){d.push(a(b.item||this).attr(b.attribute||"id")||"")});return d},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,d=this.positionAbs.top,e=d+this.helperProportions.height,f=a.left,g=f+a.width,h=a.top,i=h+a.height,j=this.offset.click.top,k=this.offset.click.left,l=d+j>h&&d+j<i&&b+k>f&&b+k<g;return this.options.tolerance=="pointer"||this.options.force
 PointerForContainers||this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>a[this.floating?"width":"height"]?l:f<b+this.helperProportions.width/2&&c-this.helperProportions.width/2<g&&h<d+this.helperProportions.height/2&&e-this.helperProportions.height/2<i},_intersectsWithPointer:function(b){var c=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,b.top,b.height),d=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,b.left,b.width),e=c&&d,f=this._getDragVerticalDirection(),g=this._getDragHorizontalDirection();if(!e)return!1;return this.floating?g&&g=="right"||f=="down"?2:1:f&&(f=="down"?2:1)},_intersectsWithSides:function(b){var c=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,b.top+b.height/2,b.height),d=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,b.left+b.width/2,b.width),e=this._getDragVerticalDirection(),f=this._getDragHorizontalDirection();return this.floating&&f?f=="right"&&d||f=="left"&&!d:e&&(e
 =="down"&&c||e=="up"&&!c)},_getDragVerticalDirection:function(){var a=this.positionAbs.top-this.lastPositionAbs.top;return a!=0&&(a>0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a),this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(b){var c=this,d=[],e=[],f=this._connectWith();if(f&&b)for(var g=f.length-1;g>=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&e.push([a.isFunction(j.options.items)?j.options.items.call(j.element):a(j.options.items,j.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),j])}}e.push
-([a.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):a(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var g=e.length-1;g>=0;g--)e[g][0].each(function(){d.push(this)});return a(d)},_removeCurrentsFromItems:function(){var a=this.currentItem.find(":data("+this.widgetName+"-item)");for(var b=0;b<this.items.length;b++)for(var c=0;c<a.length;c++)a[c]==this.items[b].item[0]&&this.items.splice(b,1)},_refreshItems:function(b){this.items=[],this.containers=[this];var c=this.items,d=this,e=[[a.isFunction(this.options.items)?this.options.items.call(this.element[0],b,{item:this.currentItem}):a(this.options.items,this.element),this]],f=this._connectWith();if(f&&this.ready)for(var g=f.length-1;g>=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&(e.push([a.isFunction(j.options.items)?j.options.items.call(
 j.element[0],b,{item:this.currentItem}):a(j.options.items,j.element),j]),this.containers.push(j))}}for(var g=e.length-1;g>=0;g--){var k=e[g][1],l=e[g][0];for(var i=0,m=l.length;i<m;i++){var n=a(l[i]);n.data(this.widgetName+"-item",k),c.push({item:n,instance:k,width:0,height:0,left:0,top:0})}}},refreshPositions:function(b){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());for(var c=this.items.length-1;c>=0;c--){var d=this.items[c];if(d.instance!=this.currentContainer&&this.currentContainer&&d.item[0]!=this.currentItem[0])continue;var e=this.options.toleranceElement?a(this.options.toleranceElement,d.item):d.item;b||(d.width=e.outerWidth(),d.height=e.outerHeight());var f=e.offset();d.left=f.left,d.top=f.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(var c=this.containers.length-1;c>=0;c--){var f=this.containers[c].element.offset();this.containers[c].containerCache.left=f.left,this.co
 ntainers[c].containerCache.top=f.top,this.containers[c].containerCache.width=this.containers[c].element.outerWidth(),this.containers[c].containerCache.height=this.containers[c].element.outerHeight()}return this},_createPlaceholder:function(b){var c=b||this,d=c.options;if(!d.placeholder||d.placeholder.constructor==String){var e=d.placeholder;d.placeholder={element:function(){var b=a(document.createElement(c.currentItem[0].nodeName)).addClass(e||c.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];e||(b.style.visibility="hidden");return b},update:function(a,b){if(!e||!!d.forcePlaceholderSize)b.height()||b.height(c.currentItem.innerHeight()-parseInt(c.currentItem.css("paddingTop")||0,10)-parseInt(c.currentItem.css("paddingBottom")||0,10)),b.width()||b.width(c.currentItem.innerWidth()-parseInt(c.currentItem.css("paddingLeft")||0,10)-parseInt(c.currentItem.css("paddingRight")||0,10))}}}c.placeholder=a(d.placeholder.element.call(c.element,c.currentIt
 em)),c.currentItem.after(c.placeholder),d.placeholder.update(c,c.placeholder)},_contactContainers:function(b){var c=null,d=null;for(var e=this.containers.length-1;e>=0;e--){if(a.ui.contains(this.currentItem[0],this.containers[e].element[0]))continue;if(this._intersectsWith(this.containers[e].containerCache)){if(c&&a.ui.contains(this.containers[e].element[0],c.element[0]))continue;c=this.containers[e],d=e}else this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",b,this._uiHash(this)),this.containers[e].containerCache.over=0)}if(!!c)if(this.containers.length===1)this.containers[d]._trigger("over",b,this._uiHash(this)),this.containers[d].containerCache.over=1;else if(this.currentContainer!=this.containers[d]){var f=1e4,g=null,h=this.positionAbs[this.containers[d].floating?"left":"top"];for(var i=this.items.length-1;i>=0;i--){if(!a.ui.contains(this.containers[d].element[0],this.items[i].item[0]))continue;var j=this.items[i][this.containers[d].floating?"left":"top"]
 ;Math.abs(j-h)<f&&(f=Math.abs(j-h),g=this.items[i])}if(!g&&!this.options.dropOnEmpty)return;this.currentContainer=this.containers[d],g?this._rearrange(b,g,null,!0):this._rearrange(b,null,this.containers[d].element,!0),this._trigger("change",b,this._uiHash()),this.containers[d]._trigger("change",b,this._uiHash(this)),this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[d]._trigger("over",b,this._uiHash(this)),this.containers[d].containerCache.over=1}},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b,this.currentItem])):c.helper=="clone"?this.currentItem.clone():this.currentItem;d.parents("body").length||a(c.appendTo!="parent"?c.appendTo:this.currentItem[0].parentNode)[0].appendChild(d[0]),d[0]==this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.c
 urrentItem.css("left")}),(d[0].style.width==""||c.forceHelperSize)&&d.width(this.currentItem.width()),(d[0].style.height==""||c.forceHelperSize)&&d.height(this.currentItem.height());return d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.o
 ffsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.currentItem.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[0-this.offset.rel
 ative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)){var c=a(b.containment)[0],d=a(b.containment).offset(),e=a(c).css("overflow")!="hidden";this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(e?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(e?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("bord
 erTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scr
 ollParent,e=/(html|body)/i.test(d[0].tagName);this.cssPosition=="relative"&&(this.scrollParent[0]==document||this.scrollParent[0]==this.offsetParent[0])&&(this.offset.relative=this._getRelativeOffset());var f=b.pageX,g=b.pageY;if(this.originalPosition){this.containment&&(b.pageX-this.offset.click.left<this.containment[0]&&(f=this.containment[0]+this.offset.click.left),b.pageY-this.offset.click.top<this.containment[1]&&(g=this.containment[1]+this.offset.click.top),b.pageX-this.offset.click.left>this.containment[2]&&(f=this.containment[2]+this.offset.click.left),b.pageY-this.offset.click.top>this.containment[3]&&(g=this.containment[3]+this.offset.click.top));if(c.grid){var h=this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1];g=this.containment?h-this.offset.click.top<this.containment[1]||h-this.offset.click.top>this.containment[3]?h-this.offset.click.top<this.containment[1]?h+c.grid[1]:h-c.grid[1]:h:h;var i=this.originalPageX+Math.round((f-this.originalPageX)/c.
 grid[0])*c.grid[0];f=this.containment?i-this.offset.click.left<this.containment[0]||i-this.offset.click.left>this.containment[2]?i-this.offset.click.left<this.containment[0]?i+c.grid[0]:i-c.grid[0]:i:i}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:d.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:d.scrollLeft())}},_rearrange:function(a,b,c,d){c?c[0].appendChild(this.placeholder[0]):b.item[0].parentNode.insertBefore(this.placeholder[0],this.direction=="down"?b.item[0]:b.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var e=this,f=this.counter;window.setTimeout(function(){f==e.counter&&e.refreshPositions(!d)},0)},_clear:function(b,c){this.reverting=!1;var d=[],e=this;!this._
 noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var f in this._storedCSS)if(this._storedCSS[f]=="auto"||this._storedCSS[f]=="static")this._storedCSS[f]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!c&&d.push(function(a){this._trigger("receive",a,this._uiHash(this.fromOutside))}),(this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!c&&d.push(function(a){this._trigger("update",a,this._uiHash())});if(!a.ui.contains(this.element[0],this.currentItem[0])){c||d.push(function(a){this._trigger("remove",a,this._uiHash())});for(var f=this.containers.length-1;f>=0;f--)a.ui.contains(this.containers[f].element[0],this.currentItem[0])&&!c&&(d.push(function(a){return function(b){a._trigger("receive",b,this._uiHash(thi
 s))}}.call(this,this.containers[f])),d.push(function(a){return function(b){a._trigger("update",b,this._uiHash(this))}}.call(this,this.containers[f])))}for(var f=this.containers.length-1;f>=0;f--)c||d.push(function(a){return function(b){a._trigger("deactivate",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over&&(d.push(function(a){return function(b){a._trigger("out",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over=0);this._storedCursor&&a("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!c){this._trigger("beforeStop",b,this._uiHash());for(var f=0;f<d.length;f++)d[f].call(this,b);this._trigger("stop",b,this._uiHash())}return!1}c||this._trigger("beforeStop",b,this._uiHash()),this.placeholder[0].pare
 ntNode.removeChild(this.placeholder[0]),this.helper[0]!=this.currentItem[0]&&this.helper.remove(),this.helper=null;if(!c){for(var f=0;f<d.length;f++)d[f].call(this,b);this._trigger("stop",b,this._uiHash())}this.fromOutside=!1;return!0},_trigger:function(){a.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(b){var c=b||this;return{helper:c.helper,placeholder:c.placeholder||a([]),position:c.position,originalPosition:c.originalPosition,offset:c.positionAbs,item:c.currentItem,sender:b?b.element:null}}}),a.extend(a.ui.sortable,{version:"1.8.18"})}(jQuery),jQuery.effects||function(a,b){function l(b){if(!b||typeof b=="number"||a.fx.speeds[b])return!0;if(typeof b=="string"&&!a.effects[b])return!0;return!1}function k(b,c,d,e){typeof b=="object"&&(e=c,d=null,c=b,b=c.effect),a.isFunction(c)&&(e=c,d=null,c={});if(typeof c=="number"||a.fx.speeds[c])e=d,d=c,c={};a.isFunction(d)&&(e=d,d=null),c=c||{},d=d||c.duration,d=a.fx.off?0:typeof d=="number"?d:d in a.fx.sp
 eeds?a.fx.speeds[d]:a.fx.speeds._default,e=e||c.complete;return[b,c,d,e]}function j(a,b){var c={_:0},d;for(d in b)a[d]!=b[d]&&(c[d]=b[d]);return c}function i(b){var c,d;for(c in b)d=b[c],(d==null||a.isFunction(d)||c in g||/scrollbar/.test(c)||!/color/i.test(c)&&isNaN(parseFloat(d)))&&delete b[c];return b}function h(){var a=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,b={},c,d;if(a&&a.length&&a[0]&&a[a[0]]){var e=a.length;while(e--)c=a[e],typeof a[c]=="string"&&(d=c.replace(/\-(\w)/g,function(a,b){return b.toUpperCase()}),b[d]=a[c])}else for(c in a)typeof a[c]=="string"&&(b[c]=a[c]);return b}function d(b,d){var e;do{e=a.curCSS(b,d);if(e!=""&&e!="transparent"||a.nodeName(b,"body"))break;d="backgroundColor"}while(b=b.parentNode);return c(e)}function c(b){var c;if(b&&b.constructor==Array&&b.length==3)return b;if(c=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(b))return[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],1
 0)];if(c=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(b))return[parseFloat(c[1])*2.55,parseFloat(c[2])*2.55,parseFloat(c[3])*2.55];if(c=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(b))return[parseInt(c[1],16),parseInt(c[2],16),parseInt(c[3],16)];if(c=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(b))return[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)];if(c=/rgba\(0, 0, 0, 0\)/.exec(b))return e.transparent;return e[a.trim(b).toLowerCase()]}a.effects={},a.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","borderColor","color","outlineColor"],function(b,e){a.fx.step[e]=function(a){a.colorInit||(a.start=d(a.elem,e),a.end=c(a.end),a.colorInit=!0),a.elem.style[e]="rgb("+Math.max(Math.min(parseInt(a.pos*(a.end[0]-a.start[0])+a.start[0],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[1]-a.start[1])+a.start[1],10),255),0)+","+Math.max(Math.mi
 n(parseInt(a.pos*(a.end[2]-a.start[2])+a.start[2],10),255),0)+")"}});var e={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},f=["add","remove","toggle"],g
 ={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};a.effects.animateClass=function(b,c,d,e){a.isFunction(d)&&(e=d,d=null);return this.queue(function(){var g=a(this),k=g.attr("style")||" ",l=i(h.call(this)),m,n=g.attr("class");a.each(f,function(a,c){b[c]&&g[c+"Class"](b[c])}),m=i(h.call(this)),g.attr("class",n),g.animate(j(l,m),{queue:!1,duration:c,easing:d,complete:function(){a.each(f,function(a,c){b[c]&&g[c+"Class"](b[c])}),typeof g.attr("style")=="object"?(g.attr("style").cssText="",g.attr("style").cssText=k):g.attr("style",k),e&&e.apply(this,arguments),a.dequeue(this)}})})},a.fn.extend({_addClass:a.fn.addClass,addClass:function(b,c,d,e){return c?a.effects.animateClass.apply(this,[{add:b},c,d,e]):this._addClass(b)},_removeClass:a.fn.removeClass,removeClass:function(b,c,d,e){return c?a.effects.animateClass.apply(this,[{remove:b},c,d,e]):this._removeClass(b)},_toggleClass:a.fn.toggleClass,toggleClass:function(c,d,e,f,g){r
 eturn typeof d=="boolean"||d===b?e?a.effects.animateClass.apply(this,[d?{add:c}:{remove:c},e,f,g]):this._toggleClass(c,d):a.effects.animateClass.apply(this,[{toggle:c},d,e,f])},switchClass:function(b,c,d,e,f){return a.effects.animateClass.apply(this,[{add:c,remove:b},d,e,f])}}),a.extend(a.effects,{version:"1.8.18",save:function(a,b){for(var c=0;c<b.length;c++)b[c]!==null&&a.data("ec.storage."+b[c],a[0].style[b[c]])},restore:function(a,b){for(var c=0;c<b.length;c++)b[c]!==null&&a.css(b[c],a.data("ec.storage."+b[c]))},setMode:function(a,b){b=="toggle"&&(b=a.is(":hidden")?"show":"hide");return b},getBaseline:function(a,b){var c,d;switch(a[0]){case"top":c=0;break;case"middle":c=.5;break;case"bottom":c=1;break;default:c=a[0]/b.height}switch(a[1]){case"left":d=0;break;case"center":d=.5;break;case"right":d=1;break;default:d=a[1]/b.width}return{x:d,y:c}},createWrapper:function(b){if(b.parent().is(".ui-effects-wrapper"))return b.parent();var c={width:b.outerWidth(!0),height:b.outerHeight(!0)
 ,"float":b.css("float")},d=a("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e=document.activeElement;b.wrap(d),(b[0]===e||a.contains(b[0],e))&&a(e).focus(),d=b.parent(),b.css("position")=="static"?(d.css({position:"relative"}),b.css({position:"relative"})):(a.extend(c,{position:b.css("position"),zIndex:b.css("z-index")}),a.each(["top","left","bottom","right"],function(a,d){c[d]=b.css(d),isNaN(parseInt(c[d],10))&&(c[d]="auto")}),b.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"}));return d.css(c).show()},removeWrapper:function(b){var c,d=document.activeElement;if(b.parent().is(".ui-effects-wrapper")){c=b.parent().replaceWith(b),(b[0]===d||a.contains(b[0],d))&&a(d).focus();return c}return b},setTransition:function(b,c,d,e){e=e||{},a.each(c,function(a,c){unit=b.cssUnit(c),unit[0]>0&&(e[c]=unit[0]*d+unit[1])});return e}}),a.fn.extend({effect:function(b,c,d,e){var f=k.apply(this,arguments),g=
 {options:f[1],duration:f[2],callback:f[3]},h=g.options.mode,i=a.effects[b];if(a.fx.off||!i)return h?this[h](g.duration,g.callback):this.each(function(){g.callback&&g.callback.call(this)});return i.call(this,g)},_show:a.fn.show,show:function(a){if(l(a))return this._show.apply(this,arguments);var b=k.apply(this,arguments);b[1].mode="show";return this.effect.apply(this,b)},_hide:a.fn.hide,hide:function(a){if(l(a))return this._hide.apply(this,arguments);var b=k.apply(this,arguments);b[1].mode="hide";return this.effect.apply(this,b)},__toggle:a.fn.toggle,toggle:function(b){if(l(b)||typeof b=="boolean"||a.isFunction(b))return this.__toggle.apply(this,arguments);var c=k.apply(this,arguments);c[1].mode="toggle";return this.effect.apply(this,c)},cssUnit:function(b){var c=this.css(b),d=[];a.each(["em","px","%","pt"],function(a,b){c.indexOf(b)>0&&(d=[parseFloat(c),b])});return d}}),a.easing.jswing=a.easing.swing,a.extend(a.easing,{def:"easeOutQuad",swing:function(b,c,d,e,f){return a.easing[a.e
 asing.def](b,c,d,e,f)},easeInQuad:function(a,b,c,d,e){return d*(b/=e)*b+c},easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c},easeInOutQuad:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b+c;return-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b+c;return d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c},easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b*b+c;return-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b*b*b+c;return d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){
 return d*Math.sin(b/e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return b==0?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){if(b==0)return c;if(b==e)return c+d;if((b/=e/2)<1)return d/2*Math.pow(2,10*(b-1))+c;return d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)*b)+c},easeInOutCirc:function(a,b,c,d,e){if((b/=e/2)<1)return-d/2*(Math.sqrt(1-b*b)-1)+c;return d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e)==1)return c+d;g||(g=e*.3);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g))+c},easeOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)retur
 n c;if((b/=e)==1)return c+d;g||(g=e*.3);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*b)*Math.sin((b*e-f)*2*Math.PI/g)+d+c},easeInOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e/2)==2)return c+d;g||(g=e*.3*1.5);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);if(b<1)return-0.5*h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g)+c;return h*Math.pow(2,-10*(b-=1))*Math.sin((b*e-

<TRUNCATED>

[40/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/app/helpers.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/app/helpers.js b/deleted/archive/js/app/helpers.js
deleted file mode 100644
index 7e1d0f7..0000000
--- a/deleted/archive/js/app/helpers.js
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * This file contains helper functions: Stuff used all over the application but not necessarily part of a module/object/paradigm/something.
- *
- * If your can't find where a function is defined, it's probably here. :)
- *
- * They need to be cleaned up. SOON!
- *
- */
-
-var onIE = navigator.userAgent.indexOf("MSIE") >= 0;
-
-function indexOfFirstType(type, args) {
-  for (var i = 0; i < args.length; i++) {
-    if (!args[i]) return - 1;
-    if (typeof args[i] == type) return i;
-  }
-  return - 1;
-}
-
-function getByType(type, i, args) {
-  var j = indexOfFirstType(type, args);
-  if (j < 0) return null;
-  var k = 0;
-  while ((j < args.length) && (k <= i)) {
-    if (type == "object") {
-      if (args[j].constructor != Object) return null;
-    } else if (typeof args[j] != type) return null;
-    if (k == i) return args[j];
-    j++;
-    k++;
-  }
-  return null;
-}
-
-function countByType(type, args) {
-  var c = 0;
-  var j = indexOfFirstType(type, args);
-  if (j < 0) return c;
-  while (j < args.length) {
-    if (type == "object") {
-      if (args[j].constructor != Object) return c;
-    } else if (typeof args[j] != type) return c;
-    j++;
-    c++;
-  }
-  return null;
-}
-
-function encodeParams(params) {
-  tail = [];
-  if (params instanceof Array) {
-    for (i in params) {
-      var item = params[i];
-      if ((item instanceof Array) && (item.length > 1)) {
-        tail.push(item[0] + "=" + encodeURIComponent(item[1]));
-      }
-    }
-  } else {
-    for (var key in params) {
-      if (params.hasOwnProperty(key)) {
-        var value = params[key];
-        if (value instanceof Array) {
-          for (i in value) {
-            var item = value[i];
-            tail.push(key + "=" + encodeURIComponent(item));
-          }
-        } else {
-          tail.push(key + "=" + encodeURIComponent(value));
-        }
-      }
-    }
-  }
-  return tail.join("&");
-}
-
-function encodePathString(path, returnParams) {
-
-  var i = 0;
-  var segments = new Array();
-  var payload = null;
-  while (i < path.length) {
-    var c = path.charAt(i);
-    if (c == '{') {
-      var bracket_start = i;
-      i++;
-      var bracket_count = 1;
-      while ((i < path.length) && (bracket_count > 0)) {
-        c = path.charAt(i);
-        if (c == '{') {
-          bracket_count++;
-        } else if (c == '}') {
-          bracket_count--;
-        }
-        i++;
-      }
-      if (i > bracket_start) {
-        var segment = path.substring(bracket_start, i);
-        segments.push(JSON.parse(segment));
-      }
-      continue;
-    } else if (c == '/') {
-      i++;
-      var segment_start = i;
-      while (i < path.length) {
-        c = path.charAt(i);
-        if ((c == ' ') || (c == '/') || (c == '{')) {
-          break;
-        }
-        i++;
-      }
-      if (i > segment_start) {
-        var segment = path.substring(segment_start, i);
-        segments.push(segment);
-      }
-      continue;
-    } else if (c == ' ') {
-      i++;
-      var payload_start = i;
-      while (i < path.length) {
-        c = path.charAt(i);
-        i++;
-      }
-      if (i > payload_start) {
-        var json = path.substring(payload_start, i).trim();
-        payload = JSON.parse(json);
-      }
-      break;
-    }
-    i++;
-  }
-
-  var newPath = "";
-  for (i = 0; i < segments.length; i++) {
-    var segment = segments[i];
-    if (typeof segment === "string") {
-      newPath += "/" + segment;
-    } else {
-      if (i == (segments.length - 1)) {
-        if (returnParams) {
-          return {path : newPath, params: segment, payload: payload};
-        }
-        newPath += "?";
-      } else {
-        newPath += ";";
-      }
-      newPath += encodeParams(segment);
-    }
-  }
-  if (returnParams) {
-    return {path : newPath, params: null, payload: payload};
-  }
-  return newPath;
-}
-
-function getQueryParams() {
-  var query_params = {};
-  if (window.location.search) {
-    // split up the query string and store in an associative array
-    var params = window.location.search.slice(1).split("&");
-    for (var i = 0; i < params.length; i++) {
-      var tmp = params[i].split("=");
-      query_params[tmp[0]] = unescape(tmp[1]);
-    }
-  }
-
-  return query_params;
-}
-
-function prepareLocalStorage() {
-  if (!Storage.prototype.setObject) {
-    Storage.prototype.setObject = function(key, value) {
-      this.setItem(key, JSON.stringify(value));
-    };
-  }
-  if (!Storage.prototype.getObject) {
-    Storage.prototype.getObject = function(key) {
-      try {
-        return this.getItem(key) && JSON.parse(this.getItem(key));
-      } catch(err) {
-      }
-      return null;
-    };
-  }
-}
-
-// if all of our vars are in the query string, grab them and save them
-function parseParams() {
-  var query_params = {};
-  if (window.location.search) {
-    // split up the query string and store in an associative array
-    var params = window.location.search.slice(1).split("&");
-    for (var i = 0; i < params.length; i++) {
-      var tmp = params[i].split("=");
-      query_params[tmp[0]] = unescape(tmp[1]);
-    }
-  }
-
-  if (query_params.access_token && query_params.admin_email && query_params.uuid) {
-    Usergrid.userSession.setAccessToken(query_params.access_token);
-    Usergrid.userSession.setUserEmail(query_params.admin_email);
-    Usergrid.userSession.setUserUUID(query_params.uuid);
-    //then send the user to the parent
-    var new_target = window.location.host + window.location.pathname;
-
-    var separatorMark = '?';
-    if (query_params.api_url) {
-      new_target = new_target + separatorMark + 'api_url=' + query_params.api_url;
-      separatorMark = '&';
-    }
-
-    if (query_params.use_sso) {
-      new_target = new_target + separatorMark + 'use_sso=' + query_params.use_sso;
-      separatorMark = '&';
-    }
-
-    window.location = window.location.protocol + '//' + new_target;
-    throw "stop!";
-  }
-}
-
-function dateToString(numberDate){
-  var date = new Date(numberDate);
-  return date.toString('dd MMM yyyy - h:mm tt ');
-}
-
-/* move toggleablesections to console? */
-function toggleableSections() {
-  $(document).on('click', '.title', function() {
-    $(this).parent().parent().find('.hideable').toggle();
-  })
-}
-
-function selectFirstElement(object) {
-  var first = null;
-  for (first in object) {
-    break
-  }
-  return first
-}
-
-

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/app/navigation.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/app/navigation.js b/deleted/archive/js/app/navigation.js
deleted file mode 100644
index 8d2bcb1..0000000
--- a/deleted/archive/js/app/navigation.js
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
-  * Usergrid.Navigation
-  *
-  * Functions to control the navigation of the Console client
-  *
-  * Uses:  Backbone.router
-  *
-  * Requires: Backbonejs, Underscore.js
-  *
-  */
-Usergrid.Navigation = Backbone.Router.extend({
-    routes: {
-      ":organization/:application/organization": "home",
-      ":organization/:application/dashboard": "dashboard",
-      ":organization/:application/users": "users",
-      ":organization/:application/groups": "groups",
-      ":organization/:application/roles": "roles",
-      ":organization/:application/activities": "activities",
-      ":organization/:application/collections": "collections",
-      ":organization/:application/notifications": "notifications",
-      ":organization/:application/sendNotification": "sendNotification",
-      ":organization/:application/messageHistory": "messageHistory",
-      ":organization/:application/notificationsReceipt": "notificationsReceipt",
-      ":organization/:application/configuration": "configuration",
-      ":organization/:application/getStarted": "getStarted",
-      ":organization/:application/analytics": "analytics",
-      ":organization/:application/properties": "properties",
-      ":organization/:application/shell": "shell",
-      ":organization/:application/account": "account",
-      ":organization/home": "home",
-      ":organization": "home",
-      "": "home"
-    },
-    //Router Methods
-    home: function(organization, application) {
-      $('body').scrollTop(0);
-      if(organization) {
-        this.checkOrganization(organization);
-      }
-      this.checkApplication(application);
-      Pages.SelectPanel('organization');
-      $('#left2').hide();
-    },
-    dashboard: function(organization,application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Usergrid.console.pageSelect(application);
-      Pages.SelectPanel('dashboard');
-      $('#left2').hide();
-    },
-    users: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Pages.SelectPanel('users');
-      this.showAppUserContent();
-    },
-    groups: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Pages.SelectPanel('groups');
-      this.showAppUserContent();
-    },
-    roles: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Pages.SelectPanel('roles');
-      this.showAppUserContent();
-    },
-    activities: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Pages.SelectPanel('activities');
-      $('#left2').hide();
-    },
-    collections: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Pages.ActivatePanel("collections");
-      Pages.SelectPanel('collections');
-      this.showAppDataContent();
-    },
-    notifications: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Usergrid.console.getNotifiers();
-    },
-    sendNotification: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Pages.ActivatePanel('notifications');
-      Pages.SelectPanel('notifications');
-      Usergrid.console.getNotifiers();
-    },
-    messageHistory: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Pages.ActivatePanel('messageHistory');
-      Pages.SelectPanel('messageHistory');
-      Usergrid.console.bindPagingEvents('notifications-history');
-      Usergrid.console.getNotifications();
-      this.showAppNotificationsContent();
-    },
-    notificationsReceipt: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      if (Usergrid.console.checkForSelectedNotification()) {
-        Pages.ActivatePanel('notificationsReceipt');
-        Pages.SelectPanel('notificationsReceipt');
-        Usergrid.console.bindPagingEvents('notification-receipt');
-      } else {
-        Pages.ActivatePanel('messageHistory');
-        Pages.SelectPanel('messageHistory');
-        Usergrid.console.bindPagingEvents('notifications-history');
-        Usergrid.console.getNotifications();
-      }
-      this.showAppNotificationsContent();
-    },
-    configuration: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Pages.ActivatePanel("configuration");
-      Pages.SelectPanel('configuration');
-      Usergrid.console.getCertList();
-      this.showAppNotificationsContent();
-    },
-    getStarted: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Pages.ActivatePanel("getStarted");
-      Pages.SelectPanel('getStarted');
-      this.showAppNotificationsContent();
-    },
-    analytics: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Pages.SelectPanel('analytics');
-      $('#left2').hide();
-    },
-    properties: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Pages.SelectPanel('properties');
-      $('#left2').hide();
-    },
-    shell: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Pages.SelectPanel('shell');
-      $('#left2').hide();
-    },
-    account: function(organization, application) {
-      $('body').scrollTop(0);
-      Pages.SelectPanel('account');
-      $('#left2').hide();
-    },
-    //Utils
-    checkOrganization: function(org) {
-      if(!this.isActiveOrganization(org)) {
-        Usergrid.console.selectOrganization(org);
-      }
-    },
-    isActiveOrganization: function(org) {
-      if(org) {
-        if(Usergrid.ApiClient.getOrganizationName() === org ) {
-          return true
-        }
-      }
-      return false
-    },
-    checkApplication: function(app) {
-      if(app){
-        if(!this.isActiveApplication(app)) {
-          Usergrid.console.pageSelect(app);
-        }
-      }
-    },
-    isActiveApplication: function(app) {
-      if(app) {
-        if(Usergrid.ApiClient.getApplicationName() === app) {
-          return true
-        }
-      }
-      return false
-    },
-    getAppNameFromURL: function(){
-      name = '';
-      try  {
-        name = window.location.hash.split('/')[1];
-      } catch (e) {}
-      return name;
-    },
-    getOrgNameFromURL: function(){
-      name = '';
-      try  {
-        name = window.location.hash.split('/')[0];
-        name = name.replace("#","");
-      } catch (e) {}
-      return name;
-    },
-    showAppUserContent: function(){
-      $('#left2').show();
-      $('#sidebar-menu2').show();
-      $('#left-collections-menu').hide();
-      $('#left-notifications-menu').hide();
-    },
-    showAppDataContent: function(){
-      $('#left2').show();
-      $('#sidebar-menu2').hide();
-      $('#left-collections-menu').show();
-      $('#left-notifications-menu').hide();
-    },
-    showAppNotificationsContent: function(){
-      $('#left2').show();
-      $('#sidebar-menu2').hide();
-      $('#left-collections-menu').hide();
-      $('#left-notifications-menu').show();
-      $('#notifications-link').parent().addClass('active');
-    },
-
-    navigateTo: function(address) {
-      var url;
-      url = Usergrid.ApiClient.getOrganizationName();
-      url += "/" + Usergrid.ApiClient.getApplicationName();
-      url += "/" + address;
-      // Backbone navigate only triggers page loading if url changes
-      // loading manually if the url hasn't changed is necessary.
-      if(Backbone.history.fragment === url) {
-        Backbone.history.loadUrl(url);
-      } else {
-        this.navigate(url, {trigger: true});
-      }
-    }
-  });
-
-Usergrid.Navigation.router = new Usergrid.Navigation();
-_.bindAll(Usergrid.Navigation.router);

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/app/pages.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/app/pages.js b/deleted/archive/js/app/pages.js
deleted file mode 100644
index 9d8468b..0000000
--- a/deleted/archive/js/app/pages.js
+++ /dev/null
@@ -1,161 +0,0 @@
-function ApigeePages() {
-  var self = {
-    pages: {},
-    panels: {},
-    resetPasswordUrl: ''
-    };
-
-  self.clearPage = function(){
-    $("#pages > div").hide();
-  };
-
-  self.ShowPage = function(pageName){
-    // console.log('showing ' + pageName);
-    $("#pages > div").hide();
-    var page = self.pages[pageName];
-    page.box.show();
-    $(".navbar li.active").removeClass('active');
-    $(".navbar .navbar-inner").hide();
-
-    if(page.link.parent().parent().hasClass("dropdown-menu")) {
-      page.link.parent().parent().parent().addClass('active');
-    } else {
-      page.menu.show();
-    }
-
-    if(page.showFunction) {
-      page.showFunction();
-    }
-
-    if(Usergrid.userSession.getBannerState() == 'true'){
-      this.showBanner();
-    }
-
-    if (pageName == 'login') {
-      Usergrid.console.clearBackgroundImage();
-    } else {
-      Usergrid.console.setColumnBackgroundImage();
-    }
-
-  };
-  self.showBanner = function(){
-    Usergrid.userSession.showBanner();
-    $('#banner').show();
-  };
-
-  self.hideBanner = function(){
-    Usergrid.userSession.hideBanner();
-    $("#banner").hide();
-  };
-
-  self.AddPage = function(page) {
-    if(!page.link)
-      page.link = $("#" + page.name + '-link');
-
-    if(!page.box)
-      page.box = $("#" + page.name + '-page');
-
-    page.link.click(function(e) {
-      e.preventDefault();
-      if(!page.link.hasClass("dropdown-toggle"))
-        self.ShowPage(page.name);
-    });
-
-    LoadPage(page);
-    self.pages[page.name] = page;
-  };
-
-  self.AddPanel = function(panelName, linkSelector, sublinkSelector,boxSelector,initFunction,showFunction, buttonHandler) {
-    if (!linkSelector) {
-      //linkSelector = "#sidebar-menu a[href='#" + panelName + "']";
-      linkSelector = "#" + panelName  + '-link';
-    }
-    if (!sublinkSelector) {
-      sublinkSelector = "#" + panelName  + '-sublink';
-    }
-
-    if (!boxSelector) {
-      boxSelector = "#" + panelName + '-panel';
-    }
-
-    var panel = {
-      name: panelName,
-      link: $(linkSelector),
-      sublink: $(sublinkSelector),
-      box: $(boxSelector),
-      initFunction: initFunction,
-      showFunction: showFunction
-    };
-
-    if(!buttonHandler) {
-      buttonHandler = function(e) {
-        e.preventDefault();
-        redrawBox(panel.box);
-        if(panel.name == "query") {
-          Usergrid.Navigation.router.navigateTo("collections");
-        } else {
-          Usergrid.Navigation.router.navigateTo(panel.name);
-        }
-      }
-    }
-    panel.link.click(buttonHandler);
-    panel.sublink.click(buttonHandler);
-
-    self.panels[panel.name] = panel;
-
-    if (panel.initFunction) {
-      panel.initFunction();
-    }
-  };
-
-  self.ActivatePanel = function(panelName){
-    var panel = self.panels[panelName];
-    $("#sidebar-menu li.active").removeClass('active');
-    $("#"+panelName+"-link").parent().addClass('active');
-
-    $("#left-notifications-menu li.active").removeClass('active');
-
-  }
-
-  self.SelectPanel = function (panelName){
-    var panel = self.panels[panelName];
-
-    $("#sidebar-menu li.active").removeClass('active');
-    $("#sidebar-menu2 li.active").removeClass('active');
-    panel.link.parent().addClass('active');
-    panel.sublink.parent().addClass('active');
-
-    Usergrid.console.setupMenu();
-    Usergrid.console.requestApplications();
-    if (panel.showFunction) {
-      panel.showFunction();
-    }
-
-    redrawBox(panel.box);
-
-  };
-
-  function LoadPage(page){
-
-    if (page.name=='forgot-password') {
-      $("#forgot-password-page iframe").attr("src", self.resetPasswordUrl);
-    } else if(page.name=='console-frame') {
-      $("#console-frame-page iframe").attr("src", "consoleFrame.html");
-    } else {
-      if (window.location.pathname.indexOf('app') > 0) {
-        $.ajaxSetup ({cache: false});
-        page.box.load(page.name + '.html',page.initFunction);
-        $.ajaxSetup ({cache: true});
-      } else if(page.initFunction) {
-        page.initFunction();
-      }
-    }
-  }
-
-  function redrawBox(box) {
-    $("#console-panels > div").hide();
-    box.show();
-
-  }
-  return self;
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/app/params.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/app/params.js b/deleted/archive/js/app/params.js
deleted file mode 100644
index 16feeba..0000000
--- a/deleted/archive/js/app/params.js
+++ /dev/null
@@ -1,30 +0,0 @@
-
-(function (){
-  Usergrid.Params = function(){};
-
-  Usergrid.Params.prototype = {
-    queryParams : {},
-    parseParams : function(){
-      if (window.location.search) {
-        // split up the query string and store in an associative array
-        var params = window.location.search.slice(1).split("&");
-        for (var i = 0; i < params.length; i++) {
-          var tmp = params[i].split("=");
-          this.queryParams[tmp[0]] = unescape(tmp[1]);
-        }
-      }
-    },
-    getParsedParams : function(queryString){
-      var retParams = {};
-      var params = queryString.slice(0).split("&");
-      for (var i = 0; i < params.length; i++) {
-        var tmp = params[i].split("=");
-        retParams[tmp[0]] = unescape(tmp[1]);
-      }
-      return retParams;
-    }
-  };
-
-})(Usergrid);
-
-Usergrid.Params = new Usergrid.Params();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/app/quickLogin.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/app/quickLogin.js b/deleted/archive/js/app/quickLogin.js
deleted file mode 100644
index 6b239a1..0000000
--- a/deleted/archive/js/app/quickLogin.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-  This file enables the page to quickly redirect the user to the SSO login page.
-  Requires:
-  Usergrid.Params - params.js
-  Usergrid.userSession -session.js
-
-  Its prefered that Usergrid.Params loads parameters before QuickLogin.init() is called.
- */
-
-(function(){
-  Usergrid.QuickLogin = function(){};
-
-  Usergrid.QuickLogin.prototype = {
-    init : function(queryParams, sessionExists, useSSO){
-      if(this.credentialsInParams(queryParams)){
-        Usergrid.userSession.setUserUUID(queryParams.uuid);
-        Usergrid.userSession.setUserEmail(queryParams.admin_email);
-        Usergrid.userSession.setAccessToken(queryParams.access_token);
-      }
-      else if (!sessionExists && useSSO){
-        Usergrid.SSO.sendToSSOLoginPage();
-      }
-    },
-    credentialsInParams : function(params){
-      return(params.access_token && params.admin_email && params.uuid);
-    }
-  };
-})(Usergrid);
-
-Usergrid.QuickLogin = new Usergrid.QuickLogin();

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/app/session.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/app/session.js b/deleted/archive/js/app/session.js
deleted file mode 100644
index 0907da1..0000000
--- a/deleted/archive/js/app/session.js
+++ /dev/null
@@ -1,176 +0,0 @@
-
-window.Usergrid = window.Usergrid || {};
-Usergrid = Usergrid || {};
-(function() {
-  /**
-   *  Application is a class for holding application info
-   *
-   *  @class Application
-   *  @param {string} name the name of the application
-   *  @param {string} uuid the uuid of the application
-   */
-  Usergrid.Application = function(name, uuid) {
-    this._name = name;
-    this._uuid = uuid;
-  };
-  Usergrid.Application.prototype = {
-    getName: function() {
-      return this._name;
-    },
-    setName: function(name) {
-      this._name = name;
-    },
-    getUUID: function() {
-      return this._uuid;
-    },
-    setUUID: function(uuid) {
-      this._uuid = uuid;
-    },
-    setCurrentApplication: function(app) {
-      this.setName(app.getName());
-      this.setUUID(app.getUUID());
-    }
-  };
-
-
-  /**
-   *  Organization is a class for holding application info
-   *
-   *  @class Organization
-   *  @param {string} name organization's name
-   *  @param {string} organization's uuid
-   *  @param {string} list organization's applications
-   */
-  Usergrid.Organization = function(name, uuid) {
-    this._name = name;
-    this._uuid = uuid;
-    this._list = [];
-  };
-
-  Usergrid.Organization.prototype = {
-    getName: function() {
-      return this._name;
-    },
-    setName: function(name) {
-      this._name = name;
-    },
-    getUUID: function() {
-      return this._uuid;
-    },
-    setUUID: function(uuid) {
-      this._uuid = uuid;
-    },
-    setCurrentOrganization: function(org) {
-      this._name = org.getName();
-      this._uuid = org.getUUID();
-      this._list = org.getList();
-    },
-    addItem: function(item) {
-      var count = this._list.length;
-      this._list[count] = item;
-    },
-    getItemByName: function(name) {
-      var count = this._list.length;
-      var i=0;
-      if(name){
-          for (i=0; i<count; i++) {
-            if (this._list[i].getName().toLowerCase() == name.toLowerCase()) {
-              return this._list[i];
-            }
-          }
-      }
-      return null;
-    },
-    getItemByUUID: function(UUID) {
-      var count = this._list.length;
-      var i=0;
-      for (i=0; i<count; i++) {
-        if (this._list[i].getUUID() == UUID) {
-          return this._list[i];
-        }
-      }
-      return null;
-    },
-    getFirstItem: function() {
-      var count = this._list.length;
-      if (count > 0) {
-        return this._list[0];
-      }
-      return null;
-    },
-    getList: function() {
-      return this._list;
-    },
-    setList: function(list) {
-      this._list = list;
-    },
-    clearList: function() {
-      this._list = [];
-    }
-  };
-
-  /**
-    *  Standardized methods for maintaining user and authentication state in the Application
-    *  @class UserSession
-    */
-  Usergrid.userSession = function(){};
-
-  Usergrid.userSession.prototype = {
-    //access token access and setter methods
-    getAccessToken: function() {
-      var accessToken = localStorage.getItem('accessToken');
-      return accessToken;
-    },
-    setAccessToken: function setAccessToken(accessToken) {
-      localStorage.setItem('accessToken', accessToken);
-      localStorage.setItem('apigee_token', accessToken);
-    },
-    //logged in user access and setter methods
-    getUserUUID: function () {
-      return localStorage.getItem('userUUID');
-    },
-    setUserUUID: function (uuid) {
-      localStorage.setItem('userUUID', uuid);
-    },
-    getUserEmail: function () {
-      return localStorage.getItem('userEmail');
-    },
-    setUserEmail: function (email) {
-      localStorage.setItem('userEmail', email);
-      localStorage.setItem('apigee_email', email);
-    },
-    hideBanner: function(){
-      localStorage.setItem('showBanner', 'false');
-    },
-    showBanner: function(){
-      localStorage.setItem('showBanner', 'true');
-    },
-    getBannerState: function(){
-      return localStorage.getItem('showBanner');
-    },
-    //convenience method to verify if user is logged in
-    loggedIn: function () {
-      var token = this.getAccessToken();
-      var email = this.getUserEmail();
-      return (token && email);
-    },
-
-    //convenience method for saving all active user vars at once
-    saveAll: function (uuid, email, accessToken) {
-      this.setUserUUID(uuid);
-      this.setUserEmail(email);
-      this.setAccessToken(accessToken);
-    },
-
-    //convenience method for clearing all active user vars at once
-    clearAll: function () {
-      localStorage.removeItem('userUUID');
-      localStorage.removeItem('userEmail');
-      localStorage.removeItem('accessToken');
-      localStorage.removeItem('apigee_oken');
-      localStorage.removeItem('apigee_email');
-    }
-  };
-})(Usergrid);
-
-Usergrid.userSession = new Usergrid.userSession();

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/app/sso.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/app/sso.js b/deleted/archive/js/app/sso.js
deleted file mode 100644
index ca46e08..0000000
--- a/deleted/archive/js/app/sso.js
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Usergrid.SSO
- * SSO functions apigee specific
- *
- * Requires:
- * Usergrid.ApiClient
- */
-(function () {
-  Usergrid.SSO = function () {
-  };
-
-  Usergrid.SSO.prototype = {
-
-    default : {
-    top_level_domain: "apigee.com",
-    test_top_level_domain: "appservices.apigee.com",
-    local_domain: "localhost",
-    use_sso: true, // flag to override use SSO if needed set to ?use_sso=no
-    login_url: "https://accounts.apigee.com/accounts/sign_in",
-    profile_url: "https://accounts.apigee.com/accounts/my_account",
-    logout_url: "https://accounts.apigee.com/accounts/sign_out",
-    api_url: "https://api.usergrid.com/"
-    },
-
-    isTopLevelDomain:function () {
-      if ( window.location.hostname === this.default.top_level_domain ||
-           window.location.hostname === this.default.test_top_level_domain ||
-           window.location.hostname === this.default.local_domain ||
-           location.pathname.indexOf('/dit') >= 0 ||
-           location.pathname.indexOf('/mars') >= 0
-         )
-      {
-        return true;
-      }else{
-        return false;
-      }
-
-    },
-
-    usingSSO:function () {
-      return this.getSSO() && this.isTopLevelDomain();
-    },
-
-    getSSO:function (){
-      return this.default.use_sso;
-    },
-
-    getSSOCallback:function (urlCallback) {
-
-       var url = this.buildBaseUrl();
-
-      if(urlCallback) {
-        url += "#" + urlCallback;
-      }
-
-
-      if (Usergrid.ApiClient.getApiUrl() !== undefined && (Usergrid.ApiClient.getApiUrl() !== this.default.api_url)) {
-        var separatorMark = '&';
-        url += separatorMark + 'api_url=' + Usergrid.ApiClient.getApiUrl();
-      }
-      console.log(url);
-      //url = encodeURIComponent(url);
-      return'?callback=' + url;
-    },
-
-    buildBaseUrl:function () {
-      var baseUrl = window.location.protocol + '//' + window.location.host + window.location.pathname;
-      return baseUrl;
-    },
-
-    sendToSSOLogoutPage:function (callbackUrl) {
-      var url = this.default.logout_url;
-      if(window.location.host === 'localhost'){
-        //DIT
-        url = 'https://accounts.jupiter.apigee.net/accounts/sign_out';
-      }if(window.location.host === 'appservices.apigee.com' && location.pathname.indexOf('/dit') >= 0){
-        //DIT
-        url = 'https://accounts.jupiter.apigee.net/accounts/sign_out';
-      }else if(window.location.host === 'appservices.apigee.com' && location.pathname.indexOf('/mars') >= 0 ){
-        //staging
-        url = 'https://accounts.mars.apigee.net/accounts/sign_out';
-      }else{
-        url = this.default.logout_url;
-      }
-      url = url + this.getSSOCallback();
-      window.location = url;
-    },
-
-    sendToSSOLoginPage:function () {
-      var url = this.default.login_url;
-      if(window.location.host === 'localhost'){
-        //DIT
-        url = 'https://accounts.jupiter.apigee.net/accounts/sign_in';
-      }else if(window.location.host === 'appservices.apigee.com' && location.pathname.indexOf('/dit') >= 0){
-        //DIT
-        url = 'https://accounts.jupiter.apigee.net/accounts/sign_in';
-      }else if(window.location.host === 'appservices.apigee.com' && location.pathname.indexOf('/mars') >= 0 ){
-        //staging
-        url = 'https://accounts.mars.apigee.net/accounts/sign_in';
-      }else{
-        url = this.default.login_url;
-      }
-      url = url + this.getSSOCallback();
-      window.location = url;
-    },
-
-    sendToSSOProfilePage:function (callbackUrl) {
-      var url = this.default.profile_url;
-      if(window.location.host === 'localhost'){
-        //DIT
-        url = 'https://accounts.jupiter.apigee.net/accounts/my_account';
-      } else if(window.location.host === 'appservices.apigee.com' && location.pathname.indexOf('/dit') >= 0){
-        //DIT
-        url = 'https://accounts.jupiter.apigee.net/accounts/my_account';
-      } else if(window.location.host === 'appservices.apigee.com' && location.pathname.indexOf('/mars') >= 0 ){
-        //staging
-        url = 'https://accounts.mars.apigee.net/accounts/my_account';
-      }else{
-        url = this.default.profile_url;
-      }
-      url = url + this.getSSOCallback();
-      window.location = url;
-    },
-
-    setUseSSO:function (sso) {
-      if (sso == 'yes' || sso == 'true') {
-        this.default.use_sso = true;
-      } else if (sso == 'no' || sso == 'false') {
-        this.default.use_sso = false;
-      }
-    }
-  };
-})(Usergrid);
-
-Usergrid.SSO = new Usergrid.SSO();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/app/status.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/app/status.js b/deleted/archive/js/app/status.js
deleted file mode 100644
index 20a18a1..0000000
--- a/deleted/archive/js/app/status.js
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * User: David S
- * Date: 17/02/12
- * Time: 12:43 PM
- */
-var StatusBar = function () {
-  var self = {
-    box: null
-  };
-
-  self.Init = function(boxSelector){
-    self.box = $(boxSelector);
-  };
-
-  self.showAlert = function (msg, type) {
-    if (!type) {
-      type = 'info';
-    }
-
-    var closebutton = '<a onclick="closeErrorMessage();" class="close">&times;</a>'
-    var item = $('<div class="alert span3 alert-' + type + ' ">' + msg + closebutton + '</div>');
-    self.box.find(".alert").remove();
-    self.box.show().prepend(item);
-    item.show();
-
-  };
-
-  self.hideAlert = function () {
-    self.box.hide();
-  };
-
-  closeErrorMessage = function() {
-    self.box.hide();
-  };
-
-  return self;
-}();

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/app/ui/collections.entity.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/app/ui/collections.entity.js b/deleted/archive/js/app/ui/collections.entity.js
deleted file mode 100644
index 83bc8e0..0000000
--- a/deleted/archive/js/app/ui/collections.entity.js
+++ /dev/null
@@ -1,320 +0,0 @@
-window.Usergrid = window.Usergrid || {};
-Usergrid.console = Usergrid.console || {};
-Usergrid.console.ui = Usergrid.console.ui || { };
-Usergrid.console.ui.collections = Usergrid.console.ui.collections || { };
-
-(function() {
-  // This code block *WILL* load before the document is complete
-
-  var entity_list_item = {
-    options: {
-    },
-
-    _create: function() {
-
-      var self = this;
-      var o = self.options;
-      var el = self.element;
-
-      var entity_id = el.dataset('entity-id');
-      var entity_type = el.dataset('entity-type');
-      var entity = Usergrid.console.getQueryResultEntity(entity_id);
-      if (!entity) return;
-      o.entity = entity;
-      o.path = el.dataset('collection-path');
-
-      o.header = self.getHeader();
-      o.collections = self.getCollections();
-      o.contents = self.getContents();
-      o.metadata = self.getMetadata();
-      o.json = self.getJson();
-
-      o.header.appendTo(el);
-      o.collections.appendTo(el);
-      o.contents.appendTo(el);
-      o.metadata.appendTo(el);
-      o.json.appendTo(el);
-
-      o.header.find(".button").button();
-
-      var contents_button = o.header.find(".query-result-header-toggle-contents");
-      contents_button.click(function() {
-        if (o.contents.css('display') == 'none') {
-          o.contents.show();
-          o.json.hide();
-          o.collections.hide();
-        } else {
-          o.contents.hide();
-        }
-        return false;
-      });
-
-      var json_button = o.header.find(".query-result-header-toggle-json");
-      json_button.click(function() {
-        if (o.json.css('display') == 'none') {
-          o.json.show();
-          o.contents.hide();
-          o.collections.hide();
-        } else {
-          o.json.hide();
-        }
-        return false;
-      });
-
-      var collections_button = o.header.find(".query-result-header-toggle-collections");
-      collections_button.click(function() {
-        if (o.collections.css('display') == 'none') {
-          o.collections.show();
-          o.contents.hide();
-          o.json.hide();
-        } else {
-          o.collections.hide();
-        }
-        return false;
-      });
-
-      var metadata_button = o.header.find(".query-result-header-toggle-metadata");
-      metadata_button.click(function() {
-        o.metadata.toggle();
-        return false;
-      });
-
-      var link_button = o.header.find(".query-result-header-link");
-    },
-
-    getHeader : function() {
-      var entity = this.options.entity,
-         name = entity.uuid + " : " + entity.type;
-
-      if (entity.name) {
-        name = name + " : " + entity.name;
-      } else if (entity.username) {
-        name = name + " : " + entity.username;
-      } else if (entity.title) {
-        name = name + " : " + entity.title;
-      }
-
-      var collections = {
-        entity : entity,
-        name : name,
-        path : this.options.path,
-        collections : !$.isEmptyObject((entity.metadata || { }).collections || (entity.metadata || { }).connections),
-        uri : (entity.metadata || { }).uri
-      }
-
-      if(entity.type === 'user' || entity.picture){
-        if (!entity.picture) {
-          entity.picture = "/images/user-photo.png"
-        } else {
-          entity.picture = entity.picture + "?d=http://" + window.location.host + window.location.pathname + "images/user-photo.png"
-        }
-        collections['picture'] = entity.picture;
-      }
-
-      return $.tmpl("apigee.ui.collections.entity.header.html",
-        collections);
-
-    },
-
-    getCollections : function() {
-      var entity = this.options.entity;
-
-      var collections = $.extend({ }, (entity.metadata || { }).collections, (entity.metadata || { }).connections);
-
-      if (!$.isEmptyObject(collections)) {
-        return $.tmpl("apigee.ui.collections.entity.collections.html", {
-          collections : collections
-        }, {
-          makeObjectTable : Usergrid.console.ui.makeObjectTable,
-          tableOpts : Usergrid.console.ui.standardTableOpts
-        });
-      }
-      return $("");
-    },
-
-    getContents : function() {
-      var entity_contents = $.extend( false, { }, this.options.entity);
-      try { // metadata may or may not be present
-        var path = entity_contents['metadata']['path'];
-        entity_contents = $.extend( false, entity_contents, {'path': path});
-        var sets = entity_contents['metadata']['sets'];
-        entity_contents = $.extend( false, entity_contents, {'sets': sets});
-        var collections = entity_contents['metadata']['collections'];
-        entity_contents = $.extend( false, entity_contents, {'collections': collections});
-        delete entity_contents['metadata'];
-      } catch(e) {}
-      return $.tmpl("apigee.ui.collections.entity.contents.html", {
-        entity : entity_contents
-      }, {
-        makeObjectTable : Usergrid.console.ui.makeObjectTable,
-        tableOpts : Usergrid.console.ui.standardTableOpts
-      });
-    },
-
-    getMetadata : function() {
-      var entity = this.options.entity;
-      if (!$.isEmptyObject(entity.metadata)) {
-        return $.tmpl("apigee.ui.collections.entity.metadata.html", {
-          metadata : entity.metadata
-        }, {
-          makeObjectTable : Usergrid.console.ui.makeObjectTable,
-          tableOpts : Usergrid.console.ui.metadataTableOpts
-        });
-      }
-      return $("");
-    },
-
-    getJson : function() {
-      return $.tmpl("apigee.ui.collections.entity.json.html", {
-        entity : this.options.entity
-      }, {
-        makeObjectTable : Usergrid.console.ui.makeObjectTable,
-        tableOpts : Usergrid.console.ui.standardTableOpts
-      });
-    },
-
-    destroy: function() {
-      this.element.html("");
-      this.options.entity = null;
-      this.options.header = null;
-      this.options.contents = null;
-      this.options.metadata = null;
-      this.options.collections = null;
-      this.options.json = null;
-    }
-
-  }
-  Usergrid.console.ui.collections.entity_list_item = entity_list_item;
-
-  var entity_detail = {
-    options: {
-    },
-
-    _create: function() {
-
-      var self = this;
-      var o = self.options;
-      var el = self.element;
-
-      var entity_id = el.dataset('entity-id');
-      var entity_type = el.dataset('entity-type');
-      var entity = Usergrid.console.getQueryResultEntity(entity_id);
-      if (!entity) return;
-      o.entity = entity;
-      o.path = el.dataset('collection-path');
-
-      o.details = self.getDetails();
-
-      o.details.appendTo(el);
-
-      o.collections = el.find(".query-result-collections");
-      o.details.find(".button").button();
-      o.contents = el.find(".query-result-contents");
-      o.json = el.find(".query-result-json");
-      o.formDiv = el.find(".query-result-form");
-
-      var content_button = o.details.find(".query-result-header-toggle-contents");
-      content_button.click(function() {
-        if (o.contents.css('display') == 'none') {
-          o.contents.show();
-          o.json.hide();
-          o.collections.hide();
-        } else {
-          o.contents.hide();
-        }
-        return false;
-      });
-
-      var collections_button = o.details.find(".query-result-header-toggle-collections");
-      collections_button.click(function() {
-        if (o.collections.css('display') == 'none') {
-          o.collections.show();
-          o.contents.hide();
-          o.json.hide();
-        } else {
-          o.collections.hide();
-        }
-        return false;
-      });
-
-      var json_button = o.details.find(".query-result-header-toggle-json");
-      json_button.click(function() {
-        if (o.json.css('display') == 'none') {
-          o.json.show();
-          o.contents.hide();
-          o.collections.hide();
-        } else {
-          o.json.hide();
-        }
-        return false;
-      });
-
-      var link_button = o.details.find(".query-result-header-link");
-    },
-
-    getDetails : function() {
-      var entity = this.options.entity,
-        name = entity.uuid + " : " + entity.type,
-        collections,
-        connections;
-
-      if (entity.name) {
-        name = name + " : " + entity.name;
-      } else if (entity.username) {
-        name = name + " : " + entity.username;
-      } else if (entity.title) {
-        name = name + " : " + entity.title;
-      }
-
-      if(entity.metadata.collections){
-        collections = entity.metadata.collections;
-      }
-
-      if(entity.metadata.connections){
-        connections = entity.metadata.connections;
-      }
-
-      var entity_contents = $.extend( false, { }, this.options.entity);
-      var path = entity_contents['metadata']['path'];
-      entity_contents = $.extend( false, entity_contents, {'path': path});
-      delete entity_contents['metadata'];
-
-      var metadata = entity.metadata;
-      if ($.isEmptyObject(metadata)) metadata = null;
-
-      return $.tmpl("apigee.ui.collections.entity.detail.html", {
-        entity : entity_contents,
-        name : name,
-        path : this.options.path,
-        collections : collections,
-        connections : connections,
-        metadata : metadata,
-        uri : (entity.metadata || { }).uri
-      }, {
-        makeObjectTable : Usergrid.console.ui.makeObjectTable,
-        tableOpts : Usergrid.console.ui.standardTableOpts,
-        metadataTableOpts : Usergrid.console.ui.metadataTableOpts
-      });
-
-    },
-
-    destroy: function() {
-      this.element.html("");
-      this.options.entity = null;
-      this.options.details.header = null;
-      this.options.json = null;
-      this.options.formDiv = null;
-    }
-
-  };
-  Usergrid.console.ui.collections.entity_detail = entity_detail;
-
-  (function($) {
-    // This code block *WILL NOT* load before the document is complete
-
-    $.widget("ui.apigee_collections_entity_list_item", entity_list_item);
-    $.widget("ui.apigee_collections_entity_detail", entity_detail);
-
-  })(jQuery);
-
-})();

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/app/ui/collections.user.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/app/ui/collections.user.js b/deleted/archive/js/app/ui/collections.user.js
deleted file mode 100644
index 5b2c561..0000000
--- a/deleted/archive/js/app/ui/collections.user.js
+++ /dev/null
@@ -1,120 +0,0 @@
-window.Usergrid = window.Usergrid || {};
-Usergrid.console = Usergrid.console || {};
-Usergrid.console.ui = Usergrid.console.ui || { };
-Usergrid.console.ui.collections = Usergrid.console.ui.collections || { };
-
-(function($) {
-  //This code block *WILL NOT* load before the document is complete
-
-  // Simplified vcard in JSON Schema for demonstration purposes
-  // Every collection will have a JSON Schema available and downloadable from the server
-  // Empty collections will have a minimal schema that only contains the basic required entity properties
-  // Developers will be able to upload schemas to collections as well
-  var vcard_schema = {
-    "description":"A representation of a person, company, organization, or place",
-    "type":"object",
-    "properties":{
-      "username":{
-        "type":"string",
-        "optional": true,
-        "title" : "Username"
-      },
-      "name":{
-        "description":"Formatted Name",
-        "type":"string",
-        "optional":true,
-        "title" : "Full Name"
-      },
-      "title":{
-        "description":"User Title",
-        "type":"string",
-        "optional": true,
-        "title":"Title"
-      },
-      "url":{
-        "type":"string",
-        "format":"url",
-        "optional":true,
-        "title" : "Home Page"
-      },
-      "email":{
-        "type":"string",
-        "format":"email",
-        "optional":true,
-        "title" : "Email"
-      },
-      "tel":{
-        "type":"string",
-        "format":"phone",
-        "optional":true,
-        "title" : "Telephone"
-      },
-      "picture":{
-        "type":"string",
-        "format":"image",
-        "optional":true,
-        "title" : "Picture URL"
-      },
-      "bday":{
-        "type":"string",
-        "format":"date",
-        "optional":true,
-        "title" : "Birthday"
-      },
-      "adr":{
-        "type":"object",
-        "properties":{
-          "id":{
-            "type":"integer"
-          },
-          "addr1":{
-            "type":"string",
-            "title" : "Street 1"
-          },
-          "addr2":{
-            "type":"string",
-            "title" : "Street 2"
-          },
-          "city":{
-            "type":"string",
-            "title" : "City"
-          },
-          "state":{
-            "type":"string",
-            "title" : "State"
-          },
-          "zip":{
-            "type":"string",
-            "title" : "Zip"
-          },
-          "country":{
-            "type":"string",
-            "title" : "Country"
-          }
-        },
-        "optional":true,
-        "title" : "Address"
-      }
-    }
-  };
-  Usergrid.console.ui.collections.vcard_schema = vcard_schema;
-
-  var group_schema = {
-    "description":"A representation of a group",
-    "type":"object",
-    "properties":{
-      "path":{
-        "type":"string",
-        "optional": true,
-        "title" : "Group Path"
-      },
-      "title":{
-        "type":"string",
-        "optional":true,
-        "title" : "Display Name"
-      }
-    }
-  };
-  Usergrid.console.ui.collections.group_schema = group_schema;
-
-})(jQuery);

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/app/ui/ui.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/app/ui/ui.js b/deleted/archive/js/app/ui/ui.js
deleted file mode 100644
index 089bb92..0000000
--- a/deleted/archive/js/app/ui/ui.js
+++ /dev/null
@@ -1,415 +0,0 @@
-window.Usergrid = window.Usergrid || {};
-Usergrid.console = Usergrid.console || {};
-Usergrid.console.ui = Usergrid.console.ui || { };
-
-(function() {
-  //This code block *WILL* load before the document is complete
-
-  function loadTemplate(name) {
-    $.ajax({
-      type: "GET",
-      url: "templates/" + name,
-      complete: function(jqXHR, textStatus){
-        var html = jqXHR.responseText;
-        if (html) {
-          $.template(name, html);
-        }
-      }
-    });
-  }
-  Usergrid.console.ui.loadTemplate = loadTemplate;
-
-  var standardTableOpts = {
-    "base_css" : "query-result-table",
-    "links" : {
-      "metadata.collections*" : "<a href=\"#\" onclick=\"Usergrid.console.pageOpenQueryExplorer('${value}'); return false;\">${value}</a>",
-      "metadata.connections*" : "<a href=\"#\" onclick=\"Usergrid.console.pageOpenQueryExplorer('${value}'); return false;\">${value}</a>",
-      "all_collections*" : "<a href=\"#\" onclick=\"Usergrid.console.pageOpenQueryExplorer('${value}'); return false;\">${value}</a>",
-      "metadata.path" : "<a href=\"#\" onclick=\"Usergrid.console.pageOpenQueryExplorer('${value}'); return false;\">${value}</a>",
-      "*uri" : "<a href=\"${value}\">${value}</a>",
-      "*link" : "<a href=\"${value}\">${value}</a>"
-    }
-  };
-  Usergrid.console.ui.standardTableOpts = standardTableOpts;
-
-  var metadataTableOpts = {
-    "base_css" : "query-result-table",
-    "links" : {
-      "collections*" : "<a href=\"#\" onclick=\"Usergrid.console.pageOpenQueryExplorer('${value}'); return false;\">${value}</a>",
-      "connections*" : "<a href=\"#\" onclick=\"Usergrid.console.pageOpenQueryExplorer('${value}'); return false;\">${value}</a>",
-      "path" : "<a href=\"#\" onclick=\"Usergrid.console.pageOpenQueryExplorer('${value}'); return false;\">${value}</a>",
-      "uri" : "<a href=\"${value}\">${value}</a>"
-    }
-  };
-  Usergrid.console.ui.metadataTableOpts = metadataTableOpts;
-
-  var re1 = /[^a-zA-Z0-9-]/g;
-  var re2 = /--*/g;
-  var re3 = /\${value}/g;
-  function makeObjectTable(obj, opts, parent_k) {
-    var base_css = opts.base_css;
-    var doArray = ($.type(obj) == "array");
-
-    var t = "<table class=\"" + base_css + " " + base_css + "-obj\">";
-    if (doArray) {
-      t = "<table class=\"" + base_css + " " + base_css + "-list\">";
-    }
-
-    for (var k in obj) {
-      var v = obj[k];
-      var full_k = parent_k ? parent_k + "." + k : k;
-
-      var cs = k.replace(re1, "-").replace(re2, "-");
-
-      var vType = $.type(v);
-      if ((vType  == "object") || (vType  == "array")) {
-        v = makeObjectTable(v, opts, full_k);
-      }
-
-      if (vType  == "object") {
-        t += "<tr class=\"" + base_css + "-row-obj\">";
-      }
-      else if (vType  == "array") {
-        t += "<tr class=\"" + base_css + "-row-array\">";
-      }
-      else {
-        t += "<tr class=\"" + base_css + "-row-line\">";
-
-        var links = opts.links;
-        var link_href = links[full_k];
-        if (!link_href) {
-          link_href = links[parent_k + "*"];
-        }
-        if (!link_href) {
-          link_href = links["*" + k];
-        }
-        if (link_href) {
-          v = link_href.replace(re3, v);
-        }
-        v = "<div>" + v + "</div>";
-      }
-
-      if (doArray) {
-        t += "<td class=\"" + base_css + "-item\"><div>" + v + "</div></td>";
-      }
-      else {
-        t += "<td class=\"" + base_css + "-name\"><div data-path=\"" + full_k + "\">" + k + "</div></td>";
-        t += "<td class=\"" + base_css + "-value " + base_css + "-name-" + cs + "\">" + v + "</td>";
-      }
-
-      t += "</tr>";
-    }
-
-    t += "</table>";
-    return t;
-  }
-  Usergrid.console.ui.makeObjectTable = makeObjectTable;
-
-  function makeTableFromList(list, width, options) {
-    var getListItem = null;
-    var getListItemTemplateOptions = null;
-    var listItemTemplate = null;
-
-    var onRender = null;
-    var output = null;
-
-    var tableId = null;
-
-    var tableClass = null;
-    var rowClass = null;
-    var cellClass = null;
-
-    var tableStyle = null;
-    var rowStyle = null;
-    var cellStyle = null;
-
-    if (options) {
-      getListItem = options.getListItem;
-      getListItemTemplateOptions = options.getListItemTemplateOptions;
-      listItemTemplate = options.listItemTemplate;
-
-      onRender = options.onRender;
-      output = options.output;
-
-      tableId = options.tableId;
-
-      tableClass = options.tableClass;
-      rowClass = options.rowClass;
-      cellClass = options.cellClass;
-
-      tableStyle = options.tableStyle;
-      rowStyle = options.rowStyle;
-      cellStyle = options.cellStyle;
-    }
-
-    tableId = tableId ? " id=\"" + tableId + "\" " : "";
-
-    tableClass = tableClass ? " class=\"" + tableClass + "\" " : "";
-    rowClass = rowClass ? " class=\"" + rowClass + "\" " : "";
-    cellClass = cellClass ? " class=\"" + cellClass + "\" " : "";
-
-    tableStyle = tableStyle ? " style=\"" + tableStyle + "\" " : "";
-    rowStyle = rowStyle ? " style=\"" + rowStyle + "\" " : "";
-    cellStyle = cellStyle ? " style=\"" + cellStyle + "\" " : "";
-
-    var t = "<table" + tableId + tableClass + tableStyle + ">\n";
-    var i = 0;
-    if (!width || (width < 1)) width = 1;
-    var count = (Math.floor((list.length - 1) / width) + 1) * width;
-    while (i < count) {
-      if ((i % width) == 0) {
-        t += "<tr" + rowClass + rowStyle + ">\n";
-      }
-      t += "<td" + cellClass + cellStyle + ">";
-      if (i < list.length) {
-        if (getListItem) {
-          t += getListItem(i, i % count, Math.floor(i / count));
-        }
-        else {
-          t += list[i];
-        }
-      }
-      t += "</td>\n";
-      if (((i + 1) % width) == 0) {
-        t += "</tr>\n";
-      }
-      i++;
-    }
-    t += "</table>\n";
-    return t;
-  }
-  Usergrid.console.ui.makeTableFromList = makeTableFromList;
-
-  function jsonSchemaToDForm(schema, obj) {
-    var dform = { elements : [] };
-
-    for (var propName in schema.properties) {
-      var property = schema.properties[propName];
-      var type = property.type;
-      if (type == "string") {
-        var value = '';
-        try {
-          var value = obj[propName];
-        } catch (e) {}
-        if (!value) value = "";
-        var element = {
-          "name" : "ui-form-" + propName,
-          "id" : "ui-form-" + propName,
-          "caption" : property.title,
-          "type" : "text",
-          "value" : value
-        };
-        dform.elements.push(element);
-        dform.elements.push({
-          "type" : "br"
-        });
-      } else if (type == "object") {
-        var element = jsonSchemaToDForm(property, obj[propName]);
-        element.type = "fieldset";
-        element.caption = property.title;
-        dform.elements.push(element);
-      }
-    }
-    return dform;
-  }
-  Usergrid.console.ui.jsonSchemaToDForm = jsonSchemaToDForm;
-
-  function jsonSchemaToPayload(schema){
-    var payloadData = new Object();
-    var payload = '';
-    for (var propName in schema.properties) {
-      var property = schema.properties[propName];
-      var type = property.type;
-      if (type == "string") {
-        var value = $('#ui-form-'+propName).val();
-        if (!value) value = "";
-        payloadData[propName] = value;
-
-      } else if (type == "object") {
-        payloadData[propName] = {};
-        for (var propName2 in schema.properties[propName].properties) {
-          var property2 = schema.properties[propName].properties[propName2];
-          var type2 = property2.type;
-          if (type2 == "string") {
-            var value2 = $('#ui-form-'+propName2).val();
-            if (!value) value = "";
-            payloadData[propName][propName2] = value2;
-
-          }
-        }
-      }
-    }
-    return payloadData;
-  }
-  Usergrid.console.ui.jsonSchemaToPayload = jsonSchemaToPayload;
-
-  function displayEntityListResponse(query_results, options, response) {
-
-    query_results = query_results || {};
-
-    var getListItem = null;
-    var getListItemTemplateOptions = null;
-    var listItemTemplate = null;
-
-    var output = null;
-    var prevButton = null;
-    var nextButton = null;
-    var nextPrevDiv = null;
-
-    var noEntitiesMsg = "";
-
-    var onRender = null;
-    var onNoEntities = null;
-    var onError = null;
-    var onRawJson = null;
-
-    if (options) {
-      getListItem = options.getListItem;
-      getListItemTemplateOptions = options.getListItemTemplateOptions;
-      listItemTemplate = options.listItemTemplate;
-
-      output = options.output;
-
-      prevButton = options.prevButton;
-      nextButton = options.nextButton;
-      nextPrevDiv = options.nextPrevDiv;
-
-      noEntitiesMsg = options.noEntitiesMsg;
-
-      onRender = options.onRender;
-      onNoEntities = options.onNoEntities;
-      onError = options.onError;
-      onRawJson = options.onRawJson;
-    }
-
-    query_results.entities = null;
-    query_results.entities_by_id = null;
-    query_results.query = query_results.query || { };
-
-    var t = "";
-    if (response.entities && (response.entities.length > 0)) {
-
-      query_results.entities = response.entities;
-      query_results.entities_by_id = {};
-
-      // collections is the only one that uses this lower level item, and can't be trusted to be here
-      // so hardcoding this check for that type and loading it in a try to make sure we don't error out
-      // in other cases
-      try {
-        if (response.entities[0].metadata.collections &&
-            options.output == "#collections-response-table") {
-          query_results.entities = response.entities[0].metadata.collections;
-        }
-      } catch (e) {
-        //do nothing, this is only to trap errors
-      }
-
-      if (listItemTemplate) {
-        $(output).html("");
-      }
-
-      var path = response.path || "";
-      path = "" + path.match(/[^?]*/);
-
-      for (i in query_results.entities) {
-        var entity = query_results.entities[i];
-        query_results.entities_by_id[entity.uuid] = entity;
-
-        var entity_path = (entity.metadata || {}).path;
-        if ($.isEmptyObject(entity_path)) {
-          entity_path = path + "/" + entity.uuid;
-        }
-
-        if (getListItem) {
-          t += getListItem(entity, entity_path);
-        }
-        else if (listItemTemplate) {
-          var options = null;
-          if (getListItemTemplateOptions) {
-            options = getListItemTemplateOptions(entity, entity_path);
-          }
-          if (!options) {
-            options = {entity: entity, path: entity_path};
-          }
-          $.tmpl(listItemTemplate, options).appendTo(output);
-        }
-      }
-
-      if (!listItemTemplate) {
-        $(output).html(t);
-      }
-
-      if (onRender) {
-        onRender();
-      }
-
-      if (prevButton) {
-        if (query_results.query.hasPrevious && query_results.query.hasPrevious()) {
-          $(prevButton).click(query_results.query.getPrevious);
-          $(prevButton).show();
-        }
-        else {
-          $(prevButton).hide();
-        }
-      }
-
-      if (nextButton) {
-        if (query_results.query.hasNext && query_results.query.hasNext()) {
-          $(nextButton).click(query_results.query.getNext);
-          $(nextButton).show();
-        }
-        else {
-          $(nextButton).hide();
-        }
-      }
-
-      if (nextPrevDiv) {
-        if (query_results.query.hasPrevious && query_results.query.hasNext && (query_results.query.hasPrevious() || query_results.query.hasNext())) {
-          $(nextPrevDiv).show();
-        }
-        else {
-          $(nextPrevDiv).hide();
-        }
-      }
-
-    } else if (response.entities && (response.entities.length == 0)) {
-      if (nextPrevDiv) {
-        $(nextPrevDiv).hide();
-      }
-      var s = null;
-      if (onNoEntities) {
-        s = onNoEntities();
-      }
-      $(output).html("<div class=\"query-response-empty\">" + (s ? s : noEntitiesMsg) + "</div>");
-      // This is a hack, will be fixed in API
-    } else if (response.error && (
-      (response.error.exception == "org.usergrid.services.exceptions.ServiceResourceNotFoundException: Service resource not found") ||
-        (response.error.exception == "java.lang.IllegalArgumentException: Not a valid entity value type or null: null"))) {
-      if (nextPrevDiv) {
-        $(nextPrevDiv).hide();
-      }
-      var s = null;
-      if (onError) {
-        s = onError();
-      }
-      $(output).html("<div class=\"query-response-empty\">" + (s ? s : noEntitiesMsg) + "</div>");
-
-    } else {
-      $(output).html(
-        "<pre class=\"query-response-json\">"
-          + JSON.stringify(response, null, "  ") + "</pre>");
-      if (nextPrevDiv) {
-        $(nextPrevDiv).hide();
-      }
-      if (onRawJson) {
-        onRawJson();
-      }
-    }
-
-    $(output).find(".button").button();
-
-    return query_results;
-  }
-  Usergrid.console.ui.displayEntityListResponse = displayEntityListResponse;
-
-})();


[20/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/app/app.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/app/app.js b/deleted/dist-cov/usergrid-portal/archive/js/app/app.js
deleted file mode 100644
index 2b68963..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/app/app.js
+++ /dev/null
@@ -1,131 +0,0 @@
-Usergrid.organizations = new Usergrid.Organization();
-
-var Pages = new ApigeePages();
-
-
-
-$(document).ready(function () {
-
-  var query_params = Usergrid.Params.queryParams;
-  if(window.location.host === 'appservices.apigee.com' && location.pathname.indexOf('/dit') >= 0){
-    //DIT
-    Usergrid.ApiClient.setApiUrl('http://apigee-internal-prod.jupiter.apigee.net/');
-  }else if(window.location.host === 'appservices.apigee.com' && location.pathname.indexOf('/mars') >= 0 ){
-    //staging
-    Usergrid.ApiClient.setApiUrl('http://apigee-internal-prod.mars.apigee.net/');
-  } else if (Usergrid.apiUrl) {
-    Usergrid.ApiClient.setApiUrl(Usergrid.apiUrl);
-  }
-
-
-  Pages.resetPasswordUrl = Usergrid.ApiClient.getResetPasswordUrl();
-
-  initCore();
-  initUI(query_params);
-  startApp();
-
-  function initCore() {
-    prepareLocalStorage();
-    parseParams();
-  }
-
-  function initUI(query_params) {
-    apigee_console_app(Pages, query_params);
-    initMenu();
-    StatusBar.Init('#statusbar-placeholder');
-    toggleableSections();
-  }
-
-  function startApp() {
-
-    if (!Usergrid.userSession.loggedIn()) {
-      // test to see if the Portal is running on apigee, if so, send to SSO, if not, fall through to login screen
-      if (Usergrid.SSO.usingSSO()) {
-        Pages.clearPage();
-        Usergrid.SSO.sendToSSOLoginPage();
-      } else if (query_params.goto_signup) {
-        Pages.ShowPage("signup");
-      } else {
-        Usergrid.console.showLoginForNonSSO();
-      }
-    } else {
-      Usergrid.console.autoLogin(
-        function () {
-          Usergrid.console.loginOk();
-        },
-        function () {
-          Usergrid.console.logout();
-        }
-      );
-    }
-  }
-
-  function initMenu() {
-    $('.navbar .dropdown-toggle').dropdown();
-    $('#sidebar-menu .dropdown-toggle').dropdown();
-    $('#logout-link').click(Usergrid.console.logout);
-    $('#hideBanner').click(Pages.hideBanner);
-
-    var publicMenu = $('#publicMenu');
-    var privateMenu = $('.privateMenu');
-
-    Pages.AddPage({name:'login', menu:publicMenu});
-    Pages.AddPage({name:'message', menu:publicMenu});
-    Pages.AddPage({name:'signup', menu:publicMenu});
-    Pages.AddPage({name:'forgot-password', menu:publicMenu});
-    Pages.AddPage({name:'post-signup', menu:publicMenu});
-    Pages.AddPage({name:'console', menu:privateMenu, initFunction:initConsole, showFunction: function() {
-      if(!Backbone.History.started){
-        Backbone.history.start();
-      }
-    }});
-  }
-
-
-  function initConsole() {
-    //Pages.AddPanel(pageName,linkSelector,boxSelector,initfunc,showfunc,buttonHandlerFunction);
-    Pages.AddPanel('organization', '.go-home', null,null, null, Usergrid.console.pageSelectHome,null);
-    Pages.AddPanel('console', null, null, null, null, null, null);
-    Pages.AddPanel('dashboard', null, null, null, null, Usergrid.console.pageSelectApplication,null);
-    Pages.AddPanel('user', "#users-sublink", "#users-sublink", null, null, null, function() {});
-    Pages.AddPanel('users', null, "#users-sublink", null, null, Usergrid.console.pageSelectUsers, null);
-    Pages.AddPanel('group', null, "#groups-sublink", null, null, null, function() {});
-    Pages.AddPanel('groups', null, null, null, null, Usergrid.console.pageSelectGroups, null);
-    Pages.AddPanel('roles',  null, null, null, null, Usergrid.console.pageSelectRoles, null);
-    Pages.AddPanel('activities', null, null, null, null, Usergrid.console.pageSelectActivities, null);
-    Pages.AddPanel('notifications', null, null, null, null, Usergrid.console.pageSelectNotifcations, null);
-    Pages.AddPanel('setupNeeded', null, null, null, null, Usergrid.console.pageSelectNotifcations, null);
-    Pages.AddPanel('sendNotification', null, "#sendNotification-sublink", null, null, null, null);
-    Pages.AddPanel('messageHistory', null, "#messageHistory-sublink", null, null, null, null);
-    Pages.AddPanel('notificationsReceipt', null, null, null, null, null, null);
-    Pages.AddPanel('configuration', null, "#configuration-sublink", null, null, null, null);
-    Pages.AddPanel('getStarted', null, "#getStarted-sublink", null, null, null, null);
-    Pages.AddPanel('collections', "#collections-link", null, null, null, Usergrid.console.pageSelectCollections, null);
-    Pages.AddPanel('analytics', null, null, null, null, Usergrid.console.pageSelectAnalytics, null);
-    Pages.AddPanel('properties', null, null, null, null, Usergrid.console.pageSelectProperties, null);
-    Pages.AddPanel('shell', null, null, null, null, Usergrid.console.pageSelectShell, null);
-    Pages.AddPanel('account', "#account-link", null, null, null, null, accountRedirect);
-    //$("#sidebar-menu > ul > li > a").click(Pages.ShowPanel);
-
-  }
-
-  function accountRedirect(e) {
-    e.preventDefault();
-    Usergrid.console.requestAccountSettings(Backbone.history.getHash(window));
-  }
-
-  function initCenterPanels(){
-    $(window).resize(centerPanels);
-    $(window).resize();
-  }
-
-  function centerPanels(){
-    var panels = $("#console-page");
-    var freeSpace = $(window).width() - panels.width();
-    console.log("window: " + $(window).width() + " Panels:" + panels.width());
-    console.log("free space: "+freeSpace);
-    panels.css('margin-left',function(){return freeSpace / 2;});
-  }
-
-  console.log('---+++', window)
-});


[18/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/app/helpers.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/app/helpers.js b/deleted/dist-cov/usergrid-portal/archive/js/app/helpers.js
deleted file mode 100644
index 7e1d0f7..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/app/helpers.js
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * This file contains helper functions: Stuff used all over the application but not necessarily part of a module/object/paradigm/something.
- *
- * If your can't find where a function is defined, it's probably here. :)
- *
- * They need to be cleaned up. SOON!
- *
- */
-
-var onIE = navigator.userAgent.indexOf("MSIE") >= 0;
-
-function indexOfFirstType(type, args) {
-  for (var i = 0; i < args.length; i++) {
-    if (!args[i]) return - 1;
-    if (typeof args[i] == type) return i;
-  }
-  return - 1;
-}
-
-function getByType(type, i, args) {
-  var j = indexOfFirstType(type, args);
-  if (j < 0) return null;
-  var k = 0;
-  while ((j < args.length) && (k <= i)) {
-    if (type == "object") {
-      if (args[j].constructor != Object) return null;
-    } else if (typeof args[j] != type) return null;
-    if (k == i) return args[j];
-    j++;
-    k++;
-  }
-  return null;
-}
-
-function countByType(type, args) {
-  var c = 0;
-  var j = indexOfFirstType(type, args);
-  if (j < 0) return c;
-  while (j < args.length) {
-    if (type == "object") {
-      if (args[j].constructor != Object) return c;
-    } else if (typeof args[j] != type) return c;
-    j++;
-    c++;
-  }
-  return null;
-}
-
-function encodeParams(params) {
-  tail = [];
-  if (params instanceof Array) {
-    for (i in params) {
-      var item = params[i];
-      if ((item instanceof Array) && (item.length > 1)) {
-        tail.push(item[0] + "=" + encodeURIComponent(item[1]));
-      }
-    }
-  } else {
-    for (var key in params) {
-      if (params.hasOwnProperty(key)) {
-        var value = params[key];
-        if (value instanceof Array) {
-          for (i in value) {
-            var item = value[i];
-            tail.push(key + "=" + encodeURIComponent(item));
-          }
-        } else {
-          tail.push(key + "=" + encodeURIComponent(value));
-        }
-      }
-    }
-  }
-  return tail.join("&");
-}
-
-function encodePathString(path, returnParams) {
-
-  var i = 0;
-  var segments = new Array();
-  var payload = null;
-  while (i < path.length) {
-    var c = path.charAt(i);
-    if (c == '{') {
-      var bracket_start = i;
-      i++;
-      var bracket_count = 1;
-      while ((i < path.length) && (bracket_count > 0)) {
-        c = path.charAt(i);
-        if (c == '{') {
-          bracket_count++;
-        } else if (c == '}') {
-          bracket_count--;
-        }
-        i++;
-      }
-      if (i > bracket_start) {
-        var segment = path.substring(bracket_start, i);
-        segments.push(JSON.parse(segment));
-      }
-      continue;
-    } else if (c == '/') {
-      i++;
-      var segment_start = i;
-      while (i < path.length) {
-        c = path.charAt(i);
-        if ((c == ' ') || (c == '/') || (c == '{')) {
-          break;
-        }
-        i++;
-      }
-      if (i > segment_start) {
-        var segment = path.substring(segment_start, i);
-        segments.push(segment);
-      }
-      continue;
-    } else if (c == ' ') {
-      i++;
-      var payload_start = i;
-      while (i < path.length) {
-        c = path.charAt(i);
-        i++;
-      }
-      if (i > payload_start) {
-        var json = path.substring(payload_start, i).trim();
-        payload = JSON.parse(json);
-      }
-      break;
-    }
-    i++;
-  }
-
-  var newPath = "";
-  for (i = 0; i < segments.length; i++) {
-    var segment = segments[i];
-    if (typeof segment === "string") {
-      newPath += "/" + segment;
-    } else {
-      if (i == (segments.length - 1)) {
-        if (returnParams) {
-          return {path : newPath, params: segment, payload: payload};
-        }
-        newPath += "?";
-      } else {
-        newPath += ";";
-      }
-      newPath += encodeParams(segment);
-    }
-  }
-  if (returnParams) {
-    return {path : newPath, params: null, payload: payload};
-  }
-  return newPath;
-}
-
-function getQueryParams() {
-  var query_params = {};
-  if (window.location.search) {
-    // split up the query string and store in an associative array
-    var params = window.location.search.slice(1).split("&");
-    for (var i = 0; i < params.length; i++) {
-      var tmp = params[i].split("=");
-      query_params[tmp[0]] = unescape(tmp[1]);
-    }
-  }
-
-  return query_params;
-}
-
-function prepareLocalStorage() {
-  if (!Storage.prototype.setObject) {
-    Storage.prototype.setObject = function(key, value) {
-      this.setItem(key, JSON.stringify(value));
-    };
-  }
-  if (!Storage.prototype.getObject) {
-    Storage.prototype.getObject = function(key) {
-      try {
-        return this.getItem(key) && JSON.parse(this.getItem(key));
-      } catch(err) {
-      }
-      return null;
-    };
-  }
-}
-
-// if all of our vars are in the query string, grab them and save them
-function parseParams() {
-  var query_params = {};
-  if (window.location.search) {
-    // split up the query string and store in an associative array
-    var params = window.location.search.slice(1).split("&");
-    for (var i = 0; i < params.length; i++) {
-      var tmp = params[i].split("=");
-      query_params[tmp[0]] = unescape(tmp[1]);
-    }
-  }
-
-  if (query_params.access_token && query_params.admin_email && query_params.uuid) {
-    Usergrid.userSession.setAccessToken(query_params.access_token);
-    Usergrid.userSession.setUserEmail(query_params.admin_email);
-    Usergrid.userSession.setUserUUID(query_params.uuid);
-    //then send the user to the parent
-    var new_target = window.location.host + window.location.pathname;
-
-    var separatorMark = '?';
-    if (query_params.api_url) {
-      new_target = new_target + separatorMark + 'api_url=' + query_params.api_url;
-      separatorMark = '&';
-    }
-
-    if (query_params.use_sso) {
-      new_target = new_target + separatorMark + 'use_sso=' + query_params.use_sso;
-      separatorMark = '&';
-    }
-
-    window.location = window.location.protocol + '//' + new_target;
-    throw "stop!";
-  }
-}
-
-function dateToString(numberDate){
-  var date = new Date(numberDate);
-  return date.toString('dd MMM yyyy - h:mm tt ');
-}
-
-/* move toggleablesections to console? */
-function toggleableSections() {
-  $(document).on('click', '.title', function() {
-    $(this).parent().parent().find('.hideable').toggle();
-  })
-}
-
-function selectFirstElement(object) {
-  var first = null;
-  for (first in object) {
-    break
-  }
-  return first
-}
-
-

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/app/navigation.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/app/navigation.js b/deleted/dist-cov/usergrid-portal/archive/js/app/navigation.js
deleted file mode 100644
index 8d2bcb1..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/app/navigation.js
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
-  * Usergrid.Navigation
-  *
-  * Functions to control the navigation of the Console client
-  *
-  * Uses:  Backbone.router
-  *
-  * Requires: Backbonejs, Underscore.js
-  *
-  */
-Usergrid.Navigation = Backbone.Router.extend({
-    routes: {
-      ":organization/:application/organization": "home",
-      ":organization/:application/dashboard": "dashboard",
-      ":organization/:application/users": "users",
-      ":organization/:application/groups": "groups",
-      ":organization/:application/roles": "roles",
-      ":organization/:application/activities": "activities",
-      ":organization/:application/collections": "collections",
-      ":organization/:application/notifications": "notifications",
-      ":organization/:application/sendNotification": "sendNotification",
-      ":organization/:application/messageHistory": "messageHistory",
-      ":organization/:application/notificationsReceipt": "notificationsReceipt",
-      ":organization/:application/configuration": "configuration",
-      ":organization/:application/getStarted": "getStarted",
-      ":organization/:application/analytics": "analytics",
-      ":organization/:application/properties": "properties",
-      ":organization/:application/shell": "shell",
-      ":organization/:application/account": "account",
-      ":organization/home": "home",
-      ":organization": "home",
-      "": "home"
-    },
-    //Router Methods
-    home: function(organization, application) {
-      $('body').scrollTop(0);
-      if(organization) {
-        this.checkOrganization(organization);
-      }
-      this.checkApplication(application);
-      Pages.SelectPanel('organization');
-      $('#left2').hide();
-    },
-    dashboard: function(organization,application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Usergrid.console.pageSelect(application);
-      Pages.SelectPanel('dashboard');
-      $('#left2').hide();
-    },
-    users: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Pages.SelectPanel('users');
-      this.showAppUserContent();
-    },
-    groups: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Pages.SelectPanel('groups');
-      this.showAppUserContent();
-    },
-    roles: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Pages.SelectPanel('roles');
-      this.showAppUserContent();
-    },
-    activities: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Pages.SelectPanel('activities');
-      $('#left2').hide();
-    },
-    collections: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Pages.ActivatePanel("collections");
-      Pages.SelectPanel('collections');
-      this.showAppDataContent();
-    },
-    notifications: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Usergrid.console.getNotifiers();
-    },
-    sendNotification: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Pages.ActivatePanel('notifications');
-      Pages.SelectPanel('notifications');
-      Usergrid.console.getNotifiers();
-    },
-    messageHistory: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Pages.ActivatePanel('messageHistory');
-      Pages.SelectPanel('messageHistory');
-      Usergrid.console.bindPagingEvents('notifications-history');
-      Usergrid.console.getNotifications();
-      this.showAppNotificationsContent();
-    },
-    notificationsReceipt: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      if (Usergrid.console.checkForSelectedNotification()) {
-        Pages.ActivatePanel('notificationsReceipt');
-        Pages.SelectPanel('notificationsReceipt');
-        Usergrid.console.bindPagingEvents('notification-receipt');
-      } else {
-        Pages.ActivatePanel('messageHistory');
-        Pages.SelectPanel('messageHistory');
-        Usergrid.console.bindPagingEvents('notifications-history');
-        Usergrid.console.getNotifications();
-      }
-      this.showAppNotificationsContent();
-    },
-    configuration: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Pages.ActivatePanel("configuration");
-      Pages.SelectPanel('configuration');
-      Usergrid.console.getCertList();
-      this.showAppNotificationsContent();
-    },
-    getStarted: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Pages.ActivatePanel("getStarted");
-      Pages.SelectPanel('getStarted');
-      this.showAppNotificationsContent();
-    },
-    analytics: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Pages.SelectPanel('analytics');
-      $('#left2').hide();
-    },
-    properties: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Pages.SelectPanel('properties');
-      $('#left2').hide();
-    },
-    shell: function(organization, application) {
-      $('body').scrollTop(0);
-      this.checkOrganization(organization);
-      this.checkApplication(application);
-      Pages.SelectPanel('shell');
-      $('#left2').hide();
-    },
-    account: function(organization, application) {
-      $('body').scrollTop(0);
-      Pages.SelectPanel('account');
-      $('#left2').hide();
-    },
-    //Utils
-    checkOrganization: function(org) {
-      if(!this.isActiveOrganization(org)) {
-        Usergrid.console.selectOrganization(org);
-      }
-    },
-    isActiveOrganization: function(org) {
-      if(org) {
-        if(Usergrid.ApiClient.getOrganizationName() === org ) {
-          return true
-        }
-      }
-      return false
-    },
-    checkApplication: function(app) {
-      if(app){
-        if(!this.isActiveApplication(app)) {
-          Usergrid.console.pageSelect(app);
-        }
-      }
-    },
-    isActiveApplication: function(app) {
-      if(app) {
-        if(Usergrid.ApiClient.getApplicationName() === app) {
-          return true
-        }
-      }
-      return false
-    },
-    getAppNameFromURL: function(){
-      name = '';
-      try  {
-        name = window.location.hash.split('/')[1];
-      } catch (e) {}
-      return name;
-    },
-    getOrgNameFromURL: function(){
-      name = '';
-      try  {
-        name = window.location.hash.split('/')[0];
-        name = name.replace("#","");
-      } catch (e) {}
-      return name;
-    },
-    showAppUserContent: function(){
-      $('#left2').show();
-      $('#sidebar-menu2').show();
-      $('#left-collections-menu').hide();
-      $('#left-notifications-menu').hide();
-    },
-    showAppDataContent: function(){
-      $('#left2').show();
-      $('#sidebar-menu2').hide();
-      $('#left-collections-menu').show();
-      $('#left-notifications-menu').hide();
-    },
-    showAppNotificationsContent: function(){
-      $('#left2').show();
-      $('#sidebar-menu2').hide();
-      $('#left-collections-menu').hide();
-      $('#left-notifications-menu').show();
-      $('#notifications-link').parent().addClass('active');
-    },
-
-    navigateTo: function(address) {
-      var url;
-      url = Usergrid.ApiClient.getOrganizationName();
-      url += "/" + Usergrid.ApiClient.getApplicationName();
-      url += "/" + address;
-      // Backbone navigate only triggers page loading if url changes
-      // loading manually if the url hasn't changed is necessary.
-      if(Backbone.history.fragment === url) {
-        Backbone.history.loadUrl(url);
-      } else {
-        this.navigate(url, {trigger: true});
-      }
-    }
-  });
-
-Usergrid.Navigation.router = new Usergrid.Navigation();
-_.bindAll(Usergrid.Navigation.router);

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/app/pages.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/app/pages.js b/deleted/dist-cov/usergrid-portal/archive/js/app/pages.js
deleted file mode 100644
index 9d8468b..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/app/pages.js
+++ /dev/null
@@ -1,161 +0,0 @@
-function ApigeePages() {
-  var self = {
-    pages: {},
-    panels: {},
-    resetPasswordUrl: ''
-    };
-
-  self.clearPage = function(){
-    $("#pages > div").hide();
-  };
-
-  self.ShowPage = function(pageName){
-    // console.log('showing ' + pageName);
-    $("#pages > div").hide();
-    var page = self.pages[pageName];
-    page.box.show();
-    $(".navbar li.active").removeClass('active');
-    $(".navbar .navbar-inner").hide();
-
-    if(page.link.parent().parent().hasClass("dropdown-menu")) {
-      page.link.parent().parent().parent().addClass('active');
-    } else {
-      page.menu.show();
-    }
-
-    if(page.showFunction) {
-      page.showFunction();
-    }
-
-    if(Usergrid.userSession.getBannerState() == 'true'){
-      this.showBanner();
-    }
-
-    if (pageName == 'login') {
-      Usergrid.console.clearBackgroundImage();
-    } else {
-      Usergrid.console.setColumnBackgroundImage();
-    }
-
-  };
-  self.showBanner = function(){
-    Usergrid.userSession.showBanner();
-    $('#banner').show();
-  };
-
-  self.hideBanner = function(){
-    Usergrid.userSession.hideBanner();
-    $("#banner").hide();
-  };
-
-  self.AddPage = function(page) {
-    if(!page.link)
-      page.link = $("#" + page.name + '-link');
-
-    if(!page.box)
-      page.box = $("#" + page.name + '-page');
-
-    page.link.click(function(e) {
-      e.preventDefault();
-      if(!page.link.hasClass("dropdown-toggle"))
-        self.ShowPage(page.name);
-    });
-
-    LoadPage(page);
-    self.pages[page.name] = page;
-  };
-
-  self.AddPanel = function(panelName, linkSelector, sublinkSelector,boxSelector,initFunction,showFunction, buttonHandler) {
-    if (!linkSelector) {
-      //linkSelector = "#sidebar-menu a[href='#" + panelName + "']";
-      linkSelector = "#" + panelName  + '-link';
-    }
-    if (!sublinkSelector) {
-      sublinkSelector = "#" + panelName  + '-sublink';
-    }
-
-    if (!boxSelector) {
-      boxSelector = "#" + panelName + '-panel';
-    }
-
-    var panel = {
-      name: panelName,
-      link: $(linkSelector),
-      sublink: $(sublinkSelector),
-      box: $(boxSelector),
-      initFunction: initFunction,
-      showFunction: showFunction
-    };
-
-    if(!buttonHandler) {
-      buttonHandler = function(e) {
-        e.preventDefault();
-        redrawBox(panel.box);
-        if(panel.name == "query") {
-          Usergrid.Navigation.router.navigateTo("collections");
-        } else {
-          Usergrid.Navigation.router.navigateTo(panel.name);
-        }
-      }
-    }
-    panel.link.click(buttonHandler);
-    panel.sublink.click(buttonHandler);
-
-    self.panels[panel.name] = panel;
-
-    if (panel.initFunction) {
-      panel.initFunction();
-    }
-  };
-
-  self.ActivatePanel = function(panelName){
-    var panel = self.panels[panelName];
-    $("#sidebar-menu li.active").removeClass('active');
-    $("#"+panelName+"-link").parent().addClass('active');
-
-    $("#left-notifications-menu li.active").removeClass('active');
-
-  }
-
-  self.SelectPanel = function (panelName){
-    var panel = self.panels[panelName];
-
-    $("#sidebar-menu li.active").removeClass('active');
-    $("#sidebar-menu2 li.active").removeClass('active');
-    panel.link.parent().addClass('active');
-    panel.sublink.parent().addClass('active');
-
-    Usergrid.console.setupMenu();
-    Usergrid.console.requestApplications();
-    if (panel.showFunction) {
-      panel.showFunction();
-    }
-
-    redrawBox(panel.box);
-
-  };
-
-  function LoadPage(page){
-
-    if (page.name=='forgot-password') {
-      $("#forgot-password-page iframe").attr("src", self.resetPasswordUrl);
-    } else if(page.name=='console-frame') {
-      $("#console-frame-page iframe").attr("src", "consoleFrame.html");
-    } else {
-      if (window.location.pathname.indexOf('app') > 0) {
-        $.ajaxSetup ({cache: false});
-        page.box.load(page.name + '.html',page.initFunction);
-        $.ajaxSetup ({cache: true});
-      } else if(page.initFunction) {
-        page.initFunction();
-      }
-    }
-  }
-
-  function redrawBox(box) {
-    $("#console-panels > div").hide();
-    box.show();
-
-  }
-  return self;
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/app/params.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/app/params.js b/deleted/dist-cov/usergrid-portal/archive/js/app/params.js
deleted file mode 100644
index 16feeba..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/app/params.js
+++ /dev/null
@@ -1,30 +0,0 @@
-
-(function (){
-  Usergrid.Params = function(){};
-
-  Usergrid.Params.prototype = {
-    queryParams : {},
-    parseParams : function(){
-      if (window.location.search) {
-        // split up the query string and store in an associative array
-        var params = window.location.search.slice(1).split("&");
-        for (var i = 0; i < params.length; i++) {
-          var tmp = params[i].split("=");
-          this.queryParams[tmp[0]] = unescape(tmp[1]);
-        }
-      }
-    },
-    getParsedParams : function(queryString){
-      var retParams = {};
-      var params = queryString.slice(0).split("&");
-      for (var i = 0; i < params.length; i++) {
-        var tmp = params[i].split("=");
-        retParams[tmp[0]] = unescape(tmp[1]);
-      }
-      return retParams;
-    }
-  };
-
-})(Usergrid);
-
-Usergrid.Params = new Usergrid.Params();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/app/quickLogin.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/app/quickLogin.js b/deleted/dist-cov/usergrid-portal/archive/js/app/quickLogin.js
deleted file mode 100644
index 6b239a1..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/app/quickLogin.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-  This file enables the page to quickly redirect the user to the SSO login page.
-  Requires:
-  Usergrid.Params - params.js
-  Usergrid.userSession -session.js
-
-  Its prefered that Usergrid.Params loads parameters before QuickLogin.init() is called.
- */
-
-(function(){
-  Usergrid.QuickLogin = function(){};
-
-  Usergrid.QuickLogin.prototype = {
-    init : function(queryParams, sessionExists, useSSO){
-      if(this.credentialsInParams(queryParams)){
-        Usergrid.userSession.setUserUUID(queryParams.uuid);
-        Usergrid.userSession.setUserEmail(queryParams.admin_email);
-        Usergrid.userSession.setAccessToken(queryParams.access_token);
-      }
-      else if (!sessionExists && useSSO){
-        Usergrid.SSO.sendToSSOLoginPage();
-      }
-    },
-    credentialsInParams : function(params){
-      return(params.access_token && params.admin_email && params.uuid);
-    }
-  };
-})(Usergrid);
-
-Usergrid.QuickLogin = new Usergrid.QuickLogin();

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/app/session.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/app/session.js b/deleted/dist-cov/usergrid-portal/archive/js/app/session.js
deleted file mode 100644
index 0907da1..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/app/session.js
+++ /dev/null
@@ -1,176 +0,0 @@
-
-window.Usergrid = window.Usergrid || {};
-Usergrid = Usergrid || {};
-(function() {
-  /**
-   *  Application is a class for holding application info
-   *
-   *  @class Application
-   *  @param {string} name the name of the application
-   *  @param {string} uuid the uuid of the application
-   */
-  Usergrid.Application = function(name, uuid) {
-    this._name = name;
-    this._uuid = uuid;
-  };
-  Usergrid.Application.prototype = {
-    getName: function() {
-      return this._name;
-    },
-    setName: function(name) {
-      this._name = name;
-    },
-    getUUID: function() {
-      return this._uuid;
-    },
-    setUUID: function(uuid) {
-      this._uuid = uuid;
-    },
-    setCurrentApplication: function(app) {
-      this.setName(app.getName());
-      this.setUUID(app.getUUID());
-    }
-  };
-
-
-  /**
-   *  Organization is a class for holding application info
-   *
-   *  @class Organization
-   *  @param {string} name organization's name
-   *  @param {string} organization's uuid
-   *  @param {string} list organization's applications
-   */
-  Usergrid.Organization = function(name, uuid) {
-    this._name = name;
-    this._uuid = uuid;
-    this._list = [];
-  };
-
-  Usergrid.Organization.prototype = {
-    getName: function() {
-      return this._name;
-    },
-    setName: function(name) {
-      this._name = name;
-    },
-    getUUID: function() {
-      return this._uuid;
-    },
-    setUUID: function(uuid) {
-      this._uuid = uuid;
-    },
-    setCurrentOrganization: function(org) {
-      this._name = org.getName();
-      this._uuid = org.getUUID();
-      this._list = org.getList();
-    },
-    addItem: function(item) {
-      var count = this._list.length;
-      this._list[count] = item;
-    },
-    getItemByName: function(name) {
-      var count = this._list.length;
-      var i=0;
-      if(name){
-          for (i=0; i<count; i++) {
-            if (this._list[i].getName().toLowerCase() == name.toLowerCase()) {
-              return this._list[i];
-            }
-          }
-      }
-      return null;
-    },
-    getItemByUUID: function(UUID) {
-      var count = this._list.length;
-      var i=0;
-      for (i=0; i<count; i++) {
-        if (this._list[i].getUUID() == UUID) {
-          return this._list[i];
-        }
-      }
-      return null;
-    },
-    getFirstItem: function() {
-      var count = this._list.length;
-      if (count > 0) {
-        return this._list[0];
-      }
-      return null;
-    },
-    getList: function() {
-      return this._list;
-    },
-    setList: function(list) {
-      this._list = list;
-    },
-    clearList: function() {
-      this._list = [];
-    }
-  };
-
-  /**
-    *  Standardized methods for maintaining user and authentication state in the Application
-    *  @class UserSession
-    */
-  Usergrid.userSession = function(){};
-
-  Usergrid.userSession.prototype = {
-    //access token access and setter methods
-    getAccessToken: function() {
-      var accessToken = localStorage.getItem('accessToken');
-      return accessToken;
-    },
-    setAccessToken: function setAccessToken(accessToken) {
-      localStorage.setItem('accessToken', accessToken);
-      localStorage.setItem('apigee_token', accessToken);
-    },
-    //logged in user access and setter methods
-    getUserUUID: function () {
-      return localStorage.getItem('userUUID');
-    },
-    setUserUUID: function (uuid) {
-      localStorage.setItem('userUUID', uuid);
-    },
-    getUserEmail: function () {
-      return localStorage.getItem('userEmail');
-    },
-    setUserEmail: function (email) {
-      localStorage.setItem('userEmail', email);
-      localStorage.setItem('apigee_email', email);
-    },
-    hideBanner: function(){
-      localStorage.setItem('showBanner', 'false');
-    },
-    showBanner: function(){
-      localStorage.setItem('showBanner', 'true');
-    },
-    getBannerState: function(){
-      return localStorage.getItem('showBanner');
-    },
-    //convenience method to verify if user is logged in
-    loggedIn: function () {
-      var token = this.getAccessToken();
-      var email = this.getUserEmail();
-      return (token && email);
-    },
-
-    //convenience method for saving all active user vars at once
-    saveAll: function (uuid, email, accessToken) {
-      this.setUserUUID(uuid);
-      this.setUserEmail(email);
-      this.setAccessToken(accessToken);
-    },
-
-    //convenience method for clearing all active user vars at once
-    clearAll: function () {
-      localStorage.removeItem('userUUID');
-      localStorage.removeItem('userEmail');
-      localStorage.removeItem('accessToken');
-      localStorage.removeItem('apigee_oken');
-      localStorage.removeItem('apigee_email');
-    }
-  };
-})(Usergrid);
-
-Usergrid.userSession = new Usergrid.userSession();

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/app/sso.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/app/sso.js b/deleted/dist-cov/usergrid-portal/archive/js/app/sso.js
deleted file mode 100644
index ca46e08..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/app/sso.js
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Usergrid.SSO
- * SSO functions apigee specific
- *
- * Requires:
- * Usergrid.ApiClient
- */
-(function () {
-  Usergrid.SSO = function () {
-  };
-
-  Usergrid.SSO.prototype = {
-
-    default : {
-    top_level_domain: "apigee.com",
-    test_top_level_domain: "appservices.apigee.com",
-    local_domain: "localhost",
-    use_sso: true, // flag to override use SSO if needed set to ?use_sso=no
-    login_url: "https://accounts.apigee.com/accounts/sign_in",
-    profile_url: "https://accounts.apigee.com/accounts/my_account",
-    logout_url: "https://accounts.apigee.com/accounts/sign_out",
-    api_url: "https://api.usergrid.com/"
-    },
-
-    isTopLevelDomain:function () {
-      if ( window.location.hostname === this.default.top_level_domain ||
-           window.location.hostname === this.default.test_top_level_domain ||
-           window.location.hostname === this.default.local_domain ||
-           location.pathname.indexOf('/dit') >= 0 ||
-           location.pathname.indexOf('/mars') >= 0
-         )
-      {
-        return true;
-      }else{
-        return false;
-      }
-
-    },
-
-    usingSSO:function () {
-      return this.getSSO() && this.isTopLevelDomain();
-    },
-
-    getSSO:function (){
-      return this.default.use_sso;
-    },
-
-    getSSOCallback:function (urlCallback) {
-
-       var url = this.buildBaseUrl();
-
-      if(urlCallback) {
-        url += "#" + urlCallback;
-      }
-
-
-      if (Usergrid.ApiClient.getApiUrl() !== undefined && (Usergrid.ApiClient.getApiUrl() !== this.default.api_url)) {
-        var separatorMark = '&';
-        url += separatorMark + 'api_url=' + Usergrid.ApiClient.getApiUrl();
-      }
-      console.log(url);
-      //url = encodeURIComponent(url);
-      return'?callback=' + url;
-    },
-
-    buildBaseUrl:function () {
-      var baseUrl = window.location.protocol + '//' + window.location.host + window.location.pathname;
-      return baseUrl;
-    },
-
-    sendToSSOLogoutPage:function (callbackUrl) {
-      var url = this.default.logout_url;
-      if(window.location.host === 'localhost'){
-        //DIT
-        url = 'https://accounts.jupiter.apigee.net/accounts/sign_out';
-      }if(window.location.host === 'appservices.apigee.com' && location.pathname.indexOf('/dit') >= 0){
-        //DIT
-        url = 'https://accounts.jupiter.apigee.net/accounts/sign_out';
-      }else if(window.location.host === 'appservices.apigee.com' && location.pathname.indexOf('/mars') >= 0 ){
-        //staging
-        url = 'https://accounts.mars.apigee.net/accounts/sign_out';
-      }else{
-        url = this.default.logout_url;
-      }
-      url = url + this.getSSOCallback();
-      window.location = url;
-    },
-
-    sendToSSOLoginPage:function () {
-      var url = this.default.login_url;
-      if(window.location.host === 'localhost'){
-        //DIT
-        url = 'https://accounts.jupiter.apigee.net/accounts/sign_in';
-      }else if(window.location.host === 'appservices.apigee.com' && location.pathname.indexOf('/dit') >= 0){
-        //DIT
-        url = 'https://accounts.jupiter.apigee.net/accounts/sign_in';
-      }else if(window.location.host === 'appservices.apigee.com' && location.pathname.indexOf('/mars') >= 0 ){
-        //staging
-        url = 'https://accounts.mars.apigee.net/accounts/sign_in';
-      }else{
-        url = this.default.login_url;
-      }
-      url = url + this.getSSOCallback();
-      window.location = url;
-    },
-
-    sendToSSOProfilePage:function (callbackUrl) {
-      var url = this.default.profile_url;
-      if(window.location.host === 'localhost'){
-        //DIT
-        url = 'https://accounts.jupiter.apigee.net/accounts/my_account';
-      } else if(window.location.host === 'appservices.apigee.com' && location.pathname.indexOf('/dit') >= 0){
-        //DIT
-        url = 'https://accounts.jupiter.apigee.net/accounts/my_account';
-      } else if(window.location.host === 'appservices.apigee.com' && location.pathname.indexOf('/mars') >= 0 ){
-        //staging
-        url = 'https://accounts.mars.apigee.net/accounts/my_account';
-      }else{
-        url = this.default.profile_url;
-      }
-      url = url + this.getSSOCallback();
-      window.location = url;
-    },
-
-    setUseSSO:function (sso) {
-      if (sso == 'yes' || sso == 'true') {
-        this.default.use_sso = true;
-      } else if (sso == 'no' || sso == 'false') {
-        this.default.use_sso = false;
-      }
-    }
-  };
-})(Usergrid);
-
-Usergrid.SSO = new Usergrid.SSO();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/app/status.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/app/status.js b/deleted/dist-cov/usergrid-portal/archive/js/app/status.js
deleted file mode 100644
index 20a18a1..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/app/status.js
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * User: David S
- * Date: 17/02/12
- * Time: 12:43 PM
- */
-var StatusBar = function () {
-  var self = {
-    box: null
-  };
-
-  self.Init = function(boxSelector){
-    self.box = $(boxSelector);
-  };
-
-  self.showAlert = function (msg, type) {
-    if (!type) {
-      type = 'info';
-    }
-
-    var closebutton = '<a onclick="closeErrorMessage();" class="close">&times;</a>'
-    var item = $('<div class="alert span3 alert-' + type + ' ">' + msg + closebutton + '</div>');
-    self.box.find(".alert").remove();
-    self.box.show().prepend(item);
-    item.show();
-
-  };
-
-  self.hideAlert = function () {
-    self.box.hide();
-  };
-
-  closeErrorMessage = function() {
-    self.box.hide();
-  };
-
-  return self;
-}();

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/app/ui/collections.entity.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/app/ui/collections.entity.js b/deleted/dist-cov/usergrid-portal/archive/js/app/ui/collections.entity.js
deleted file mode 100644
index 83bc8e0..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/app/ui/collections.entity.js
+++ /dev/null
@@ -1,320 +0,0 @@
-window.Usergrid = window.Usergrid || {};
-Usergrid.console = Usergrid.console || {};
-Usergrid.console.ui = Usergrid.console.ui || { };
-Usergrid.console.ui.collections = Usergrid.console.ui.collections || { };
-
-(function() {
-  // This code block *WILL* load before the document is complete
-
-  var entity_list_item = {
-    options: {
-    },
-
-    _create: function() {
-
-      var self = this;
-      var o = self.options;
-      var el = self.element;
-
-      var entity_id = el.dataset('entity-id');
-      var entity_type = el.dataset('entity-type');
-      var entity = Usergrid.console.getQueryResultEntity(entity_id);
-      if (!entity) return;
-      o.entity = entity;
-      o.path = el.dataset('collection-path');
-
-      o.header = self.getHeader();
-      o.collections = self.getCollections();
-      o.contents = self.getContents();
-      o.metadata = self.getMetadata();
-      o.json = self.getJson();
-
-      o.header.appendTo(el);
-      o.collections.appendTo(el);
-      o.contents.appendTo(el);
-      o.metadata.appendTo(el);
-      o.json.appendTo(el);
-
-      o.header.find(".button").button();
-
-      var contents_button = o.header.find(".query-result-header-toggle-contents");
-      contents_button.click(function() {
-        if (o.contents.css('display') == 'none') {
-          o.contents.show();
-          o.json.hide();
-          o.collections.hide();
-        } else {
-          o.contents.hide();
-        }
-        return false;
-      });
-
-      var json_button = o.header.find(".query-result-header-toggle-json");
-      json_button.click(function() {
-        if (o.json.css('display') == 'none') {
-          o.json.show();
-          o.contents.hide();
-          o.collections.hide();
-        } else {
-          o.json.hide();
-        }
-        return false;
-      });
-
-      var collections_button = o.header.find(".query-result-header-toggle-collections");
-      collections_button.click(function() {
-        if (o.collections.css('display') == 'none') {
-          o.collections.show();
-          o.contents.hide();
-          o.json.hide();
-        } else {
-          o.collections.hide();
-        }
-        return false;
-      });
-
-      var metadata_button = o.header.find(".query-result-header-toggle-metadata");
-      metadata_button.click(function() {
-        o.metadata.toggle();
-        return false;
-      });
-
-      var link_button = o.header.find(".query-result-header-link");
-    },
-
-    getHeader : function() {
-      var entity = this.options.entity,
-         name = entity.uuid + " : " + entity.type;
-
-      if (entity.name) {
-        name = name + " : " + entity.name;
-      } else if (entity.username) {
-        name = name + " : " + entity.username;
-      } else if (entity.title) {
-        name = name + " : " + entity.title;
-      }
-
-      var collections = {
-        entity : entity,
-        name : name,
-        path : this.options.path,
-        collections : !$.isEmptyObject((entity.metadata || { }).collections || (entity.metadata || { }).connections),
-        uri : (entity.metadata || { }).uri
-      }
-
-      if(entity.type === 'user' || entity.picture){
-        if (!entity.picture) {
-          entity.picture = "/images/user-photo.png"
-        } else {
-          entity.picture = entity.picture + "?d=http://" + window.location.host + window.location.pathname + "images/user-photo.png"
-        }
-        collections['picture'] = entity.picture;
-      }
-
-      return $.tmpl("apigee.ui.collections.entity.header.html",
-        collections);
-
-    },
-
-    getCollections : function() {
-      var entity = this.options.entity;
-
-      var collections = $.extend({ }, (entity.metadata || { }).collections, (entity.metadata || { }).connections);
-
-      if (!$.isEmptyObject(collections)) {
-        return $.tmpl("apigee.ui.collections.entity.collections.html", {
-          collections : collections
-        }, {
-          makeObjectTable : Usergrid.console.ui.makeObjectTable,
-          tableOpts : Usergrid.console.ui.standardTableOpts
-        });
-      }
-      return $("");
-    },
-
-    getContents : function() {
-      var entity_contents = $.extend( false, { }, this.options.entity);
-      try { // metadata may or may not be present
-        var path = entity_contents['metadata']['path'];
-        entity_contents = $.extend( false, entity_contents, {'path': path});
-        var sets = entity_contents['metadata']['sets'];
-        entity_contents = $.extend( false, entity_contents, {'sets': sets});
-        var collections = entity_contents['metadata']['collections'];
-        entity_contents = $.extend( false, entity_contents, {'collections': collections});
-        delete entity_contents['metadata'];
-      } catch(e) {}
-      return $.tmpl("apigee.ui.collections.entity.contents.html", {
-        entity : entity_contents
-      }, {
-        makeObjectTable : Usergrid.console.ui.makeObjectTable,
-        tableOpts : Usergrid.console.ui.standardTableOpts
-      });
-    },
-
-    getMetadata : function() {
-      var entity = this.options.entity;
-      if (!$.isEmptyObject(entity.metadata)) {
-        return $.tmpl("apigee.ui.collections.entity.metadata.html", {
-          metadata : entity.metadata
-        }, {
-          makeObjectTable : Usergrid.console.ui.makeObjectTable,
-          tableOpts : Usergrid.console.ui.metadataTableOpts
-        });
-      }
-      return $("");
-    },
-
-    getJson : function() {
-      return $.tmpl("apigee.ui.collections.entity.json.html", {
-        entity : this.options.entity
-      }, {
-        makeObjectTable : Usergrid.console.ui.makeObjectTable,
-        tableOpts : Usergrid.console.ui.standardTableOpts
-      });
-    },
-
-    destroy: function() {
-      this.element.html("");
-      this.options.entity = null;
-      this.options.header = null;
-      this.options.contents = null;
-      this.options.metadata = null;
-      this.options.collections = null;
-      this.options.json = null;
-    }
-
-  }
-  Usergrid.console.ui.collections.entity_list_item = entity_list_item;
-
-  var entity_detail = {
-    options: {
-    },
-
-    _create: function() {
-
-      var self = this;
-      var o = self.options;
-      var el = self.element;
-
-      var entity_id = el.dataset('entity-id');
-      var entity_type = el.dataset('entity-type');
-      var entity = Usergrid.console.getQueryResultEntity(entity_id);
-      if (!entity) return;
-      o.entity = entity;
-      o.path = el.dataset('collection-path');
-
-      o.details = self.getDetails();
-
-      o.details.appendTo(el);
-
-      o.collections = el.find(".query-result-collections");
-      o.details.find(".button").button();
-      o.contents = el.find(".query-result-contents");
-      o.json = el.find(".query-result-json");
-      o.formDiv = el.find(".query-result-form");
-
-      var content_button = o.details.find(".query-result-header-toggle-contents");
-      content_button.click(function() {
-        if (o.contents.css('display') == 'none') {
-          o.contents.show();
-          o.json.hide();
-          o.collections.hide();
-        } else {
-          o.contents.hide();
-        }
-        return false;
-      });
-
-      var collections_button = o.details.find(".query-result-header-toggle-collections");
-      collections_button.click(function() {
-        if (o.collections.css('display') == 'none') {
-          o.collections.show();
-          o.contents.hide();
-          o.json.hide();
-        } else {
-          o.collections.hide();
-        }
-        return false;
-      });
-
-      var json_button = o.details.find(".query-result-header-toggle-json");
-      json_button.click(function() {
-        if (o.json.css('display') == 'none') {
-          o.json.show();
-          o.contents.hide();
-          o.collections.hide();
-        } else {
-          o.json.hide();
-        }
-        return false;
-      });
-
-      var link_button = o.details.find(".query-result-header-link");
-    },
-
-    getDetails : function() {
-      var entity = this.options.entity,
-        name = entity.uuid + " : " + entity.type,
-        collections,
-        connections;
-
-      if (entity.name) {
-        name = name + " : " + entity.name;
-      } else if (entity.username) {
-        name = name + " : " + entity.username;
-      } else if (entity.title) {
-        name = name + " : " + entity.title;
-      }
-
-      if(entity.metadata.collections){
-        collections = entity.metadata.collections;
-      }
-
-      if(entity.metadata.connections){
-        connections = entity.metadata.connections;
-      }
-
-      var entity_contents = $.extend( false, { }, this.options.entity);
-      var path = entity_contents['metadata']['path'];
-      entity_contents = $.extend( false, entity_contents, {'path': path});
-      delete entity_contents['metadata'];
-
-      var metadata = entity.metadata;
-      if ($.isEmptyObject(metadata)) metadata = null;
-
-      return $.tmpl("apigee.ui.collections.entity.detail.html", {
-        entity : entity_contents,
-        name : name,
-        path : this.options.path,
-        collections : collections,
-        connections : connections,
-        metadata : metadata,
-        uri : (entity.metadata || { }).uri
-      }, {
-        makeObjectTable : Usergrid.console.ui.makeObjectTable,
-        tableOpts : Usergrid.console.ui.standardTableOpts,
-        metadataTableOpts : Usergrid.console.ui.metadataTableOpts
-      });
-
-    },
-
-    destroy: function() {
-      this.element.html("");
-      this.options.entity = null;
-      this.options.details.header = null;
-      this.options.json = null;
-      this.options.formDiv = null;
-    }
-
-  };
-  Usergrid.console.ui.collections.entity_detail = entity_detail;
-
-  (function($) {
-    // This code block *WILL NOT* load before the document is complete
-
-    $.widget("ui.apigee_collections_entity_list_item", entity_list_item);
-    $.widget("ui.apigee_collections_entity_detail", entity_detail);
-
-  })(jQuery);
-
-})();

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/app/ui/collections.user.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/app/ui/collections.user.js b/deleted/dist-cov/usergrid-portal/archive/js/app/ui/collections.user.js
deleted file mode 100644
index 5b2c561..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/app/ui/collections.user.js
+++ /dev/null
@@ -1,120 +0,0 @@
-window.Usergrid = window.Usergrid || {};
-Usergrid.console = Usergrid.console || {};
-Usergrid.console.ui = Usergrid.console.ui || { };
-Usergrid.console.ui.collections = Usergrid.console.ui.collections || { };
-
-(function($) {
-  //This code block *WILL NOT* load before the document is complete
-
-  // Simplified vcard in JSON Schema for demonstration purposes
-  // Every collection will have a JSON Schema available and downloadable from the server
-  // Empty collections will have a minimal schema that only contains the basic required entity properties
-  // Developers will be able to upload schemas to collections as well
-  var vcard_schema = {
-    "description":"A representation of a person, company, organization, or place",
-    "type":"object",
-    "properties":{
-      "username":{
-        "type":"string",
-        "optional": true,
-        "title" : "Username"
-      },
-      "name":{
-        "description":"Formatted Name",
-        "type":"string",
-        "optional":true,
-        "title" : "Full Name"
-      },
-      "title":{
-        "description":"User Title",
-        "type":"string",
-        "optional": true,
-        "title":"Title"
-      },
-      "url":{
-        "type":"string",
-        "format":"url",
-        "optional":true,
-        "title" : "Home Page"
-      },
-      "email":{
-        "type":"string",
-        "format":"email",
-        "optional":true,
-        "title" : "Email"
-      },
-      "tel":{
-        "type":"string",
-        "format":"phone",
-        "optional":true,
-        "title" : "Telephone"
-      },
-      "picture":{
-        "type":"string",
-        "format":"image",
-        "optional":true,
-        "title" : "Picture URL"
-      },
-      "bday":{
-        "type":"string",
-        "format":"date",
-        "optional":true,
-        "title" : "Birthday"
-      },
-      "adr":{
-        "type":"object",
-        "properties":{
-          "id":{
-            "type":"integer"
-          },
-          "addr1":{
-            "type":"string",
-            "title" : "Street 1"
-          },
-          "addr2":{
-            "type":"string",
-            "title" : "Street 2"
-          },
-          "city":{
-            "type":"string",
-            "title" : "City"
-          },
-          "state":{
-            "type":"string",
-            "title" : "State"
-          },
-          "zip":{
-            "type":"string",
-            "title" : "Zip"
-          },
-          "country":{
-            "type":"string",
-            "title" : "Country"
-          }
-        },
-        "optional":true,
-        "title" : "Address"
-      }
-    }
-  };
-  Usergrid.console.ui.collections.vcard_schema = vcard_schema;
-
-  var group_schema = {
-    "description":"A representation of a group",
-    "type":"object",
-    "properties":{
-      "path":{
-        "type":"string",
-        "optional": true,
-        "title" : "Group Path"
-      },
-      "title":{
-        "type":"string",
-        "optional":true,
-        "title" : "Display Name"
-      }
-    }
-  };
-  Usergrid.console.ui.collections.group_schema = group_schema;
-
-})(jQuery);

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/app/ui/ui.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/app/ui/ui.js b/deleted/dist-cov/usergrid-portal/archive/js/app/ui/ui.js
deleted file mode 100644
index 089bb92..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/app/ui/ui.js
+++ /dev/null
@@ -1,415 +0,0 @@
-window.Usergrid = window.Usergrid || {};
-Usergrid.console = Usergrid.console || {};
-Usergrid.console.ui = Usergrid.console.ui || { };
-
-(function() {
-  //This code block *WILL* load before the document is complete
-
-  function loadTemplate(name) {
-    $.ajax({
-      type: "GET",
-      url: "templates/" + name,
-      complete: function(jqXHR, textStatus){
-        var html = jqXHR.responseText;
-        if (html) {
-          $.template(name, html);
-        }
-      }
-    });
-  }
-  Usergrid.console.ui.loadTemplate = loadTemplate;
-
-  var standardTableOpts = {
-    "base_css" : "query-result-table",
-    "links" : {
-      "metadata.collections*" : "<a href=\"#\" onclick=\"Usergrid.console.pageOpenQueryExplorer('${value}'); return false;\">${value}</a>",
-      "metadata.connections*" : "<a href=\"#\" onclick=\"Usergrid.console.pageOpenQueryExplorer('${value}'); return false;\">${value}</a>",
-      "all_collections*" : "<a href=\"#\" onclick=\"Usergrid.console.pageOpenQueryExplorer('${value}'); return false;\">${value}</a>",
-      "metadata.path" : "<a href=\"#\" onclick=\"Usergrid.console.pageOpenQueryExplorer('${value}'); return false;\">${value}</a>",
-      "*uri" : "<a href=\"${value}\">${value}</a>",
-      "*link" : "<a href=\"${value}\">${value}</a>"
-    }
-  };
-  Usergrid.console.ui.standardTableOpts = standardTableOpts;
-
-  var metadataTableOpts = {
-    "base_css" : "query-result-table",
-    "links" : {
-      "collections*" : "<a href=\"#\" onclick=\"Usergrid.console.pageOpenQueryExplorer('${value}'); return false;\">${value}</a>",
-      "connections*" : "<a href=\"#\" onclick=\"Usergrid.console.pageOpenQueryExplorer('${value}'); return false;\">${value}</a>",
-      "path" : "<a href=\"#\" onclick=\"Usergrid.console.pageOpenQueryExplorer('${value}'); return false;\">${value}</a>",
-      "uri" : "<a href=\"${value}\">${value}</a>"
-    }
-  };
-  Usergrid.console.ui.metadataTableOpts = metadataTableOpts;
-
-  var re1 = /[^a-zA-Z0-9-]/g;
-  var re2 = /--*/g;
-  var re3 = /\${value}/g;
-  function makeObjectTable(obj, opts, parent_k) {
-    var base_css = opts.base_css;
-    var doArray = ($.type(obj) == "array");
-
-    var t = "<table class=\"" + base_css + " " + base_css + "-obj\">";
-    if (doArray) {
-      t = "<table class=\"" + base_css + " " + base_css + "-list\">";
-    }
-
-    for (var k in obj) {
-      var v = obj[k];
-      var full_k = parent_k ? parent_k + "." + k : k;
-
-      var cs = k.replace(re1, "-").replace(re2, "-");
-
-      var vType = $.type(v);
-      if ((vType  == "object") || (vType  == "array")) {
-        v = makeObjectTable(v, opts, full_k);
-      }
-
-      if (vType  == "object") {
-        t += "<tr class=\"" + base_css + "-row-obj\">";
-      }
-      else if (vType  == "array") {
-        t += "<tr class=\"" + base_css + "-row-array\">";
-      }
-      else {
-        t += "<tr class=\"" + base_css + "-row-line\">";
-
-        var links = opts.links;
-        var link_href = links[full_k];
-        if (!link_href) {
-          link_href = links[parent_k + "*"];
-        }
-        if (!link_href) {
-          link_href = links["*" + k];
-        }
-        if (link_href) {
-          v = link_href.replace(re3, v);
-        }
-        v = "<div>" + v + "</div>";
-      }
-
-      if (doArray) {
-        t += "<td class=\"" + base_css + "-item\"><div>" + v + "</div></td>";
-      }
-      else {
-        t += "<td class=\"" + base_css + "-name\"><div data-path=\"" + full_k + "\">" + k + "</div></td>";
-        t += "<td class=\"" + base_css + "-value " + base_css + "-name-" + cs + "\">" + v + "</td>";
-      }
-
-      t += "</tr>";
-    }
-
-    t += "</table>";
-    return t;
-  }
-  Usergrid.console.ui.makeObjectTable = makeObjectTable;
-
-  function makeTableFromList(list, width, options) {
-    var getListItem = null;
-    var getListItemTemplateOptions = null;
-    var listItemTemplate = null;
-
-    var onRender = null;
-    var output = null;
-
-    var tableId = null;
-
-    var tableClass = null;
-    var rowClass = null;
-    var cellClass = null;
-
-    var tableStyle = null;
-    var rowStyle = null;
-    var cellStyle = null;
-
-    if (options) {
-      getListItem = options.getListItem;
-      getListItemTemplateOptions = options.getListItemTemplateOptions;
-      listItemTemplate = options.listItemTemplate;
-
-      onRender = options.onRender;
-      output = options.output;
-
-      tableId = options.tableId;
-
-      tableClass = options.tableClass;
-      rowClass = options.rowClass;
-      cellClass = options.cellClass;
-
-      tableStyle = options.tableStyle;
-      rowStyle = options.rowStyle;
-      cellStyle = options.cellStyle;
-    }
-
-    tableId = tableId ? " id=\"" + tableId + "\" " : "";
-
-    tableClass = tableClass ? " class=\"" + tableClass + "\" " : "";
-    rowClass = rowClass ? " class=\"" + rowClass + "\" " : "";
-    cellClass = cellClass ? " class=\"" + cellClass + "\" " : "";
-
-    tableStyle = tableStyle ? " style=\"" + tableStyle + "\" " : "";
-    rowStyle = rowStyle ? " style=\"" + rowStyle + "\" " : "";
-    cellStyle = cellStyle ? " style=\"" + cellStyle + "\" " : "";
-
-    var t = "<table" + tableId + tableClass + tableStyle + ">\n";
-    var i = 0;
-    if (!width || (width < 1)) width = 1;
-    var count = (Math.floor((list.length - 1) / width) + 1) * width;
-    while (i < count) {
-      if ((i % width) == 0) {
-        t += "<tr" + rowClass + rowStyle + ">\n";
-      }
-      t += "<td" + cellClass + cellStyle + ">";
-      if (i < list.length) {
-        if (getListItem) {
-          t += getListItem(i, i % count, Math.floor(i / count));
-        }
-        else {
-          t += list[i];
-        }
-      }
-      t += "</td>\n";
-      if (((i + 1) % width) == 0) {
-        t += "</tr>\n";
-      }
-      i++;
-    }
-    t += "</table>\n";
-    return t;
-  }
-  Usergrid.console.ui.makeTableFromList = makeTableFromList;
-
-  function jsonSchemaToDForm(schema, obj) {
-    var dform = { elements : [] };
-
-    for (var propName in schema.properties) {
-      var property = schema.properties[propName];
-      var type = property.type;
-      if (type == "string") {
-        var value = '';
-        try {
-          var value = obj[propName];
-        } catch (e) {}
-        if (!value) value = "";
-        var element = {
-          "name" : "ui-form-" + propName,
-          "id" : "ui-form-" + propName,
-          "caption" : property.title,
-          "type" : "text",
-          "value" : value
-        };
-        dform.elements.push(element);
-        dform.elements.push({
-          "type" : "br"
-        });
-      } else if (type == "object") {
-        var element = jsonSchemaToDForm(property, obj[propName]);
-        element.type = "fieldset";
-        element.caption = property.title;
-        dform.elements.push(element);
-      }
-    }
-    return dform;
-  }
-  Usergrid.console.ui.jsonSchemaToDForm = jsonSchemaToDForm;
-
-  function jsonSchemaToPayload(schema){
-    var payloadData = new Object();
-    var payload = '';
-    for (var propName in schema.properties) {
-      var property = schema.properties[propName];
-      var type = property.type;
-      if (type == "string") {
-        var value = $('#ui-form-'+propName).val();
-        if (!value) value = "";
-        payloadData[propName] = value;
-
-      } else if (type == "object") {
-        payloadData[propName] = {};
-        for (var propName2 in schema.properties[propName].properties) {
-          var property2 = schema.properties[propName].properties[propName2];
-          var type2 = property2.type;
-          if (type2 == "string") {
-            var value2 = $('#ui-form-'+propName2).val();
-            if (!value) value = "";
-            payloadData[propName][propName2] = value2;
-
-          }
-        }
-      }
-    }
-    return payloadData;
-  }
-  Usergrid.console.ui.jsonSchemaToPayload = jsonSchemaToPayload;
-
-  function displayEntityListResponse(query_results, options, response) {
-
-    query_results = query_results || {};
-
-    var getListItem = null;
-    var getListItemTemplateOptions = null;
-    var listItemTemplate = null;
-
-    var output = null;
-    var prevButton = null;
-    var nextButton = null;
-    var nextPrevDiv = null;
-
-    var noEntitiesMsg = "";
-
-    var onRender = null;
-    var onNoEntities = null;
-    var onError = null;
-    var onRawJson = null;
-
-    if (options) {
-      getListItem = options.getListItem;
-      getListItemTemplateOptions = options.getListItemTemplateOptions;
-      listItemTemplate = options.listItemTemplate;
-
-      output = options.output;
-
-      prevButton = options.prevButton;
-      nextButton = options.nextButton;
-      nextPrevDiv = options.nextPrevDiv;
-
-      noEntitiesMsg = options.noEntitiesMsg;
-
-      onRender = options.onRender;
-      onNoEntities = options.onNoEntities;
-      onError = options.onError;
-      onRawJson = options.onRawJson;
-    }
-
-    query_results.entities = null;
-    query_results.entities_by_id = null;
-    query_results.query = query_results.query || { };
-
-    var t = "";
-    if (response.entities && (response.entities.length > 0)) {
-
-      query_results.entities = response.entities;
-      query_results.entities_by_id = {};
-
-      // collections is the only one that uses this lower level item, and can't be trusted to be here
-      // so hardcoding this check for that type and loading it in a try to make sure we don't error out
-      // in other cases
-      try {
-        if (response.entities[0].metadata.collections &&
-            options.output == "#collections-response-table") {
-          query_results.entities = response.entities[0].metadata.collections;
-        }
-      } catch (e) {
-        //do nothing, this is only to trap errors
-      }
-
-      if (listItemTemplate) {
-        $(output).html("");
-      }
-
-      var path = response.path || "";
-      path = "" + path.match(/[^?]*/);
-
-      for (i in query_results.entities) {
-        var entity = query_results.entities[i];
-        query_results.entities_by_id[entity.uuid] = entity;
-
-        var entity_path = (entity.metadata || {}).path;
-        if ($.isEmptyObject(entity_path)) {
-          entity_path = path + "/" + entity.uuid;
-        }
-
-        if (getListItem) {
-          t += getListItem(entity, entity_path);
-        }
-        else if (listItemTemplate) {
-          var options = null;
-          if (getListItemTemplateOptions) {
-            options = getListItemTemplateOptions(entity, entity_path);
-          }
-          if (!options) {
-            options = {entity: entity, path: entity_path};
-          }
-          $.tmpl(listItemTemplate, options).appendTo(output);
-        }
-      }
-
-      if (!listItemTemplate) {
-        $(output).html(t);
-      }
-
-      if (onRender) {
-        onRender();
-      }
-
-      if (prevButton) {
-        if (query_results.query.hasPrevious && query_results.query.hasPrevious()) {
-          $(prevButton).click(query_results.query.getPrevious);
-          $(prevButton).show();
-        }
-        else {
-          $(prevButton).hide();
-        }
-      }
-
-      if (nextButton) {
-        if (query_results.query.hasNext && query_results.query.hasNext()) {
-          $(nextButton).click(query_results.query.getNext);
-          $(nextButton).show();
-        }
-        else {
-          $(nextButton).hide();
-        }
-      }
-
-      if (nextPrevDiv) {
-        if (query_results.query.hasPrevious && query_results.query.hasNext && (query_results.query.hasPrevious() || query_results.query.hasNext())) {
-          $(nextPrevDiv).show();
-        }
-        else {
-          $(nextPrevDiv).hide();
-        }
-      }
-
-    } else if (response.entities && (response.entities.length == 0)) {
-      if (nextPrevDiv) {
-        $(nextPrevDiv).hide();
-      }
-      var s = null;
-      if (onNoEntities) {
-        s = onNoEntities();
-      }
-      $(output).html("<div class=\"query-response-empty\">" + (s ? s : noEntitiesMsg) + "</div>");
-      // This is a hack, will be fixed in API
-    } else if (response.error && (
-      (response.error.exception == "org.usergrid.services.exceptions.ServiceResourceNotFoundException: Service resource not found") ||
-        (response.error.exception == "java.lang.IllegalArgumentException: Not a valid entity value type or null: null"))) {
-      if (nextPrevDiv) {
-        $(nextPrevDiv).hide();
-      }
-      var s = null;
-      if (onError) {
-        s = onError();
-      }
-      $(output).html("<div class=\"query-response-empty\">" + (s ? s : noEntitiesMsg) + "</div>");
-
-    } else {
-      $(output).html(
-        "<pre class=\"query-response-json\">"
-          + JSON.stringify(response, null, "  ") + "</pre>");
-      if (nextPrevDiv) {
-        $(nextPrevDiv).hide();
-      }
-      if (onRawJson) {
-        onRawJson();
-      }
-    }
-
-    $(output).find(".button").button();
-
-    return query_results;
-  }
-  Usergrid.console.ui.displayEntityListResponse = displayEntityListResponse;
-
-})();


[09/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/spec/qunit-git.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/spec/qunit-git.js b/deleted/dist-cov/usergrid-portal/archive/js/spec/qunit-git.js
deleted file mode 100644
index 8bf7005..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/spec/qunit-git.js
+++ /dev/null
@@ -1,1865 +0,0 @@
-/**
- * QUnit v1.9.0pre - A JavaScript Unit Testing Framework
- *
- * http://docs.jquery.com/QUnit
- *
- * Copyright (c) 2012 John Resig, Jörn Zaefferer
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * or GPL (GPL-LICENSE.txt) licenses.
- * Pulled Live from Git Wed Jun 20 16:15:01 UTC 2012
- * Last Commit: 1c0af4e943400de73bc36310d3db42a5217da215
- */
-
-(function( window ) {
-
-var QUnit,
-	config,
-	onErrorFnPrev,
-	testId = 0,
-	fileName = (sourceFromStacktrace( 0 ) || "" ).replace(/(:\d+)+\)?/, "").replace(/.+\//, ""),
-	toString = Object.prototype.toString,
-	hasOwn = Object.prototype.hasOwnProperty,
-	defined = {
-	setTimeout: typeof window.setTimeout !== "undefined",
-	sessionStorage: (function() {
-		var x = "qunit-test-string";
-		try {
-			sessionStorage.setItem( x, x );
-			sessionStorage.removeItem( x );
-			return true;
-		} catch( e ) {
-			return false;
-		}
-	}())
-};
-
-function Test( settings ) {
-	extend( this, settings );
-	this.assertions = [];
-	this.testNumber = ++Test.count;
-}
-
-Test.count = 0;
-
-Test.prototype = {
-	init: function() {
-		var a, b, li,
-        tests = id( "qunit-tests" );
-
-		if ( tests ) {
-			b = document.createElement( "strong" );
-			b.innerHTML = this.name;
-
-			// `a` initialized at top of scope
-			a = document.createElement( "a" );
-			a.innerHTML = "Rerun";
-			a.href = QUnit.url({ testNumber: this.testNumber });
-
-			li = document.createElement( "li" );
-			li.appendChild( b );
-			li.appendChild( a );
-			li.className = "running";
-			li.id = this.id = "qunit-test-output" + testId++;
-
-			tests.appendChild( li );
-		}
-	},
-	setup: function() {
-		if ( this.module !== config.previousModule ) {
-			if ( config.previousModule ) {
-				runLoggingCallbacks( "moduleDone", QUnit, {
-					name: config.previousModule,
-					failed: config.moduleStats.bad,
-					passed: config.moduleStats.all - config.moduleStats.bad,
-					total: config.moduleStats.all
-				});
-			}
-			config.previousModule = this.module;
-			config.moduleStats = { all: 0, bad: 0 };
-			runLoggingCallbacks( "moduleStart", QUnit, {
-				name: this.module
-			});
-		} else if ( config.autorun ) {
-			runLoggingCallbacks( "moduleStart", QUnit, {
-				name: this.module
-			});
-		}
-
-		config.current = this;
-
-		this.testEnvironment = extend({
-			setup: function() {},
-			teardown: function() {}
-		}, this.moduleTestEnvironment );
-
-		runLoggingCallbacks( "testStart", QUnit, {
-			name: this.testName,
-			module: this.module
-		});
-
-		// allow utility functions to access the current test environment
-		// TODO why??
-		QUnit.current_testEnvironment = this.testEnvironment;
-
-		if ( !config.pollution ) {
-			saveGlobal();
-		}
-		if ( config.notrycatch ) {
-			this.testEnvironment.setup.call( this.testEnvironment );
-			return;
-		}
-		try {
-			this.testEnvironment.setup.call( this.testEnvironment );
-		} catch( e ) {
-			QUnit.pushFailure( "Setup failed on " + this.testName + ": " + e.message, extractStacktrace( e, 1 ) );
-		}
-	},
-	run: function() {
-		config.current = this;
-
-		var running = id( "qunit-testresult" );
-
-		if ( running ) {
-			running.innerHTML = "Running: <br/>" + this.name;
-		}
-
-		if ( this.async ) {
-			QUnit.stop();
-		}
-
-		if ( config.notrycatch ) {
-			this.callback.call( this.testEnvironment, QUnit.assert );
-			return;
-		}
-
-		try {
-			this.callback.call( this.testEnvironment, QUnit.assert );
-		} catch( e ) {
-			QUnit.pushFailure( "Died on test #" + (this.assertions.length + 1) + " " + this.stack + ": " + e.message, extractStacktrace( e, 0 ) );
-			// else next test will carry the responsibility
-			saveGlobal();
-
-			// Restart the tests if they're blocking
-			if ( config.blocking ) {
-				QUnit.start();
-			}
-		}
-	},
-	teardown: function() {
-		config.current = this;
-		if ( config.notrycatch ) {
-			this.testEnvironment.teardown.call( this.testEnvironment );
-			return;
-		} else {
-			try {
-				this.testEnvironment.teardown.call( this.testEnvironment );
-			} catch( e ) {
-				QUnit.pushFailure( "Teardown failed on " + this.testName + ": " + e.message, extractStacktrace( e, 1 ) );
-			}
-		}
-		checkPollution();
-	},
-	finish: function() {
-		config.current = this;
-		if ( config.requireExpects && this.expected == null ) {
-			QUnit.pushFailure( "Expected number of assertions to be defined, but expect() was not called.", this.stack );
-		} else if ( this.expected != null && this.expected != this.assertions.length ) {
-			QUnit.pushFailure( "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run", this.stack );
-		} else if ( this.expected == null && !this.assertions.length ) {
-			QUnit.pushFailure( "Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.", this.stack );
-		}
-
-		var assertion, a, b, i, li, ol,
-			test = this,
-			good = 0,
-			bad = 0,
-			tests = id( "qunit-tests" );
-
-		config.stats.all += this.assertions.length;
-		config.moduleStats.all += this.assertions.length;
-
-		if ( tests ) {
-			ol = document.createElement( "ol" );
-
-			for ( i = 0; i < this.assertions.length; i++ ) {
-				assertion = this.assertions[i];
-
-				li = document.createElement( "li" );
-				li.className = assertion.result ? "pass" : "fail";
-				li.innerHTML = assertion.message || ( assertion.result ? "okay" : "failed" );
-				ol.appendChild( li );
-
-				if ( assertion.result ) {
-					good++;
-				} else {
-					bad++;
-					config.stats.bad++;
-					config.moduleStats.bad++;
-				}
-			}
-
-			// store result when possible
-			if ( QUnit.config.reorder && defined.sessionStorage ) {
-				if ( bad ) {
-					sessionStorage.setItem( "qunit-test-" + this.module + "-" + this.testName, bad );
-				} else {
-					sessionStorage.removeItem( "qunit-test-" + this.module + "-" + this.testName );
-				}
-			}
-
-			if ( bad === 0 ) {
-				ol.style.display = "none";
-			}
-
-			// `b` initialized at top of scope
-			b = document.createElement( "strong" );
-			b.innerHTML = this.name + " <b class='counts'>(<b class='failed'>" + bad + "</b>, <b class='passed'>" + good + "</b>, " + this.assertions.length + ")</b>";
-
-			addEvent(b, "click", function() {
-				var next = b.nextSibling.nextSibling,
-					display = next.style.display;
-				next.style.display = display === "none" ? "block" : "none";
-			});
-
-			addEvent(b, "dblclick", function( e ) {
-				var target = e && e.target ? e.target : window.event.srcElement;
-				if ( target.nodeName.toLowerCase() == "span" || target.nodeName.toLowerCase() == "b" ) {
-					target = target.parentNode;
-				}
-				if ( window.location && target.nodeName.toLowerCase() === "strong" ) {
-					window.location = QUnit.url({ testNumber: test.testNumber });
-				}
-			});
-
-			// `li` initialized at top of scope
-			li = id( this.id );
-			li.className = bad ? "fail" : "pass";
-			li.removeChild( li.firstChild );
-			a = li.firstChild;
-			li.appendChild( b );
-			li.appendChild ( a );
-			li.appendChild( ol );
-
-		} else {
-			for ( i = 0; i < this.assertions.length; i++ ) {
-				if ( !this.assertions[i].result ) {
-					bad++;
-					config.stats.bad++;
-					config.moduleStats.bad++;
-				}
-			}
-		}
-
-		runLoggingCallbacks( "testDone", QUnit, {
-			name: this.testName,
-			module: this.module,
-			failed: bad,
-			passed: this.assertions.length - bad,
-			total: this.assertions.length
-		});
-
-		QUnit.reset();
-
-		config.current = undefined;
-	},
-
-	queue: function() {
-		var bad,
-			test = this;
-
-		synchronize(function() {
-			test.init();
-		});
-		function run() {
-			// each of these can by async
-			synchronize(function() {
-				test.setup();
-			});
-			synchronize(function() {
-				test.run();
-			});
-			synchronize(function() {
-				test.teardown();
-			});
-			synchronize(function() {
-				test.finish();
-			});
-		}
-
-		// `bad` initialized at top of scope
-		// defer when previous test run passed, if storage is available
-		bad = QUnit.config.reorder && defined.sessionStorage &&
-						+sessionStorage.getItem( "qunit-test-" + this.module + "-" + this.testName );
-
-		if ( bad ) {
-			run();
-		} else {
-			synchronize( run, true );
-		}
-	}
-};
-
-// Root QUnit object.
-// `QUnit` initialized at top of scope
-QUnit = {
-
-	// call on start of module test to prepend name to all tests
-	module: function( name, testEnvironment ) {
-		config.currentModule = name;
-		config.currentModuleTestEnviroment = testEnvironment;
-	},
-
-	asyncTest: function( testName, expected, callback ) {
-		if ( arguments.length === 2 ) {
-			callback = expected;
-			expected = null;
-		}
-
-		QUnit.test( testName, expected, callback, true );
-	},
-
-	test: function( testName, expected, callback, async ) {
-		var test,
-			name = "<span class='test-name'>" + escapeInnerText( testName ) + "</span>";
-
-		if ( arguments.length === 2 ) {
-			callback = expected;
-			expected = null;
-		}
-
-		if ( config.currentModule ) {
-			name = "<span class='module-name'>" + config.currentModule + "</span>: " + name;
-		}
-
-		test = new Test({
-			name: name,
-			testName: testName,
-			expected: expected,
-			async: async,
-			callback: callback,
-			module: config.currentModule,
-			moduleTestEnvironment: config.currentModuleTestEnviroment,
-			stack: sourceFromStacktrace( 2 )
-		});
-
-		if ( !validTest( test ) ) {
-			return;
-		}
-
-		test.queue();
-	},
-
-	// Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
-	expect: function( asserts ) {
-		config.current.expected = asserts;
-	},
-
-	start: function( count ) {
-		config.semaphore -= count || 1;
-		// don't start until equal number of stop-calls
-		if ( config.semaphore > 0 ) {
-			return;
-		}
-		// ignore if start is called more often then stop
-		if ( config.semaphore < 0 ) {
-			config.semaphore = 0;
-		}
-		// A slight delay, to avoid any current callbacks
-		if ( defined.setTimeout ) {
-			window.setTimeout(function() {
-				if ( config.semaphore > 0 ) {
-					return;
-				}
-				if ( config.timeout ) {
-					clearTimeout( config.timeout );
-				}
-
-				config.blocking = false;
-				process( true );
-			}, 13);
-		} else {
-			config.blocking = false;
-			process( true );
-		}
-	},
-
-	stop: function( count ) {
-		config.semaphore += count || 1;
-		config.blocking = true;
-
-		if ( config.testTimeout && defined.setTimeout ) {
-			clearTimeout( config.timeout );
-			config.timeout = window.setTimeout(function() {
-				QUnit.ok( false, "Test timed out" );
-				config.semaphore = 1;
-				QUnit.start();
-			}, config.testTimeout );
-		}
-	}
-};
-
-// Asssert helpers
-// All of these must call either QUnit.push() or manually do:
-// - runLoggingCallbacks( "log", .. );
-// - config.current.assertions.push({ .. });
-QUnit.assert = {
-	/**
-	 * Asserts rough true-ish result.
-	 * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
-	 */
-	ok: function( result, msg ) {
-		if ( !config.current ) {
-			throw new Error( "ok() assertion outside test context, was " + sourceFromStacktrace(2) );
-		}
-		result = !!result;
-
-		var source,
-			details = {
-				result: result,
-				message: msg
-			};
-
-		msg = escapeInnerText( msg || (result ? "okay" : "failed" ) );
-		msg = "<span class='test-message'>" + msg + "</span>";
-
-		if ( !result ) {
-			source = sourceFromStacktrace( 2 );
-			if ( source ) {
-				details.source = source;
-				msg += "<table><tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr></table>";
-			}
-		}
-		runLoggingCallbacks( "log", QUnit, details );
-		config.current.assertions.push({
-			result: result,
-			message: msg
-		});
-	},
-
-	/**
-	 * Assert that the first two arguments are equal, with an optional message.
-	 * Prints out both actual and expected values.
-	 * @example equal( format( "Received {0} bytes.", 2), "Received 2 bytes.", "format() replaces {0} with next argument" );
-	 */
-	equal: function( actual, expected, message ) {
-		QUnit.push( expected == actual, actual, expected, message );
-	},
-
-	notEqual: function( actual, expected, message ) {
-		QUnit.push( expected != actual, actual, expected, message );
-	},
-
-	deepEqual: function( actual, expected, message ) {
-		QUnit.push( QUnit.equiv(actual, expected), actual, expected, message );
-	},
-
-	notDeepEqual: function( actual, expected, message ) {
-		QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message );
-	},
-
-	strictEqual: function( actual, expected, message ) {
-		QUnit.push( expected === actual, actual, expected, message );
-	},
-
-	notStrictEqual: function( actual, expected, message ) {
-		QUnit.push( expected !== actual, actual, expected, message );
-	},
-
-	raises: function( block, expected, message ) {
-		var actual,
-			ok = false;
-
-		if ( typeof expected === "string" ) {
-			message = expected;
-			expected = null;
-		}
-
-		config.current.ignoreGlobalErrors = true;
-		try {
-			block.call( config.current.testEnvironment );
-		} catch (e) {
-			actual = e;
-		}
-		config.current.ignoreGlobalErrors = false;
-
-		if ( actual ) {
-			// we don't want to validate thrown error
-			if ( !expected ) {
-				ok = true;
-			// expected is a regexp
-			} else if ( QUnit.objectType( expected ) === "regexp" ) {
-				ok = expected.test( actual );
-			// expected is a constructor
-			} else if ( actual instanceof expected ) {
-				ok = true;
-			// expected is a validation function which returns true is validation passed
-			} else if ( expected.call( {}, actual ) === true ) {
-				ok = true;
-			}
-		}
-
-		QUnit.push( ok, actual, null, message );
-	}
-};
-
-// @deprecated: Kept assertion helpers in root for backwards compatibility
-extend( QUnit, QUnit.assert );
-
-/**
- * @deprecated: Kept for backwards compatibility
- * next step: remove entirely
- */
-QUnit.equals = function() {
-	QUnit.push( false, false, false, "QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead" );
-};
-QUnit.same = function() {
-	QUnit.push( false, false, false, "QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead" );
-};
-
-// We want access to the constructor's prototype
-(function() {
-	function F() {}
-	F.prototype = QUnit;
-	QUnit = new F();
-	// Make F QUnit's constructor so that we can add to the prototype later
-	QUnit.constructor = F;
-}());
-
-/**
- * Config object: Maintain internal state
- * Later exposed as QUnit.config
- * `config` initialized at top of scope
- */
-config = {
-	// The queue of tests to run
-	queue: [],
-
-	// block until document ready
-	blocking: true,
-
-	// when enabled, show only failing tests
-	// gets persisted through sessionStorage and can be changed in UI via checkbox
-	hidepassed: false,
-
-	// by default, run previously failed tests first
-	// very useful in combination with "Hide passed tests" checked
-	reorder: true,
-
-	// by default, modify document.title when suite is done
-	altertitle: true,
-
-	// when enabled, all tests must call expect()
-	requireExpects: false,
-
-	urlConfig: [ "noglobals", "notrycatch" ],
-
-	// logging callback queues
-	begin: [],
-	done: [],
-	log: [],
-	testStart: [],
-	testDone: [],
-	moduleStart: [],
-	moduleDone: []
-};
-
-// Initialize more QUnit.config and QUnit.urlParams
-(function() {
-	var i,
-		location = window.location || { search: "", protocol: "file:" },
-		params = location.search.slice( 1 ).split( "&" ),
-		length = params.length,
-		urlParams = {},
-		current;
-
-	if ( params[ 0 ] ) {
-		for ( i = 0; i < length; i++ ) {
-			current = params[ i ].split( "=" );
-			current[ 0 ] = decodeURIComponent( current[ 0 ] );
-			// allow just a key to turn on a flag, e.g., test.html?noglobals
-			current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;
-			urlParams[ current[ 0 ] ] = current[ 1 ];
-		}
-	}
-
-	QUnit.urlParams = urlParams;
-
-	// String search anywhere in moduleName+testName
-	config.filter = urlParams.filter;
-
-	// Exact match of the module name
-	config.module = urlParams.module;
-
-	config.testNumber = parseInt( urlParams.testNumber, 10 ) || null;
-
-	// Figure out if we're running the tests from a server or not
-	QUnit.isLocal = location.protocol === "file:";
-}());
-
-// Export global variables, unless an 'exports' object exists,
-// in that case we assume we're in CommonJS (dealt with on the bottom of the script)
-if ( typeof exports === "undefined" ) {
-	extend( window, QUnit );
-
-	// Expose QUnit object
-	window.QUnit = QUnit;
-}
-
-// Extend QUnit object,
-// these after set here because they should not be exposed as global functions
-extend( QUnit, {
-	config: config,
-
-	// Initialize the configuration options
-	init: function() {
-		extend( config, {
-			stats: { all: 0, bad: 0 },
-			moduleStats: { all: 0, bad: 0 },
-			started: +new Date(),
-			updateRate: 1000,
-			blocking: false,
-			autostart: true,
-			autorun: false,
-			filter: "",
-			queue: [],
-			semaphore: 0
-		});
-
-		var tests, banner, result,
-			qunit = id( "qunit" );
-
-		if ( qunit ) {
-			qunit.innerHTML =
-				"<h1 id='qunit-header'>" + escapeInnerText( document.title ) + "</h1>" +
-				"<h2 id='qunit-banner'></h2>" +
-				"<div id='qunit-testrunner-toolbar'></div>" +
-				"<h2 id='qunit-userAgent'></h2>" +
-				"<ol id='qunit-tests'></ol>";
-		}
-
-		tests = id( "qunit-tests" );
-		banner = id( "qunit-banner" );
-		result = id( "qunit-testresult" );
-
-		if ( tests ) {
-			tests.innerHTML = "";
-		}
-
-		if ( banner ) {
-			banner.className = "";
-		}
-
-		if ( result ) {
-			result.parentNode.removeChild( result );
-		}
-
-		if ( tests ) {
-			result = document.createElement( "p" );
-			result.id = "qunit-testresult";
-			result.className = "result";
-			tests.parentNode.insertBefore( result, tests );
-			result.innerHTML = "Running...<br/>&nbsp;";
-		}
-	},
-
-	// Resets the test setup. Useful for tests that modify the DOM.
-	// If jQuery is available, uses jQuery's html(), otherwise just innerHTML.
-	reset: function() {
-		var fixture;
-
-		if ( window.jQuery ) {
-			jQuery( "#qunit-fixture" ).html( config.fixture );
-		} else {
-			fixture = id( "qunit-fixture" );
-			if ( fixture ) {
-				fixture.innerHTML = config.fixture;
-			}
-		}
-	},
-
-	// Trigger an event on an element.
-	// @example triggerEvent( document.body, "click" );
-	triggerEvent: function( elem, type, event ) {
-		if ( document.createEvent ) {
-			event = document.createEvent( "MouseEvents" );
-			event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
-				0, 0, 0, 0, 0, false, false, false, false, 0, null);
-
-			elem.dispatchEvent( event );
-		} else if ( elem.fireEvent ) {
-			elem.fireEvent( "on" + type );
-		}
-	},
-
-	// Safe object type checking
-	is: function( type, obj ) {
-		return QUnit.objectType( obj ) == type;
-	},
-
-	objectType: function( obj ) {
-		if ( typeof obj === "undefined" ) {
-				return "undefined";
-		// consider: typeof null === object
-		}
-		if ( obj === null ) {
-				return "null";
-		}
-
-		var type = toString.call( obj ).match(/^\[object\s(.*)\]$/)[1] || "";
-
-		switch ( type ) {
-			case "Number":
-				if ( isNaN(obj) ) {
-					return "nan";
-				}
-				return "number";
-			case "String":
-			case "Boolean":
-			case "Array":
-			case "Date":
-			case "RegExp":
-			case "Function":
-				return type.toLowerCase();
-		}
-		if ( typeof obj === "object" ) {
-			return "object";
-		}
-		return undefined;
-	},
-
-	push: function( result, actual, expected, message ) {
-		if ( !config.current ) {
-			throw new Error( "assertion outside test context, was " + sourceFromStacktrace() );
-		}
-
-		var output, source,
-			details = {
-				result: result,
-				message: message,
-				actual: actual,
-				expected: expected
-			};
-
-		message = escapeInnerText( message ) || ( result ? "okay" : "failed" );
-		message = "<span class='test-message'>" + message + "</span>";
-		output = message;
-
-		if ( !result ) {
-			expected = escapeInnerText( QUnit.jsDump.parse(expected) );
-			actual = escapeInnerText( QUnit.jsDump.parse(actual) );
-			output += "<table><tr class='test-expected'><th>Expected: </th><td><pre>" + expected + "</pre></td></tr>";
-
-			if ( actual != expected ) {
-				output += "<tr class='test-actual'><th>Result: </th><td><pre>" + actual + "</pre></td></tr>";
-				output += "<tr class='test-diff'><th>Diff: </th><td><pre>" + QUnit.diff( expected, actual ) + "</pre></td></tr>";
-			}
-
-			source = sourceFromStacktrace();
-
-			if ( source ) {
-				details.source = source;
-				output += "<tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr>";
-			}
-
-			output += "</table>";
-		}
-
-		runLoggingCallbacks( "log", QUnit, details );
-
-		config.current.assertions.push({
-			result: !!result,
-			message: output
-		});
-	},
-
-	pushFailure: function( message, source ) {
-		if ( !config.current ) {
-			throw new Error( "pushFailure() assertion outside test context, was " + sourceFromStacktrace(2) );
-		}
-
-		var output,
-			details = {
-				result: false,
-				message: message
-			};
-
-		message = escapeInnerText(message ) || "error";
-		message = "<span class='test-message'>" + message + "</span>";
-		output = message;
-
-		if ( source ) {
-			details.source = source;
-			output += "<table><tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr></table>";
-		}
-
-		runLoggingCallbacks( "log", QUnit, details );
-
-		config.current.assertions.push({
-			result: false,
-			message: output
-		});
-	},
-
-	url: function( params ) {
-		params = extend( extend( {}, QUnit.urlParams ), params );
-		var key,
-			querystring = "?";
-
-		for ( key in params ) {
-			if ( !hasOwn.call( params, key ) ) {
-				continue;
-			}
-			querystring += encodeURIComponent( key ) + "=" +
-				encodeURIComponent( params[ key ] ) + "&";
-		}
-		return window.location.pathname + querystring.slice( 0, -1 );
-	},
-
-	extend: extend,
-	id: id,
-	addEvent: addEvent
-	// load, equiv, jsDump, diff: Attached later
-});
-
-/**
- * @deprecated: Created for backwards compatibility with test runner that set the hook function
- * into QUnit.{hook}, instead of invoking it and passing the hook function.
- * QUnit.constructor is set to the empty F() above so that we can add to it's prototype here.
- * Doing this allows us to tell if the following methods have been overwritten on the actual
- * QUnit object.
- */
-extend( QUnit.constructor.prototype, {
-
-	// Logging callbacks; all receive a single argument with the listed properties
-	// run test/logs.html for any related changes
-	begin: registerLoggingCallback( "begin" ),
-
-	// done: { failed, passed, total, runtime }
-	done: registerLoggingCallback( "done" ),
-
-	// log: { result, actual, expected, message }
-	log: registerLoggingCallback( "log" ),
-
-	// testStart: { name }
-	testStart: registerLoggingCallback( "testStart" ),
-
-	// testDone: { name, failed, passed, total }
-	testDone: registerLoggingCallback( "testDone" ),
-
-	// moduleStart: { name }
-	moduleStart: registerLoggingCallback( "moduleStart" ),
-
-	// moduleDone: { name, failed, passed, total }
-	moduleDone: registerLoggingCallback( "moduleDone" )
-});
-
-if ( typeof document === "undefined" || document.readyState === "complete" ) {
-	config.autorun = true;
-}
-
-QUnit.load = function() {
-	runLoggingCallbacks( "begin", QUnit, {} );
-
-	// Initialize the config, saving the execution queue
-	var banner, filter, i, label, len, main, ol, toolbar, userAgent, val,
-		urlConfigHtml = "",
-		oldconfig = extend( {}, config );
-
-	QUnit.init();
-	extend(config, oldconfig);
-
-	config.blocking = false;
-
-	len = config.urlConfig.length;
-
-	for ( i = 0; i < len; i++ ) {
-		val = config.urlConfig[i];
-		config[val] = QUnit.urlParams[val];
-		urlConfigHtml += "<label><input name='" + val + "' type='checkbox'" + ( config[val] ? " checked='checked'" : "" ) + ">" + val + "</label>";
-	}
-
-	// `userAgent` initialized at top of scope
-	userAgent = id( "qunit-userAgent" );
-	if ( userAgent ) {
-		userAgent.innerHTML = navigator.userAgent;
-	}
-
-	// `banner` initialized at top of scope
-	banner = id( "qunit-header" );
-	if ( banner ) {
-		banner.innerHTML = "<a href='" + QUnit.url({ filter: undefined }) + "'>" + banner.innerHTML + "</a> " + urlConfigHtml;
-		addEvent( banner, "change", function( event ) {
-			var params = {};
-			params[ event.target.name ] = event.target.checked ? true : undefined;
-			window.location = QUnit.url( params );
-		});
-	}
-
-	// `toolbar` initialized at top of scope
-	toolbar = id( "qunit-testrunner-toolbar" );
-	if ( toolbar ) {
-		// `filter` initialized at top of scope
-		filter = document.createElement( "input" );
-		filter.type = "checkbox";
-		filter.id = "qunit-filter-pass";
-
-		addEvent( filter, "click", function() {
-			var tmp,
-				ol = document.getElementById( "qunit-tests" );
-
-			if ( filter.checked ) {
-				ol.className = ol.className + " hidepass";
-			} else {
-				tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " ";
-				ol.className = tmp.replace( / hidepass /, " " );
-			}
-			if ( defined.sessionStorage ) {
-				if (filter.checked) {
-					sessionStorage.setItem( "qunit-filter-passed-tests", "true" );
-				} else {
-					sessionStorage.removeItem( "qunit-filter-passed-tests" );
-				}
-			}
-		});
-
-		if ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem( "qunit-filter-passed-tests" ) ) {
-			filter.checked = true;
-			// `ol` initialized at top of scope
-			ol = document.getElementById( "qunit-tests" );
-			ol.className = ol.className + " hidepass";
-		}
-		toolbar.appendChild( filter );
-
-		// `label` initialized at top of scope
-		label = document.createElement( "label" );
-		label.setAttribute( "for", "qunit-filter-pass" );
-		label.innerHTML = "Hide passed tests";
-		toolbar.appendChild( label );
-	}
-
-	// `main` initialized at top of scope
-	main = id( "qunit-fixture" );
-	if ( main ) {
-		config.fixture = main.innerHTML;
-	}
-
-	if ( config.autostart ) {
-		QUnit.start();
-	}
-};
-
-addEvent( window, "load", QUnit.load );
-
-// `onErrorFnPrev` initialized at top of scope
-// Preserve other handlers
-onErrorFnPrev = window.onerror;
-
-// Cover uncaught exceptions
-// Returning true will surpress the default browser handler,
-// returning false will let it run.
-window.onerror = function ( error, filePath, linerNr ) {
-	var ret = false;
-	if ( onErrorFnPrev ) {
-		ret = onErrorFnPrev( error, filePath, linerNr );
-	}
-
-	// Treat return value as window.onerror itself does,
-	// Only do our handling if not surpressed.
-	if ( ret !== true ) {
-		if ( QUnit.config.current ) {
-			if ( QUnit.config.current.ignoreGlobalErrors ) {
-				return true;
-			}
-			QUnit.pushFailure( error, filePath + ":" + linerNr );
-		} else {
-			QUnit.test( "global failure", function() {
-				QUnit.pushFailure( error, filePath + ":" + linerNr );
-			});
-		}
-		return false;
-	}
-
-	return ret;
-};
-
-function done() {
-	config.autorun = true;
-
-	// Log the last module results
-	if ( config.currentModule ) {
-		runLoggingCallbacks( "moduleDone", QUnit, {
-			name: config.currentModule,
-			failed: config.moduleStats.bad,
-			passed: config.moduleStats.all - config.moduleStats.bad,
-			total: config.moduleStats.all
-		});
-	}
-
-	var i, key,
-		banner = id( "qunit-banner" ),
-		tests = id( "qunit-tests" ),
-		runtime = +new Date() - config.started,
-		passed = config.stats.all - config.stats.bad,
-		html = [
-			"Tests completed in ",
-			runtime,
-			" milliseconds.<br/>",
-			"<span class='passed'>",
-			passed,
-			"</span> tests of <span class='total'>",
-			config.stats.all,
-			"</span> passed, <span class='failed'>",
-			config.stats.bad,
-			"</span> failed."
-		].join( "" );
-
-	if ( banner ) {
-		banner.className = ( config.stats.bad ? "qunit-fail" : "qunit-pass" );
-	}
-
-	if ( tests ) {
-		id( "qunit-testresult" ).innerHTML = html;
-	}
-
-	if ( config.altertitle && typeof document !== "undefined" && document.title ) {
-		// show ✖ for good, ✔ for bad suite result in title
-		// use escape sequences in case file gets loaded with non-utf-8-charset
-		document.title = [
-			( config.stats.bad ? "\u2716" : "\u2714" ),
-			document.title.replace( /^[\u2714\u2716] /i, "" )
-		].join( " " );
-	}
-
-	// clear own sessionStorage items if all tests passed
-	if ( config.reorder && defined.sessionStorage && config.stats.bad === 0 ) {
-		// `key` & `i` initialized at top of scope
-		for ( i = 0; i < sessionStorage.length; i++ ) {
-			key = sessionStorage.key( i++ );
-			if ( key.indexOf( "qunit-test-" ) === 0 ) {
-				sessionStorage.removeItem( key );
-			}
-		}
-	}
-
-	runLoggingCallbacks( "done", QUnit, {
-		failed: config.stats.bad,
-		passed: passed,
-		total: config.stats.all,
-		runtime: runtime
-	});
-}
-
-/** @return Boolean: true if this test should be ran */
-function validTest( test ) {
-	var include,
-		filter = config.filter && config.filter.toLowerCase(),
-		module = config.module,
-		fullName = (test.module + ": " + test.testName).toLowerCase();
-
-	if ( config.testNumber ) {
-		return test.testNumber === config.testNumber;
-	}
-
-	if ( module && test.module !== module ) {
-		return false;
-	}
-
-	if ( !filter ) {
-		return true;
-	}
-
-	include = filter.charAt( 0 ) !== "!";
-	if ( !include ) {
-		filter = filter.slice( 1 );
-	}
-
-	// If the filter matches, we need to honour include
-	if ( fullName.indexOf( filter ) !== -1 ) {
-		return include;
-	}
-
-	// Otherwise, do the opposite
-	return !include;
-}
-
-// so far supports only Firefox, Chrome and Opera (buggy), Safari (for real exceptions)
-// Later Safari and IE10 are supposed to support error.stack as well
-// See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack
-function extractStacktrace( e, offset ) {
-	offset = offset === undefined ? 3 : offset;
-
-	var stack, include, i, regex;
-
-	if ( e.stacktrace ) {
-		// Opera
-		return e.stacktrace.split( "\n" )[ offset + 3 ];
-	} else if ( e.stack ) {
-		// Firefox, Chrome
-		stack = e.stack.split( "\n" );
-		if (/^error$/i.test( stack[0] ) ) {
-			stack.shift();
-		}
-		if ( fileName ) {
-			include = [];
-			for ( i = offset; i < stack.length; i++ ) {
-				if ( stack[ i ].indexOf( fileName ) != -1 ) {
-					break;
-				}
-				include.push( stack[ i ] );
-			}
-			if ( include.length ) {
-				return include.join( "\n" );
-			}
-		}
-		return stack[ offset ];
-	} else if ( e.sourceURL ) {
-		// Safari, PhantomJS
-		// hopefully one day Safari provides actual stacktraces
-		// exclude useless self-reference for generated Error objects
-		if ( /qunit.js$/.test( e.sourceURL ) ) {
-			return;
-		}
-		// for actual exceptions, this is useful
-		return e.sourceURL + ":" + e.line;
-	}
-}
-function sourceFromStacktrace( offset ) {
-	try {
-		throw new Error();
-	} catch ( e ) {
-		return extractStacktrace( e, offset );
-	}
-}
-
-function escapeInnerText( s ) {
-	if ( !s ) {
-		return "";
-	}
-	s = s + "";
-	return s.replace( /[\&<>]/g, function( s ) {
-		switch( s ) {
-			case "&": return "&amp;";
-			case "<": return "&lt;";
-			case ">": return "&gt;";
-			default: return s;
-		}
-	});
-}
-
-function synchronize( callback, last ) {
-	config.queue.push( callback );
-
-	if ( config.autorun && !config.blocking ) {
-		process( last );
-	}
-}
-
-function process( last ) {
-	function next() {
-		process( last );
-	}
-	var start = new Date().getTime();
-	config.depth = config.depth ? config.depth + 1 : 1;
-
-	while ( config.queue.length && !config.blocking ) {
-		if ( !defined.setTimeout || config.updateRate <= 0 || ( ( new Date().getTime() - start ) < config.updateRate ) ) {
-			config.queue.shift()();
-		} else {
-			window.setTimeout( next, 13 );
-			break;
-		}
-	}
-	config.depth--;
-	if ( last && !config.blocking && !config.queue.length && config.depth === 0 ) {
-		done();
-	}
-}
-
-function saveGlobal() {
-	config.pollution = [];
-
-	if ( config.noglobals ) {
-		for ( var key in window ) {
-			// in Opera sometimes DOM element ids show up here, ignore them
-			if ( !hasOwn.call( window, key ) || /^qunit-test-output/.test( key ) ) {
-				continue;
-			}
-			config.pollution.push( key );
-		}
-	}
-}
-
-function checkPollution( name ) {
-	var newGlobals,
-		deletedGlobals,
-		old = config.pollution;
-
-	saveGlobal();
-
-	newGlobals = diff( config.pollution, old );
-	if ( newGlobals.length > 0 ) {
-		QUnit.pushFailure( "Introduced global variable(s): " + newGlobals.join(", ") );
-	}
-
-	deletedGlobals = diff( old, config.pollution );
-	if ( deletedGlobals.length > 0 ) {
-		QUnit.pushFailure( "Deleted global variable(s): " + deletedGlobals.join(", ") );
-	}
-}
-
-// returns a new Array with the elements that are in a but not in b
-function diff( a, b ) {
-	var i, j,
-		result = a.slice();
-
-	for ( i = 0; i < result.length; i++ ) {
-		for ( j = 0; j < b.length; j++ ) {
-			if ( result[i] === b[j] ) {
-				result.splice( i, 1 );
-				i--;
-				break;
-			}
-		}
-	}
-	return result;
-}
-
-function extend( a, b ) {
-	for ( var prop in b ) {
-		if ( b[ prop ] === undefined ) {
-			delete a[ prop ];
-
-		// Avoid "Member not found" error in IE8 caused by setting window.constructor
-		} else if ( prop !== "constructor" || a !== window ) {
-			a[ prop ] = b[ prop ];
-		}
-	}
-
-	return a;
-}
-
-function addEvent( elem, type, fn ) {
-	if ( elem.addEventListener ) {
-		elem.addEventListener( type, fn, false );
-	} else if ( elem.attachEvent ) {
-		elem.attachEvent( "on" + type, fn );
-	} else {
-		fn();
-	}
-}
-
-function id( name ) {
-	return !!( typeof document !== "undefined" && document && document.getElementById ) &&
-		document.getElementById( name );
-}
-
-function registerLoggingCallback( key ) {
-	return function( callback ) {
-		config[key].push( callback );
-	};
-}
-
-// Supports deprecated method of completely overwriting logging callbacks
-function runLoggingCallbacks( key, scope, args ) {
-	//debugger;
-	var i, callbacks;
-	if ( QUnit.hasOwnProperty( key ) ) {
-		QUnit[ key ].call(scope, args );
-	} else {
-		callbacks = config[ key ];
-		for ( i = 0; i < callbacks.length; i++ ) {
-			callbacks[ i ].call( scope, args );
-		}
-	}
-}
-
-// Test for equality any JavaScript type.
-// Author: Philippe Rathé <pr...@gmail.com>
-QUnit.equiv = (function() {
-
-	// Call the o related callback with the given arguments.
-	function bindCallbacks( o, callbacks, args ) {
-		var prop = QUnit.objectType( o );
-		if ( prop ) {
-			if ( QUnit.objectType( callbacks[ prop ] ) === "function" ) {
-				return callbacks[ prop ].apply( callbacks, args );
-			} else {
-				return callbacks[ prop ]; // or undefined
-			}
-		}
-	}
-
-	// the real equiv function
-	var innerEquiv,
-		// stack to decide between skip/abort functions
-		callers = [],
-		// stack to avoiding loops from circular referencing
-		parents = [],
-
-		getProto = Object.getPrototypeOf || function ( obj ) {
-			return obj.__proto__;
-		},
-		callbacks = (function () {
-
-			// for string, boolean, number and null
-			function useStrictEquality( b, a ) {
-				if ( b instanceof a.constructor || a instanceof b.constructor ) {
-					// to catch short annotaion VS 'new' annotation of a
-					// declaration
-					// e.g. var i = 1;
-					// var j = new Number(1);
-					return a == b;
-				} else {
-					return a === b;
-				}
-			}
-
-			return {
-				"string": useStrictEquality,
-				"boolean": useStrictEquality,
-				"number": useStrictEquality,
-				"null": useStrictEquality,
-				"undefined": useStrictEquality,
-
-				"nan": function( b ) {
-					return isNaN( b );
-				},
-
-				"date": function( b, a ) {
-					return QUnit.objectType( b ) === "date" && a.valueOf() === b.valueOf();
-				},
-
-				"regexp": function( b, a ) {
-					return QUnit.objectType( b ) === "regexp" &&
-						// the regex itself
-						a.source === b.source &&
-						// and its modifers
-						a.global === b.global &&
-						// (gmi) ...
-						a.ignoreCase === b.ignoreCase &&
-						a.multiline === b.multiline;
-				},
-
-				// - skip when the property is a method of an instance (OOP)
-				// - abort otherwise,
-				// initial === would have catch identical references anyway
-				"function": function() {
-					var caller = callers[callers.length - 1];
-					return caller !== Object && typeof caller !== "undefined";
-				},
-
-				"array": function( b, a ) {
-					var i, j, len, loop;
-
-					// b could be an object literal here
-					if ( QUnit.objectType( b ) !== "array" ) {
-						return false;
-					}
-
-					len = a.length;
-					if ( len !== b.length ) {
-						// safe and faster
-						return false;
-					}
-
-					// track reference to avoid circular references
-					parents.push( a );
-					for ( i = 0; i < len; i++ ) {
-						loop = false;
-						for ( j = 0; j < parents.length; j++ ) {
-							if ( parents[j] === a[i] ) {
-								loop = true;// dont rewalk array
-							}
-						}
-						if ( !loop && !innerEquiv(a[i], b[i]) ) {
-							parents.pop();
-							return false;
-						}
-					}
-					parents.pop();
-					return true;
-				},
-
-				"object": function( b, a ) {
-					var i, j, loop,
-						// Default to true
-						eq = true,
-						aProperties = [],
-						bProperties = [];
-
-					// comparing constructors is more strict than using
-					// instanceof
-					if ( a.constructor !== b.constructor ) {
-						// Allow objects with no prototype to be equivalent to
-						// objects with Object as their constructor.
-						if ( !(( getProto(a) === null && getProto(b) === Object.prototype ) ||
-							( getProto(b) === null && getProto(a) === Object.prototype ) ) ) {
-								return false;
-						}
-					}
-
-					// stack constructor before traversing properties
-					callers.push( a.constructor );
-					// track reference to avoid circular references
-					parents.push( a );
-
-					for ( i in a ) { // be strict: don't ensures hasOwnProperty
-									// and go deep
-						loop = false;
-						for ( j = 0; j < parents.length; j++ ) {
-							if ( parents[j] === a[i] ) {
-								// don't go down the same path twice
-								loop = true;
-							}
-						}
-						aProperties.push(i); // collect a's properties
-
-						if (!loop && !innerEquiv( a[i], b[i] ) ) {
-							eq = false;
-							break;
-						}
-					}
-
-					callers.pop(); // unstack, we are done
-					parents.pop();
-
-					for ( i in b ) {
-						bProperties.push( i ); // collect b's properties
-					}
-
-					// Ensures identical properties name
-					return eq && innerEquiv( aProperties.sort(), bProperties.sort() );
-				}
-			};
-		}());
-
-	innerEquiv = function() { // can take multiple arguments
-		var args = [].slice.apply( arguments );
-		if ( args.length < 2 ) {
-			return true; // end transition
-		}
-
-		return (function( a, b ) {
-			if ( a === b ) {
-				return true; // catch the most you can
-			} else if ( a === null || b === null || typeof a === "undefined" ||
-					typeof b === "undefined" ||
-					QUnit.objectType(a) !== QUnit.objectType(b) ) {
-				return false; // don't lose time with error prone cases
-			} else {
-				return bindCallbacks(a, callbacks, [ b, a ]);
-			}
-
-			// apply transition with (1..n) arguments
-		}( args[0], args[1] ) && arguments.callee.apply( this, args.splice(1, args.length - 1 )) );
-	};
-
-	return innerEquiv;
-}());
-
-/**
- * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com |
- * http://flesler.blogspot.com Licensed under BSD
- * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008
- *
- * @projectDescription Advanced and extensible data dumping for Javascript.
- * @version 1.0.0
- * @author Ariel Flesler
- * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}
- */
-QUnit.jsDump = (function() {
-	function quote( str ) {
-		return '"' + str.toString().replace( /"/g, '\\"' ) + '"';
-	}
-	function literal( o ) {
-		return o + "";
-	}
-	function join( pre, arr, post ) {
-		var s = jsDump.separator(),
-			base = jsDump.indent(),
-			inner = jsDump.indent(1);
-		if ( arr.join ) {
-			arr = arr.join( "," + s + inner );
-		}
-		if ( !arr ) {
-			return pre + post;
-		}
-		return [ pre, inner + arr, base + post ].join(s);
-	}
-	function array( arr, stack ) {
-		var i = arr.length, ret = new Array(i);
-		this.up();
-		while ( i-- ) {
-			ret[i] = this.parse( arr[i] , undefined , stack);
-		}
-		this.down();
-		return join( "[", ret, "]" );
-	}
-
-	var reName = /^function (\w+)/,
-		jsDump = {
-			parse: function( obj, type, stack ) { //type is used mostly internally, you can fix a (custom)type in advance
-				stack = stack || [ ];
-				var inStack, res,
-					parser = this.parsers[ type || this.typeOf(obj) ];
-
-				type = typeof parser;
-				inStack = inArray( obj, stack );
-
-				if ( inStack != -1 ) {
-					return "recursion(" + (inStack - stack.length) + ")";
-				}
-				//else
-				if ( type == "function" )  {
-					stack.push( obj );
-					res = parser.call( this, obj, stack );
-					stack.pop();
-					return res;
-				}
-				// else
-				return ( type == "string" ) ? parser : this.parsers.error;
-			},
-			typeOf: function( obj ) {
-				var type;
-				if ( obj === null ) {
-					type = "null";
-				} else if ( typeof obj === "undefined" ) {
-					type = "undefined";
-				} else if ( QUnit.is( "regexp", obj) ) {
-					type = "regexp";
-				} else if ( QUnit.is( "date", obj) ) {
-					type = "date";
-				} else if ( QUnit.is( "function", obj) ) {
-					type = "function";
-				} else if ( typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined" ) {
-					type = "window";
-				} else if ( obj.nodeType === 9 ) {
-					type = "document";
-				} else if ( obj.nodeType ) {
-					type = "node";
-				} else if (
-					// native arrays
-					toString.call( obj ) === "[object Array]" ||
-					// NodeList objects
-					( typeof obj.length === "number" && typeof obj.item !== "undefined" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === "undefined" ) ) )
-				) {
-					type = "array";
-				} else {
-					type = typeof obj;
-				}
-				return type;
-			},
-			separator: function() {
-				return this.multiline ?	this.HTML ? "<br />" : "\n" : this.HTML ? "&nbsp;" : " ";
-			},
-			indent: function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing
-				if ( !this.multiline ) {
-					return "";
-				}
-				var chr = this.indentChar;
-				if ( this.HTML ) {
-					chr = chr.replace( /\t/g, "   " ).replace( / /g, "&nbsp;" );
-				}
-				return new Array( this._depth_ + (extra||0) ).join(chr);
-			},
-			up: function( a ) {
-				this._depth_ += a || 1;
-			},
-			down: function( a ) {
-				this._depth_ -= a || 1;
-			},
-			setParser: function( name, parser ) {
-				this.parsers[name] = parser;
-			},
-			// The next 3 are exposed so you can use them
-			quote: quote,
-			literal: literal,
-			join: join,
-			//
-			_depth_: 1,
-			// This is the list of parsers, to modify them, use jsDump.setParser
-			parsers: {
-				window: "[Window]",
-				document: "[Document]",
-				error: "[ERROR]", //when no parser is found, shouldn"t happen
-				unknown: "[Unknown]",
-				"null": "null",
-				"undefined": "undefined",
-				"function": function( fn ) {
-					var ret = "function",
-						name = "name" in fn ? fn.name : (reName.exec(fn) || [])[1];//functions never have name in IE
-
-					if ( name ) {
-						ret += " " + name;
-					}
-					ret += "( ";
-
-					ret = [ ret, QUnit.jsDump.parse( fn, "functionArgs" ), "){" ].join( "" );
-					return join( ret, QUnit.jsDump.parse(fn,"functionCode" ), "}" );
-				},
-				array: array,
-				nodelist: array,
-				"arguments": array,
-				object: function( map, stack ) {
-					var ret = [ ], keys, key, val, i;
-					QUnit.jsDump.up();
-					if ( Object.keys ) {
-						keys = Object.keys( map );
-					} else {
-						keys = [];
-						for ( key in map ) {
-							keys.push( key );
-						}
-					}
-					keys.sort();
-					for ( i = 0; i < keys.length; i++ ) {
-						key = keys[ i ];
-						val = map[ key ];
-						ret.push( QUnit.jsDump.parse( key, "key" ) + ": " + QUnit.jsDump.parse( val, undefined, stack ) );
-					}
-					QUnit.jsDump.down();
-					return join( "{", ret, "}" );
-				},
-				node: function( node ) {
-					var a, val,
-						open = QUnit.jsDump.HTML ? "&lt;" : "<",
-						close = QUnit.jsDump.HTML ? "&gt;" : ">",
-						tag = node.nodeName.toLowerCase(),
-						ret = open + tag;
-
-					for ( a in QUnit.jsDump.DOMAttrs ) {
-						val = node[ QUnit.jsDump.DOMAttrs[a] ];
-						if ( val ) {
-							ret += " " + a + "=" + QUnit.jsDump.parse( val, "attribute" );
-						}
-					}
-					return ret + close + open + "/" + tag + close;
-				},
-				functionArgs: function( fn ) {//function calls it internally, it's the arguments part of the function
-					var args,
-						l = fn.length;
-
-					if ( !l ) {
-						return "";
-					}
-
-					args = new Array(l);
-					while ( l-- ) {
-						args[l] = String.fromCharCode(97+l);//97 is 'a'
-					}
-					return " " + args.join( ", " ) + " ";
-				},
-				key: quote, //object calls it internally, the key part of an item in a map
-				functionCode: "[code]", //function calls it internally, it's the content of the function
-				attribute: quote, //node calls it internally, it's an html attribute value
-				string: quote,
-				date: quote,
-				regexp: literal, //regex
-				number: literal,
-				"boolean": literal
-			},
-			DOMAttrs: {
-				//attributes to dump from nodes, name=>realName
-				id: "id",
-				name: "name",
-				"class": "className"
-			},
-			HTML: false,//if true, entities are escaped ( <, >, \t, space and \n )
-			indentChar: "  ",//indentation unit
-			multiline: true //if true, items in a collection, are separated by a \n, else just a space.
-		};
-
-	return jsDump;
-}());
-
-// from Sizzle.js
-function getText( elems ) {
-	var i, elem,
-		ret = "";
-
-	for ( i = 0; elems[i]; i++ ) {
-		elem = elems[i];
-
-		// Get the text from text nodes and CDATA nodes
-		if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
-			ret += elem.nodeValue;
-
-		// Traverse everything else, except comment nodes
-		} else if ( elem.nodeType !== 8 ) {
-			ret += getText( elem.childNodes );
-		}
-	}
-
-	return ret;
-}
-
-// from jquery.js
-function inArray( elem, array ) {
-	if ( array.indexOf ) {
-		return array.indexOf( elem );
-	}
-
-	for ( var i = 0, length = array.length; i < length; i++ ) {
-		if ( array[ i ] === elem ) {
-			return i;
-		}
-	}
-
-	return -1;
-}
-
-/*
- * Javascript Diff Algorithm
- *  By John Resig (http://ejohn.org/)
- *  Modified by Chu Alan "sprite"
- *
- * Released under the MIT license.
- *
- * More Info:
- *  http://ejohn.org/projects/javascript-diff-algorithm/
- *
- * Usage: QUnit.diff(expected, actual)
- *
- * QUnit.diff( "the quick brown fox jumped over", "the quick fox jumps over" ) == "the  quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over"
- */
-QUnit.diff = (function() {
-	function diff( o, n ) {
-		var i,
-			ns = {},
-			os = {};
-
-		for ( i = 0; i < n.length; i++ ) {
-			if ( ns[ n[i] ] == null ) {
-				ns[ n[i] ] = {
-					rows: [],
-					o: null
-				};
-			}
-			ns[ n[i] ].rows.push( i );
-		}
-
-		for ( i = 0; i < o.length; i++ ) {
-			if ( os[ o[i] ] == null ) {
-				os[ o[i] ] = {
-					rows: [],
-					n: null
-				};
-			}
-			os[ o[i] ].rows.push( i );
-		}
-
-		for ( i in ns ) {
-			if ( !hasOwn.call( ns, i ) ) {
-				continue;
-			}
-			if ( ns[i].rows.length == 1 && typeof os[i] != "undefined" && os[i].rows.length == 1 ) {
-				n[ ns[i].rows[0] ] = {
-					text: n[ ns[i].rows[0] ],
-					row: os[i].rows[0]
-				};
-				o[ os[i].rows[0] ] = {
-					text: o[ os[i].rows[0] ],
-					row: ns[i].rows[0]
-				};
-			}
-		}
-
-		for ( i = 0; i < n.length - 1; i++ ) {
-			if ( n[i].text != null && n[ i + 1 ].text == null && n[i].row + 1 < o.length && o[ n[i].row + 1 ].text == null &&
-						n[ i + 1 ] == o[ n[i].row + 1 ] ) {
-
-				n[ i + 1 ] = {
-					text: n[ i + 1 ],
-					row: n[i].row + 1
-				};
-				o[ n[i].row + 1 ] = {
-					text: o[ n[i].row + 1 ],
-					row: i + 1
-				};
-			}
-		}
-
-		for ( i = n.length - 1; i > 0; i-- ) {
-			if ( n[i].text != null && n[ i - 1 ].text == null && n[i].row > 0 && o[ n[i].row - 1 ].text == null &&
-						n[ i - 1 ] == o[ n[i].row - 1 ]) {
-
-				n[ i - 1 ] = {
-					text: n[ i - 1 ],
-					row: n[i].row - 1
-				};
-				o[ n[i].row - 1 ] = {
-					text: o[ n[i].row - 1 ],
-					row: i - 1
-				};
-			}
-		}
-
-		return {
-			o: o,
-			n: n
-		};
-	}
-
-	return function( o, n ) {
-		o = o.replace( /\s+$/, "" );
-		n = n.replace( /\s+$/, "" );
-
-		var i, pre,
-			str = "",
-			out = diff( o === "" ? [] : o.split(/\s+/), n === "" ? [] : n.split(/\s+/) ),
-			oSpace = o.match(/\s+/g),
-			nSpace = n.match(/\s+/g);
-
-		if ( oSpace == null ) {
-			oSpace = [ " " ];
-		}
-		else {
-			oSpace.push( " " );
-		}
-
-		if ( nSpace == null ) {
-			nSpace = [ " " ];
-		}
-		else {
-			nSpace.push( " " );
-		}
-
-		if ( out.n.length === 0 ) {
-			for ( i = 0; i < out.o.length; i++ ) {
-				str += "<del>" + out.o[i] + oSpace[i] + "</del>";
-			}
-		}
-		else {
-			if ( out.n[0].text == null ) {
-				for ( n = 0; n < out.o.length && out.o[n].text == null; n++ ) {
-					str += "<del>" + out.o[n] + oSpace[n] + "</del>";
-				}
-			}
-
-			for ( i = 0; i < out.n.length; i++ ) {
-				if (out.n[i].text == null) {
-					str += "<ins>" + out.n[i] + nSpace[i] + "</ins>";
-				}
-				else {
-					// `pre` initialized at top of scope
-					pre = "";
-
-					for ( n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++ ) {
-						pre += "<del>" + out.o[n] + oSpace[n] + "</del>";
-					}
-					str += " " + out.n[i].text + nSpace[i] + pre;
-				}
-			}
-		}
-
-		return str;
-	};
-}());
-
-// for CommonJS enviroments, export everything
-if ( typeof exports !== "undefined" ) {
-	extend(exports, QUnit);
-}
-
-// get at whatever the global object is, like window in browsers
-}( (function() {return this;}.call()) ));

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/unit-tests/appSDK-tests.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/unit-tests/appSDK-tests.js b/deleted/dist-cov/usergrid-portal/archive/js/unit-tests/appSDK-tests.js
deleted file mode 100644
index 698ecad..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/unit-tests/appSDK-tests.js
+++ /dev/null
@@ -1,255 +0,0 @@
-/**
- * @author tPeregrina
- */
-
-function initCore(){
-    prepareLocalStorage();
-    parseParams();    
-           
-};
-
-function cleanFixture(){
-	var $fixture = $("#qunit-fixture");
-	$fixture.children("*").remove("*");
-};
-
-function printScope(scope){
-	for (name in scope){
-		console.log("this["+name+"]");
-	};
-};
-
-
-function loginWithCredentials(calledFunction){	
-	
-	var formdata = {		
-      	grant_type: "password",
-     	username: credentials.login,
-     	password: credentials.password
-   	 	};   		
-		apiClient.runManagementQuery(new Usergrid.Query('GET', 'token', null, formdata,
-		//Success callback
-		function(data){		
-			if(data){
-				calledFunction(data.access_token);
-			};				
-		}, defaultError));
-};
-//CLEANUP: used to remove users created programatically
-function deleteUser(uuid){
-	loginWithCredentials(function(token){
-		apiClient.setToken(token)
-		apiClient.setOrganizationName(mockOrg.UUID);
-		apiClient.setApplicationName(mockOrg.mockApp.UUID);
-		apiClient.runAppQuery(new Usergrid.Query("DELETE", 'users/' + uuid, null, null));
-		console.log("CLEANUP: DELETED USER UUID: " + uuid);		
-	});
-};
-
-//SETUP: used to create users to be deleted or modified
-function createUser(){
-	var uuid;
-	var data = getMockUserData();
-	loginWithCredentials(function(){
-		APIClient.setToken();		
-		apiClient.setOrganizationName(mockOrg.UUID);
-		apiClient.setApplicationName(mockOrg.mockApp.UUID);	
-		apiClient.runAppQuery(new Usergrid.Query("POST", 'users', data, null,
-		function(data){
-			console.log(data.entities[0].uuid);
-			credentials.UUID = data.entities[0].uuid;
-		}));		
-	});
-	
-};
-
-function getMockUserData(){
-	var userMod = "1";
-	var data = {
-		username: mockCreateUser.baseUserName + userMod,
-		name: mockCreateUser.baseName,
-		email: mockCreateUser.emailHead + userMod + mockCreateUser.emailTail,
-		password: mockCreateUser.password,
-	}	
-	return data;
-};
-
-/*
-* Fixtures
-*/
-var	credentials = {		
-		login :"tperegrina@nearbpo.com",
-		password:"123456789",
-		UUID: "",
-		userName: "",		
-};
-	
-var apiClient = APIClient;
-
-var mockOrg = {
-	UUID : "af32c228-d745-11e1-b36a-12313b01d5c1",
-	mockApp: {
-		name: "SANDBOX",
-		UUID: "af4fe725-d745-11e1-b36a-12313b01d5c1",
-	},
-	name: "MusicOrg",
-};
-var mockUser = {
-	username: "User1",
-	name:"Ann User",
-	email :"annUser@AnnUserEnterprises.com",
-	password:"123456789",
-	UUID: "08bc0ec6-dbf8-11e1-93e3-12313b0c5c38",	
-};
-var mockCreateUser = {
-	baseUserName: "User-",
-	baseName : "Mock User",
-	emailHead: "MockUser-",
-	emailTail: "@mockuser.com",
-	password: "12345679",
-	UUID: "",
-}
-/*
-*Default Callbacks
-*/
-function defaultSuccess(data, status, xhr) {
-  start();
-  if (data) {
-	console.log(data);
-  } else {
-	console.log('no data');
-  }  
-  ok(true, "yahoo!!!");
-};
-function userCreateSuccess(data, status, xhr){
-	start();
-	var uuid = data.entities[0].uuid;
-	deleteUser(uuid);
-	ok(true, "UserCreated Success ID:" + uuid);
-}
-
-function defaultError(xhr, status, error) {
-  start();
-  console.log(xhr);
-  console.log('boo!');
-  throw new Error("error!");
-}
-
-module("login", {
-	setup:function(){		
-		initCore();
-		Usergrid.userSession.clearAll();
-	},//FIN SETUP
-	teardown:function(){
-		 cleanFixture();
-	}//END TEARDOWN
-});//END MODULE DEFINITION
-
-asyncTest("login with credentials", function(){
-	expect(1);	
-	loginWithCredentials(function(token){
-		start();		
-		ok(true, "Succesful login TOKEN: " + token);		
-	});
-});
-
-asyncTest("login with Token", function(){	
-	expect(1);	
-	loginWithCredentials(function(token){				
-		apiClient.setToken(token);
-		apiClient.runManagementQuery(new Usergrid.Query("GET","users/" + credentials.login, null, null, defaultSuccess, defaultError));
-	});
-});
-
-module("GET Methods", {
-	setup:function(){		
-		initCore();
-	},//FIN SETUP
-	teardown:function(){
-		 cleanFixture();
-	}//END TEARDOWN
-});//END MODULE DEFINITION
-
-asyncTest("Fetching Apps from Org: " + mockOrg.name + " GET", function(){
-	expect(1);
-	loginWithCredentials(function(token){
-		apiClient.setToken(token);	
-		apiClient.runManagementQuery(new Usergrid.Query("GET", "organizations/" + mockOrg.UUID + "/applications", null, null, defaultSuccess, defaultError));
-	});
-});
-
-asyncTest("Requesting User ID : " + mockUser.UUID + " GET", function(){
-	expect(1);
-	loginWithCredentials(function(token){			
-		apiClient.setToken(token);		
-		apiClient.setOrganizationName(mockOrg.UUID);
-		apiClient.setApplicationName(mockOrg.mockApp.UUID);	
-		apiClient.runAppQuery(new Usergrid.Query("GET", 'users/'+ mockUser.UUID, null, null, defaultSuccess, defaultError));
-	});
-});
-
-module("POST Methods", {
-	setup:function(){		
-		initCore();	
-	},//FIN SETUP
-	teardown:function(){
-		 cleanFixture();
-	}//END TEARDOWN
-});//END MODULE DEFINITION
-
-
-asyncTest("Add new User : " + mockUser.username + " POST", function(){
-	expect(1);		
-		var data = getMockUserData();
-		apiClient.setOrganizationName(mockOrg.UUID);
-		apiClient.setApplicationName(mockOrg.mockApp.UUID);	
-		apiClient.runAppQuery(new Usergrid.Query("POST", 'users', data, null, userCreateSuccess, defaultError));
-});
-
-module("DELETE Methods", {
-	setup:function(){
-		initCore();
-	},
-	teardown:function(){
-		cleanFixture();
-	}
-});
-//TODO: Refractor the user creation out of this method
-asyncTest("Delete User : " + mockUser.username + " DELETE", function(){
-	expect(1);
-	loginWithCredentials(function(token){		
-		apiClient.setToken(token);
-		var data = getMockUserData();
-		apiClient.setOrganizationName(mockOrg.UUID);
-		apiClient.setApplicationName(mockOrg.mockApp.UUID);
-		apiClient.runAppQuery(new Usergrid.Query("POST", 'users', data, null,
-		function(data){
-			console.log(data.entities[0].uuid);
-			var uuid= data.entities[0].uuid;
-			apiClient.runAppQuery(new Usergrid.Query("DELETE", 'users/' + uuid, null, null, defaultSuccess, defaultError));
-		}));			
-		
-	});
-});
-
-module("PUT Methods", {
-	setup:function(){
-		initCore();
-	},
-	teardown:function(){
-		cleanFixture();
-	}
-});
-
-asyncTest("Update AccountUser : " + mockUser.username + " PUT", function(){
-	expect(1);
-	var userData = {
-		username: credentials.login,
-		password: credentials.password,
-		email:	credentials.userName,
-	};
-	apiClient.runManagementQuery(new Usergrid.Query("PUT",'users/' + credentialsUUID, userData, null, userCreateSuccess, defaultError));
-});
-
-
-

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/unit-tests/ie-jquery-tests.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/unit-tests/ie-jquery-tests.js b/deleted/dist-cov/usergrid-portal/archive/js/unit-tests/ie-jquery-tests.js
deleted file mode 100644
index 13e4198..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/unit-tests/ie-jquery-tests.js
+++ /dev/null
@@ -1,191 +0,0 @@
-/**
- * @author tPeregrina
- */
-
-/*
- * Intialization
- */
-
-var init = {
-	core: function(){
-		prepareLocalStorage();
-    	parseParams();
-    	init.modAjax();      
-	},
-	modAjax: function(){
-
-	},
-};
-
-/*
- * Callbacks
- */
-
-var cb = {
-	simpleSuccess: function(data){
-		start();		
-	  	if (data) {
-			console.log("DATOS: " + data);
-	  	}else{
-			console.log('no data');
-	  	}  
-	  	ok(true, "Succesful test");		
-	},
-	simpleFailure: function(data, status, xhr){
-		start();
-	  	console.log(xhr);
-	  	console.log('FAIL!');
-	  	throw new Error("error!");		
-	},
-};
-
-/*
- * Utilities
- */
-
-var util = {
-	printScope: function(scope){
-		for (name in scope){
-			console.log("this["+name+"]");
-		};
-	},
-	saveCredentials: function(token){
-		credentials.token = token;
-		console.log("SAVED TOKEN: "+credentials.token);
-	},
-	queryAPI: function(queryType, queryUrl, queryData, successCB, failureCB){
-		if ('XDomainRequest' in window && window.XDomainRequest !== null) {
-		  util.setAjaxToXDom(successCB, failureCB);
-		  $.ajax({
-		  	type: queryType,
-		  	url: queryUrl,
-			data: queryData,
-			contentType: "application/json",
-		  });
-		}else{//REQUEST IS HttpHeadersRequest
-			$.ajax({
-				type: queryType,
-				url: queryUrl,
-				data: queryData,
-				success: successCB,
-				failure: failureCB,
-			});
-		};
-	},
-	setAjaxToXDom:function(success, failure){
-		// override default jQuery transport
-		  jQuery.ajaxSettings.xhr = function(){
-		      try { 
-		        xhr = new XDomainRequest();
-		        xhr.contentType = "application/json";
-				xhr.onload = success;
-				xhr.onerror = failure;
-		        return xhr;}
-		         /*
-		      return new XDomainRequest();}
-		      */
-		      catch(e) { }
-		  };	 
-		  // also, override the support check
-		  jQuery.support.cors = true;	 
-	},
-	login: function(){
-		var loginCredentials = {
-			grant_type: "password",
-			username: credentials.login,
-			password: credentials.password,
-		};
-		
-		var loginUrl = url.base + url.login;
-		
-		function exitoXDom(){
-			response = xhr.responseText;
-			parsedResponse = $.parseJSON(response);
-			util.saveCredentials(parsedResponse.access_token);
-			cb.simpleSuccess(response);
-		};
-		
-		util.queryAPI('GET', loginUrl, loginCredentials, exitoXDom, cb.simpleFailure);		
-		
-	},
-	autoLogin: function(){
-		var tokenURL = url.base + url.autoLogin + credentials.login + url.token + credentials.token;
-		util.queryAPI('GET',tokenURL,null,cb.simpleSuccess, cb.simpleFaillure);
-
-	},
-	createApp: function(){
-		var appURL = url.base + url.managementOrgs + org.UUID + url.app + url.token + credentials.token;
-		var appData = {
-			name : "Nombre Generico 1",
-		}
-		appData = JSON.stringify(appData);
-		console.log("DATOS: " + appData);
-		util.queryAPI('POST', appURL, appData, cb.simpleSuccess, cb.simpleFailure);
-	},
-	createUser: function(){
-		var userUrl= url.base + org.UUID + "/" + org.app.UUID + url.users;
-		var userData = JSON.stringify(mockUser);
-		util.queryAPI('POST', userUrl, userData, cb.simpleSuccess, cb.simpleFailure);		
-	}
-};
-
-/*
- * Fixtures
- */
-
-credentials = {
-	login : "tperegrina@nearbpo.com",
-	password : "123456789",
-	UUID : "",
-	token: "",	
-}
-
-mockUser = {
-	username: "Usuario1",
-	name: "Un Usuario",
-	email: "Usuario@fakeEmailAddress.com",
-	password: "123456789",
-}
-
-apiClient = APIClient;
-
-org = {
-	name: "tperegrina",
-	UUID: "af32c228-d745-11e1-b36a-12313b01d5c1",
-	app: {
-		name: "SANDBOX",
-		UUID: "af4fe725-d745-11e1-b36a-12313b01d5c1",
-	}
-};
-
-
-url = {
-	base: "http://api.usergrid.com/",
-	login: "management/token",
-	autoLogin: "management/users/",
-	managementOrgs : "management/organizations/",
-	app: "/applications",
-	token:	"?access_token=",
-	users: "/users",
-}
-
-/*
- * Tests 
- */
-
-asyncTest("Test CRUD APP", function(){
-	expect(4);
-	start();
-	init.core();
-	util.login();
-	util.autoLogin();
-	util.createApp();
-	util.updateOrg();
-	util.readOrg();
-	util.deleteOrg();	
-});
-
-asyncTest("TEST CRUD USERS", function(){
-	expect(1);
-	util.createUser();
-});

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/unit-tests/qunit.css
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/unit-tests/qunit.css b/deleted/dist-cov/usergrid-portal/archive/js/unit-tests/qunit.css
deleted file mode 100644
index a96431a..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/unit-tests/qunit.css
+++ /dev/null
@@ -1,231 +0,0 @@
- /**
- * QUnit v1.10.0pre - A JavaScript Unit Testing Framework
- *
- * http://qunitjs.com
- *
- * Copyright 2012 jQuery Foundation and other contributors
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- */
-
-/** Font Family and Sizes */
-
-#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
-	font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
-}
-
-#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
-#qunit-tests { font-size: smaller; }
-
-
-/** Resets */
-
-#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {
-	margin: 0;
-	padding: 0;
-}
-
-
-/** Header */
-
-#qunit-header {
-	padding: 0.5em 0 0.5em 1em;
-
-	color: #8699a4;
-	background-color: #0d3349;
-
-	font-size: 1.5em;
-	line-height: 1em;
-	font-weight: normal;
-
-	border-radius: 5px 5px 0 0;
-	-moz-border-radius: 5px 5px 0 0;
-	-webkit-border-top-right-radius: 5px;
-	-webkit-border-top-left-radius: 5px;
-}
-
-#qunit-header a {
-	text-decoration: none;
-	color: #c2ccd1;
-}
-
-#qunit-header a:hover,
-#qunit-header a:focus {
-	color: #fff;
-}
-
-#qunit-testrunner-toolbar label {
-	display: inline-block;
-	padding: 0 .5em 0 .1em;
-}
-
-#qunit-banner {
-	height: 5px;
-}
-
-#qunit-testrunner-toolbar {
-	padding: 0.5em 0 0.5em 2em;
-	color: #5E740B;
-	background-color: #eee;
-}
-
-#qunit-userAgent {
-	padding: 0.5em 0 0.5em 2.5em;
-	background-color: #2b81af;
-	color: #fff;
-	text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
-}
-
-
-/** Tests: Pass/Fail */
-
-#qunit-tests {
-	list-style-position: inside;
-}
-
-#qunit-tests li {
-	padding: 0.4em 0.5em 0.4em 2.5em;
-	border-bottom: 1px solid #fff;
-	list-style-position: inside;
-}
-
-#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running  {
-	display: none;
-}
-
-#qunit-tests li strong {
-	cursor: pointer;
-}
-
-#qunit-tests li a {
-	padding: 0.5em;
-	color: #c2ccd1;
-	text-decoration: none;
-}
-#qunit-tests li a:hover,
-#qunit-tests li a:focus {
-	color: #000;
-}
-
-#qunit-tests ol {
-	margin-top: 0.5em;
-	padding: 0.5em;
-
-	background-color: #fff;
-
-	border-radius: 5px;
-	-moz-border-radius: 5px;
-	-webkit-border-radius: 5px;
-}
-
-#qunit-tests table {
-	border-collapse: collapse;
-	margin-top: .2em;
-}
-
-#qunit-tests th {
-	text-align: right;
-	vertical-align: top;
-	padding: 0 .5em 0 0;
-}
-
-#qunit-tests td {
-	vertical-align: top;
-}
-
-#qunit-tests pre {
-	margin: 0;
-	white-space: pre-wrap;
-	word-wrap: break-word;
-}
-
-#qunit-tests del {
-	background-color: #e0f2be;
-	color: #374e0c;
-	text-decoration: none;
-}
-
-#qunit-tests ins {
-	background-color: #ffcaca;
-	color: #500;
-	text-decoration: none;
-}
-
-/*** Test Counts */
-
-#qunit-tests b.counts                       { color: black; }
-#qunit-tests b.passed                       { color: #5E740B; }
-#qunit-tests b.failed                       { color: #710909; }
-
-#qunit-tests li li {
-	padding: 5px;
-	background-color: #fff;
-	border-bottom: none;
-	list-style-position: inside;
-}
-
-/*** Passing Styles */
-
-#qunit-tests li li.pass {
-	color: #3c510c;
-	background-color: #fff;
-	border-left: 10px solid #C6E746;
-}
-
-#qunit-tests .pass                          { color: #528CE0; background-color: #D2E0E6; }
-#qunit-tests .pass .test-name               { color: #366097; }
-
-#qunit-tests .pass .test-actual,
-#qunit-tests .pass .test-expected           { color: #999999; }
-
-#qunit-banner.qunit-pass                    { background-color: #C6E746; }
-
-/*** Failing Styles */
-
-#qunit-tests li li.fail {
-	color: #710909;
-	background-color: #fff;
-	border-left: 10px solid #EE5757;
-	white-space: pre;
-}
-
-#qunit-tests > li:last-child {
-	border-radius: 0 0 5px 5px;
-	-moz-border-radius: 0 0 5px 5px;
-	-webkit-border-bottom-right-radius: 5px;
-	-webkit-border-bottom-left-radius: 5px;
-}
-
-#qunit-tests .fail                          { color: #000000; background-color: #EE5757; }
-#qunit-tests .fail .test-name,
-#qunit-tests .fail .module-name             { color: #000000; }
-
-#qunit-tests .fail .test-actual             { color: #EE5757; }
-#qunit-tests .fail .test-expected           { color: green;   }
-
-#qunit-banner.qunit-fail                    { background-color: #EE5757; }
-
-
-/** Result */
-
-#qunit-testresult {
-	padding: 0.5em 0.5em 0.5em 2.5em;
-
-	color: #2b81af;
-	background-color: #D2E0E6;
-
-	border-bottom: 1px solid white;
-}
-#qunit-testresult .module-name {
-	font-weight: bold;
-}
-
-/** Fixture */
-
-#qunit-fixture {
-	position: absolute;
-	top: -10000px;
-	left: -10000px;
-	width: 1000px;
-	height: 1000px;
-}
\ No newline at end of file


[06/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angular/angular.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angular/angular.js b/deleted/dist-cov/usergrid-portal/bower_components/angular/angular.js
deleted file mode 100644
index e219951..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angular/angular.js
+++ /dev/null
@@ -1,22451 +0,0 @@
-/**
- * @license AngularJS v1.3.0-build.2607+sha.b2e48e6
- * (c) 2010-2014 Google, Inc. http://angularjs.org
- * License: MIT
- */
-(function(window, document, undefined) {'use strict';
-
-/**
- * @description
- *
- * This object provides a utility for producing rich Error messages within
- * Angular. It can be called as follows:
- *
- * var exampleMinErr = minErr('example');
- * throw exampleMinErr('one', 'This {0} is {1}', foo, bar);
- *
- * The above creates an instance of minErr in the example namespace. The
- * resulting error will have a namespaced error code of example.one.  The
- * resulting error will replace {0} with the value of foo, and {1} with the
- * value of bar. The object is not restricted in the number of arguments it can
- * take.
- *
- * If fewer arguments are specified than necessary for interpolation, the extra
- * interpolation markers will be preserved in the final string.
- *
- * Since data will be parsed statically during a build step, some restrictions
- * are applied with respect to how minErr instances are created and called.
- * Instances should have names of the form namespaceMinErr for a minErr created
- * using minErr('namespace') . Error codes, namespaces and template strings
- * should all be static strings, not variables or general expressions.
- *
- * @param {string} module The namespace to use for the new minErr instance.
- * @returns {function(code:string, template:string, ...templateArgs): Error} minErr instance
- */
-
-function minErr(module) {
-  return function () {
-    var code = arguments[0],
-      prefix = '[' + (module ? module + ':' : '') + code + '] ',
-      template = arguments[1],
-      templateArgs = arguments,
-      stringify = function (obj) {
-        if (typeof obj === 'function') {
-          return obj.toString().replace(/ \{[\s\S]*$/, '');
-        } else if (typeof obj === 'undefined') {
-          return 'undefined';
-        } else if (typeof obj !== 'string') {
-          return JSON.stringify(obj);
-        }
-        return obj;
-      },
-      message, i;
-
-    message = prefix + template.replace(/\{\d+\}/g, function (match) {
-      var index = +match.slice(1, -1), arg;
-
-      if (index + 2 < templateArgs.length) {
-        arg = templateArgs[index + 2];
-        if (typeof arg === 'function') {
-          return arg.toString().replace(/ ?\{[\s\S]*$/, '');
-        } else if (typeof arg === 'undefined') {
-          return 'undefined';
-        } else if (typeof arg !== 'string') {
-          return toJson(arg);
-        }
-        return arg;
-      }
-      return match;
-    });
-
-    message = message + '\nhttp://errors.angularjs.org/1.3.0-build.2607+sha.b2e48e6/' +
-      (module ? module + '/' : '') + code;
-    for (i = 2; i < arguments.length; i++) {
-      message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
-        encodeURIComponent(stringify(arguments[i]));
-    }
-
-    return new Error(message);
-  };
-}
-
-/* We need to tell jshint what variables are being exported */
-/* global
-    -angular,
-    -msie,
-    -jqLite,
-    -jQuery,
-    -slice,
-    -push,
-    -toString,
-    -ngMinErr,
-    -_angular,
-    -angularModule,
-    -nodeName_,
-    -uid,
-
-    -lowercase,
-    -uppercase,
-    -manualLowercase,
-    -manualUppercase,
-    -nodeName_,
-    -isArrayLike,
-    -forEach,
-    -sortedKeys,
-    -forEachSorted,
-    -reverseParams,
-    -nextUid,
-    -setHashKey,
-    -extend,
-    -int,
-    -inherit,
-    -noop,
-    -identity,
-    -valueFn,
-    -isUndefined,
-    -isDefined,
-    -isObject,
-    -isString,
-    -isNumber,
-    -isDate,
-    -isArray,
-    -isFunction,
-    -isRegExp,
-    -isWindow,
-    -isScope,
-    -isFile,
-    -isBlob,
-    -isBoolean,
-    -trim,
-    -isElement,
-    -makeMap,
-    -map,
-    -size,
-    -includes,
-    -indexOf,
-    -arrayRemove,
-    -isLeafNode,
-    -copy,
-    -shallowCopy,
-    -equals,
-    -csp,
-    -concat,
-    -sliceArgs,
-    -bind,
-    -toJsonReplacer,
-    -toJson,
-    -fromJson,
-    -toBoolean,
-    -startingTag,
-    -tryDecodeURIComponent,
-    -parseKeyValue,
-    -toKeyValue,
-    -encodeUriSegment,
-    -encodeUriQuery,
-    -angularInit,
-    -bootstrap,
-    -snake_case,
-    -bindJQuery,
-    -assertArg,
-    -assertArgFn,
-    -assertNotHasOwnProperty,
-    -getter,
-    -getBlockElements,
-    -hasOwnProperty,
-
-*/
-
-////////////////////////////////////
-
-/**
- * @ngdoc module
- * @name ng
- * @module ng
- * @description
- *
- * # ng (core module)
- * The ng module is loaded by default when an AngularJS application is started. The module itself
- * contains the essential components for an AngularJS application to function. The table below
- * lists a high level breakdown of each of the services/factories, filters, directives and testing
- * components available within this core module.
- *
- * <div doc-module-components="ng"></div>
- */
-
-/**
- * @ngdoc function
- * @name angular.lowercase
- * @module ng
- * @function
- *
- * @description Converts the specified string to lowercase.
- * @param {string} string String to be converted to lowercase.
- * @returns {string} Lowercased string.
- */
-var lowercase = function(string){return isString(string) ? string.toLowerCase() : string;};
-var hasOwnProperty = Object.prototype.hasOwnProperty;
-
-/**
- * @ngdoc function
- * @name angular.uppercase
- * @module ng
- * @function
- *
- * @description Converts the specified string to uppercase.
- * @param {string} string String to be converted to uppercase.
- * @returns {string} Uppercased string.
- */
-var uppercase = function(string){return isString(string) ? string.toUpperCase() : string;};
-
-
-var manualLowercase = function(s) {
-  /* jshint bitwise: false */
-  return isString(s)
-      ? s.replace(/[A-Z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) | 32);})
-      : s;
-};
-var manualUppercase = function(s) {
-  /* jshint bitwise: false */
-  return isString(s)
-      ? s.replace(/[a-z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) & ~32);})
-      : s;
-};
-
-
-// String#toLowerCase and String#toUpperCase don't produce correct results in browsers with Turkish
-// locale, for this reason we need to detect this case and redefine lowercase/uppercase methods
-// with correct but slower alternatives.
-if ('i' !== 'I'.toLowerCase()) {
-  lowercase = manualLowercase;
-  uppercase = manualUppercase;
-}
-
-
-var /** holds major version number for IE or NaN for real browsers */
-    msie,
-    jqLite,           // delay binding since jQuery could be loaded after us.
-    jQuery,           // delay binding
-    slice             = [].slice,
-    push              = [].push,
-    toString          = Object.prototype.toString,
-    ngMinErr          = minErr('ng'),
-
-
-    _angular          = window.angular,
-    /** @name angular */
-    angular           = window.angular || (window.angular = {}),
-    angularModule,
-    nodeName_,
-    uid               = ['0', '0', '0'];
-
-/**
- * IE 11 changed the format of the UserAgent string.
- * See http://msdn.microsoft.com/en-us/library/ms537503.aspx
- */
-msie = int((/msie (\d+)/.exec(lowercase(navigator.userAgent)) || [])[1]);
-if (isNaN(msie)) {
-  msie = int((/trident\/.*; rv:(\d+)/.exec(lowercase(navigator.userAgent)) || [])[1]);
-}
-
-
-/**
- * @private
- * @param {*} obj
- * @return {boolean} Returns true if `obj` is an array or array-like object (NodeList, Arguments,
- *                   String ...)
- */
-function isArrayLike(obj) {
-  if (obj == null || isWindow(obj)) {
-    return false;
-  }
-
-  var length = obj.length;
-
-  if (obj.nodeType === 1 && length) {
-    return true;
-  }
-
-  return isString(obj) || isArray(obj) || length === 0 ||
-         typeof length === 'number' && length > 0 && (length - 1) in obj;
-}
-
-/**
- * @ngdoc function
- * @name angular.forEach
- * @module ng
- * @function
- *
- * @description
- * Invokes the `iterator` function once for each item in `obj` collection, which can be either an
- * object or an array. The `iterator` function is invoked with `iterator(value, key)`, where `value`
- * is the value of an object property or an array element and `key` is the object property key or
- * array element index. Specifying a `context` for the function is optional.
- *
- * It is worth noting that `.forEach` does not iterate over inherited properties because it filters
- * using the `hasOwnProperty` method.
- *
-   ```js
-     var values = {name: 'misko', gender: 'male'};
-     var log = [];
-     angular.forEach(values, function(value, key){
-       this.push(key + ': ' + value);
-     }, log);
-     expect(log).toEqual(['name: misko', 'gender: male']);
-   ```
- *
- * @param {Object|Array} obj Object to iterate over.
- * @param {Function} iterator Iterator function.
- * @param {Object=} context Object to become context (`this`) for the iterator function.
- * @returns {Object|Array} Reference to `obj`.
- */
-function forEach(obj, iterator, context) {
-  var key;
-  if (obj) {
-    if (isFunction(obj)){
-      for (key in obj) {
-        // Need to check if hasOwnProperty exists,
-        // as on IE8 the result of querySelectorAll is an object without a hasOwnProperty function
-        if (key != 'prototype' && key != 'length' && key != 'name' && (!obj.hasOwnProperty || obj.hasOwnProperty(key))) {
-          iterator.call(context, obj[key], key);
-        }
-      }
-    } else if (obj.forEach && obj.forEach !== forEach) {
-      obj.forEach(iterator, context);
-    } else if (isArrayLike(obj)) {
-      for (key = 0; key < obj.length; key++)
-        iterator.call(context, obj[key], key);
-    } else {
-      for (key in obj) {
-        if (obj.hasOwnProperty(key)) {
-          iterator.call(context, obj[key], key);
-        }
-      }
-    }
-  }
-  return obj;
-}
-
-function sortedKeys(obj) {
-  var keys = [];
-  for (var key in obj) {
-    if (obj.hasOwnProperty(key)) {
-      keys.push(key);
-    }
-  }
-  return keys.sort();
-}
-
-function forEachSorted(obj, iterator, context) {
-  var keys = sortedKeys(obj);
-  for ( var i = 0; i < keys.length; i++) {
-    iterator.call(context, obj[keys[i]], keys[i]);
-  }
-  return keys;
-}
-
-
-/**
- * when using forEach the params are value, key, but it is often useful to have key, value.
- * @param {function(string, *)} iteratorFn
- * @returns {function(*, string)}
- */
-function reverseParams(iteratorFn) {
-  return function(value, key) { iteratorFn(key, value); };
-}
-
-/**
- * A consistent way of creating unique IDs in angular. The ID is a sequence of alpha numeric
- * characters such as '012ABC'. The reason why we are not using simply a number counter is that
- * the number string gets longer over time, and it can also overflow, where as the nextId
- * will grow much slower, it is a string, and it will never overflow.
- *
- * @returns {string} an unique alpha-numeric string
- */
-function nextUid() {
-  var index = uid.length;
-  var digit;
-
-  while(index) {
-    index--;
-    digit = uid[index].charCodeAt(0);
-    if (digit == 57 /*'9'*/) {
-      uid[index] = 'A';
-      return uid.join('');
-    }
-    if (digit == 90  /*'Z'*/) {
-      uid[index] = '0';
-    } else {
-      uid[index] = String.fromCharCode(digit + 1);
-      return uid.join('');
-    }
-  }
-  uid.unshift('0');
-  return uid.join('');
-}
-
-
-/**
- * Set or clear the hashkey for an object.
- * @param obj object
- * @param h the hashkey (!truthy to delete the hashkey)
- */
-function setHashKey(obj, h) {
-  if (h) {
-    obj.$$hashKey = h;
-  }
-  else {
-    delete obj.$$hashKey;
-  }
-}
-
-/**
- * @ngdoc function
- * @name angular.extend
- * @module ng
- * @function
- *
- * @description
- * Extends the destination object `dst` by copying all of the properties from the `src` object(s)
- * to `dst`. You can specify multiple `src` objects.
- *
- * @param {Object} dst Destination object.
- * @param {...Object} src Source object(s).
- * @returns {Object} Reference to `dst`.
- */
-function extend(dst) {
-  var h = dst.$$hashKey;
-  forEach(arguments, function(obj){
-    if (obj !== dst) {
-      forEach(obj, function(value, key){
-        dst[key] = value;
-      });
-    }
-  });
-
-  setHashKey(dst,h);
-  return dst;
-}
-
-function int(str) {
-  return parseInt(str, 10);
-}
-
-
-function inherit(parent, extra) {
-  return extend(new (extend(function() {}, {prototype:parent}))(), extra);
-}
-
-/**
- * @ngdoc function
- * @name angular.noop
- * @module ng
- * @function
- *
- * @description
- * A function that performs no operations. This function can be useful when writing code in the
- * functional style.
-   ```js
-     function foo(callback) {
-       var result = calculateResult();
-       (callback || angular.noop)(result);
-     }
-   ```
- */
-function noop() {}
-noop.$inject = [];
-
-
-/**
- * @ngdoc function
- * @name angular.identity
- * @module ng
- * @function
- *
- * @description
- * A function that returns its first argument. This function is useful when writing code in the
- * functional style.
- *
-   ```js
-     function transformer(transformationFn, value) {
-       return (transformationFn || angular.identity)(value);
-     };
-   ```
- */
-function identity($) {return $;}
-identity.$inject = [];
-
-
-function valueFn(value) {return function() {return value;};}
-
-/**
- * @ngdoc function
- * @name angular.isUndefined
- * @module ng
- * @function
- *
- * @description
- * Determines if a reference is undefined.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is undefined.
- */
-function isUndefined(value){return typeof value === 'undefined';}
-
-
-/**
- * @ngdoc function
- * @name angular.isDefined
- * @module ng
- * @function
- *
- * @description
- * Determines if a reference is defined.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is defined.
- */
-function isDefined(value){return typeof value !== 'undefined';}
-
-
-/**
- * @ngdoc function
- * @name angular.isObject
- * @module ng
- * @function
- *
- * @description
- * Determines if a reference is an `Object`. Unlike `typeof` in JavaScript, `null`s are not
- * considered to be objects. Note that JavaScript arrays are objects.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is an `Object` but not `null`.
- */
-function isObject(value){return value != null && typeof value === 'object';}
-
-
-/**
- * @ngdoc function
- * @name angular.isString
- * @module ng
- * @function
- *
- * @description
- * Determines if a reference is a `String`.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is a `String`.
- */
-function isString(value){return typeof value === 'string';}
-
-
-/**
- * @ngdoc function
- * @name angular.isNumber
- * @module ng
- * @function
- *
- * @description
- * Determines if a reference is a `Number`.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is a `Number`.
- */
-function isNumber(value){return typeof value === 'number';}
-
-
-/**
- * @ngdoc function
- * @name angular.isDate
- * @module ng
- * @function
- *
- * @description
- * Determines if a value is a date.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is a `Date`.
- */
-function isDate(value){
-  return toString.call(value) === '[object Date]';
-}
-
-
-/**
- * @ngdoc function
- * @name angular.isArray
- * @module ng
- * @function
- *
- * @description
- * Determines if a reference is an `Array`.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is an `Array`.
- */
-function isArray(value) {
-  return toString.call(value) === '[object Array]';
-}
-
-
-/**
- * @ngdoc function
- * @name angular.isFunction
- * @module ng
- * @function
- *
- * @description
- * Determines if a reference is a `Function`.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is a `Function`.
- */
-function isFunction(value){return typeof value === 'function';}
-
-
-/**
- * Determines if a value is a regular expression object.
- *
- * @private
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is a `RegExp`.
- */
-function isRegExp(value) {
-  return toString.call(value) === '[object RegExp]';
-}
-
-
-/**
- * Checks if `obj` is a window object.
- *
- * @private
- * @param {*} obj Object to check
- * @returns {boolean} True if `obj` is a window obj.
- */
-function isWindow(obj) {
-  return obj && obj.document && obj.location && obj.alert && obj.setInterval;
-}
-
-
-function isScope(obj) {
-  return obj && obj.$evalAsync && obj.$watch;
-}
-
-
-function isFile(obj) {
-  return toString.call(obj) === '[object File]';
-}
-
-
-function isBlob(obj) {
-  return toString.call(obj) === '[object Blob]';
-}
-
-
-function isBoolean(value) {
-  return typeof value === 'boolean';
-}
-
-
-var trim = (function() {
-  // native trim is way faster: http://jsperf.com/angular-trim-test
-  // but IE doesn't have it... :-(
-  // TODO: we should move this into IE/ES5 polyfill
-  if (!String.prototype.trim) {
-    return function(value) {
-      return isString(value) ? value.replace(/^\s\s*/, '').replace(/\s\s*$/, '') : value;
-    };
-  }
-  return function(value) {
-    return isString(value) ? value.trim() : value;
-  };
-})();
-
-
-/**
- * @ngdoc function
- * @name angular.isElement
- * @module ng
- * @function
- *
- * @description
- * Determines if a reference is a DOM element (or wrapped jQuery element).
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is a DOM element (or wrapped jQuery element).
- */
-function isElement(node) {
-  return !!(node &&
-    (node.nodeName  // we are a direct element
-    || (node.prop && node.attr && node.find)));  // we have an on and find method part of jQuery API
-}
-
-/**
- * @param str 'key1,key2,...'
- * @returns {object} in the form of {key1:true, key2:true, ...}
- */
-function makeMap(str){
-  var obj = {}, items = str.split(","), i;
-  for ( i = 0; i < items.length; i++ )
-    obj[ items[i] ] = true;
-  return obj;
-}
-
-
-if (msie < 9) {
-  nodeName_ = function(element) {
-    element = element.nodeName ? element : element[0];
-    return (element.scopeName && element.scopeName != 'HTML')
-      ? uppercase(element.scopeName + ':' + element.nodeName) : element.nodeName;
-  };
-} else {
-  nodeName_ = function(element) {
-    return element.nodeName ? element.nodeName : element[0].nodeName;
-  };
-}
-
-
-function map(obj, iterator, context) {
-  var results = [];
-  forEach(obj, function(value, index, list) {
-    results.push(iterator.call(context, value, index, list));
-  });
-  return results;
-}
-
-
-/**
- * @description
- * Determines the number of elements in an array, the number of properties an object has, or
- * the length of a string.
- *
- * Note: This function is used to augment the Object type in Angular expressions. See
- * {@link angular.Object} for more information about Angular arrays.
- *
- * @param {Object|Array|string} obj Object, array, or string to inspect.
- * @param {boolean} [ownPropsOnly=false] Count only "own" properties in an object
- * @returns {number} The size of `obj` or `0` if `obj` is neither an object nor an array.
- */
-function size(obj, ownPropsOnly) {
-  var count = 0, key;
-
-  if (isArray(obj) || isString(obj)) {
-    return obj.length;
-  } else if (isObject(obj)){
-    for (key in obj)
-      if (!ownPropsOnly || obj.hasOwnProperty(key))
-        count++;
-  }
-
-  return count;
-}
-
-
-function includes(array, obj) {
-  return indexOf(array, obj) != -1;
-}
-
-function indexOf(array, obj) {
-  if (array.indexOf) return array.indexOf(obj);
-
-  for (var i = 0; i < array.length; i++) {
-    if (obj === array[i]) return i;
-  }
-  return -1;
-}
-
-function arrayRemove(array, value) {
-  var index = indexOf(array, value);
-  if (index >=0)
-    array.splice(index, 1);
-  return value;
-}
-
-function isLeafNode (node) {
-  if (node) {
-    switch (node.nodeName) {
-    case "OPTION":
-    case "PRE":
-    case "TITLE":
-      return true;
-    }
-  }
-  return false;
-}
-
-/**
- * @ngdoc function
- * @name angular.copy
- * @module ng
- * @function
- *
- * @description
- * Creates a deep copy of `source`, which should be an object or an array.
- *
- * * If no destination is supplied, a copy of the object or array is created.
- * * If a destination is provided, all of its elements (for array) or properties (for objects)
- *   are deleted and then all elements/properties from the source are copied to it.
- * * If `source` is not an object or array (inc. `null` and `undefined`), `source` is returned.
- * * If `source` is identical to 'destination' an exception will be thrown.
- *
- * @param {*} source The source that will be used to make a copy.
- *                   Can be any type, including primitives, `null`, and `undefined`.
- * @param {(Object|Array)=} destination Destination into which the source is copied. If
- *     provided, must be of the same type as `source`.
- * @returns {*} The copy or updated `destination`, if `destination` was specified.
- *
- * @example
- <example>
- <file name="index.html">
- <div ng-controller="Controller">
- <form novalidate class="simple-form">
- Name: <input type="text" ng-model="user.name" /><br />
- E-mail: <input type="email" ng-model="user.email" /><br />
- Gender: <input type="radio" ng-model="user.gender" value="male" />male
- <input type="radio" ng-model="user.gender" value="female" />female<br />
- <button ng-click="reset()">RESET</button>
- <button ng-click="update(user)">SAVE</button>
- </form>
- <pre>form = {{user | json}}</pre>
- <pre>master = {{master | json}}</pre>
- </div>
-
- <script>
- function Controller($scope) {
-    $scope.master= {};
-
-    $scope.update = function(user) {
-      // Example with 1 argument
-      $scope.master= angular.copy(user);
-    };
-
-    $scope.reset = function() {
-      // Example with 2 arguments
-      angular.copy($scope.master, $scope.user);
-    };
-
-    $scope.reset();
-  }
- </script>
- </file>
- </example>
- */
-function copy(source, destination){
-  if (isWindow(source) || isScope(source)) {
-    throw ngMinErr('cpws',
-      "Can't copy! Making copies of Window or Scope instances is not supported.");
-  }
-
-  if (!destination) {
-    destination = source;
-    if (source) {
-      if (isArray(source)) {
-        destination = copy(source, []);
-      } else if (isDate(source)) {
-        destination = new Date(source.getTime());
-      } else if (isRegExp(source)) {
-        destination = new RegExp(source.source);
-      } else if (isObject(source)) {
-        destination = copy(source, {});
-      }
-    }
-  } else {
-    if (source === destination) throw ngMinErr('cpi',
-      "Can't copy! Source and destination are identical.");
-    if (isArray(source)) {
-      destination.length = 0;
-      for ( var i = 0; i < source.length; i++) {
-        destination.push(copy(source[i]));
-      }
-    } else {
-      var h = destination.$$hashKey;
-      forEach(destination, function(value, key){
-        delete destination[key];
-      });
-      for ( var key in source) {
-        destination[key] = copy(source[key]);
-      }
-      setHashKey(destination,h);
-    }
-  }
-  return destination;
-}
-
-/**
- * Create a shallow copy of an object
- */
-function shallowCopy(src, dst) {
-  dst = dst || {};
-
-  for(var key in src) {
-    // shallowCopy is only ever called by $compile nodeLinkFn, which has control over src
-    // so we don't need to worry about using our custom hasOwnProperty here
-    if (src.hasOwnProperty(key) && !(key.charAt(0) === '$' && key.charAt(1) === '$')) {
-      dst[key] = src[key];
-    }
-  }
-
-  return dst;
-}
-
-
-/**
- * @ngdoc function
- * @name angular.equals
- * @module ng
- * @function
- *
- * @description
- * Determines if two objects or two values are equivalent. Supports value types, regular
- * expressions, arrays and objects.
- *
- * Two objects or values are considered equivalent if at least one of the following is true:
- *
- * * Both objects or values pass `===` comparison.
- * * Both objects or values are of the same type and all of their properties are equal by
- *   comparing them with `angular.equals`.
- * * Both values are NaN. (In JavaScript, NaN == NaN => false. But we consider two NaN as equal)
- * * Both values represent the same regular expression (In JavasScript,
- *   /abc/ == /abc/ => false. But we consider two regular expressions as equal when their textual
- *   representation matches).
- *
- * During a property comparison, properties of `function` type and properties with names
- * that begin with `$` are ignored.
- *
- * Scope and DOMWindow objects are being compared only by identify (`===`).
- *
- * @param {*} o1 Object or value to compare.
- * @param {*} o2 Object or value to compare.
- * @returns {boolean} True if arguments are equal.
- */
-function equals(o1, o2) {
-  if (o1 === o2) return true;
-  if (o1 === null || o2 === null) return false;
-  if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN
-  var t1 = typeof o1, t2 = typeof o2, length, key, keySet;
-  if (t1 == t2) {
-    if (t1 == 'object') {
-      if (isArray(o1)) {
-        if (!isArray(o2)) return false;
-        if ((length = o1.length) == o2.length) {
-          for(key=0; key<length; key++) {
-            if (!equals(o1[key], o2[key])) return false;
-          }
-          return true;
-        }
-      } else if (isDate(o1)) {
-        return isDate(o2) && o1.getTime() == o2.getTime();
-      } else if (isRegExp(o1) && isRegExp(o2)) {
-        return o1.toString() == o2.toString();
-      } else {
-        if (isScope(o1) || isScope(o2) || isWindow(o1) || isWindow(o2) || isArray(o2)) return false;
-        keySet = {};
-        for(key in o1) {
-          if (key.charAt(0) === '$' || isFunction(o1[key])) continue;
-          if (!equals(o1[key], o2[key])) return false;
-          keySet[key] = true;
-        }
-        for(key in o2) {
-          if (!keySet.hasOwnProperty(key) &&
-              key.charAt(0) !== '$' &&
-              o2[key] !== undefined &&
-              !isFunction(o2[key])) return false;
-        }
-        return true;
-      }
-    }
-  }
-  return false;
-}
-
-
-function csp() {
-  return (document.securityPolicy && document.securityPolicy.isActive) ||
-      (document.querySelector &&
-      !!(document.querySelector('[ng-csp]') || document.querySelector('[data-ng-csp]')));
-}
-
-
-function concat(array1, array2, index) {
-  return array1.concat(slice.call(array2, index));
-}
-
-function sliceArgs(args, startIndex) {
-  return slice.call(args, startIndex || 0);
-}
-
-
-/* jshint -W101 */
-/**
- * @ngdoc function
- * @name angular.bind
- * @module ng
- * @function
- *
- * @description
- * Returns a function which calls function `fn` bound to `self` (`self` becomes the `this` for
- * `fn`). You can supply optional `args` that are prebound to the function. This feature is also
- * known as [partial application](http://en.wikipedia.org/wiki/Partial_application), as
- * distinguished from [function currying](http://en.wikipedia.org/wiki/Currying#Contrast_with_partial_function_application).
- *
- * @param {Object} self Context which `fn` should be evaluated in.
- * @param {function()} fn Function to be bound.
- * @param {...*} args Optional arguments to be prebound to the `fn` function call.
- * @returns {function()} Function that wraps the `fn` with all the specified bindings.
- */
-/* jshint +W101 */
-function bind(self, fn) {
-  var curryArgs = arguments.length > 2 ? sliceArgs(arguments, 2) : [];
-  if (isFunction(fn) && !(fn instanceof RegExp)) {
-    return curryArgs.length
-      ? function() {
-          return arguments.length
-            ? fn.apply(self, curryArgs.concat(slice.call(arguments, 0)))
-            : fn.apply(self, curryArgs);
-        }
-      : function() {
-          return arguments.length
-            ? fn.apply(self, arguments)
-            : fn.call(self);
-        };
-  } else {
-    // in IE, native methods are not functions so they cannot be bound (note: they don't need to be)
-    return fn;
-  }
-}
-
-
-function toJsonReplacer(key, value) {
-  var val = value;
-
-  if (typeof key === 'string' && key.charAt(0) === '$') {
-    val = undefined;
-  } else if (isWindow(value)) {
-    val = '$WINDOW';
-  } else if (value &&  document === value) {
-    val = '$DOCUMENT';
-  } else if (isScope(value)) {
-    val = '$SCOPE';
-  }
-
-  return val;
-}
-
-
-/**
- * @ngdoc function
- * @name angular.toJson
- * @module ng
- * @function
- *
- * @description
- * Serializes input into a JSON-formatted string. Properties with leading $ characters will be
- * stripped since angular uses this notation internally.
- *
- * @param {Object|Array|Date|string|number} obj Input to be serialized into JSON.
- * @param {boolean=} pretty If set to true, the JSON output will contain newlines and whitespace.
- * @returns {string|undefined} JSON-ified string representing `obj`.
- */
-function toJson(obj, pretty) {
-  if (typeof obj === 'undefined') return undefined;
-  return JSON.stringify(obj, toJsonReplacer, pretty ? '  ' : null);
-}
-
-
-/**
- * @ngdoc function
- * @name angular.fromJson
- * @module ng
- * @function
- *
- * @description
- * Deserializes a JSON string.
- *
- * @param {string} json JSON string to deserialize.
- * @returns {Object|Array|string|number} Deserialized thingy.
- */
-function fromJson(json) {
-  return isString(json)
-      ? JSON.parse(json)
-      : json;
-}
-
-
-function toBoolean(value) {
-  if (typeof value === 'function') {
-    value = true;
-  } else if (value && value.length !== 0) {
-    var v = lowercase("" + value);
-    value = !(v == 'f' || v == '0' || v == 'false' || v == 'no' || v == 'n' || v == '[]');
-  } else {
-    value = false;
-  }
-  return value;
-}
-
-/**
- * @returns {string} Returns the string representation of the element.
- */
-function startingTag(element) {
-  element = jqLite(element).clone();
-  try {
-    // turns out IE does not let you set .html() on elements which
-    // are not allowed to have children. So we just ignore it.
-    element.empty();
-  } catch(e) {}
-  // As Per DOM Standards
-  var TEXT_NODE = 3;
-  var elemHtml = jqLite('<div>').append(element).html();
-  try {
-    return element[0].nodeType === TEXT_NODE ? lowercase(elemHtml) :
-        elemHtml.
-          match(/^(<[^>]+>)/)[1].
-          replace(/^<([\w\-]+)/, function(match, nodeName) { return '<' + lowercase(nodeName); });
-  } catch(e) {
-    return lowercase(elemHtml);
-  }
-
-}
-
-
-/////////////////////////////////////////////////
-
-/**
- * Tries to decode the URI component without throwing an exception.
- *
- * @private
- * @param str value potential URI component to check.
- * @returns {boolean} True if `value` can be decoded
- * with the decodeURIComponent function.
- */
-function tryDecodeURIComponent(value) {
-  try {
-    return decodeURIComponent(value);
-  } catch(e) {
-    // Ignore any invalid uri component
-  }
-}
-
-
-/**
- * Parses an escaped url query string into key-value pairs.
- * @returns {Object.<string,boolean|Array>}
- */
-function parseKeyValue(/**string*/keyValue) {
-  var obj = {}, key_value, key;
-  forEach((keyValue || "").split('&'), function(keyValue){
-    if ( keyValue ) {
-      key_value = keyValue.split('=');
-      key = tryDecodeURIComponent(key_value[0]);
-      if ( isDefined(key) ) {
-        var val = isDefined(key_value[1]) ? tryDecodeURIComponent(key_value[1]) : true;
-        if (!obj[key]) {
-          obj[key] = val;
-        } else if(isArray(obj[key])) {
-          obj[key].push(val);
-        } else {
-          obj[key] = [obj[key],val];
-        }
-      }
-    }
-  });
-  return obj;
-}
-
-function toKeyValue(obj) {
-  var parts = [];
-  forEach(obj, function(value, key) {
-    if (isArray(value)) {
-      forEach(value, function(arrayValue) {
-        parts.push(encodeUriQuery(key, true) +
-                   (arrayValue === true ? '' : '=' + encodeUriQuery(arrayValue, true)));
-      });
-    } else {
-    parts.push(encodeUriQuery(key, true) +
-               (value === true ? '' : '=' + encodeUriQuery(value, true)));
-    }
-  });
-  return parts.length ? parts.join('&') : '';
-}
-
-
-/**
- * We need our custom method because encodeURIComponent is too aggressive and doesn't follow
- * http://www.ietf.org/rfc/rfc3986.txt with regards to the character set (pchar) allowed in path
- * segments:
- *    segment       = *pchar
- *    pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
- *    pct-encoded   = "%" HEXDIG HEXDIG
- *    unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
- *    sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
- *                     / "*" / "+" / "," / ";" / "="
- */
-function encodeUriSegment(val) {
-  return encodeUriQuery(val, true).
-             replace(/%26/gi, '&').
-             replace(/%3D/gi, '=').
-             replace(/%2B/gi, '+');
-}
-
-
-/**
- * This method is intended for encoding *key* or *value* parts of query component. We need a custom
- * method because encodeURIComponent is too aggressive and encodes stuff that doesn't have to be
- * encoded per http://tools.ietf.org/html/rfc3986:
- *    query       = *( pchar / "/" / "?" )
- *    pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
- *    unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
- *    pct-encoded   = "%" HEXDIG HEXDIG
- *    sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
- *                     / "*" / "+" / "," / ";" / "="
- */
-function encodeUriQuery(val, pctEncodeSpaces) {
-  return encodeURIComponent(val).
-             replace(/%40/gi, '@').
-             replace(/%3A/gi, ':').
-             replace(/%24/g, '$').
-             replace(/%2C/gi, ',').
-             replace(/%20/g, (pctEncodeSpaces ? '%20' : '+'));
-}
-
-var ngAttrPrefixes = ['ng-', 'data-ng-', 'ng:', 'x-ng-'];
-
-function getNgAttribute(element, ngAttr) {
-  var attr, i, ii = ngAttrPrefixes.length, j, jj;
-  element = jqLite(element);
-  for (i=0; i<ii; ++i) {
-    attr = ngAttrPrefixes[i] + ngAttr;
-    if (isString(attr = element.attr(attr))) {
-      return attr;
-    }
-  }
-  return null;
-}
-
-/**
- * @ngdoc directive
- * @name ngApp
- * @module ng
- *
- * @element ANY
- * @param {angular.Module} ngApp an optional application
- *   {@link angular.module module} name to load.
- * @param {boolean=} ngStrictDi if this attribute is present on the app element, the injector will be
- *   created in "strict-di" mode. This means that the application will fail to invoke functions which
- *   do not use explicit function annotation (and are thus unsuitable for minification), as described
- *   in {@link guide/di the Dependency Injection guide}, and useful debugging info will assist in
- *   tracking down the root of these bugs.
- *
- * @description
- *
- * Use this directive to **auto-bootstrap** an AngularJS application. The `ngApp` directive
- * designates the **root element** of the application and is typically placed near the root element
- * of the page - e.g. on the `<body>` or `<html>` tags.
- *
- * Only one AngularJS application can be auto-bootstrapped per HTML document. The first `ngApp`
- * found in the document will be used to define the root element to auto-bootstrap as an
- * application. To run multiple applications in an HTML document you must manually bootstrap them using
- * {@link angular.bootstrap} instead. AngularJS applications cannot be nested within each other.
- *
- * You can specify an **AngularJS module** to be used as the root module for the application.  This
- * module will be loaded into the {@link auto.$injector} when the application is bootstrapped and
- * should contain the application code needed or have dependencies on other modules that will
- * contain the code. See {@link angular.module} for more information.
- *
- * In the example below if the `ngApp` directive were not placed on the `html` element then the
- * document would not be compiled, the `AppController` would not be instantiated and the `{{ a+b }}`
- * would not be resolved to `3`.
- *
- * `ngApp` is the easiest, and most common, way to bootstrap an application.
- *
- <example module="ngAppDemo">
-   <file name="index.html">
-   <div ng-controller="ngAppDemoController">
-     I can add: {{a}} + {{b}} =  {{ a+b }}
-   </div>
-   </file>
-   <file name="script.js">
-   angular.module('ngAppDemo', []).controller('ngAppDemoController', function($scope) {
-     $scope.a = 1;
-     $scope.b = 2;
-   });
-   </file>
- </example>
- *
- * Using `ngStrictDi`, you would see something like this:
- *
- <example ng-app-included="true">
-   <file name="index.html">
-   <div ng-app="ngAppStrictDemo" ng-strict-di>
-       <div ng-controller="GoodController1">
-           I can add: {{a}} + {{b}} =  {{ a+b }}
-
-           <p>This renders because the controller does not fail to
-              instantiate, by using explicit annotation style (see
-              script.js for details)
-           </p>
-       </div>
-
-       <div ng-controller="GoodController2">
-           Name: <input ng-model="name"><br />
-           Hello, {{name}}!
-
-           <p>This renders because the controller does not fail to
-              instantiate, by using explicit annotation style
-              (see script.js for details)
-           </p>
-       </div>
-
-       <div ng-controller="BadController">
-           I can add: {{a}} + {{b}} =  {{ a+b }}
-
-           <p>The controller could not be instantiated, due to relying
-              on automatic function annotations (which are disabled in
-              strict mode). As such, the content of this section is not
-              interpolated, and there should be an error in your web console.
-           </p>
-       </div>
-   </div>
-   </file>
-   <file name="script.js">
-   angular.module('ngAppStrictDemo', [])
-     // BadController will fail to instantiate, due to relying on automatic function annotation,
-     // rather than an explicit annotation
-     .controller('BadController', function($scope) {
-       $scope.a = 1;
-       $scope.b = 2;
-     })
-     // Unlike BadController, GoodController1 and GoodController2 will not fail to be instantiated,
-     // due to using explicit annotations using the array style and $inject property, respectively.
-     .controller('GoodController1', ['$scope', function($scope) {
-       $scope.a = 1;
-       $scope.b = 2;
-     }])
-     .controller('GoodController2', GoodController2);
-     function GoodController2($scope) {
-       $scope.name = "World";
-     }
-     GoodController2.$inject = ['$scope'];
-   </file>
-   <file name="style.css">
-   div[ng-controller] {
-       margin-bottom: 1em;
-       -webkit-border-radius: 4px;
-       border-radius: 4px;
-       border: 1px solid;
-       padding: .5em;
-   }
-   div[ng-controller^=Good] {
-       border-color: #d6e9c6;
-       background-color: #dff0d8;
-       color: #3c763d;
-   }
-   div[ng-controller^=Bad] {
-       border-color: #ebccd1;
-       background-color: #f2dede;
-       color: #a94442;
-       margin-bottom: 0;
-   }
-   </file>
- </example>
- */
-function angularInit(element, bootstrap) {
-  var elements = [element],
-      appElement,
-      module,
-      config = {},
-      names = ['ng:app', 'ng-app', 'x-ng-app', 'data-ng-app'],
-      options = {
-        'boolean': ['strict-di']
-      },
-      NG_APP_CLASS_REGEXP = /\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;
-
-  function append(element) {
-    element && elements.push(element);
-  }
-
-  forEach(names, function(name) {
-    names[name] = true;
-    append(document.getElementById(name));
-    name = name.replace(':', '\\:');
-    if (element.querySelectorAll) {
-      forEach(element.querySelectorAll('.' + name), append);
-      forEach(element.querySelectorAll('.' + name + '\\:'), append);
-      forEach(element.querySelectorAll('[' + name + ']'), append);
-    }
-  });
-
-  forEach(elements, function(element) {
-    if (!appElement) {
-      var className = ' ' + element.className + ' ';
-      var match = NG_APP_CLASS_REGEXP.exec(className);
-      if (match) {
-        appElement = element;
-        module = (match[2] || '').replace(/\s+/g, ',');
-      } else {
-        forEach(element.attributes, function(attr) {
-          if (!appElement && names[attr.name]) {
-            appElement = element;
-            module = attr.value;
-          }
-        });
-      }
-    }
-  });
-  if (appElement) {
-    config.strictDi = getNgAttribute(appElement, "strict-di") !== null;
-    bootstrap(appElement, module ? [module] : [], config);
-  }
-}
-
-/**
- * @ngdoc function
- * @name angular.bootstrap
- * @module ng
- * @description
- * Use this function to manually start up angular application.
- *
- * See: {@link guide/bootstrap Bootstrap}
- *
- * Note that Protractor based end-to-end tests cannot use this function to bootstrap manually.
- * They must use {@link ng.directive:ngApp ngApp}.
- *
- * Angular will detect if it has been loaded into the browser more than once and only allow the
- * first loaded script to be bootstrapped and will report a warning to the browser console for
- * each of the subsequent scripts.   This prevents strange results in applications, where otherwise
- * multiple instances of Angular try to work on the DOM.
- *
- * ```html
- * <!doctype html>
- * <html>
- * <body>
- * <div ng-controller="WelcomeController">
- *   {{greeting}}
- * </div>
- *
- * <script src="angular.js"></script>
- * <script>
- *   var app = angular.module('demo', [])
- *   .controller('WelcomeController', function($scope) {
- *       $scope.greeting = 'Welcome!';
- *   });
- *   angular.bootstrap(document, ['demo']);
- * </script>
- * </body>
- * </html>
- * ```
- *
- * @param {DOMElement} element DOM element which is the root of angular application.
- * @param {Array<String|Function|Array>=} modules an array of modules to load into the application.
- *     Each item in the array should be the name of a predefined module or a (DI annotated)
- *     function that will be invoked by the injector as a run block.
- *     See: {@link angular.module modules}
- * @param {Object=} config an object for defining configuration options for the application. The
- *     following keys are supported:
- *
- *     - `strictDi`: disable automatic function annotation for the application. This is meant to
- *       assist in finding bugs which break minified code.
- *
- * @returns {auto.$injector} Returns the newly created injector for this app.
- */
-function bootstrap(element, modules, config) {
-  if (!isObject(config)) config = {};
-  var defaultConfig = {
-    strictDi: false
-  };
-  config = extend(defaultConfig, config);
-  var doBootstrap = function() {
-    element = jqLite(element);
-
-    if (element.injector()) {
-      var tag = (element[0] === document) ? 'document' : startingTag(element);
-      throw ngMinErr('btstrpd', "App Already Bootstrapped with this Element '{0}'", tag);
-    }
-
-    modules = modules || [];
-    modules.unshift(['$provide', function($provide) {
-      $provide.value('$rootElement', element);
-    }]);
-    modules.unshift('ng');
-    var injector = createInjector(modules, config.strictDi);
-    injector.invoke(['$rootScope', '$rootElement', '$compile', '$injector', '$animate',
-       function(scope, element, compile, injector, animate) {
-        scope.$apply(function() {
-          element.data('$injector', injector);
-          compile(element)(scope);
-        });
-      }]
-    );
-    return injector;
-  };
-
-  var NG_DEFER_BOOTSTRAP = /^NG_DEFER_BOOTSTRAP!/;
-
-  if (window && !NG_DEFER_BOOTSTRAP.test(window.name)) {
-    return doBootstrap();
-  }
-
-  window.name = window.name.replace(NG_DEFER_BOOTSTRAP, '');
-  angular.resumeBootstrap = function(extraModules) {
-    forEach(extraModules, function(module) {
-      modules.push(module);
-    });
-    doBootstrap();
-  };
-}
-
-var SNAKE_CASE_REGEXP = /[A-Z]/g;
-function snake_case(name, separator){
-  separator = separator || '_';
-  return name.replace(SNAKE_CASE_REGEXP, function(letter, pos) {
-    return (pos ? separator : '') + letter.toLowerCase();
-  });
-}
-
-function bindJQuery() {
-  // bind to jQuery if present;
-  jQuery = window.jQuery;
-  // reset to jQuery or default to us.
-  if (jQuery) {
-    jqLite = jQuery;
-    extend(jQuery.fn, {
-      scope: JQLitePrototype.scope,
-      isolateScope: JQLitePrototype.isolateScope,
-      controller: JQLitePrototype.controller,
-      injector: JQLitePrototype.injector,
-      inheritedData: JQLitePrototype.inheritedData
-    });
-    // Method signature:
-    //     jqLitePatchJQueryRemove(name, dispatchThis, filterElems, getterIfNoArguments)
-    jqLitePatchJQueryRemove('remove', true, true, false);
-    jqLitePatchJQueryRemove('empty', false, false, false);
-    jqLitePatchJQueryRemove('html', false, false, true);
-  } else {
-    jqLite = JQLite;
-  }
-  angular.element = jqLite;
-}
-
-/**
- * throw error if the argument is falsy.
- */
-function assertArg(arg, name, reason) {
-  if (!arg) {
-    throw ngMinErr('areq', "Argument '{0}' is {1}", (name || '?'), (reason || "required"));
-  }
-  return arg;
-}
-
-function assertArgFn(arg, name, acceptArrayAnnotation) {
-  if (acceptArrayAnnotation && isArray(arg)) {
-      arg = arg[arg.length - 1];
-  }
-
-  assertArg(isFunction(arg), name, 'not a function, got ' +
-      (arg && typeof arg == 'object' ? arg.constructor.name || 'Object' : typeof arg));
-  return arg;
-}
-
-/**
- * throw error if the name given is hasOwnProperty
- * @param  {String} name    the name to test
- * @param  {String} context the context in which the name is used, such as module or directive
- */
-function assertNotHasOwnProperty(name, context) {
-  if (name === 'hasOwnProperty') {
-    throw ngMinErr('badname', "hasOwnProperty is not a valid {0} name", context);
-  }
-}
-
-/**
- * Return the value accessible from the object by path. Any undefined traversals are ignored
- * @param {Object} obj starting object
- * @param {String} path path to traverse
- * @param {boolean} [bindFnToScope=true]
- * @returns {Object} value as accessible by path
- */
-//TODO(misko): this function needs to be removed
-function getter(obj, path, bindFnToScope) {
-  if (!path) return obj;
-  var keys = path.split('.');
-  var key;
-  var lastInstance = obj;
-  var len = keys.length;
-
-  for (var i = 0; i < len; i++) {
-    key = keys[i];
-    if (obj) {
-      obj = (lastInstance = obj)[key];
-    }
-  }
-  if (!bindFnToScope && isFunction(obj)) {
-    return bind(lastInstance, obj);
-  }
-  return obj;
-}
-
-/**
- * Return the DOM siblings between the first and last node in the given array.
- * @param {Array} array like object
- * @returns {DOMElement} object containing the elements
- */
-function getBlockElements(nodes) {
-  var startNode = nodes[0],
-      endNode = nodes[nodes.length - 1];
-  if (startNode === endNode) {
-    return jqLite(startNode);
-  }
-
-  var element = startNode;
-  var elements = [element];
-
-  do {
-    element = element.nextSibling;
-    if (!element) break;
-    elements.push(element);
-  } while (element !== endNode);
-
-  return jqLite(elements);
-}
-
-/**
- * @ngdoc type
- * @name angular.Module
- * @module ng
- * @description
- *
- * Interface for configuring angular {@link angular.module modules}.
- */
-
-function setupModuleLoader(window) {
-
-  var $injectorMinErr = minErr('$injector');
-  var ngMinErr = minErr('ng');
-
-  function ensure(obj, name, factory) {
-    return obj[name] || (obj[name] = factory());
-  }
-
-  var angular = ensure(window, 'angular', Object);
-
-  // We need to expose `angular.$$minErr` to modules such as `ngResource` that reference it during bootstrap
-  angular.$$minErr = angular.$$minErr || minErr;
-
-  return ensure(angular, 'module', function() {
-    /** @type {Object.<string, angular.Module>} */
-    var modules = {};
-
-    /**
-     * @ngdoc function
-     * @name angular.module
-     * @module ng
-     * @description
-     *
-     * The `angular.module` is a global place for creating, registering and retrieving Angular
-     * modules.
-     * All modules (angular core or 3rd party) that should be available to an application must be
-     * registered using this mechanism.
-     *
-     * When passed two or more arguments, a new module is created.  If passed only one argument, an
-     * existing module (the name passed as the first argument to `module`) is retrieved.
-     *
-     *
-     * # Module
-     *
-     * A module is a collection of services, directives, filters, and configuration information.
-     * `angular.module` is used to configure the {@link auto.$injector $injector}.
-     *
-     * ```js
-     * // Create a new module
-     * var myModule = angular.module('myModule', []);
-     *
-     * // register a new service
-     * myModule.value('appName', 'MyCoolApp');
-     *
-     * // configure existing services inside initialization blocks.
-     * myModule.config(['$locationProvider', function($locationProvider) {
-     *   // Configure existing providers
-     *   $locationProvider.hashPrefix('!');
-     * }]);
-     * ```
-     *
-     * Then you can create an injector and load your modules like this:
-     *
-     * ```js
-     * var injector = angular.injector(['ng', 'myModule'])
-     * ```
-     *
-     * However it's more likely that you'll just use
-     * {@link ng.directive:ngApp ngApp} or
-     * {@link angular.bootstrap} to simplify this process for you.
-     *
-     * @param {!string} name The name of the module to create or retrieve.
-     * @param {!Array.<string>=} requires If specified then new module is being created. If
-     *        unspecified then the module is being retrieved for further configuration.
-     * @param {Function=} configFn Optional configuration function for the module. Same as
-     *        {@link angular.Module#config Module#config()}.
-     * @returns {module} new module with the {@link angular.Module} api.
-     */
-    return function module(name, requires, configFn) {
-      var assertNotHasOwnProperty = function(name, context) {
-        if (name === 'hasOwnProperty') {
-          throw ngMinErr('badname', 'hasOwnProperty is not a valid {0} name', context);
-        }
-      };
-
-      assertNotHasOwnProperty(name, 'module');
-      if (requires && modules.hasOwnProperty(name)) {
-        modules[name] = null;
-      }
-      return ensure(modules, name, function() {
-        if (!requires) {
-          throw $injectorMinErr('nomod', "Module '{0}' is not available! You either misspelled " +
-             "the module name or forgot to load it. If registering a module ensure that you " +
-             "specify the dependencies as the second argument.", name);
-        }
-
-        /** @type {!Array.<Array.<*>>} */
-        var invokeQueue = [];
-
-        /** @type {!Array.<Function>} */
-        var runBlocks = [];
-
-        var config = invokeLater('$injector', 'invoke');
-
-        /** @type {angular.Module} */
-        var moduleInstance = {
-          // Private state
-          _invokeQueue: invokeQueue,
-          _runBlocks: runBlocks,
-
-          /**
-           * @ngdoc property
-           * @name angular.Module#requires
-           * @module ng
-           * @returns {Array.<string>} List of module names which must be loaded before this module.
-           * @description
-           * Holds the list of modules which the injector will load before the current module is
-           * loaded.
-           */
-          requires: requires,
-
-          /**
-           * @ngdoc property
-           * @name angular.Module#name
-           * @module ng
-           * @returns {string} Name of the module.
-           * @description
-           */
-          name: name,
-
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#provider
-           * @module ng
-           * @param {string} name service name
-           * @param {Function} providerType Construction function for creating new instance of the
-           *                                service.
-           * @description
-           * See {@link auto.$provide#provider $provide.provider()}.
-           */
-          provider: invokeLater('$provide', 'provider'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#factory
-           * @module ng
-           * @param {string} name service name
-           * @param {Function} providerFunction Function for creating new instance of the service.
-           * @description
-           * See {@link auto.$provide#factory $provide.factory()}.
-           */
-          factory: invokeLater('$provide', 'factory'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#service
-           * @module ng
-           * @param {string} name service name
-           * @param {Function} constructor A constructor function that will be instantiated.
-           * @description
-           * See {@link auto.$provide#service $provide.service()}.
-           */
-          service: invokeLater('$provide', 'service'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#value
-           * @module ng
-           * @param {string} name service name
-           * @param {*} object Service instance object.
-           * @description
-           * See {@link auto.$provide#value $provide.value()}.
-           */
-          value: invokeLater('$provide', 'value'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#constant
-           * @module ng
-           * @param {string} name constant name
-           * @param {*} object Constant value.
-           * @description
-           * Because the constant are fixed, they get applied before other provide methods.
-           * See {@link auto.$provide#constant $provide.constant()}.
-           */
-          constant: invokeLater('$provide', 'constant', 'unshift'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#animation
-           * @module ng
-           * @param {string} name animation name
-           * @param {Function} animationFactory Factory function for creating new instance of an
-           *                                    animation.
-           * @description
-           *
-           * **NOTE**: animations take effect only if the **ngAnimate** module is loaded.
-           *
-           *
-           * Defines an animation hook that can be later used with
-           * {@link ngAnimate.$animate $animate} service and directives that use this service.
-           *
-           * ```js
-           * module.animation('.animation-name', function($inject1, $inject2) {
-           *   return {
-           *     eventName : function(element, done) {
-           *       //code to run the animation
-           *       //once complete, then run done()
-           *       return function cancellationFunction(element) {
-           *         //code to cancel the animation
-           *       }
-           *     }
-           *   }
-           * })
-           * ```
-           *
-           * See {@link ngAnimate.$animateProvider#register $animateProvider.register()} and
-           * {@link ngAnimate ngAnimate module} for more information.
-           */
-          animation: invokeLater('$animateProvider', 'register'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#filter
-           * @module ng
-           * @param {string} name Filter name.
-           * @param {Function} filterFactory Factory function for creating new instance of filter.
-           * @description
-           * See {@link ng.$filterProvider#register $filterProvider.register()}.
-           */
-          filter: invokeLater('$filterProvider', 'register'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#controller
-           * @module ng
-           * @param {string|Object} name Controller name, or an object map of controllers where the
-           *    keys are the names and the values are the constructors.
-           * @param {Function} constructor Controller constructor function.
-           * @description
-           * See {@link ng.$controllerProvider#register $controllerProvider.register()}.
-           */
-          controller: invokeLater('$controllerProvider', 'register'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#directive
-           * @module ng
-           * @param {string|Object} name Directive name, or an object map of directives where the
-           *    keys are the names and the values are the factories.
-           * @param {Function} directiveFactory Factory function for creating new instance of
-           * directives.
-           * @description
-           * See {@link ng.$compileProvider#directive $compileProvider.directive()}.
-           */
-          directive: invokeLater('$compileProvider', 'directive'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#config
-           * @module ng
-           * @param {Function} configFn Execute this function on module load. Useful for service
-           *    configuration.
-           * @description
-           * Use this method to register work which needs to be performed on module loading.
-           */
-          config: config,
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#run
-           * @module ng
-           * @param {Function} initializationFn Execute this function after injector creation.
-           *    Useful for application initialization.
-           * @description
-           * Use this method to register work which should be performed when the injector is done
-           * loading all modules.
-           */
-          run: function(block) {
-            runBlocks.push(block);
-            return this;
-          }
-        };
-
-        if (configFn) {
-          config(configFn);
-        }
-
-        return  moduleInstance;
-
-        /**
-         * @param {string} provider
-         * @param {string} method
-         * @param {String=} insertMethod
-         * @returns {angular.Module}
-         */
-        function invokeLater(provider, method, insertMethod) {
-          return function() {
-            invokeQueue[insertMethod || 'push']([provider, method, arguments]);
-            return moduleInstance;
-          };
-        }
-      });
-    };
-  });
-
-}
-
-/* global
-    angularModule: true,
-    version: true,
-
-    $LocaleProvider,
-    $CompileProvider,
-
-    htmlAnchorDirective,
-    inputDirective,
-    inputDirective,
-    formDirective,
-    scriptDirective,
-    selectDirective,
-    styleDirective,
-    optionDirective,
-    ngBindDirective,
-    ngBindHtmlDirective,
-    ngBindTemplateDirective,
-    ngClassDirective,
-    ngClassEvenDirective,
-    ngClassOddDirective,
-    ngCspDirective,
-    ngCloakDirective,
-    ngControllerDirective,
-    ngFormDirective,
-    ngHideDirective,
-    ngIfDirective,
-    ngIncludeDirective,
-    ngIncludeFillContentDirective,
-    ngInitDirective,
-    ngNonBindableDirective,
-    ngPluralizeDirective,
-    ngRepeatDirective,
-    ngShowDirective,
-    ngStyleDirective,
-    ngSwitchDirective,
-    ngSwitchWhenDirective,
-    ngSwitchDefaultDirective,
-    ngOptionsDirective,
-    ngTranscludeDirective,
-    ngModelDirective,
-    ngListDirective,
-    ngChangeDirective,
-    requiredDirective,
-    requiredDirective,
-    ngValueDirective,
-    ngModelOptionsDirective,
-    ngAttributeAliasDirectives,
-    ngEventDirectives,
-
-    $AnchorScrollProvider,
-    $AnimateProvider,
-    $BrowserProvider,
-    $CacheFactoryProvider,
-    $ControllerProvider,
-    $DocumentProvider,
-    $ExceptionHandlerProvider,
-    $FilterProvider,
-    $InterpolateProvider,
-    $IntervalProvider,
-    $HttpProvider,
-    $HttpBackendProvider,
-    $LocationProvider,
-    $LogProvider,
-    $ParseProvider,
-    $RootScopeProvider,
-    $QProvider,
-    $$SanitizeUriProvider,
-    $SceProvider,
-    $SceDelegateProvider,
-    $SnifferProvider,
-    $TemplateCacheProvider,
-    $TimeoutProvider,
-    $$RAFProvider,
-    $$AsyncCallbackProvider,
-    $WindowProvider
-*/
-
-
-/**
- * @ngdoc object
- * @name angular.version
- * @module ng
- * @description
- * An object that contains information about the current AngularJS version. This object has the
- * following properties:
- *
- * - `full` – `{string}` – Full version string, such as "0.9.18".
- * - `major` – `{number}` – Major version number, such as "0".
- * - `minor` – `{number}` – Minor version number, such as "9".
- * - `dot` – `{number}` – Dot version number, such as "18".
- * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
- */
-var version = {
-  full: '1.3.0-build.2607+sha.b2e48e6',    // all of these placeholder strings will be replaced by grunt's
-  major: 1,    // package task
-  minor: 3,
-  dot: 0,
-  codeName: 'snapshot'
-};
-
-
-function publishExternalAPI(angular){
-  extend(angular, {
-    'bootstrap': bootstrap,
-    'copy': copy,
-    'extend': extend,
-    'equals': equals,
-    'element': jqLite,
-    'forEach': forEach,
-    'injector': createInjector,
-    'noop':noop,
-    'bind':bind,
-    'toJson': toJson,
-    'fromJson': fromJson,
-    'identity':identity,
-    'isUndefined': isUndefined,
-    'isDefined': isDefined,
-    'isString': isString,
-    'isFunction': isFunction,
-    'isObject': isObject,
-    'isNumber': isNumber,
-    'isElement': isElement,
-    'isArray': isArray,
-    'version': version,
-    'isDate': isDate,
-    'lowercase': lowercase,
-    'uppercase': uppercase,
-    'callbacks': {counter: 0},
-    '$$minErr': minErr,
-    '$$csp': csp
-  });
-
-  angularModule = setupModuleLoader(window);
-  try {
-    angularModule('ngLocale');
-  } catch (e) {
-    angularModule('ngLocale', []).provider('$locale', $LocaleProvider);
-  }
-
-  angularModule('ng', ['ngLocale'], ['$provide',
-    function ngModule($provide) {
-      // $$sanitizeUriProvider needs to be before $compileProvider as it is used by it.
-      $provide.provider({
-        $$sanitizeUri: $$SanitizeUriProvider
-      });
-      $provide.provider('$compile', $CompileProvider).
-        directive({
-            a: htmlAnchorDirective,
-            input: inputDirective,
-            textarea: inputDirective,
-            form: formDirective,
-            script: scriptDirective,
-            select: selectDirective,
-            style: styleDirective,
-            option: optionDirective,
-            ngBind: ngBindDirective,
-            ngBindHtml: ngBindHtmlDirective,
-            ngBindTemplate: ngBindTemplateDirective,
-            ngClass: ngClassDirective,
-            ngClassEven: ngClassEvenDirective,
-            ngClassOdd: ngClassOddDirective,
-            ngCloak: ngCloakDirective,
-            ngController: ngControllerDirective,
-            ngForm: ngFormDirective,
-            ngHide: ngHideDirective,
-            ngIf: ngIfDirective,
-            ngInclude: ngIncludeDirective,
-            ngInit: ngInitDirective,
-            ngNonBindable: ngNonBindableDirective,
-            ngPluralize: ngPluralizeDirective,
-            ngRepeat: ngRepeatDirective,
-            ngShow: ngShowDirective,
-            ngStyle: ngStyleDirective,
-            ngSwitch: ngSwitchDirective,
-            ngSwitchWhen: ngSwitchWhenDirective,
-            ngSwitchDefault: ngSwitchDefaultDirective,
-            ngOptions: ngOptionsDirective,
-            ngTransclude: ngTranscludeDirective,
-            ngModel: ngModelDirective,
-            ngList: ngListDirective,
-            ngChange: ngChangeDirective,
-            required: requiredDirective,
-            ngRequired: requiredDirective,
-            ngValue: ngValueDirective,
-            ngModelOptions: ngModelOptionsDirective
-        }).
-        directive({
-          ngInclude: ngIncludeFillContentDirective
-        }).
-        directive(ngAttributeAliasDirectives).
-        directive(ngEventDirectives);
-      $provide.provider({
-        $anchorScroll: $AnchorScrollProvider,
-        $animate: $AnimateProvider,
-        $browser: $BrowserProvider,
-        $cacheFactory: $CacheFactoryProvider,
-        $controller: $ControllerProvider,
-        $document: $DocumentProvider,
-        $exceptionHandler: $ExceptionHandlerProvider,
-        $filter: $FilterProvider,
-        $interpolate: $InterpolateProvider,
-        $interval: $IntervalProvider,
-        $http: $HttpProvider,
-        $httpBackend: $HttpBackendProvider,
-        $location: $LocationProvider,
-        $log: $LogProvider,
-        $parse: $ParseProvider,
-        $rootScope: $RootScopeProvider,
-        $q: $QProvider,
-        $sce: $SceProvider,
-        $sceDelegate: $SceDelegateProvider,
-        $sniffer: $SnifferProvider,
-        $templateCache: $TemplateCacheProvider,
-        $timeout: $TimeoutProvider,
-        $window: $WindowProvider,
-        $$rAF: $$RAFProvider,
-        $$asyncCallback : $$AsyncCallbackProvider
-      });
-    }
-  ]);
-}
-
-/* global
-
-  -JQLitePrototype,
-  -addEventListenerFn,
-  -removeEventListenerFn,
-  -BOOLEAN_ATTR
-*/
-
-//////////////////////////////////
-//JQLite
-//////////////////////////////////
-
-/**
- * @ngdoc function
- * @name angular.element
- * @module ng
- * @function
- *
- * @description
- * Wraps a raw DOM element or HTML string as a [jQuery](http://jquery.com) element.
- *
- * If jQuery is available, `angular.element` is an alias for the
- * [jQuery](http://api.jquery.com/jQuery/) function. If jQuery is not available, `angular.element`
- * delegates to Angular's built-in subset of jQuery, called "jQuery lite" or "jqLite."
- *
- * <div class="alert alert-success">jqLite is a tiny, API-compatible subset of jQuery that allows
- * Angular to manipulate the DOM in a cross-browser compatible way. **jqLite** implements only the most
- * commonly needed functionality with the goal of having a very small footprint.</div>
- *
- * To use jQuery, simply load it before `DOMContentLoaded` event fired.
- *
- * <div class="alert">**Note:** all element references in Angular are always wrapped with jQuery or
- * jqLite; they are never raw DOM references.</div>
- *
- * ## Angular's jqLite
- * jqLite provides only the following jQuery methods:
- *
- * - [`addClass()`](http://api.jquery.com/addClass/)
- * - [`after()`](http://api.jquery.com/after/)
- * - [`append()`](http://api.jquery.com/append/)
- * - [`attr()`](http://api.jquery.com/attr/)
- * - [`bind()`](http://api.jquery.com/bind/) - Does not support namespaces, selectors or eventData
- * - [`children()`](http://api.jquery.com/children/) - Does not support selectors
- * - [`clone()`](http://api.jquery.com/clone/)
- * - [`contents()`](http://api.jquery.com/contents/)
- * - [`css()`](http://api.jquery.com/css/)
- * - [`data()`](http://api.jquery.com/data/)
- * - [`empty()`](http://api.jquery.com/empty/)
- * - [`eq()`](http://api.jquery.com/eq/)
- * - [`find()`](http://api.jquery.com/find/) - Limited to lookups by tag name
- * - [`hasClass()`](http://api.jquery.com/hasClass/)
- * - [`html()`](http://api.jquery.com/html/)
- * - [`next()`](http://api.jquery.com/next/) - Does not support selectors
- * - [`on()`](http://api.jquery.com/on/) - Does not support namespaces, selectors or eventData
- * - [`off()`](http://api.jquery.com/off/) - Does not support namespaces or selectors
- * - [`one()`](http://api.jquery.com/one/) - Does not support namespaces or selectors
- * - [`parent()`](http://api.jquery.com/parent/) - Does not support selectors
- * - [`prepend()`](http://api.jquery.com/prepend/)
- * - [`prop()`](http://api.jquery.com/prop/)
- * - [`ready()`](http://api.jquery.com/ready/)
- * - [`remove()`](http://api.jquery.com/remove/)
- * - [`removeAttr()`](http://api.jquery.com/removeAttr/)
- * - [`removeClass()`](http://api.jquery.com/removeClass/)
- * - [`removeData()`](http://api.jquery.com/removeData/)
- * - [`replaceWith()`](http://api.jquery.com/replaceWith/)
- * - [`text()`](http://api.jquery.com/text/)
- * - [`toggleClass()`](http://api.jquery.com/toggleClass/)
- * - [`triggerHandler()`](http://api.jquery.com/triggerHandler/) - Passes a dummy event object to handlers.
- * - [`unbind()`](http://api.jquery.com/unbind/) - Does not support namespaces
- * - [`val()`](http://api.jquery.com/val/)
- * - [`wrap()`](http://api.jquery.com/wrap/)
- *
- * ## jQuery/jqLite Extras
- * Angular also provides the following additional methods and events to both jQuery and jqLite:
- *
- * ### Events
- * - `$destroy` - AngularJS intercepts all jqLite/jQuery's DOM destruction apis and fires this event
- *    on all DOM nodes being removed.  This can be used to clean up any 3rd party bindings to the DOM
- *    element before it is removed.
- *
- * ### Methods
- * - `controller(name)` - retrieves the controller of the current element or its parent. By default
- *   retrieves controller associated with the `ngController` directive. If `name` is provided as
- *   camelCase directive name, then the controller for this directive will be retrieved (e.g.
- *   `'ngModel'`).
- * - `injector()` - retrieves the injector of the current element or its parent.
- * - `scope()` - retrieves the {@link ng.$rootScope.Scope scope} of the current
- *   element or its parent.
- * - `isolateScope()` - retrieves an isolate {@link ng.$rootScope.Scope scope} if one is attached directly to the
- *   current element. This getter should be used only on elements that contain a directive which starts a new isolate
- *   scope. Calling `scope()` on this element always returns the original non-isolate scope.
- * - `inheritedData()` - same as `data()`, but walks up the DOM until a value is found or the top
- *   parent element is reached.
- *
- * @param {string|DOMElement} element HTML string or DOMElement to be wrapped into jQuery.
- * @returns {Object} jQuery object.
- */
-
-var jqCache = JQLite.cache = {},
-    jqName = JQLite.expando = 'ng-' + new Date().getTime(),
-    jqId = 1,
-    addEventListenerFn = (window.document.addEventListener
-      ? function(element, type, fn) {element.addEventListener(type, fn, false);}
-      : function(element, type, fn) {element.attachEvent('on' + type, fn);}),
-    removeEventListenerFn = (window.document.removeEventListener
-      ? function(element, type, fn) {element.removeEventListener(type, fn, false); }
-      : function(element, type, fn) {element.detachEvent('on' + type, fn); });
-
-/*
- * !!! This is an undocumented "private" function !!!
- */
-var jqData = JQLite._data = function(node) {
-  //jQuery always returns an object on cache miss
-  return this.cache[node[this.expando]] || {};
-};
-
-function jqNextId() { return ++jqId; }
-
-
-var SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g;
-var MOZ_HACK_REGEXP = /^moz([A-Z])/;
-var jqLiteMinErr = minErr('jqLite');
-
-/**
- * Converts snake_case to camelCase.
- * Also there is special case for Moz prefix starting with upper case letter.
- * @param name Name to normalize
- */
-function camelCase(name) {
-  return name.
-    replace(SPECIAL_CHARS_REGEXP, function(_, separator, letter, offset) {
-      return offset ? letter.toUpperCase() : letter;
-    }).
-    replace(MOZ_HACK_REGEXP, 'Moz$1');
-}
-
-/////////////////////////////////////////////
-// jQuery mutation patch
-//
-// In conjunction with bindJQuery intercepts all jQuery's DOM destruction apis and fires a
-// $destroy event on all DOM nodes being removed.
-//
-/////////////////////////////////////////////
-
-function jqLitePatchJQueryRemove(name, dispatchThis, filterElems, getterIfNoArguments) {
-  var originalJqFn = jQuery.fn[name];
-  originalJqFn = originalJqFn.$original || originalJqFn;
-  removePatch.$original = originalJqFn;
-  jQuery.fn[name] = removePatch;
-
-  function removePatch(param) {
-    // jshint -W040
-    var list = filterElems && param ? [this.filter(param)] : [this],
-        fireEvent = dispatchThis,
-        set, setIndex, setLength,
-        element, childIndex, childLength, children;
-
-    if (!getterIfNoArguments || param != null) {
-      while(list.length) {
-        set = list.shift();
-        for(setIndex = 0, setLength = set.length; setIndex < setLength; setIndex++) {
-          element = jqLite(set[setIndex]);
-          if (fireEvent) {
-            element.triggerHandler('$destroy');
-          } else {
-            fireEvent = !fireEvent;
-          }
-          for(childIndex = 0, childLength = (children = element.children()).length;
-              childIndex < childLength;
-              childIndex++) {
-            list.push(jQuery(children[childIndex]));
-          }
-        }
-      }
-    }
-    return originalJqFn.apply(this, arguments);
-  }
-}
-
-var SINGLE_TAG_REGEXP = /^<(\w+)\s*\/?>(?:<\/\1>|)$/;
-var HTML_REGEXP = /<|&#?\w+;/;
-var TAG_NAME_REGEXP = /<([\w:]+)/;
-var XHTML_TAG_REGEXP = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi;
-
-var wrapMap = {
-  'option': [1, '<select multiple="multiple">', '</select>'],
-
-  'thead': [1, '<table>', '</table>'],
-  'col': [2, '<table><colgroup>', '</colgroup></table>'],
-  'tr': [2, '<table><tbody>', '</tbody></table>'],
-  'td': [3, '<table><tbody><tr>', '</tr></tbody></table>'],
-  '_default': [0, "", ""]
-};
-
-wrapMap.optgroup = wrapMap.option;
-wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
-wrapMap.th = wrapMap.td;
-
-function jqLiteIsTextNode(html) {
-  return !HTML_REGEXP.test(html);
-}
-
-function jqLiteBuildFragment(html, context) {
-  var elem, tmp, tag, wrap,
-      fragment = context.createDocumentFragment(),
-      nodes = [], i;
-
-  if (jqLiteIsTextNode(html)) {
-    // Convert non-html into a text node
-    nodes.push(context.createTextNode(html));
-  } else {
-    // Convert html into DOM nodes
-    tmp = tmp || fragment.appendChild(context.createElement("div"));
-    tag = (TAG_NAME_REGEXP.exec(html) || ["", ""])[1].toLowerCase();
-    wrap = wrapMap[tag] || wrapMap._default;
-    tmp.innerHTML = wrap[1] + html.replace(XHTML_TAG_REGEXP, "<$1></$2>") + wrap[2];
-
-    // Descend through wrappers to the right content
-    i = wrap[0];
-    while (i--) {
-      tmp = tmp.lastChild;
-    }
-
-    nodes = concat(nodes, tmp.childNodes);
-
-    tmp = fragment.firstChild;
-    tmp.textContent = "";
-  }
-
-  // Remove wrapper from fragment
-  fragment.textContent = "";
-  fragment.innerHTML = ""; // Clear inner HTML
-  forEach(nodes, function(node) {
-    fragment.appendChild(node);
-  });
-
-  return fragment;
-}
-
-function jqLiteParseHTML(html, context) {
-  context = context || document;
-  var parsed;
-
-  if ((parsed = SINGLE_TAG_REGEXP.exec(html))) {
-    return [context.createElement(parsed[1])];
-  }
-
-  if ((parsed = jqLiteBuildFragment(html, context))) {
-    return parsed.childNodes;
-  }
-
-  return [];
-}
-
-/////////////////////////////////////////////
-function JQLite(element) {
-  if (element instanceof JQLite) {
-    return element;
-  }
-  if (isString(element)) {
-    element = trim(element);
-  }
-  if (!(this instanceof JQLite)) {
-    if (isString(element) && element.charAt(0) != '<') {
-      throw jqLiteMinErr('nosel', 'Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element');
-    }
-    return new JQLite(element);
-  }
-
-  if (isString(element)) {
-    jqLiteAddNodes(this, jqLiteParseHTML(element));
-  } else {
-    jqLiteAddNodes(this, element);
-  }
-}
-
-function jqLiteClone(element) {
-  return element.cloneNode(true);
-}
-
-function jqLiteDealoc(element){
-  jqLiteRemoveData(element);
-  for ( var i = 0, children = element.childNodes || []; i < children.length; i++) {
-    jqLiteDealoc(children[i]);
-  }
-}
-
-function jqLiteOff(element, type, fn, unsupported) {
-  if (isDefined(unsupported)) throw jqLiteMinErr('offargs', 'jqLite#off() does not support the `selector` argument');
-
-  var events = jqLiteExpandoStore(element, 'events'),
-      handle = jqLiteExpandoStore(element, 'handle');
-
-  if (!handle) return; //no listeners registered
-
-  if (isUndefined(type)) {
-    forEach(events, function(eventHandler, type) {
-      removeEventListenerFn(element, type, eventHandler);
-      delete events[type];
-    });
-  } else {
-    forEach(type.split(' '), function(type) {
-      if (isUndefined(fn)) {
-        removeEventListenerFn(element, type, events[type]);
-        delete events[type];
-      } else {
-        arrayRemove(events[type] || [], fn);
-      }
-    });
-  }
-}
-
-function jqLiteRemoveData(element, name) {
-  var expandoId = element[jqName],
-      expandoStore = jqCache[expandoId];
-
-  if (expandoStore) {
-    if (name) {
-      delete jqCache[expandoId].data[name];
-      return;
-    }
-
-    if (expandoStore.handle) {
-      expandoStore.events.$destroy && expandoStore.handle({}, '$destroy');
-      jqLiteOff(element);
-    }
-    delete jqCache[expandoId];
-    element[jqName] = undefined; // ie does not allow deletion of attributes on elements.
-  }
-}
-
-function jqLiteExpandoStore(element, key, value) {
-  var expandoId = element[jqName],
-      expandoStore = jqCache[expandoId || -1];
-
-  if (isDefined(value)) {
-    if (!expandoStore) {
-      element[jqName] = expandoId = jqNextId();
-      expandoStore = jqCache[expandoId] = {};
-    }
-    expandoStore[key] = value;
-  } else {
-    return expandoStore && expandoStore[key];
-  }
-}
-
-function jqLiteData(element, key, value) {
-  var data = jqLiteExpandoStore(element, 'data'),
-      isSetter = isDefined(value),
-      keyDefined = !isSetter && isDefined(key),
-      isSimpleGetter = keyDefined && !isObject(key);
-
-  if (!data && !isSimpleGetter) {
-    jqLiteExpandoStore(element, 'data', data = {});
-  }
-
-  if (isSetter) {
-    data[key] = value;
-  } else {
-    if (keyDefined) {
-      if (isSimpleGetter) {
-        // don't create data in this case.
-        return data && data[key];
-      } else {
-        extend(data, key);
-      }
-    } else {
-      return data;
-    }
-  }
-}
-
-function jqLiteHasClass(element, selector) {
-  if (!element.getAttribute) return false;
-  return ((" " + (element.getAttribute('class') || '') + " ").replace(/[\n\t]/g, " ").
-      indexOf( " " + selector + " " ) > -1);
-}
-
-function jqLiteRemoveClass(element, cssClasses) {
-  if (cssClasses && element.setAttribute) {
-    forEach(cssClasses.split(' '), function(cssClass) {
-      element.setAttribute('class', trim(
-          (" " + (element.getAttribute('class') || '') + " ")
-          .replace(/[\n\t]/g, " ")
-          .replace(" " + trim(cssClass) + " ", " "))
-      );
-    });
-  }
-}
-
-function jqLiteAddClass(element, cssClasses) {
-  if (cssClasses && element.setAttribute) {
-    var existingClasses = (' ' + (element.getAttribute('class') || '') + ' ')
-                            .replace(/[\n\t]/g, " ");
-
-    forEach(cssClasses.split(' '), function(cssClass) {
-      cssClass = trim(cssClass);
-      if (existingClasses.indexOf(' ' + cssClass + ' ') === -1) {
-        existingClasses += cssClass + ' ';
-      }
-    });
-
-    element.setAttribute('class', trim(existingClasses));
-  }
-}
-
-function jqLiteAddNodes(root, elements) {
-  if (elements) {
-    elements = (!elements.nodeName && isDefined(elements.length) && !isWindow(elements))
-      ? elements
-      : [ elements ];
-    for(var i=0; i < elements.length; i++) {
-      root.push(elements[i]);
-    }
-  }
-}
-
-function jqLiteController(element, name) {
-  return jqLiteInheritedData(element, '$' + (name || 'ngController' ) + 'Controller');
-}
-
-function jqLiteInheritedData(element, name, value) {
-  element = jqLite(element);
-
-  // if element is the document object work with the html element instead
-  // this makes $(document).scope() possible
-  if(element[0].nodeType == 9) {
-    element = element.find('html');
-  }
-  var names = isArray(name) ? name : [name];
-
-  while (element.length) {
-    var node = element[0];
-    for (var i = 0, ii = names.length; i < ii; i++) {
-      if ((value = element.data(names[i])) !== undefined) return value;
-    }
-
-    // If dealing with a document fragment node with a host element, and no parent, use the host
-    // element as the parent. This enables directives within a Shadow DOM or polyfilled Shadow DOM
-    // to lookup parent controllers.
-    element = jqLite(node.parentNode || (node.nodeType === 11 && node.host));
-  }
-}
-
-function jqLiteEmpty(element) {
-  for (var i = 0, childNodes = element.childNodes; i < childNodes.length; i++) {
-    jqLiteDealoc(childNodes[i]);
-  }
-  while (element.firstChild) {
-    element.removeChild(element.firstChild);
-  }
-}
-
-//////////////////////////////////////////
-// Functions which are declared directly.
-//////////////////////////////////////////
-var JQLitePrototype = JQLite.prototype = {
-  ready: function(fn) {
-    var fired = false;
-
-    function trigger() {
-      if (fired) return;
-      fired = true;
-      fn();
-    }
-
-    // check if document already is loaded
-    if (document.readyState === 'complete'){
-      setTimeout(trigger);
-    } else {
-      this.on('DOMContentLoaded', trigger); // works for modern browsers and IE9
-      // we can not use jqLite since we are not done loading and jQuery could be loaded later.
-      // jshint -W064
-      JQLite(window).on('load', trigger); // fallback to window.onload for others
-      // jshint +W064
-    }
-  },
-  toString: function() {
-    var value = [];
-    forEach(this, function(e){ value.push('' + e);});
-    return '[' + value.join(', ') + ']';
-  },
-
-  eq: function(index) {
-      return (index >= 0) ? jqLite(this[index]) : jqLite(this[this.length + index]);
-  },
-
-  length: 0,
-  push: push,
-  sort: [].sort,
-  splice: [].splice
-};
-
-//////////////////////////////////////////
-// Functions iterating getter/setters.
-// these functions return self on setter and
-// value on get.
-//////////////////////////////////////////
-var BOOLEAN_ATTR = {};
-forEach('multiple,selected,checked,disabled,readOnly,required,open'.split(','), function(value) {
-  BOOLEAN_ATTR[lowercase(value)] = value;
-});
-var BOOLEAN_ELEMENTS = {};
-forEach('input,select,option,textarea,button,form,details'.split(','), function(value) {
-  BOOLEAN_ELEMENTS[uppercase(value)] = true;
-});
-
-function getBooleanAttrName(element, name) {
-  // check dom last since we will most likely fail on name
-  var booleanAttr = BOOLEAN_ATTR[name.toLowerCase()];
-
-  // booleanAttr is here twice to minimize DOM access
-  return booleanAttr && BOOLEAN_ELEMENTS[element.nodeName] && booleanAttr;
-}
-
-forEach({
-  data: jqLiteData,
-  inheritedData: jqLiteInheritedData,
-
-  scope: function(element) {
-    // Can't use jqLiteData here directly so we stay compatible with jQuery!
-    return jqLite(element).data('$scope') || jqLiteInheritedData(element.parentNode || element, ['$isolateScope', '$scope']);
-  },
-
-  isolateScope: function(element) {
-    // Can't use jqLiteData here directly so we stay compatible with jQuery!
-    return jqLite(element).data('$isolateScope') || jqLite(element).data('$isolateScopeNoTemplate');
-  },
-
-  controller: jqLiteController,
-
-  injector: function(element) {
-    return jqLiteInheritedData(element, '$injector');
-  },
-
-  removeAttr: function(element,name) {
-    element.removeAttribute(name);
-  },
-
-  hasClass: jqLiteHasClass,
-
-  css: function(element, name, value) {
-    name = camelCase(name);
-
-    if (isDefined(value)) {
-      element.style[name] = value;
-    } else {
-      var val;
-
-      if (msie <= 8) {
-        // this is some IE specific weirdness that jQuery 1.6.4 does not sure why
-        val = element.currentStyle && element.currentStyle[name];
-        if (val === '') val = 'auto';
-      }
-
-      val = val || element.style[name];
-
-      if (msie <= 8) {
-        // jquery weirdness :-/
-        val = (val === '') ? undefined : val;
-      }
-
-      return  val;
-    }
-  },
-
-  attr: function(element, name, value){
-    var lowercasedName = lowercase(name);
-    if (BOOLEAN_ATTR[lowercasedName]) {
-      if (isDefined(value)) {
-        if (!!value) {
-          element[name] = true;
-          element.setAttribute(name, lowercasedName);
-        } else {
-          element[name] = false;
-          element.removeAttribute(lowercasedName);
-        }
-      } else {
-        return (element[name] ||
-                 (element.attributes.getNamedItem(name)|| noop).specified)
-               ? lowercasedName
-               : undefined;
-      }
-    } else if (isDefined(value)) {
-      element.setAttribute(name, value);
-    } else if (element.getAttribute) {
-      // the extra argument "2" is to get the right thing for a.href in IE, see jQuery code
-      // some elements (e.g. Document) don't have get attribute, so return undefined
-      var ret = element.getAttribute(name, 2);
-      // normalize non-existing attributes to undefined (as jQuery)
-      return ret === null ? undefined : ret;
-    }
-  },
-
-  prop: function(element, name, value) {
-    if (isDefined(value)) {
-      element[name] = value;
-    } else {
-      return element[name];
-    }
-  },
-
-  text: (function() {
-    var NODE_TYPE_TEXT_PROPERTY = [];
-    if (msie < 9) {
-      NODE_TYPE_TEXT_PROPERTY[1] = 'innerText';    /** Element **/
-      NODE_TYPE_TEXT_PROPERTY[3] = 'nodeValue';    /** Text **/
-    } else {
-      NODE_TYPE_TEXT_PROPERTY[1] =                 /** Element **/
-      NODE_TYPE_TEXT_PROPERTY[3] = 'textContent';  /** Text **/
-    }
-    getText.$dv = '';
-    return getText;
-
-    function getText(element, value) {
-      var textProp = NODE_TYPE_TEXT_PROPERTY[element.nodeType];
-      if (isUndefined(value)) {
-        return textProp ? element[textProp] : '';
-      }
-      element[textProp] = value;
-    }
-  })(),
-
-  val: function(element, value) {
-    if (isUndefined(value)) {
-      if (nodeName_(element) === 'SELECT' && element.multiple) {
-        var result = [];
-        forEach(element.options, function (option) {
-          if (option.selected) {
-            result.push(option.value || option.text);
-          }
-        });
-        return result.length === 0 ? null : result;
-      }
-      return element.value;
-    }
-    element.value = value;
-  },
-
-  html: function(element, value) {
-    if (isUndefined(value)) {
-      return element.innerHTML;
-    }
-    for (var i = 0, childNodes = element.childNodes; i < childNodes.length; i++) {
-      jqLiteDealoc(childNodes[i]);
-    }
-    element.innerHTML = value;
-  },
-
-  empty: jqLiteEmpty
-}, function(fn, name){
-  /**
-   * Properties: writes return selection, reads return first value
-   */
-  JQLite.prototype[name] = function(arg1, arg2) {
-    var i, key;
-
-    // jqLiteHasClass has only two arguments, but is a getter-only fn, so we need to special-case it
-    // in a way that survives minification.
-    // jqLiteEmpty takes no arguments but is a setter.
-    if (fn !== jqLiteEmpty &&
-        (((fn.length == 2 && (fn !== jqLiteHasClass && fn !== jqLiteController)) ? arg1 : arg2) === undefined)) {
-      if (isObject(arg1)) {
-
-        // we are a write, but the object properties are the key/values
-        for (i = 0; i < this.length; i++) {
-          if (fn === jqLiteData) {
-            // data() takes the whole object in jQuery
-            fn(this[i], arg1);
-          } else {
-            for (key in arg1) {
-              fn(this[i], key, arg1[key]);
-            }
-          }
-        }
-        // return self for chaining
-        return this;
-      } else {
-        // we are a read, so read the first child.
-        var value = fn.$dv;
-        // Only if we have $dv do we iterate over all, otherwise it is just the first element.
-        var jj = (value === undefined) ? Math.min(this.length, 1) : this.length;
-        for (var j = 0; j < jj; j++) {
-          var nodeValue = fn(this[j], arg1, arg2);
-          value = value ? value + nodeValue : nodeValue;
-        }
-        return value;
-      }
-    } else {
-      // we are a write, so apply to all children
-      for (i = 0; i < this.length; i++) {
-        fn(this[i], arg1, arg2);
-      }
-      // return self for chaining
-      return this;
-    }
-  };
-});
-
-function createEventHandler(element, events) {
-  var eventHandler = function (event, type) {
-    if (!event.preventDefault) {
-      event.preventDefault = function() {
-        event.returnValue = false; //ie
-      };
-    }
-
-    if (!e

<TRUNCATED>

[28/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/jquery-ui-1.8.9.custom.css
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/jquery-ui-1.8.9.custom.css b/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/jquery-ui-1.8.9.custom.css
deleted file mode 100644
index 044734a..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/jquery-ui-1.8.9.custom.css
+++ /dev/null
@@ -1,573 +0,0 @@
-/*
- * jQuery UI CSS Framework 1.8.9
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- */
-
-/* Layout helpers
-----------------------------------*/
-.ui-helper-hidden { display: none; }
-.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
-.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
-.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
-.ui-helper-clearfix { display: inline-block; }
-/* required comment for clearfix to work in Opera \*/
-* html .ui-helper-clearfix { height:1%; }
-.ui-helper-clearfix { display:block; }
-/* end clearfix */
-.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
-
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-disabled { cursor: default !important; }
-
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Overlays */
-.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
-
-
-/*
- * jQuery UI CSS Framework 1.8.9
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- *
- * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande,%20Lucida%20Sans,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=deedf7&bgTextureHeader=01_flat.png&bgImgOpacityHeader=100&borderColorHeader=aed0ea&fcHeader=222222&iconColorHeader=72a7cf&bgColorContent=f2f5f7&bgTextureContent=01_flat.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=362b36&iconColorContent=72a7cf&bgColorDefault=d7ebf9&bgTextureDefault=01_flat.png&bgImgOpacityDefault=80&borderColorDefault=aed0ea&fcDefault=2779aa&iconColorDefault=3d80b3&bgColorHover=e4f1fb&bgTextureHover=01_flat.png&bgImgOpacityHover=100&borderColorHover=74b2e2&fcHover=0070a3&iconColorHover=2694e8&bgColorActive=3baae3&bgTextureActive=01_flat.png&bgImgOpacityActive=50&borderColorActive=2694e8&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=ffef8f&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=25&borderColorHighlight=f9dd34&fcHighli
 ght=363636&iconColorHighlight=2e83ff&bgColorError=cd0a0a&bgTextureError=01_flat.png&bgImgOpacityError=15&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=eeeeee&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=90&opacityOverlay=80&bgColorShadow=000000&bgTextureShadow=04_highlight_hard.png&bgImgOpacityShadow=70&opacityShadow=30&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
- */
-
-
-/* Component containers
-----------------------------------*/
-.ui-widget { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1.1em; }
-.ui-widget .ui-widget { font-size: 1em; }
-.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1em; }
-.ui-widget-content { border: 1px solid #dddddd; background: #f2f5f7 url(images/ui-bg_flat_100_f2f5f7_40x100.png) 50% 50% repeat-x; color: #362b36; }
-.ui-widget-content a { color: #362b36; }
-.ui-widget-header { border: 1px solid #aed0ea; background: #deedf7 url(images/ui-bg_flat_100_deedf7_40x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
-.ui-widget-header a { color: #222222; }
-
-/* Interaction states
-----------------------------------*/
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #aed0ea; background: #d7ebf9 url(images/ui-bg_flat_80_d7ebf9_40x100.png) 50% 50% repeat-x; font-weight: bold; color: #2779aa; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #2779aa; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #74b2e2; background: #e4f1fb url(images/ui-bg_flat_100_e4f1fb_40x100.png) 50% 50% repeat-x; font-weight: bold; color: #0070a3; }
-.ui-state-hover a, .ui-state-hover a:hover { color: #0070a3; text-decoration: none; }
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #2694e8; background: #3baae3 url(images/ui-bg_flat_50_3baae3_40x100.png) 50% 50% repeat-x; font-weight: bold; color: #ffffff; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; text-decoration: none; }
-.ui-widget :active { outline: none; }
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #f9dd34; background: #ffef8f url(images/ui-bg_highlight-soft_25_ffef8f_1x100.png) 50% top repeat-x; color: #363636; }
-.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
-.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #cd0a0a url(images/ui-bg_flat_15_cd0a0a_40x100.png) 50% 50% repeat-x; color: #ffffff; }
-.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }
-.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }
-.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
-.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
-.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_72a7cf_256x240.png); }
-.ui-widget-content .ui-icon {background-image: url(images/ui-icons_72a7cf_256x240.png); }
-.ui-widget-header .ui-icon {background-image: url(images/ui-icons_72a7cf_256x240.png); }
-.ui-state-default .ui-icon { background-image: url(images/ui-icons_3d80b3_256x240.png); }
-.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_2694e8_256x240.png); }
-.ui-state-active .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
-.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
-.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
-
-/* positioning */
-.ui-icon-carat-1-n { background-position: 0 0; }
-.ui-icon-carat-1-ne { background-position: -16px 0; }
-.ui-icon-carat-1-e { background-position: -32px 0; }
-.ui-icon-carat-1-se { background-position: -48px 0; }
-.ui-icon-carat-1-s { background-position: -64px 0; }
-.ui-icon-carat-1-sw { background-position: -80px 0; }
-.ui-icon-carat-1-w { background-position: -96px 0; }
-.ui-icon-carat-1-nw { background-position: -112px 0; }
-.ui-icon-carat-2-n-s { background-position: -128px 0; }
-.ui-icon-carat-2-e-w { background-position: -144px 0; }
-.ui-icon-triangle-1-n { background-position: 0 -16px; }
-.ui-icon-triangle-1-ne { background-position: -16px -16px; }
-.ui-icon-triangle-1-e { background-position: -32px -16px; }
-.ui-icon-triangle-1-se { background-position: -48px -16px; }
-.ui-icon-triangle-1-s { background-position: -64px -16px; }
-.ui-icon-triangle-1-sw { background-position: -80px -16px; }
-.ui-icon-triangle-1-w { background-position: -96px -16px; }
-.ui-icon-triangle-1-nw { background-position: -112px -16px; }
-.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
-.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
-.ui-icon-arrow-1-n { background-position: 0 -32px; }
-.ui-icon-arrow-1-ne { background-position: -16px -32px; }
-.ui-icon-arrow-1-e { background-position: -32px -32px; }
-.ui-icon-arrow-1-se { background-position: -48px -32px; }
-.ui-icon-arrow-1-s { background-position: -64px -32px; }
-.ui-icon-arrow-1-sw { background-position: -80px -32px; }
-.ui-icon-arrow-1-w { background-position: -96px -32px; }
-.ui-icon-arrow-1-nw { background-position: -112px -32px; }
-.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
-.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
-.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
-.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
-.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
-.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
-.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
-.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
-.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
-.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
-.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
-.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
-.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
-.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
-.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
-.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
-.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
-.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
-.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
-.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
-.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
-.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
-.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
-.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
-.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
-.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
-.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
-.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
-.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
-.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
-.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
-.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
-.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
-.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
-.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
-.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
-.ui-icon-arrow-4 { background-position: 0 -80px; }
-.ui-icon-arrow-4-diag { background-position: -16px -80px; }
-.ui-icon-extlink { background-position: -32px -80px; }
-.ui-icon-newwin { background-position: -48px -80px; }
-.ui-icon-refresh { background-position: -64px -80px; }
-.ui-icon-shuffle { background-position: -80px -80px; }
-.ui-icon-transfer-e-w { background-position: -96px -80px; }
-.ui-icon-transferthick-e-w { background-position: -112px -80px; }
-.ui-icon-folder-collapsed { background-position: 0 -96px; }
-.ui-icon-folder-open { background-position: -16px -96px; }
-.ui-icon-document { background-position: -32px -96px; }
-.ui-icon-document-b { background-position: -48px -96px; }
-.ui-icon-note { background-position: -64px -96px; }
-.ui-icon-mail-closed { background-position: -80px -96px; }
-.ui-icon-mail-open { background-position: -96px -96px; }
-.ui-icon-suitcase { background-position: -112px -96px; }
-.ui-icon-comment { background-position: -128px -96px; }
-.ui-icon-person { background-position: -144px -96px; }
-.ui-icon-print { background-position: -160px -96px; }
-.ui-icon-trash { background-position: -176px -96px; }
-.ui-icon-locked { background-position: -192px -96px; }
-.ui-icon-unlocked { background-position: -208px -96px; }
-.ui-icon-bookmark { background-position: -224px -96px; }
-.ui-icon-tag { background-position: -240px -96px; }
-.ui-icon-home { background-position: 0 -112px; }
-.ui-icon-flag { background-position: -16px -112px; }
-.ui-icon-calendar { background-position: -32px -112px; }
-.ui-icon-cart { background-position: -48px -112px; }
-.ui-icon-pencil { background-position: -64px -112px; }
-.ui-icon-clock { background-position: -80px -112px; }
-.ui-icon-disk { background-position: -96px -112px; }
-.ui-icon-calculator { background-position: -112px -112px; }
-.ui-icon-zoomin { background-position: -128px -112px; }
-.ui-icon-zoomout { background-position: -144px -112px; }
-.ui-icon-search { background-position: -160px -112px; }
-.ui-icon-wrench { background-position: -176px -112px; }
-.ui-icon-gear { background-position: -192px -112px; }
-.ui-icon-heart { background-position: -208px -112px; }
-.ui-icon-star { background-position: -224px -112px; }
-.ui-icon-link { background-position: -240px -112px; }
-.ui-icon-cancel { background-position: 0 -128px; }
-.ui-icon-plus { background-position: -16px -128px; }
-.ui-icon-plusthick { background-position: -32px -128px; }
-.ui-icon-minus { background-position: -48px -128px; }
-.ui-icon-minusthick { background-position: -64px -128px; }
-.ui-icon-close { background-position: -80px -128px; }
-.ui-icon-closethick { background-position: -96px -128px; }
-.ui-icon-key { background-position: -112px -128px; }
-.ui-icon-lightbulb { background-position: -128px -128px; }
-.ui-icon-scissors { background-position: -144px -128px; }
-.ui-icon-clipboard { background-position: -160px -128px; }
-.ui-icon-copy { background-position: -176px -128px; }
-.ui-icon-contact { background-position: -192px -128px; }
-.ui-icon-image { background-position: -208px -128px; }
-.ui-icon-video { background-position: -224px -128px; }
-.ui-icon-script { background-position: -240px -128px; }
-.ui-icon-alert { background-position: 0 -144px; }
-.ui-icon-info { background-position: -16px -144px; }
-.ui-icon-notice { background-position: -32px -144px; }
-.ui-icon-help { background-position: -48px -144px; }
-.ui-icon-check { background-position: -64px -144px; }
-.ui-icon-bullet { background-position: -80px -144px; }
-.ui-icon-radio-off { background-position: -96px -144px; }
-.ui-icon-radio-on { background-position: -112px -144px; }
-.ui-icon-pin-w { background-position: -128px -144px; }
-.ui-icon-pin-s { background-position: -144px -144px; }
-.ui-icon-play { background-position: 0 -160px; }
-.ui-icon-pause { background-position: -16px -160px; }
-.ui-icon-seek-next { background-position: -32px -160px; }
-.ui-icon-seek-prev { background-position: -48px -160px; }
-.ui-icon-seek-end { background-position: -64px -160px; }
-.ui-icon-seek-start { background-position: -80px -160px; }
-/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
-.ui-icon-seek-first { background-position: -80px -160px; }
-.ui-icon-stop { background-position: -96px -160px; }
-.ui-icon-eject { background-position: -112px -160px; }
-.ui-icon-volume-off { background-position: -128px -160px; }
-.ui-icon-volume-on { background-position: -144px -160px; }
-.ui-icon-power { background-position: 0 -176px; }
-.ui-icon-signal-diag { background-position: -16px -176px; }
-.ui-icon-signal { background-position: -32px -176px; }
-.ui-icon-battery-0 { background-position: -48px -176px; }
-.ui-icon-battery-1 { background-position: -64px -176px; }
-.ui-icon-battery-2 { background-position: -80px -176px; }
-.ui-icon-battery-3 { background-position: -96px -176px; }
-.ui-icon-circle-plus { background-position: 0 -192px; }
-.ui-icon-circle-minus { background-position: -16px -192px; }
-.ui-icon-circle-close { background-position: -32px -192px; }
-.ui-icon-circle-triangle-e { background-position: -48px -192px; }
-.ui-icon-circle-triangle-s { background-position: -64px -192px; }
-.ui-icon-circle-triangle-w { background-position: -80px -192px; }
-.ui-icon-circle-triangle-n { background-position: -96px -192px; }
-.ui-icon-circle-arrow-e { background-position: -112px -192px; }
-.ui-icon-circle-arrow-s { background-position: -128px -192px; }
-.ui-icon-circle-arrow-w { background-position: -144px -192px; }
-.ui-icon-circle-arrow-n { background-position: -160px -192px; }
-.ui-icon-circle-zoomin { background-position: -176px -192px; }
-.ui-icon-circle-zoomout { background-position: -192px -192px; }
-.ui-icon-circle-check { background-position: -208px -192px; }
-.ui-icon-circlesmall-plus { background-position: 0 -208px; }
-.ui-icon-circlesmall-minus { background-position: -16px -208px; }
-.ui-icon-circlesmall-close { background-position: -32px -208px; }
-.ui-icon-squaresmall-plus { background-position: -48px -208px; }
-.ui-icon-squaresmall-minus { background-position: -64px -208px; }
-.ui-icon-squaresmall-close { background-position: -80px -208px; }
-.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
-.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
-.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
-.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
-.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
-.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Corner radius */
-.ui-corner-tl { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; }
-.ui-corner-tr { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; }
-.ui-corner-bl { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; }
-.ui-corner-br { -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
-.ui-corner-top { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; }
-.ui-corner-bottom { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
-.ui-corner-right {  -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
-.ui-corner-left { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; }
-.ui-corner-all { -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; }
-
-/* Overlays */
-.ui-widget-overlay { background: #eeeeee url(images/ui-bg_diagonals-thick_90_eeeeee_40x40.png) 50% 50% repeat; opacity: .80;filter:Alpha(Opacity=80); }
-.ui-widget-shadow { margin: -7px 0 0 -7px; padding: 7px; background: #000000 url(images/ui-bg_highlight-hard_70_000000_1x100.png) 50% top repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
- * jQuery UI Resizable 1.8.9
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Resizable#theming
- */
-.ui-resizable { position: relative;}
-.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
-.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
-.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
-.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
-.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
-.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
-.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
-.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
-.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
-.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
- * jQuery UI Selectable 1.8.9
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Selectable#theming
- */
-.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
-/*
- * jQuery UI Accordion 1.8.9
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Accordion#theming
- */
-/* IE/Win - Fix animation bug - #4615 */
-.ui-accordion { width: 100%; }
-.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
-.ui-accordion .ui-accordion-li-fix { display: inline; }
-.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
-.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
-.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
-.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
-.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
-.ui-accordion .ui-accordion-content-active { display: block; }
-/*
- * jQuery UI Autocomplete 1.8.9
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Autocomplete#theming
- */
-.ui-autocomplete { position: absolute; cursor: default; }	
-
-/* workarounds */
-* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
-
-/*
- * jQuery UI Menu 1.8.9
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Menu#theming
- */
-.ui-menu {
-	list-style:none;
-	padding: 2px;
-	margin: 0;
-	display:block;
-	float: left;
-}
-.ui-menu .ui-menu {
-	margin-top: -3px;
-}
-.ui-menu .ui-menu-item {
-	margin:0;
-	padding: 0;
-	zoom: 1;
-	float: left;
-	clear: left;
-	width: 100%;
-}
-.ui-menu .ui-menu-item a {
-	text-decoration:none;
-	display:block;
-	padding:.2em .4em;
-	line-height:1.5;
-	zoom:1;
-}
-.ui-menu .ui-menu-item a.ui-state-hover,
-.ui-menu .ui-menu-item a.ui-state-active {
-	font-weight: normal;
-	margin: -1px;
-}
-/*
- * jQuery UI Button 1.8.9
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Button#theming
- */
-.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
-.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
-button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
-.ui-button-icons-only { width: 3.4em; } 
-button.ui-button-icons-only { width: 3.7em; } 
-
-/*button text element */
-.ui-button .ui-button-text { display: block; line-height: 1.4;  }
-.ui-button-text-only .ui-button-text { padding: .4em 1em; }
-.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
-.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
-.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
-.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
-/* no icon support for input elements, provide padding by default */
-input.ui-button { padding: .4em 1em; }
-
-/*button icon element(s) */
-.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
-.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
-.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
-.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
-.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
-
-/*button sets*/
-.ui-buttonset { margin-right: 7px; }
-.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
-
-/* workarounds */
-button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
-/*
- * jQuery UI Dialog 1.8.9
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Dialog#theming
- */
-.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
-.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
-.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
-.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
-.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
-.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
-.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
-.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
-.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
-.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
-.ui-draggable .ui-dialog-titlebar { cursor: move; }
-/*
- * jQuery UI Slider 1.8.9
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Slider#theming
- */
-.ui-slider { position: relative; text-align: left; }
-.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
-.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
-
-.ui-slider-horizontal { height: .8em; }
-.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
-.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
-.ui-slider-horizontal .ui-slider-range-min { left: 0; }
-.ui-slider-horizontal .ui-slider-range-max { right: 0; }
-
-.ui-slider-vertical { width: .8em; height: 100px; }
-.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
-.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
-.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
-.ui-slider-vertical .ui-slider-range-max { top: 0; }/*
- * jQuery UI Tabs 1.8.9
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Tabs#theming
- */
-.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
-.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
-.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
-.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
-.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
-.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
-.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
-.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
-.ui-tabs .ui-tabs-hide { display: none !important; }
-/*
- * jQuery UI Datepicker 1.8.9
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Datepicker#theming
- */
-.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
-.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
-.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
-.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
-.ui-datepicker .ui-datepicker-prev { left:2px; }
-.ui-datepicker .ui-datepicker-next { right:2px; }
-.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
-.ui-datepicker .ui-datepicker-next-hover { right:1px; }
-.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
-.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
-.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
-.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
-.ui-datepicker select.ui-datepicker-month, 
-.ui-datepicker select.ui-datepicker-year { width: 49%;}
-.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
-.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
-.ui-datepicker td { border: 0; padding: 1px; }
-.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
-.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
-.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
-.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
-
-/* with multiple calendars */
-.ui-datepicker.ui-datepicker-multi { width:auto; }
-.ui-datepicker-multi .ui-datepicker-group { float:left; }
-.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
-.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
-.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
-.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
-.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
-.ui-datepicker-row-break { clear:both; width:100%; }
-
-/* RTL support */
-.ui-datepicker-rtl { direction: rtl; }
-.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-
-/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
-.ui-datepicker-cover {
-    display: none; /*sorry for IE5*/
-    display/**/: block; /*sorry for IE5*/
-    position: absolute; /*must have*/
-    z-index: -1; /*must have*/
-    filter: mask(); /*must have*/
-    top: -4px; /*must have*/
-    left: -4px; /*must have*/
-    width: 200px; /*must have*/
-    height: 200px; /*must have*/
-}/*
- * jQuery UI Progressbar 1.8.9
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Progressbar#theming
- */
-.ui-progressbar { height:2em; text-align: left; }
-.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/css/jquery-ui-timepicker.css
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/css/jquery-ui-timepicker.css b/deleted/dist-cov/usergrid-portal/archive/css/jquery-ui-timepicker.css
deleted file mode 100644
index d72d486..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/css/jquery-ui-timepicker.css
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Timepicker stylesheet
- * Highly inspired from datepicker
- * FG - Nov 2010 - Web3R 
- *
- * version 0.0.3 : Fixed some settings, more dynamic
- * version 0.0.4 : Removed width:100% on tables
- * version 0.1.1 : set width 0 on tables to fix an ie6 bug
- */
-
-.ui-timepicker-inline { display: inline; }
-
-#ui-timepicker-div { padding: 0.2em }
-.ui-timepicker-table { display: inline-table; width: 0; }
-.ui-timepicker-table table { margin:0.15em 0 0 0; border-collapse: collapse; }
-
-.ui-timepicker-hours, .ui-timepicker-minutes { padding: 0.2em;  }
-
-.ui-timepicker-table .ui-timepicker-title { line-height: 1.8em; text-align: center; }
-.ui-timepicker-table td { padding: 0.1em; width: 2.2em; }
-.ui-timepicker-table th.periods { padding: 0.1em; width: 2.2em; }
-
-/* span for disabled cells */
-.ui-timepicker-table td span {
-	display:block;
-    padding:0.2em 0.3em 0.2em 0.5em;
-    width: 1.2em;
-
-    text-align:right;
-    text-decoration:none;
-}
-/* anchors for clickable cells */
-.ui-timepicker-table td a {
-    display:block;
-    padding:0.2em 0.3em 0.2em 0.5em;
-    width: 1.2em;
-
-    text-align:right;
-    text-decoration:none;
-}
-
-/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
-.ui-timepicker-cover {
-    display: none; /*sorry for IE5*/
-    display/**/: block; /*sorry for IE5*/
-    position: absolute; /*must have*/
-    z-index: -1; /*must have*/
-    filter: mask(); /*must have*/
-    top: -4px; /*must have*/
-    left: -4px; /*must have*/
-    width: 200px; /*must have*/
-    height: 200px; /*must have*/
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/css/jquery.ui.statusbar.css
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/css/jquery.ui.statusbar.css b/deleted/dist-cov/usergrid-portal/archive/css/jquery.ui.statusbar.css
deleted file mode 100644
index 3b45b7e..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/css/jquery.ui.statusbar.css
+++ /dev/null
@@ -1,25 +0,0 @@
-.ui-statusbar {
-    background-color: white;
-    position: fixed;
-    bottom: 0em;
-    left: 0.5em;
-    right: 0.5em;
-    width: auto;
-    height: auto;
-    padding: 0.5em;
-    /*opacity: .80;
-    filter: alpha(opacity="80");*/
-    z-index: 999;
-    overflow: auto;
-}
-
-.ui-statusbar ul {
-    list-style: none;
-    margin-left: 0em;
-    padding-left: 0.5em;
-}
-
-.ui-statusbar ul li {
-    margin-top: 0.2em;
-    padding: 0.2em;
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/css/prettify.css
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/css/prettify.css b/deleted/dist-cov/usergrid-portal/archive/css/prettify.css
deleted file mode 100644
index 400fd74..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/css/prettify.css
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Pretty printing styles. Used with prettify.js. */
-
-/* SPAN elements with the classes below are added by prettyprint. */
-.pln { color: #000 }  /* plain text */
-
-@media screen {
-  .str { color: #080 }  /* string content */
-  .kwd { color: #008 }  /* a keyword */
-  .com { color: #800 }  /* a comment */
-  .typ { color: #606 }  /* a type name */
-  .lit { color: #066 }  /* a literal value */
-  /* punctuation, lisp open bracket, lisp close bracket */
-  .pun, .opn, .clo { color: #660 }
-  .tag { color: #008 }  /* a markup tag name */
-  .atn { color: #606 }  /* a markup attribute name */
-  .atv { color: #080 }  /* a markup attribute value */
-  .dec, .var { color: #606 }  /* a declaration; a variable name */
-  .fun { color: red }  /* a function name */
-}
-
-/* Use higher contrast and text-weight for printable form. */
-@media print, projection {
-  .str { color: #060 }
-  .kwd { color: #006; font-weight: bold }
-  .com { color: #600; font-style: italic }
-  .typ { color: #404; font-weight: bold }
-  .lit { color: #044 }
-  .pun, .opn, .clo { color: #440 }
-  .tag { color: #006; font-weight: bold }
-  .atn { color: #404 }
-  .atv { color: #060 }
-}
-
-/* Put a border around prettyprinted code snippets. */
-pre.prettyprint { padding: 2px; border: 1px solid #888 }
-
-/* Specify class=linenums on a pre to get line numbering */
-ol.linenums { margin-top: 0; margin-bottom: 0 } /* IE indents via margin-left */
-li.L0,
-li.L1,
-li.L2,
-li.L3,
-li.L5,
-li.L6,
-li.L7,
-li.L8 { list-style-type: none }
-/* Alternate shading for lines */
-li.L1,
-li.L3,
-li.L5,
-li.L7,
-li.L9 { background: #eee }


[23/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/dash/test/lib/angular/version.txt
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/dash/test/lib/angular/version.txt b/deleted/dist-cov/usergrid-portal/archive/dash/test/lib/angular/version.txt
deleted file mode 100644
index 90a27f9..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/dash/test/lib/angular/version.txt
+++ /dev/null
@@ -1 +0,0 @@
-1.0.5

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/dash/test/unit/controllersSpec.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/dash/test/unit/controllersSpec.js b/deleted/dist-cov/usergrid-portal/archive/dash/test/unit/controllersSpec.js
deleted file mode 100644
index bc9be5e..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/dash/test/unit/controllersSpec.js
+++ /dev/null
@@ -1,31 +0,0 @@
-'use strict';
-
-/* jasmine specs for controllers go here */
-
-describe('MyCtrl1', function(){
-  var myCtrl1;
-
-  beforeEach(function(){
-    myCtrl1 = new MyCtrl1();
-  });
-
-
-  it('should ....', function() {
-    //spec body
-  });
-});
-
-
-describe('MyCtrl2', function(){
-  var myCtrl2;
-
-
-  beforeEach(function(){
-    myCtrl2 = new MyCtrl2();
-  });
-
-
-  it('should ....', function() {
-    //spec body
-  });
-});

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/dash/test/unit/directivesSpec.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/dash/test/unit/directivesSpec.js b/deleted/dist-cov/usergrid-portal/archive/dash/test/unit/directivesSpec.js
deleted file mode 100644
index 6061842..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/dash/test/unit/directivesSpec.js
+++ /dev/null
@@ -1,19 +0,0 @@
-'use strict';
-
-/* jasmine specs for directives go here */
-
-describe('directives', function() {
-  beforeEach(module('myApp.directives'));
-
-  describe('app-version', function() {
-    it('should print current version', function() {
-      module(function($provide) {
-        $provide.value('version', 'TEST_VER');
-      });
-      inject(function($compile, $rootScope) {
-        var element = $compile('<span app-version></span>')($rootScope);
-        expect(element.text()).toEqual('TEST_VER');
-      });
-    });
-  });
-});

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/dash/test/unit/filtersSpec.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/dash/test/unit/filtersSpec.js b/deleted/dist-cov/usergrid-portal/archive/dash/test/unit/filtersSpec.js
deleted file mode 100644
index 19af329..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/dash/test/unit/filtersSpec.js
+++ /dev/null
@@ -1,19 +0,0 @@
-'use strict';
-
-/* jasmine specs for filters go here */
-
-describe('filter', function() {
-  beforeEach(module('myApp.filters'));
-
-
-  describe('interpolate', function() {
-    beforeEach(module(function($provide) {
-      $provide.value('version', 'TEST_VER');
-    }));
-
-
-    it('should replace VERSION', inject(function(interpolateFilter) {
-      expect(interpolateFilter('before %VERSION% after')).toEqual('before TEST_VER after');
-    }));
-  });
-});

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/dash/test/unit/servicesSpec.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/dash/test/unit/servicesSpec.js b/deleted/dist-cov/usergrid-portal/archive/dash/test/unit/servicesSpec.js
deleted file mode 100644
index 3864c8d..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/dash/test/unit/servicesSpec.js
+++ /dev/null
@@ -1,14 +0,0 @@
-'use strict';
-
-/* jasmine specs for services go here */
-
-describe('service', function() {
-  beforeEach(module('myApp.services'));
-
-
-  describe('version', function() {
-    it('should return current version', inject(function(version) {
-      expect(version).toEqual('0.1');
-    }));
-  });
-});

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/APNS_cert_upload.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/APNS_cert_upload.png b/deleted/dist-cov/usergrid-portal/archive/images/APNS_cert_upload.png
deleted file mode 100644
index 2002b42..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/APNS_cert_upload.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/APNS_certification.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/APNS_certification.png b/deleted/dist-cov/usergrid-portal/archive/images/APNS_certification.png
deleted file mode 100644
index 11848a3..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/APNS_certification.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/android-notification.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/android-notification.png b/deleted/dist-cov/usergrid-portal/archive/images/android-notification.png
deleted file mode 100644
index ac50bae..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/android-notification.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/android-sdk-download.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/android-sdk-download.png b/deleted/dist-cov/usergrid-portal/archive/images/android-sdk-download.png
deleted file mode 100644
index 29019b8..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/android-sdk-download.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/api-activity.gif
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/api-activity.gif b/deleted/dist-cov/usergrid-portal/archive/images/api-activity.gif
deleted file mode 100644
index eb43dac..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/api-activity.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/apigee-logo.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/apigee-logo.png b/deleted/dist-cov/usergrid-portal/archive/images/apigee-logo.png
deleted file mode 100644
index edd7ce6..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/apigee-logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/apigeetopbar.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/apigeetopbar.png b/deleted/dist-cov/usergrid-portal/archive/images/apigeetopbar.png
deleted file mode 100644
index 4449024..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/apigeetopbar.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/background_one_col.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/background_one_col.png b/deleted/dist-cov/usergrid-portal/archive/images/background_one_col.png
deleted file mode 100644
index c523f81..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/background_one_col.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/btn-copyCurl-up.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/btn-copyCurl-up.png b/deleted/dist-cov/usergrid-portal/archive/images/btn-copyCurl-up.png
deleted file mode 100644
index a497ba7..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/btn-copyCurl-up.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/clippy-bg.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/clippy-bg.png b/deleted/dist-cov/usergrid-portal/archive/images/clippy-bg.png
deleted file mode 100644
index 7a462e1..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/clippy-bg.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/close.gif
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/close.gif b/deleted/dist-cov/usergrid-portal/archive/images/close.gif
deleted file mode 100644
index aea6e42..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/close.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/dotnet-sdk-download.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/dotnet-sdk-download.png b/deleted/dist-cov/usergrid-portal/archive/images/dotnet-sdk-download.png
deleted file mode 100644
index 2b69215..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/dotnet-sdk-download.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/down_arrow.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/down_arrow.png b/deleted/dist-cov/usergrid-portal/archive/images/down_arrow.png
deleted file mode 100644
index 8c86504..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/down_arrow.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/error.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/error.png b/deleted/dist-cov/usergrid-portal/archive/images/error.png
deleted file mode 100644
index 8270104..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/error.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/faviconApigee.ico
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/faviconApigee.ico b/deleted/dist-cov/usergrid-portal/archive/images/faviconApigee.ico
deleted file mode 100644
index f2f83a3..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/faviconApigee.ico and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/glyphicons-halflings-white.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/glyphicons-halflings-white.png b/deleted/dist-cov/usergrid-portal/archive/images/glyphicons-halflings-white.png
deleted file mode 100644
index a20760b..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/glyphicons-halflings-white.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/glyphicons-halflings.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/glyphicons-halflings.png b/deleted/dist-cov/usergrid-portal/archive/images/glyphicons-halflings.png
deleted file mode 100644
index 92d4445..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/glyphicons-halflings.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/glyphicons_halflings_135_wrench-white2.pdn
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/glyphicons_halflings_135_wrench-white2.pdn b/deleted/dist-cov/usergrid-portal/archive/images/glyphicons_halflings_135_wrench-white2.pdn
deleted file mode 100644
index 2d6d0fd..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/glyphicons_halflings_135_wrench-white2.pdn and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/glyphicons_halflings_135_wrench-white2.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/glyphicons_halflings_135_wrench-white2.png b/deleted/dist-cov/usergrid-portal/archive/images/glyphicons_halflings_135_wrench-white2.png
deleted file mode 100644
index 334b984..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/glyphicons_halflings_135_wrench-white2.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/glyphicons_halflings_135_wrench.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/glyphicons_halflings_135_wrench.png b/deleted/dist-cov/usergrid-portal/archive/images/glyphicons_halflings_135_wrench.png
deleted file mode 100644
index a501ccd..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/glyphicons_halflings_135_wrench.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/glyphicons_halflings_135_wrench_white.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/glyphicons_halflings_135_wrench_white.png b/deleted/dist-cov/usergrid-portal/archive/images/glyphicons_halflings_135_wrench_white.png
deleted file mode 100644
index eed258e..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/glyphicons_halflings_135_wrench_white.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/glyphicons_halflings_wrench_white.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/glyphicons_halflings_wrench_white.png b/deleted/dist-cov/usergrid-portal/archive/images/glyphicons_halflings_wrench_white.png
deleted file mode 100644
index eb7f3bd..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/glyphicons_halflings_wrench_white.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/google_api_key.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/google_api_key.png b/deleted/dist-cov/usergrid-portal/archive/images/google_api_key.png
deleted file mode 100644
index 26f83f1..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/google_api_key.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/green_dot.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/green_dot.png b/deleted/dist-cov/usergrid-portal/archive/images/green_dot.png
deleted file mode 100644
index c9e18eb..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/green_dot.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/grid.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/grid.png b/deleted/dist-cov/usergrid-portal/archive/images/grid.png
deleted file mode 100644
index 7fb3462..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/grid.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/icons.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/icons.png b/deleted/dist-cov/usergrid-portal/archive/images/icons.png
deleted file mode 100644
index 47ca99a..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/icons.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/ios-sdk-download.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/ios-sdk-download.png b/deleted/dist-cov/usergrid-portal/archive/images/ios-sdk-download.png
deleted file mode 100644
index 89a7c8b..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/ios-sdk-download.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/iphone_message.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/iphone_message.png b/deleted/dist-cov/usergrid-portal/archive/images/iphone_message.png
deleted file mode 100644
index 6973699..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/iphone_message.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/javascript-sdk-download.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/javascript-sdk-download.png b/deleted/dist-cov/usergrid-portal/archive/images/javascript-sdk-download.png
deleted file mode 100644
index 032a371..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/javascript-sdk-download.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/left_arrow.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/left_arrow.png b/deleted/dist-cov/usergrid-portal/archive/images/left_arrow.png
deleted file mode 100644
index 81ee40c..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/left_arrow.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/logo-white.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/logo-white.png b/deleted/dist-cov/usergrid-portal/archive/images/logo-white.png
deleted file mode 100644
index fbe95b8..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/logo-white.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/menuActiveTriangle.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/menuActiveTriangle.png b/deleted/dist-cov/usergrid-portal/archive/images/menuActiveTriangle.png
deleted file mode 100644
index 07db2d1..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/menuActiveTriangle.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/nodejs-sdk-download.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/nodejs-sdk-download.png b/deleted/dist-cov/usergrid-portal/archive/images/nodejs-sdk-download.png
deleted file mode 100644
index d997a5f..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/nodejs-sdk-download.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/notice.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/notice.png b/deleted/dist-cov/usergrid-portal/archive/images/notice.png
deleted file mode 100644
index 93c67f2..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/notice.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/orange-arrow.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/orange-arrow.png b/deleted/dist-cov/usergrid-portal/archive/images/orange-arrow.png
deleted file mode 100644
index 92d02f3..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/orange-arrow.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/push_notifications_icon.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/push_notifications_icon.png b/deleted/dist-cov/usergrid-portal/archive/images/push_notifications_icon.png
deleted file mode 100644
index 488cd82..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/push_notifications_icon.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/red_dot.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/red_dot.png b/deleted/dist-cov/usergrid-portal/archive/images/red_dot.png
deleted file mode 100644
index 4f7fb26..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/red_dot.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/right_arrow.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/right_arrow.png b/deleted/dist-cov/usergrid-portal/archive/images/right_arrow.png
deleted file mode 100644
index f37020a..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/right_arrow.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/ruby-sdk-download.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/ruby-sdk-download.png b/deleted/dist-cov/usergrid-portal/archive/images/ruby-sdk-download.png
deleted file mode 100644
index c9e7562..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/ruby-sdk-download.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/step_1.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/step_1.png b/deleted/dist-cov/usergrid-portal/archive/images/step_1.png
deleted file mode 100644
index fef83c8..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/step_1.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/step_2.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/step_2.png b/deleted/dist-cov/usergrid-portal/archive/images/step_2.png
deleted file mode 100644
index 87c1c53..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/step_2.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/step_3.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/step_3.png b/deleted/dist-cov/usergrid-portal/archive/images/step_3.png
deleted file mode 100644
index 2f6be12..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/step_3.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/success.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/success.png b/deleted/dist-cov/usergrid-portal/archive/images/success.png
deleted file mode 100644
index 7786ac7..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/success.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/swish_arrow.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/swish_arrow.png b/deleted/dist-cov/usergrid-portal/archive/images/swish_arrow.png
deleted file mode 100644
index 75b2150..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/swish_arrow.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/topbackground.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/topbackground.png b/deleted/dist-cov/usergrid-portal/archive/images/topbackground.png
deleted file mode 100644
index b9559e4..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/topbackground.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/up_arrow.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/up_arrow.png b/deleted/dist-cov/usergrid-portal/archive/images/up_arrow.png
deleted file mode 100644
index 926c7e0..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/up_arrow.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/user-photo.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/user-photo.png b/deleted/dist-cov/usergrid-portal/archive/images/user-photo.png
deleted file mode 100644
index 9c2a29c..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/user-photo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/user_profile.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/user_profile.png b/deleted/dist-cov/usergrid-portal/archive/images/user_profile.png
deleted file mode 100644
index ea1cba3..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/user_profile.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/usergrid_200.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/usergrid_200.png b/deleted/dist-cov/usergrid-portal/archive/images/usergrid_200.png
deleted file mode 100644
index c977d7c..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/usergrid_200.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/usergrid_400.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/usergrid_400.png b/deleted/dist-cov/usergrid-portal/archive/images/usergrid_400.png
deleted file mode 100644
index 01435ea..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/usergrid_400.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/warning.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/warning.png b/deleted/dist-cov/usergrid-portal/archive/images/warning.png
deleted file mode 100644
index 14776e2..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/warning.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/images/yellow_dot.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/images/yellow_dot.png b/deleted/dist-cov/usergrid-portal/archive/images/yellow_dot.png
deleted file mode 100644
index 37fed66..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/images/yellow_dot.png and /dev/null differ


[48/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/css/usergrid.css
----------------------------------------------------------------------
diff --git a/deleted/archive/css/usergrid.css b/deleted/archive/css/usergrid.css
deleted file mode 100644
index d46ccb2..0000000
--- a/deleted/archive/css/usergrid.css
+++ /dev/null
@@ -1,5203 +0,0 @@
-/*!
- * Bootstrap v2.0.0
- *
- * Copyright 2012 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
- */
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-nav,
-section {
-  display: block;
-}
-audio,
-canvas,
-video {
-  display: inline-block;
-  *display: inline;
-  *zoom: 1;
-}
-audio:not([controls]) {
-  display: none;
-}
-html {
-  font-size: 100%;
-  -webkit-text-size-adjust: 100%;
-  -ms-text-size-adjust: 100%;
-}
-a:focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-a:hover,
-a:active {
-  outline: 0;
-}
-sub,
-sup {
-  position: relative;
-  font-size: 75%;
-  line-height: 0;
-  vertical-align: baseline;
-}
-sup {
-  top: -0.5em;
-}
-sub {
-  bottom: -0.25em;
-}
-img {
-  max-width: 100%;
-  height: auto;
-  border: 0;
-  -ms-interpolation-mode: bicubic;
-}
-button,
-input,
-select,
-textarea {
-  margin: 0;
-  font-size: 100%;
-  vertical-align: middle;
-}
-button,
-input {
-  *overflow: visible;
-  line-height: normal;
-}
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-button,
-input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  cursor: pointer;
-  -webkit-appearance: button;
-}
-input[type="search"] {
-  -webkit-appearance: textfield;
-  -webkit-box-sizing: content-box;
-  -moz-box-sizing: content-box;
-  box-sizing: content-box;
-}
-input[type="search"]::-webkit-search-decoration,
-input[type="search"]::-webkit-search-cancel-button {
-  -webkit-appearance: none;
-}
-textarea {
-  overflow: auto;
-  vertical-align: top;
-}
-body {
-  margin: 0;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  line-height: 18px;
-  color: #333333;
-  background-color: #ffffff;
-}
-a {
-  color: #1b97d1;
-  text-decoration: none;
-}
-a:hover {
-  color: #12668d;
-  text-decoration: underline;
-}
-.row {
-  margin-left: -20px;
-  *zoom: 1;
-}
-.row:before,
-.row:after {
-  display: table;
-  content: "";
-}
-.row:after {
-  clear: both;
-}
-[class*="span"] {
-  float: left;
-  margin-left: 20px;
-}
-.span1 {
-  width: 60px;
-}
-.span2 {
-  width: 140px;
-}
-.span3 {
-  width: 220px;
-}
-.span4 {
-  width: 300px;
-}
-.span5 {
-  width: 380px;
-}
-.span6 {
-  width: 460px;
-}
-.span7 {
-  width: 540px;
-}
-.span8 {
-  width: 620px;
-}
-.span9 {
-  width: 700px;
-}
-.span10 {
-  width: 780px;
-}
-.span11 {
-  width: 860px;
-}
-.span12,
-.container {
-  width: 940px;
-}
-.offset1 {
-  margin-left: 100px;
-}
-.offset2 {
-  margin-left: 180px;
-}
-.offset3 {
-  margin-left: 260px;
-}
-.offset4 {
-  margin-left: 340px;
-}
-.offset5 {
-  margin-left: 420px;
-}
-.offset6 {
-  margin-left: 500px;
-}
-.offset7 {
-  margin-left: 580px;
-}
-.offset8 {
-  margin-left: 660px;
-}
-.offset9 {
-  margin-left: 740px;
-}
-.offset10 {
-  margin-left: 820px;
-}
-.offset11 {
-  margin-left: 900px;
-}
-.row-fluid {
-  width: 100%;
-  *zoom: 1;
-}
-.row-fluid:before,
-.row-fluid:after {
-  display: table;
-  content: "";
-}
-.row-fluid:after {
-  clear: both;
-}
-.row-fluid > [class*="span"] {
-  float: left;
-  margin-left: 2.127659574%;
-}
-.row-fluid > [class*="span"]:first-child {
-  margin-left: 0;
-}
-.row-fluid .span1 {
-  width: 6.382978723%;
-}
-.row-fluid .span2 {
-  width: 14.89361702%;
-}
-.row-fluid .span3 {
-  width: 23.404255317%;
-}
-.row-fluid .span4 {
-  width: 31.914893614%;
-}
-.row-fluid .span5 {
-  width: 40.425531911%;
-}
-.row-fluid .span6 {
-  width: 48.93617020799999%;
-}
-.row-fluid .span7 {
-  width: 57.446808505%;
-}
-.row-fluid .span8 {
-  width: 65.95744680199999%;
-}
-.row-fluid .span9 {
-  width: 74.468085099%;
-}
-.row-fluid .span10 {
-  width: 82.97872339599999%;
-}
-.row-fluid .span11 {
-  width: 91.489361693%;
-}
-.row-fluid .span12 {
-  width: 99.99999998999999%;
-}
-.container {
-  width: 940px;
-  margin-left: auto;
-  margin-right: auto;
-  *zoom: 1;
-}
-.container:before,
-.container:after {
-  display: table;
-  content: "";
-}
-.container:after {
-  clear: both;
-}
-.container-fluid {
-  padding-left: 20px;
-  padding-right: 20px;
-  *zoom: 1;
-}
-.container-fluid:before,
-.container-fluid:after {
-  display: table;
-  content: "";
-}
-.container-fluid:after {
-  clear: both;
-}
-p {
-  margin: 0 0 9px;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  line-height: 18px;
-}
-p small {
-  font-size: 11px;
-  color: #999999;
-}
-.lead {
-  margin-bottom: 18px;
-  font-size: 20px;
-  font-weight: 200;
-  line-height: 27px;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  margin: 0;
-  font-weight: bold;
-  color: #333333;
-  text-rendering: optimizelegibility;
-}
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small {
-  font-weight: normal;
-  color: #999999;
-}
-h1 {
-  font-size: 30px;
-  line-height: 36px;
-}
-h1 small {
-  font-size: 18px;
-}
-h2 {
-  font-size: 24px;
-  line-height: 36px;
-}
-h2 small {
-  font-size: 18px;
-}
-h3 {
-  line-height: 27px;
-  font-size: 18px;
-}
-h3 small {
-  font-size: 14px;
-}
-h4,
-h5,
-h6 {
-  line-height: 18px;
-}
-h4 {
-  font-size: 14px;
-}
-h4 small {
-  font-size: 12px;
-}
-h5 {
-  font-size: 12px;
-}
-h6 {
-  font-size: 11px;
-  color: #999999;
-  text-transform: uppercase;
-}
-.page-header {
-  padding-bottom: 17px;
-  margin: 18px 0;
-  border-bottom: 1px solid #eeeeee;
-}
-.page-header h1 {
-  line-height: 1;
-}
-ul,
-ol {
-  padding: 0;
-  margin: 0;
-}
-ul ul,
-ul ol,
-ol ol,
-ol ul {
-  margin-bottom: 0;
-}
-ul {
-  list-style: disc;
-}
-ol {
-  list-style: decimal;
-}
-li {
-  line-height: 18px;
-}
-ul.unstyled {
-  margin-left: 0;
-  list-style: none;
-}
-dl {
-  margin-bottom: 18px;
-}
-dt,
-dd {
-  line-height: 18px;
-}
-dt {
-  font-weight: bold;
-}
-dd {
-  margin-left: 9px;
-}
-hr {
-  margin: 18px 0;
-  border: 0;
-  border-top: 1px solid #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-strong {
-  font-weight: bold;
-}
-em {
-  font-style: italic;
-}
-.muted {
-  color: #999999;
-}
-abbr {
-  font-size: 90%;
-  text-transform: uppercase;
-  border-bottom: 1px dotted #ddd;
-  cursor: help;
-}
-blockquote {
-  padding: 0 0 0 15px;
-  margin: 0 0 18px;
-  border-left: 5px solid #eeeeee;
-}
-blockquote p {
-  margin-bottom: 0;
-  font-size: 16px;
-  font-weight: 300;
-  line-height: 22.5px;
-}
-blockquote small {
-  display: block;
-  line-height: 18px;
-  color: #999999;
-}
-blockquote small:before {
-  content: '\2014 \00A0';
-}
-blockquote.pull-right {
-  float: right;
-  padding-left: 0;
-  padding-right: 15px;
-  border-left: 0;
-  border-right: 5px solid #eeeeee;
-}
-blockquote.pull-right p,
-blockquote.pull-right small {
-  text-align: right;
-}
-q:before,
-q:after,
-blockquote:before,
-blockquote:after {
-  content: "";
-}
-address {
-  display: block;
-  margin-bottom: 18px;
-  line-height: 18px;
-  font-style: normal;
-}
-small {
-  font-size: 100%;
-}
-cite {
-  font-style: normal;
-}
-code,
-pre {
-  padding: 0 3px 2px;
-  font-family: Menlo, Monaco, "Courier New", monospace;
-  font-size: 12px;
-  color: #333333;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-code {
-  padding: 3px 4px;
-  color: #d14;
-  background-color: #f7f7f9;
-  border: 1px solid #e1e1e8;
-}
-pre {
-  display: block;
-  padding: 8.5px;
-  margin: 0 0 9px;
-  font-size: 12px;
-  line-height: 18px;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.15);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  white-space: pre;
-  white-space: pre-wrap;
-  word-break: break-all;
-}
-pre.prettyprint {
-  margin-bottom: 18px;
-}
-pre code {
-  padding: 0;
-  background-color: transparent;
-}
-form {
-  margin: 0 0 18px;
-}
-fieldset {
-  padding: 0;
-  margin: 0;
-  border: 0;
-}
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: 27px;
-  font-size: 19.5px;
-  line-height: 36px;
-  color: #333333;
-  border: 0;
-  border-bottom: 1px solid #eee;
-}
-label,
-input,
-button,
-select,
-textarea {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 18px;
-}
-label {
-  display: block;
-  margin-bottom: 5px;
-  color: #333333;
-}
-input,
-textarea,
-select,
-.uneditable-input {
-  display: inline-block;
-  width: 210px;
-  height: 18px;
-  padding: 4px;
-  margin-bottom: 9px;
-  font-size: 13px;
-  line-height: 18px;
-  color: #555555;
-  border: 1px solid #ccc;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.uneditable-textarea {
-  width: auto;
-  height: auto;
-}
-label input,
-label textarea,
-label select {
-  display: block;
-}
-input[type="image"],
-input[type="checkbox"],
-input[type="radio"] {
-  width: auto;
-  height: auto;
-  padding: 0;
-  margin: 3px 0;
-  *margin-top: 0;
-  /* IE7 */
-
-  line-height: normal;
-  border: 0;
-  cursor: pointer;
-  border-radius: 0 \0/;
-}
-input[type="file"] {
-  padding: initial;
-  line-height: initial;
-  border: initial;
-  background-color: #ffffff;
-  background-color: initial;
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  width: auto;
-  height: auto;
-}
-select,
-input[type="file"] {
-  height: 28px;
-  /* In IE7, the height of the select element cannot be changed by height, only font-size */
-
-  *margin-top: 4px;
-  /* For IE7, add top margin to align select with labels */
-
-  line-height: 28px;
-}
-select {
-  width: 220px;
-  background-color: #ffffff;
-}
-select[multiple],
-select[size] {
-  height: auto;
-}
-input[type="image"] {
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-textarea {
-  height: auto;
-}
-input[type="hidden"] {
-  display: none;
-}
-.radio,
-.checkbox {
-  padding-left: 18px;
-}
-.radio input[type="radio"],
-.checkbox input[type="checkbox"] {
-  float: left;
-  margin-left: -18px;
-}
-.controls > .radio:first-child,
-.controls > .checkbox:first-child {
-  padding-top: 5px;
-}
-.radio.inline,
-.checkbox.inline {
-  display: inline-block;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.radio.inline + .radio.inline,
-.checkbox.inline + .checkbox.inline {
-  margin-left: 10px;
-}
-.controls > .radio.inline:first-child,
-.controls > .checkbox.inline:first-child {
-  padding-top: 0;
-}
-input,
-textarea {
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
-  -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
-  -ms-transition: border linear 0.2s, box-shadow linear 0.2s;
-  -o-transition: border linear 0.2s, box-shadow linear 0.2s;
-  transition: border linear 0.2s, box-shadow linear 0.2s;
-}
-input:focus,
-textarea:focus {
-  border-color: rgba(82, 168, 236, 0.8);
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-  outline: 0;
-  outline: thin dotted \9;
-  /* IE6-8 */
-
-}
-input[type="file"]:focus,
-input[type="checkbox"]:focus,
-select:focus {
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.input-mini {
-  width: 60px;
-}
-.input-small {
-  width: 90px;
-}
-.input-medium {
-  width: 150px;
-}
-.input-large {
-  width: 210px;
-}
-.input-xlarge {
-  width: 270px;
-}
-.input-xxlarge {
-  width: 530px;
-}
-input[class*="span"],
-select[class*="span"],
-textarea[class*="span"],
-.uneditable-input {
-  float: none;
-  margin-left: 0;
-}
-input.span1,
-textarea.span1,
-.uneditable-input.span1 {
-  width: 50px;
-}
-input.span2,
-textarea.span2,
-.uneditable-input.span2 {
-  width: 130px;
-}
-input.span3,
-textarea.span3,
-.uneditable-input.span3 {
-  width: 210px;
-}
-input.span4,
-textarea.span4,
-.uneditable-input.span4 {
-  width: 290px;
-}
-input.span5,
-textarea.span5,
-.uneditable-input.span5 {
-  width: 370px;
-}
-input.span6,
-textarea.span6,
-.uneditable-input.span6 {
-  width: 450px;
-}
-input.span7,
-textarea.span7,
-.uneditable-input.span7 {
-  width: 530px;
-}
-input.span8,
-textarea.span8,
-.uneditable-input.span8 {
-  width: 610px;
-}
-input.span9,
-textarea.span9,
-.uneditable-input.span9 {
-  width: 690px;
-}
-input.span10,
-textarea.span10,
-.uneditable-input.span10 {
-  width: 770px;
-}
-input.span11,
-textarea.span11,
-.uneditable-input.span11 {
-  width: 850px;
-}
-input.span12,
-textarea.span12,
-.uneditable-input.span12 {
-  width: 930px;
-}
-input[disabled],
-select[disabled],
-textarea[disabled],
-input[readonly],
-select[readonly],
-textarea[readonly] {
-  background-color: #f5f5f5;
-  border-color: #ddd;
-  cursor: not-allowed;
-}
-.control-group.warning > label,
-.control-group.warning .help-block,
-.control-group.warning .help-inline {
-  color: #c09853;
-}
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  color: #c09853;
-  border-color: #c09853;
-}
-.control-group.warning input:focus,
-.control-group.warning select:focus,
-.control-group.warning textarea:focus {
-  border-color: #a47e3c;
-  -webkit-box-shadow: 0 0 6px #dbc59e;
-  -moz-box-shadow: 0 0 6px #dbc59e;
-  box-shadow: 0 0 6px #dbc59e;
-}
-.control-group.warning .input-prepend .add-on,
-.control-group.warning .input-append .add-on {
-  color: #c09853;
-  background-color: #fcf8e3;
-  border-color: #c09853;
-}
-.control-group.error > label,
-.control-group.error .help-block,
-.control-group.error .help-inline {
-  color: #b94a48;
-}
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  color: #b94a48;
-  border-color: #b94a48;
-}
-.control-group.error input:focus,
-.control-group.error select:focus,
-.control-group.error textarea:focus {
-  border-color: #953b39;
-  -webkit-box-shadow: 0 0 6px #d59392;
-  -moz-box-shadow: 0 0 6px #d59392;
-  box-shadow: 0 0 6px #d59392;
-}
-.control-group.error .input-prepend .add-on,
-.control-group.error .input-append .add-on {
-  color: #b94a48;
-  background-color: #f2dede;
-  border-color: #b94a48;
-}
-.control-group.success > label,
-.control-group.success .help-block,
-.control-group.success .help-inline {
-  color: #468847;
-}
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  color: #468847;
-  border-color: #468847;
-}
-.control-group.success input:focus,
-.control-group.success select:focus,
-.control-group.success textarea:focus {
-  border-color: #356635;
-  -webkit-box-shadow: 0 0 6px #7aba7b;
-  -moz-box-shadow: 0 0 6px #7aba7b;
-  box-shadow: 0 0 6px #7aba7b;
-}
-.control-group.success .input-prepend .add-on,
-.control-group.success .input-append .add-on {
-  color: #468847;
-  background-color: #dff0d8;
-  border-color: #468847;
-}
-input:focus:required:invalid,
-textarea:focus:required:invalid,
-select:focus:required:invalid {
-  color: #b94a48;
-  border-color: #ee5f5b;
-}
-input:focus:required:invalid:focus,
-textarea:focus:required:invalid:focus,
-select:focus:required:invalid:focus {
-  border-color: #e9322d;
-  -webkit-box-shadow: 0 0 6px #f8b9b7;
-  -moz-box-shadow: 0 0 6px #f8b9b7;
-  box-shadow: 0 0 6px #f8b9b7;
-}
-.form-actions {
-  padding: 17px 20px 18px;
-  margin-top: 18px;
-  margin-bottom: 18px;
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-}
-.uneditable-input {
-  display: block;
-  background-color: #ffffff;
-  border-color: #eee;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  cursor: not-allowed;
-}
-:-moz-placeholder {
-  color: #999999;
-}
-::-webkit-input-placeholder {
-  color: #999999;
-}
-.help-block {
-  margin-top: 5px;
-  margin-bottom: 0;
-  color: #999999;
-}
-.help-inline {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  margin-bottom: 9px;
-  vertical-align: middle;
-  padding-left: 5px;
-}
-.input-prepend,
-.input-append {
-  margin-bottom: 5px;
-  *zoom: 1;
-}
-.input-prepend:before,
-.input-append:before,
-.input-prepend:after,
-.input-append:after {
-  display: table;
-  content: "";
-}
-.input-prepend:after,
-.input-append:after {
-  clear: both;
-}
-.input-prepend input,
-.input-append input,
-.input-prepend .uneditable-input,
-.input-append .uneditable-input {
-  -webkit-border-radius: 0 3px 3px 0;
-  -moz-border-radius: 0 3px 3px 0;
-  border-radius: 0 3px 3px 0;
-}
-.input-prepend input:focus,
-.input-append input:focus,
-.input-prepend .uneditable-input:focus,
-.input-append .uneditable-input:focus {
-  position: relative;
-  z-index: 2;
-}
-.input-prepend .uneditable-input,
-.input-append .uneditable-input {
-  border-left-color: #ccc;
-}
-.input-prepend .add-on,
-.input-append .add-on {
-  float: left;
-  display: block;
-  width: auto;
-  min-width: 16px;
-  height: 18px;
-  margin-right: -1px;
-  padding: 4px 5px;
-  font-weight: normal;
-  line-height: 18px;
-  color: #999999;
-  text-align: center;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  -webkit-border-radius: 3px 0 0 3px;
-  -moz-border-radius: 3px 0 0 3px;
-  border-radius: 3px 0 0 3px;
-}
-.input-prepend .active,
-.input-append .active {
-  background-color: #a9dba9;
-  border-color: #46a546;
-}
-.input-prepend .add-on {
-  *margin-top: 1px;
-  /* IE6-7 */
-
-}
-.input-append input,
-.input-append .uneditable-input {
-  float: left;
-  -webkit-border-radius: 3px 0 0 3px;
-  -moz-border-radius: 3px 0 0 3px;
-  border-radius: 3px 0 0 3px;
-}
-.input-append .uneditable-input {
-  border-right-color: #ccc;
-}
-.input-append .add-on {
-  margin-right: 0;
-  margin-left: -1px;
-  -webkit-border-radius: 0 3px 3px 0;
-  -moz-border-radius: 0 3px 3px 0;
-  border-radius: 0 3px 3px 0;
-}
-.input-append input:first-child {
-  *margin-left: -160px;
-}
-.input-append input:first-child + .add-on {
-  *margin-left: -21px;
-}
-.search-query {
-  padding-left: 14px;
-  padding-right: 14px;
-  margin-bottom: 0;
-  -webkit-border-radius: 14px;
-  -moz-border-radius: 14px;
-  border-radius: 14px;
-}
-.form-search input,
-.form-inline input,
-.form-horizontal input,
-.form-search textarea,
-.form-inline textarea,
-.form-horizontal textarea,
-.form-search select,
-.form-inline select,
-.form-horizontal select,
-.form-search .help-inline,
-.form-inline .help-inline,
-.form-horizontal .help-inline,
-.form-search .uneditable-input,
-.form-inline .uneditable-input,
-.form-horizontal .uneditable-input {
-  display: inline-block;
-  margin-bottom: 0;
-}
-.form-search label,
-.form-inline label,
-.form-search .input-append,
-.form-inline .input-append,
-.form-search .input-prepend,
-.form-inline .input-prepend {
-  display: inline-block;
-}
-.form-search .input-append .add-on,
-.form-inline .input-prepend .add-on,
-.form-search .input-append .add-on,
-.form-inline .input-prepend .add-on {
-  vertical-align: middle;
-}
-.control-group {
-  margin-bottom: 9px;
-}
-.form-horizontal legend + .control-group {
-  margin-top: 18px;
-  -webkit-margin-top-collapse: separate;
-}
-.form-horizontal .control-group {
-  margin-bottom: 18px;
-  *zoom: 1;
-}
-.form-horizontal .control-group:before,
-.form-horizontal .control-group:after {
-  display: table;
-  content: "";
-}
-.form-horizontal .control-group:after {
-  clear: both;
-}
-.form-horizontal .control-group > label {
-  float: left;
-  width: 140px;
-  padding-top: 5px;
-  text-align: right;
-}
-.form-horizontal .controls {
-  margin-left: 160px;
-}
-.form-horizontal .form-actions {
-  padding-left: 160px;
-}
-table {
-  max-width: 100%;
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-.table {
-  width: 100%;
-  margin-bottom: 18px;
-}
-.table th,
-.table td {
-  padding: 8px;
-  line-height: 18px;
-  text-align: left;
-  border-top: 1px solid #ddd;
-}
-.table th {
-  font-weight: bold;
-  vertical-align: bottom;
-}
-.table td {
-  vertical-align: top;
-}
-.table thead:first-child tr th,
-.table thead:first-child tr td {
-  border-top: 0;
-}
-.table tbody + tbody {
-  border-top: 2px solid #ddd;
-}
-.table-condensed th,
-.table-condensed td {
-  padding: 4px 5px;
-}
-.table-bordered {
-  border: 1px solid #ddd;
-  border-collapse: separate;
-  *border-collapse: collapsed;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.table-bordered th + th,
-.table-bordered td + td,
-.table-bordered th + td,
-.table-bordered td + th {
-  border-left: 1px solid #ddd;
-}
-.table-bordered thead:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child td {
-  border-top: 0;
-}
-.table-bordered thead:first-child tr:first-child th:first-child,
-.table-bordered tbody:first-child tr:first-child td:first-child {
-  -webkit-border-radius: 4px 0 0 0;
-  -moz-border-radius: 4px 0 0 0;
-  border-radius: 4px 0 0 0;
-}
-.table-bordered thead:first-child tr:first-child th:last-child,
-.table-bordered tbody:first-child tr:first-child td:last-child {
-  -webkit-border-radius: 0 4px 0 0;
-  -moz-border-radius: 0 4px 0 0;
-  border-radius: 0 4px 0 0;
-}
-.table-bordered thead:last-child tr:last-child th:first-child,
-.table-bordered tbody:last-child tr:last-child td:first-child {
-  -webkit-border-radius: 0 0 0 4px;
-  -moz-border-radius: 0 0 0 4px;
-  border-radius: 0 0 0 4px;
-}
-.table-bordered thead:last-child tr:last-child th:last-child,
-.table-bordered tbody:last-child tr:last-child td:last-child {
-  -webkit-border-radius: 0 0 4px 0;
-  -moz-border-radius: 0 0 4px 0;
-  border-radius: 0 0 4px 0;
-}
-.table-striped tbody tr:nth-child(odd) td,
-.table-striped tbody tr:nth-child(odd) th {
-  background-color: #f9f9f9;
-}
-table .span1 {
-  float: none;
-  width: 44px;
-  margin-left: 0;
-}
-table .span2 {
-  float: none;
-  width: 124px;
-  margin-left: 0;
-}
-table .span3 {
-  float: none;
-  width: 204px;
-  margin-left: 0;
-}
-table .span4 {
-  float: none;
-  width: 284px;
-  margin-left: 0;
-}
-table .span5 {
-  float: none;
-  width: 364px;
-  margin-left: 0;
-}
-table .span6 {
-  float: none;
-  width: 444px;
-  margin-left: 0;
-}
-table .span7 {
-  float: none;
-  width: 524px;
-  margin-left: 0;
-}
-table .span8 {
-  float: none;
-  width: 604px;
-  margin-left: 0;
-}
-table .span9 {
-  float: none;
-  width: 684px;
-  margin-left: 0;
-}
-table .span10 {
-  float: none;
-  width: 764px;
-  margin-left: 0;
-}
-table .span11 {
-  float: none;
-  width: 844px;
-  margin-left: 0;
-}
-table .span12 {
-  float: none;
-  width: 924px;
-  margin-left: 0;
-}
-[class^="icon-"] {
-  display: inline-block;
-  width: 14px;
-  height: 14px;
-  vertical-align: text-top;
-  background-image: url(../images/glyphicons-halflings.png);
-  background-position: 14px 14px;
-  background-repeat: no-repeat;
-  *margin-right: .3em;
-}
-[class^="icon-"]:last-child {
-  *margin-left: 0;
-}
-.icon-white {
-  background-image: url(../images/glyphicons-halflings-white.png);
-}
-.icon-glass {
-  background-position: 0      0;
-}
-.icon-music {
-  background-position: -24px 0;
-}
-.icon-search {
-  background-position: -48px 0;
-}
-.icon-envelope {
-  background-position: -72px 0;
-}
-.icon-heart {
-  background-position: -96px 0;
-}
-.icon-star {
-  background-position: -120px 0;
-}
-.icon-star-empty {
-  background-position: -144px 0;
-}
-.icon-user {
-  background-position: -168px 0;
-}
-.icon-film {
-  background-position: -192px 0;
-}
-.icon-th-large {
-  background-position: -216px 0;
-}
-.icon-th {
-  background-position: -240px 0;
-}
-.icon-th-list {
-  background-position: -264px 0;
-}
-.icon-ok {
-  background-position: -288px 0;
-}
-.icon-remove {
-  background-position: -312px 0;
-}
-.icon-zoom-in {
-  background-position: -336px 0;
-}
-.icon-zoom-out {
-  background-position: -360px 0;
-}
-.icon-off {
-  background-position: -384px 0;
-}
-.icon-signal {
-  background-position: -408px 0;
-}
-.icon-cog {
-  background-position: -432px 0;
-}
-.icon-trash {
-  background-position: -456px 0;
-}
-.icon-home {
-  background-position: 0 -24px;
-}
-.icon-file {
-  background-position: -24px -24px;
-}
-.icon-time {
-  background-position: -48px -24px;
-}
-.icon-road {
-  background-position: -72px -24px;
-}
-.icon-download-alt {
-  background-position: -96px -24px;
-}
-.icon-download {
-  background-position: -120px -24px;
-}
-.icon-upload {
-  background-position: -144px -24px;
-}
-.icon-inbox {
-  background-position: -168px -24px;
-}
-.icon-play-circle {
-  background-position: -192px -24px;
-}
-.icon-repeat {
-  background-position: -216px -24px;
-}
-.icon-refresh {
-  background-position: -240px -24px;
-}
-.icon-list-alt {
-  background-position: -264px -24px;
-}
-.icon-lock {
-  background-position: -287px -24px;
-}
-.icon-flag {
-  background-position: -312px -24px;
-}
-.icon-headphones {
-  background-position: -336px -24px;
-}
-.icon-volume-off {
-  background-position: -360px -24px;
-}
-.icon-volume-down {
-  background-position: -384px -24px;
-}
-.icon-volume-up {
-  background-position: -408px -24px;
-}
-.icon-qrcode {
-  background-position: -432px -24px;
-}
-.icon-barcode {
-  background-position: -456px -24px;
-}
-.icon-tag {
-  background-position: 0 -48px;
-}
-.icon-tags {
-  background-position: -25px -48px;
-}
-.icon-book {
-  background-position: -48px -48px;
-}
-.icon-bookmark {
-  background-position: -72px -48px;
-}
-.icon-print {
-  background-position: -96px -48px;
-}
-.icon-camera {
-  background-position: -120px -48px;
-}
-.icon-font {
-  background-position: -144px -48px;
-}
-.icon-bold {
-  background-position: -167px -48px;
-}
-.icon-italic {
-  background-position: -192px -48px;
-}
-.icon-text-height {
-  background-position: -216px -48px;
-}
-.icon-text-width {
-  background-position: -240px -48px;
-}
-.icon-align-left {
-  background-position: -264px -48px;
-}
-.icon-align-center {
-  background-position: -288px -48px;
-}
-.icon-align-right {
-  background-position: -312px -48px;
-}
-.icon-align-justify {
-  background-position: -336px -48px;
-}
-.icon-list {
-  background-position: -360px -48px;
-}
-.icon-indent-left {
-  background-position: -384px -48px;
-}
-.icon-indent-right {
-  background-position: -408px -48px;
-}
-.icon-facetime-video {
-  background-position: -432px -48px;
-}
-.icon-picture {
-  background-position: -456px -48px;
-}
-.icon-pencil {
-  background-position: 0 -72px;
-}
-.icon-map-marker {
-  background-position: -24px -72px;
-}
-.icon-adjust {
-  background-position: -48px -72px;
-}
-.icon-tint {
-  background-position: -72px -72px;
-}
-.icon-edit {
-  background-position: -96px -72px;
-}
-.icon-share {
-  background-position: -120px -72px;
-}
-.icon-check {
-  background-position: -144px -72px;
-}
-.icon-move {
-  background-position: -168px -72px;
-}
-.icon-step-backward {
-  background-position: -192px -72px;
-}
-.icon-fast-backward {
-  background-position: -216px -72px;
-}
-.icon-backward {
-  background-position: -240px -72px;
-}
-.icon-play {
-  background-position: -264px -72px;
-}
-.icon-pause {
-  background-position: -288px -72px;
-}
-.icon-stop {
-  background-position: -312px -72px;
-}
-.icon-forward {
-  background-position: -336px -72px;
-}
-.icon-fast-forward {
-  background-position: -360px -72px;
-}
-.icon-step-forward {
-  background-position: -384px -72px;
-}
-.icon-eject {
-  background-position: -408px -72px;
-}
-.icon-chevron-left {
-  background-position: -432px -72px;
-}
-.icon-chevron-right {
-  background-position: -456px -72px;
-}
-.icon-plus-sign {
-  background-position: 0 -96px;
-}
-.icon-minus-sign {
-  background-position: -24px -96px;
-}
-.icon-remove-sign {
-  background-position: -48px -96px;
-}
-.icon-ok-sign {
-  background-position: -72px -96px;
-}
-.icon-question-sign {
-  background-position: -96px -96px;
-}
-.icon-info-sign {
-  background-position: -120px -96px;
-}
-.icon-screenshot {
-  background-position: -144px -96px;
-}
-.icon-remove-circle {
-  background-position: -168px -96px;
-}
-.icon-ok-circle {
-  background-position: -192px -96px;
-}
-.icon-ban-circle {
-  background-position: -216px -96px;
-}
-.icon-arrow-left {
-  background-position: -240px -96px;
-}
-.icon-arrow-right {
-  background-position: -264px -96px;
-}
-.icon-arrow-up {
-  background-position: -289px -96px;
-}
-.icon-arrow-down {
-  background-position: -312px -96px;
-}
-.icon-share-alt {
-  background-position: -336px -96px;
-}
-.icon-resize-full {
-  background-position: -360px -96px;
-}
-.icon-resize-small {
-  background-position: -384px -96px;
-}
-.icon-plus {
-  background-position: -408px -96px;
-}
-.icon-minus {
-  background-position: -433px -96px;
-}
-.icon-asterisk {
-  background-position: -456px -96px;
-}
-.icon-exclamation-sign {
-  background-position: 0 -120px;
-}
-.icon-gift {
-  background-position: -24px -120px;
-}
-.icon-leaf {
-  background-position: -48px -120px;
-}
-.icon-fire {
-  background-position: -72px -120px;
-}
-.icon-eye-open {
-  background-position: -96px -120px;
-}
-.icon-eye-close {
-  background-position: -120px -120px;
-}
-.icon-warning-sign {
-  background-position: -144px -120px;
-}
-.icon-plane {
-  background-position: -168px -120px;
-}
-.icon-calendar {
-  background-position: -192px -120px;
-}
-.icon-notifications {
-  background-position: -192px -120px;
-}
-.icon-random {
-  background-position: -216px -120px;
-}
-.icon-comment {
-  background-position: -240px -120px;
-}
-.icon-magnet {
-  background-position: -264px -120px;
-}
-.icon-chevron-up {
-  background-position: -288px -120px;
-}
-.icon-chevron-down {
-  background-position: -313px -119px;
-}
-.icon-retweet {
-  background-position: -336px -120px;
-}
-.icon-shopping-cart {
-  background-position: -360px -120px;
-}
-.icon-folder-close {
-  background-position: -384px -120px;
-}
-.icon-folder-open {
-  background-position: -408px -120px;
-}
-.icon-resize-vertical {
-  background-position: -432px -119px;
-}
-.icon-resize-horizontal {
-  background-position: -456px -118px;
-}
-.dropdown {
-  position: relative;
-}
-.dropdown-toggle {
-  *margin-bottom: -3px;
-}
-.dropdown-toggle:active,
-.open .dropdown-toggle {
-  outline: 0;
-}
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  text-indent: -99999px;
-  *text-indent: 0;
-  vertical-align: top;
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-top: 4px solid #000000;
-  opacity: 0.3;
-  filter: alpha(opacity=30);
-  content: "\2193";
-}
-.dropdown .caret {
-  margin-top: 8px;
-  margin-left: 2px;
-}
-.dropdown:hover .caret,
-.open.dropdown .caret {
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  float: left;
-  display: none;
-  min-width: 160px;
-  max-width: 220px;
-  _width: 160px;
-  padding: 4px 0;
-  margin: 0;
-  list-style: none;
-  background-color: #ffffff;
-  border-color: #ccc;
-  border-color: rgba(0, 0, 0, 0.2);
-  border-style: solid;
-  border-width: 1px;
-  -webkit-border-radius: 0 0 5px 5px;
-  -moz-border-radius: 0 0 5px 5px;
-  border-radius: 0 0 5px 5px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding;
-  background-clip: padding-box;
-  *border-right-width: 2px;
-  *border-bottom-width: 2px;
-}
-.dropdown-menu.bottom-up {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 2px;
-}
-.dropdown-menu .divider {
-  height: 1px;
-  margin: 5px 1px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-  *width: 100%;
-  *margin: -5px 0 5px;
-}
-.dropdown-menu a {
-  display: block;
-  padding: 3px 15px;
-  clear: both;
-  font-weight: normal;
-  line-height: 18px;
-  color: #555555;
-  white-space: nowrap;
-}
-.dropdown-menu li > a:hover,
-.dropdown-menu .active > a,
-.dropdown-menu .active > a:hover {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #1b97d1;
-}
-.dropdown.open {
-  *z-index: 1000;
-}
-.dropdown.open .dropdown-toggle {
-  color: #ffffff;
-  background: #ccc;
-  background: rgba(0, 0, 0, 0.3);
-}
-.dropdown.open .dropdown-menu {
-  display: block;
-}
-.typeahead {
-  margin-top: 2px;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.well {
-  min-height: 20px;
-  padding: 19px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border: 1px solid #eee;
-  border: 1px solid rgba(0, 0, 0, 0.05);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-.well blockquote {
-  border-color: #ddd;
-  border-color: rgba(0, 0, 0, 0.15);
-}
-.fade {
-  -webkit-transition: opacity 0.15s linear;
-  -moz-transition: opacity 0.15s linear;
-  -ms-transition: opacity 0.15s linear;
-  -o-transition: opacity 0.15s linear;
-  transition: opacity 0.15s linear;
-  opacity: 0;
-}
-.fade.in {
-  opacity: 1;
-}
-.collapse {
-  -webkit-transition: height 0.35s ease;
-  -moz-transition: height 0.35s ease;
-  -ms-transition: height 0.35s ease;
-  -o-transition: height 0.35s ease;
-  transition: height 0.35s ease;
-  position: relative;
-  overflow: hidden;
-  height: 0;
-}
-.collapse.in {
-  height: auto;
-}
-.close {
-  float: right;
-  font-size: 20px;
-  font-weight: bold;
-  line-height: 18px;
-  color: #000000;
-  text-shadow: 0 1px 0 #ffffff;
-  opacity: 0.2;
-  filter: alpha(opacity=20);
-}
-.close:hover {
-  color: #000000;
-  text-decoration: none;
-  opacity: 0.4;
-  filter: alpha(opacity=40);
-  cursor: pointer;
-}
-.btn {
-  display: inline-block;
-  padding: 4px 10px 4px;
-  font-size: 13px;
-  line-height: 18px;
-  color: #333333;
-  text-align: center;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
-  background-color: #fafafa;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6));
-  background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6);
-  background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-repeat: no-repeat;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);
-  border: 1px solid #ccc;
-  border-bottom-color: #bbb;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  cursor: pointer;
-  *margin-left: .3em;
-}
-.btn:first-child {
-  *margin-left: 0;
-}
-.btn:hover {
-  color: #333333;
-  text-decoration: none;
-  background-color: #e6e6e6;
-  background-position: 0 -15px;
-  -webkit-transition: background-position 0.1s linear;
-  -moz-transition: background-position 0.1s linear;
-  -ms-transition: background-position 0.1s linear;
-  -o-transition: background-position 0.1s linear;
-  transition: background-position 0.1s linear;
-}
-.btn:focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.btn.active,
-.btn:active {
-  background-image: none;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  background-color: #e6e6e6;
-  background-color: #d9d9d9 \9;
-  color: rgba(0, 0, 0, 0.5);
-  outline: 0;
-}
-.btn.disabled,
-.btn[disabled] {
-  cursor: default;
-  background-image: none;
-  background-color: #e6e6e6;
-  opacity: 0.65;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-.btn-large {
-  padding: 9px 14px;
-  font-size: 15px;
-  line-height: normal;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.btn-large .icon {
-  margin-top: 1px;
-}
-.btn-small {
-  padding: 5px 9px;
-  font-size: 11px;
-  line-height: 16px;
-}
-.btn-small .icon {
-  margin-top: -1px;
-}
-.btn-primary,
-.btn-primary:hover,
-.btn-warning,
-.btn-warning:hover,
-.btn-danger,
-.btn-danger:hover,
-.btn-success,
-.btn-success:hover,
-.btn-info,
-.btn-info:hover {
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  color: #ffffff;
-}
-.btn-primary.active,
-.btn-warning.active,
-.btn-danger.active,
-.btn-success.active,
-.btn-info.active {
-  color: rgba(255, 255, 255, 0.75);
-}
-.btn-primary {
-  background-color: #1b7fd1;
-  background-image: -moz-linear-gradient(top, #1b97d1, #1b5ad1);
-  background-image: -ms-linear-gradient(top, #1b97d1, #1b5ad1);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#1b97d1), to(#1b5ad1));
-  background-image: -webkit-linear-gradient(top, #1b97d1, #1b5ad1);
-  background-image: -o-linear-gradient(top, #1b97d1, #1b5ad1);
-  background-image: linear-gradient(top, #1b97d1, #1b5ad1);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1b97d1', endColorstr='#1b5ad1', GradientType=0);
-  border-color: #1b5ad1 #1b5ad1 #123d8d;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-primary:hover,
-.btn-primary:active,
-.btn-primary.active,
-.btn-primary.disabled,
-.btn-primary[disabled] {
-  background-color: #1b5ad1;
-}
-.btn-primary:active,
-.btn-primary.active {
-  background-color: #1547a4 \9;
-}
-.btn-warning {
-  background-color: #faa732;
-  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
-  background-image: -ms-linear-gradient(top, #fbb450, #f89406);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
-  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
-  background-image: -o-linear-gradient(top, #fbb450, #f89406);
-  background-image: linear-gradient(top, #fbb450, #f89406);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);
-  border-color: #f89406 #f89406 #ad6704;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-warning:hover,
-.btn-warning:active,
-.btn-warning.active,
-.btn-warning.disabled,
-.btn-warning[disabled] {
-  background-color: #f89406;
-}
-.btn-warning:active,
-.btn-warning.active {
-  background-color: #c67605 \9;
-}
-.btn-danger {
-  background-color: #da4f49;
-  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: linear-gradient(top, #ee5f5b, #bd362f);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);
-  border-color: #bd362f #bd362f #802420;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-danger:hover,
-.btn-danger:active,
-.btn-danger.active,
-.btn-danger.disabled,
-.btn-danger[disabled] {
-  background-color: #bd362f;
-}
-.btn-danger:active,
-.btn-danger.active {
-  background-color: #942a25 \9;
-}
-.btn-success {
-  background-color: #5bb75b;
-  background-image: -moz-linear-gradient(top, #62c462, #51a351);
-  background-image: -ms-linear-gradient(top, #62c462, #51a351);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
-  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
-  background-image: -o-linear-gradient(top, #62c462, #51a351);
-  background-image: linear-gradient(top, #62c462, #51a351);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);
-  border-color: #51a351 #51a351 #387038;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-success:hover,
-.btn-success:active,
-.btn-success.active,
-.btn-success.disabled,
-.btn-success[disabled] {
-  background-color: #51a351;
-}
-.btn-success:active,
-.btn-success.active {
-  background-color: #408140 \9;
-}
-.btn-info {
-  background-color: #49afcd;
-  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: linear-gradient(top, #5bc0de, #2f96b4);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);
-  border-color: #2f96b4 #2f96b4 #1f6377;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-info:hover,
-.btn-info:active,
-.btn-info.active,
-.btn-info.disabled,
-.btn-info[disabled] {
-  background-color: #2f96b4;
-}
-.btn-info:active,
-.btn-info.active {
-  background-color: #24748c \9;
-}
-button.btn,
-input[type="submit"].btn {
-  *padding-top: 2px;
-  *padding-bottom: 2px;
-}
-button.btn::-moz-focus-inner,
-input[type="submit"].btn::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-button.btn.large,
-input[type="submit"].btn.large {
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-button.btn.small,
-input[type="submit"].btn.small {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-.btn-group {
-  position: relative;
-  *zoom: 1;
-  *margin-left: .3em;
-}
-.btn-group:before,
-.btn-group:after {
-  display: table;
-  content: "";
-}
-.btn-group:after {
-  clear: both;
-}
-.btn-group:first-child {
-  *margin-left: 0;
-}
-.btn-group + .btn-group {
-  margin-left: 5px;
-}
-.btn-toolbar {
-  margin-top: 9px;
-  margin-bottom: 9px;
-}
-.btn-toolbar .btn-group {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-}
-.btn-group .btn {
-  position: relative;
-  float: left;
-  margin-left: -1px;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-group .btn:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-  -webkit-border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  border-bottom-left-radius: 4px;
-}
-.btn-group .btn:last-child,
-.btn-group .dropdown-toggle {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-  -webkit-border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  border-bottom-right-radius: 4px;
-}
-.btn-group .btn.large:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 6px;
-  -moz-border-radius-topleft: 6px;
-  border-top-left-radius: 6px;
-  -webkit-border-bottom-left-radius: 6px;
-  -moz-border-radius-bottomleft: 6px;
-  border-bottom-left-radius: 6px;
-}
-.btn-group .btn.large:last-child,
-.btn-group .large.dropdown-toggle {
-  -webkit-border-top-right-radius: 6px;
-  -moz-border-radius-topright: 6px;
-  border-top-right-radius: 6px;
-  -webkit-border-bottom-right-radius: 6px;
-  -moz-border-radius-bottomright: 6px;
-  border-bottom-right-radius: 6px;
-}
-.btn-group .btn:hover,
-.btn-group .btn:focus,
-.btn-group .btn:active,
-.btn-group .btn.active {
-  z-index: 2;
-}
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-.btn-group .dropdown-toggle {
-  padding-left: 8px;
-  padding-right: 8px;
-  -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  *padding-top: 5px;
-  *padding-bottom: 5px;
-}
-.btn-group.open {
-  *z-index: 1000;
-}
-.btn-group.open .dropdown-menu {
-  display: block;
-  margin-top: 1px;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.btn-group.open .dropdown-toggle {
-  background-image: none;
-  -webkit-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-.btn .caret {
-  margin-top: 7px;
-  margin-left: 0;
-}
-.btn:hover .caret,
-.open.btn-group .caret {
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.btn-primary .caret,
-.btn-danger .caret,
-.btn-info .caret,
-.btn-success .caret {
-  border-top-color: #ffffff;
-  opacity: 0.75;
-  filter: alpha(opacity=75);
-}
-.btn-small .caret {
-  margin-top: 4px;
-}
-.alert {
-  padding: 8px 35px 8px 14px;
-  margin-bottom: 18px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  background-color: #fcf8e3;
-  border: 1px solid #fbeed5;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.alert,
-.alert-heading {
-  color: #c09853;
-}
-.alert .close {
-  position: relative;
-  top: -2px;
-  right: -21px;
-  line-height: 18px;
-}
-.alert-success {
-  background-color: #dff0d8;
-  border-color: #d6e9c6;
-}
-.alert-success,
-.alert-success .alert-heading {
-  color: #468847;
-}
-.alert-danger,
-.alert-error {
-  background-color: #f2dede;
-  border-color: #eed3d7;
-}
-.alert-danger,
-.alert-error,
-.alert-danger .alert-heading,
-.alert-error .alert-heading {
-  color: #b94a48;
-}
-.alert-info {
-  background-color: #d9edf7;
-  border-color: #bce8f1;
-}
-.alert-info,
-.alert-info .alert-heading {
-  color: #3a87ad;
-}
-.alert-block {
-  padding-top: 14px;
-  padding-bottom: 14px;
-}
-.alert-block > p,
-.alert-block > ul {
-  margin-bottom: 0;
-}
-.alert-block p + p {
-  margin-top: 5px;
-}
-.nav {
-  margin-left: 0;
-  margin-bottom: 18px;
-  list-style: none;
-}
-.nav > li > a {
-  display: block;
-}
-.nav > li > a:hover {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-.nav-list {
-  padding-left: 14px;
-  padding-right: 14px;
-  margin-bottom: 0;
-}
-.nav-list > li > a,
-.nav-list .nav-header {
-  display: block;
-  padding: 3px 15px;
-  margin-left: -15px;
-  margin-right: -15px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-}
-.nav-list .nav-header {
-  font-size: 11px;
-  font-weight: bold;
-  line-height: 18px;
-  color: #999999;
-  text-transform: uppercase;
-}
-.nav-list > li + .nav-header {
-  margin-top: 9px;
-}
-.nav-list .active > a {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
-  background-color: #1b97d1;
-}
-.nav-list .icon {
-  margin-right: 2px;
-}
-
-.nav-tabs,
-.nav-pills {
-  *zoom: 1;
-}
-.nav-tabs:before,
-.nav-pills:before,
-.nav-tabs:after,
-.nav-pills:after {
-  display: table;
-  content: "";
-}
-.nav-tabs:after,
-.nav-pills:after {
-  clear: both;
-}
-.nav-tabs > li,
-.nav-pills > li {
-  float: left;
-}
-.nav-tabs > li > a,
-.nav-pills > li > a {
-  padding-right: 12px;
-  padding-left: 12px;
-  margin-right: 2px;
-  line-height: 14px;
-}
-.nav-tabs {
-  border-bottom: 1px solid #ddd;
-}
-.nav-tabs > li {
-  margin-bottom: -1px;
-}
-.nav-tabs > li > a {
-  padding-top: 9px;
-  padding-bottom: 9px;
-  border: 1px solid transparent;
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.nav-tabs > li > a:hover {
-  border-color: #eeeeee #eeeeee #dddddd;
-}
-.nav-tabs > .active > a,
-.nav-tabs > .active > a:hover {
-  color: #555555;
-  background-color: #ffffff;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-  cursor: default;
-}
-.nav-pills > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  margin-top: 2px;
-  margin-bottom: 2px;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.nav-pills .active > a,
-.nav-pills .active > a:hover {
-  color: #ffffff;
-  background-color: #1b97d1;
-}
-.nav-stacked > li {
-  float: none;
-}
-.nav-stacked > li > a {
-  margin-right: 0;
-}
-.nav-tabs.nav-stacked {
-  border-bottom: 0;
-}
-.nav-tabs.nav-stacked > li > a {
-  border: 1px solid #ddd;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.nav-tabs.nav-stacked > li:first-child > a {
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.nav-tabs.nav-stacked > li:last-child > a {
-  -webkit-border-radius: 0 0 4px 4px;
-  -moz-border-radius: 0 0 4px 4px;
-  border-radius: 0 0 4px 4px;
-}
-.nav-tabs.nav-stacked > li > a:hover {
-  border-color: #ddd;
-  z-index: 2;
-}
-.nav-pills.nav-stacked > li > a {
-  margin-bottom: 3px;
-}
-.nav-pills.nav-stacked > li:last-child > a {
-  margin-bottom: 1px;
-}
-.nav-tabs .dropdown-menu,
-.nav-pills .dropdown-menu {
-  margin-top: 1px;
-  border-width: 1px;
-}
-.nav-pills .dropdown-menu {
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.nav-tabs .dropdown-toggle .caret,
-.nav-pills .dropdown-toggle .caret {
-  border-top-color: #1b97d1;
-  margin-top: 6px;
-}
-.nav-tabs .dropdown-toggle:hover .caret,
-.nav-pills .dropdown-toggle:hover .caret {
-  border-top-color: #12668d;
-}
-.nav-tabs .active .dropdown-toggle .caret,
-.nav-pills .active .dropdown-toggle .caret {
-  border-top-color: #333333;
-}
-.nav > .dropdown.active > a:hover {
-  color: #000000;
-  cursor: pointer;
-}
-.nav-tabs .open .dropdown-toggle,
-.nav-pills .open .dropdown-toggle,
-.nav > .open.active > a:hover {
-  color: #ffffff;
-  background-color: #999999;
-  border-color: #999999;
-}
-.nav .open .caret,
-.nav .open.active .caret,
-.nav .open a:hover .caret {
-  border-top-color: #ffffff;
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.tabs-stacked .open > a:hover {
-  border-color: #999999;
-}
-.tabbable {
-  *zoom: 1;
-}
-.tabbable:before,
-.tabbable:after {
-  display: table;
-  content: "";
-}
-.tabbable:after {
-  clear: both;
-}
-.tabs-below .nav-tabs,
-.tabs-right .nav-tabs,
-.tabs-left .nav-tabs {
-  border-bottom: 0;
-}
-.tab-content > .tab-pane,
-.pill-content > .pill-pane {
-  display: none;
-}
-.tab-content > .active,
-.pill-content > .active {
-  display: block;
-}
-.tabs-below .nav-tabs {
-  border-top: 1px solid #ddd;
-}
-.tabs-below .nav-tabs > li {
-  margin-top: -1px;
-  margin-bottom: 0;
-}
-.tabs-below .nav-tabs > li > a {
-  -webkit-border-radius: 0 0 4px 4px;
-  -moz-border-radius: 0 0 4px 4px;
-  border-radius: 0 0 4px 4px;
-}
-.tabs-below .nav-tabs > li > a:hover {
-  border-bottom-color: transparent;
-  border-top-color: #ddd;
-}
-.tabs-below .nav-tabs .active > a,
-.tabs-below .nav-tabs .active > a:hover {
-  border-color: transparent #ddd #ddd #ddd;
-}
-.tabs-left .nav-tabs > li,
-.tabs-right .nav-tabs > li {
-  float: none;
-}
-.tabs-left .nav-tabs > li > a,
-.tabs-right .nav-tabs > li > a {
-  min-width: 74px;
-  margin-right: 0;
-  margin-bottom: 3px;
-}
-.tabs-left .nav-tabs {
-  float: left;
-  margin-right: 19px;
-  border-right: 1px solid #ddd;
-}
-.tabs-left .nav-tabs > li > a {
-  margin-right: -1px;
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.tabs-left .nav-tabs > li > a:hover {
-  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
-}
-.tabs-left .nav-tabs .active > a,
-.tabs-left .nav-tabs .active > a:hover {
-  border-color: #ddd transparent #ddd #ddd;
-  *border-right-color: #ffffff;
-}
-.tabs-right .nav-tabs {
-  float: right;
-  margin-left: 19px;
-  border-left: 1px solid #ddd;
-}
-.tabs-right .nav-tabs > li > a {
-  margin-left: -1px;
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.tabs-right .nav-tabs > li > a:hover {
-  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
-}
-.tabs-right .nav-tabs .active > a,
-.tabs-right .nav-tabs .active > a:hover {
-  border-color: #ddd #ddd #ddd transparent;
-  *border-left-color: #ffffff;
-}
-.navbar {
-  overflow: visible;
-  margin-bottom: 18px;
-}
-.navbar-inner {
-  padding-left: 20px;
-  padding-right: 20px;
-  background-color: #f8f8f8;
-  background-image: -moz-linear-gradient(top, #ffffff, #ededed);
-  background-image: -ms-linear-gradient(top, #ffffff, #ededed);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#ededed));
-  background-image: -webkit-linear-gradient(top, #ffffff, #ededed);
-  background-image: -o-linear-gradient(top, #ffffff, #ededed);
-  background-image: linear-gradient(top, #ffffff, #ededed);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#ededed', GradientType=0);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
-  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
-  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
-}
-.btn-navbar {
-  display: none;
-  float: right;
-  padding: 7px 10px;
-  margin-left: 5px;
-  margin-right: 5px;
-  background-color: #f8f8f8;
-  background-image: -moz-linear-gradient(top, #ffffff, #ededed);
-  background-image: -ms-linear-gradient(top, #ffffff, #ededed);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#ededed));
-  background-image: -webkit-linear-gradient(top, #ffffff, #ededed);
-  background-image: -o-linear-gradient(top, #ffffff, #ededed);
-  background-image: linear-gradient(top, #ffffff, #ededed);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#ededed', GradientType=0);
-  border-color: #ededed #ededed #c7c7c7;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-  -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-}
-.btn-navbar:hover,
-.btn-navbar:active,
-.btn-navbar.active,
-.btn-navbar.disabled,
-.btn-navbar[disabled] {
-  background-color: #ededed;
-}
-.btn-navbar:active,
-.btn-navbar.active {
-  background-color: #d4d4d4 \9;
-}
-.btn-navbar .icon-bar {
-  display: block;
-  width: 18px;
-  height: 2px;
-  background-color: #f5f5f5;
-  -webkit-border-radius: 1px;
-  -moz-border-radius: 1px;
-  border-radius: 1px;
-  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-}
-.btn-navbar .icon-bar + .icon-bar {
-  margin-top: 3px;
-}
-.nav-collapse.collapse {
-  height: auto;
-}
-.navbar .brand:hover {
-  text-decoration: none;
-}
-.navbar .brand {
-  float: left;
-  display: block;
-  padding: 8px 20px 12px;
-  margin-left: -20px;
-  font-size: 20px;
-  font-weight: 200;
-  line-height: 1;
-  color: #ffffff;
-}
-.navbar .navbar-text {
-  margin-bottom: 0;
-  line-height: 40px;
-  color: #999999;
-}
-.navbar .navbar-text a:hover {
-  color: #ffffff;
-  background-color: transparent;
-}
-.navbar .btn,
-.navbar .btn-group {
-  margin-top: 5px;
-}
-.navbar .btn-group .btn {
-  margin-top: 0;
-}
-.navbar-form {
-  margin-bottom: 0;
-  *zoom: 1;
-}
-.navbar-form:before,
-.navbar-form:after {
-  display: table;
-  content: "";
-}
-.navbar-form:after {
-  clear: both;
-}
-.navbar-form input,
-.navbar-form select {
-  display: inline-block;
-  margin-top: 5px;
-  margin-bottom: 0;
-}
-.navbar-form .radio,
-.navbar-form .checkbox {
-  margin-top: 5px;
-}
-.navbar-form input[type="image"],
-.navbar-form input[type="checkbox"],
-.navbar-form input[type="radio"] {
-  margin-top: 3px;
-}
-.navbar-search {
-  position: relative;
-  float: left;
-  margin-top: 6px;
-  margin-bottom: 0;
-}
-.navbar-search .search-query {
-  padding: 4px 9px;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 1;
-  color: #ffffff;
-  color: rgba(255, 255, 255, 0.75);
-  background: #666;
-  background: rgba(255, 255, 255, 0.3);
-  border: 1px solid #111;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
-  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
-  -webkit-transition: none;
-  -moz-transition: none;
-  -ms-transition: none;
-  -o-transition: none;
-  transition: none;
-}
-.navbar-search .search-query :-moz-placeholder {
-  color: #eeeeee;
-}
-.navbar-search .search-query ::-webkit-input-placeholder {
-  color: #eeeeee;
-}
-.navbar-search .search-query:hover {
-  color: #ffffff;
-  background-color: #999999;
-  background-color: rgba(255, 255, 255, 0.5);
-}
-.navbar-search .search-query:focus,
-.navbar-search .search-query.focused {
-  padding: 5px 10px;
-  color: #333333;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #ffffff;
-  border: 0;
-  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  outline: 0;
-}
-.navbar-fixed-top {
-  position: fixed;
-  top: 0;
-  right: 0;
-  left: 0;
-  z-index: 1030;
-}
-.navbar-fixed-top .navbar-inner {
-  padding-left: 0;
-  padding-right: 0;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.navbar .nav {
-  position: relative;
-  left: 0;
-  display: block;
-  float: left;
-  margin: 0 10px 0 0;
-}
-.navbar .nav.pull-right {
-  float: right;
-}
-.navbar .nav > li {
-  display: block;
-  float: left;
-}
-.navbar .nav > li > a {
-  float: none;
-  padding: 10px 10px 11px;
-  line-height: 19px;
-  color: #999999;
-  text-decoration: none;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.navbar .nav > li > a:hover {
-  background-color: transparent;
-  color: #ffffff;
-  text-decoration: none;
-}
-.navbar .nav .active > a,
-.navbar .nav .active > a:hover {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #ededed;
-  background-color: rgba(0, 0, 0, 0.5);
-}
-.navbar .divider-vertical {
-  height: 40px;
-  width: 1px;
-  margin: 0 9px;
-  overflow: hidden;
-  background-color: #ededed;
-  border-right: 1px solid #ffffff;
-}
-.navbar .nav.pull-right {
-  margin-left: 10px;
-  margin-right: 0;
-}
-.navbar .dropdown-menu {
-  margin-top: 1px;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.navbar .dropdown-menu:before {
-  content: '';
-  display: inline-block;
-  border-left: 7px solid transparent;
-  border-right: 7px solid transparent;
-  border-bottom: 7px solid #ccc;
-  border-bottom-color: rgba(0, 0, 0, 0.2);
-  position: absolute;
-  top: -7px;
-  left: 9px;
-}
-.navbar .dropdown-menu:after {
-  content: '';
-  display: inline-block;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-bottom: 6px solid #ffffff;
-  position: absolute;
-  top: -6px;
-  left: 10px;
-}
-.navbar .nav .dropdown-toggle .caret,
-.navbar .nav .open.dropdown .caret {
-  border-top-color: #ffffff;
-}
-.navbar .nav .active .caret {
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.navbar .nav .open > .dropdown-toggle,
-.navbar .nav .active > .dropdown-toggle,
-.navbar .nav .open.active > .dropdown-toggle {
-  background-color: transparent;
-}
-.navbar .nav .active > .dropdown-toggle:hover {
-  color: #ffffff;
-}
-.navbar .nav.pull-right .dropdown-menu {
-  left: auto;
-  right: 0;
-}
-.navbar .nav.pull-right .dropdown-menu:before {
-  left: auto;
-  right: 12px;
-}
-.navbar .nav.pull-right .dropdown-menu:after {
-  left: auto;
-  right: 13px;
-}
-.breadcrumb {
-  padding: 7px 14px;
-  margin: 0 0 18px;
-  background-color: #fbfbfb;
-  background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5);
-  background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5));
-  background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5);
-  background-image: -o-linear-gradient(top, #ffffff, #f5f5f5);
-  background-image: linear-gradient(top, #ffffff, #f5f5f5);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);
-  border: 1px solid #ddd;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-  -webkit-box-shadow: inset 0 1px 0 #ffffff;
-  -moz-box-shadow: inset 0 1px 0 #ffffff;
-  box-shadow: inset 0 1px 0 #ffffff;
-}
-.breadcrumb li {
-  display: inline;
-  text-shadow: 0 1px 0 #ffffff;
-}
-.breadcrumb .divider {
-  padding: 0 5px;
-  color: #999999;
-}
-.breadcrumb .active a {
-  color: #333333;
-}
-.pagination {
-  height: 36px;
-  margin: 18px 0;
-}
-.pagination ul {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  margin-left: 0;
-  margin-bottom: 0;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-.pagination li {
-  display: inline;
-}
-.pagination a {
-  float: left;
-  padding: 0 14px;
-  line-height: 34px;
-  text-decoration: none;
-  border: 1px solid #ddd;
-  border-left-width: 0;
-}
-.pagination a:hover,
-.pagination .active a {
-  background-color: #f5f5f5;
-}
-.pagination .active a {
-  color: #999999;
-  cursor: default;
-}
-.pagination .disabled a,
-.pagination .disabled a:hover {
-  color: #999999;
-  background-color: transparent;
-  cursor: default;
-}
-.pagination li:first-child a {
-  border-left-width: 1px;
-  -webkit-border-radius: 3px 0 0 3px;
-  -moz-border-radius: 3px 0 0 3px;
-  border-radius: 3px 0 0 3px;
-}
-.pagination li:last-child a {
-  -webkit-border-radius: 0 3px 3px 0;
-  -moz-border-radius: 0 3px 3px 0;
-  border-radius: 0 3px 3px 0;
-}
-.pagination-centered {
-  text-align: center;
-}
-.pagination-right {
-  text-align: right;
-}
-.pager {
-  margin-left: 0;
-  margin-bottom: 18px;
-  list-style: none;
-  text-align: center;
-  *zoom: 1;
-}
-.pager:before,
-.pager:after {
-  display: table;
-  content: "";
-}
-.pager:after {
-  clear: both;
-}
-.pager li {
-  display: inline;
-}
-.pager a {
-  display: inline-block;
-  padding: 5px 14px;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  -webkit-border-radius: 15px;
-  -moz-border-radius: 15px;
-  border-radius: 15px;
-}
-.pager a:hover {
-  text-decoration: none;
-  background-color: #f5f5f5;
-}
-.pager .next a {
-  float: right;
-}
-.pager .previous a {
-  float: left;
-}
-.modal-open .dropdown-menu {
-  z-index: 2050;
-}
-.modal-open .dropdown.open {
-  *z-index: 2050;
-}
-.modal-open .popover {
-  z-index: 2060;
-}
-.modal-open .tooltip {
-  z-index: 2070;
-}
-.modal-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 1040;
-  background-color: #000000;
-}
-.modal-backdrop.fade {
-  opacity: 0;
-}
-.modal-backdrop,
-.modal-backdrop.fade.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-.modal {
-  position: fixed;
-  top: 50%;
-  left: 50%;
-  z-index: 1050;
-  max-height: 500px;
-  overflow: auto;
-  width: 560px;
-  margin: -250px 0 0 -280px;
-  background-color: #ffffff;
-  border: 1px solid #999;
-  border: 1px solid rgba(0, 0, 0, 0.3);
-  *border: 1px solid #999;
-  /* IE6-7 */
-
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding-box;
-  background-clip: padding-box;
-}
-.modal.fade {
-  -webkit-transition: opacity .3s linear, top .3s ease-out;
-  -moz-transition: opacity .3s linear, top .3s ease-out;
-  -ms-transition: opacity .3s linear, top .3s ease-out;
-  -o-transition: opacity .3s linear, top .3s ease-out;
-  transition: opacity .3s linear, top .3s ease-out;
-  top: -25%;
-}
-.modal.fade.in {
-  top: 50%;
-}
-.modal-header {
-  padding: 9px 15px;
-  border-bottom: 1px solid #eee;
-}
-.modal-header .close {
-  margin-top: 2px;
-}
-.modal-body {
-  padding: 15px;
-}
-.modal-footer {
-  padding: 14px 15px 15px;
-  margin-bottom: 0;
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-  -webkit-box-shadow: inset 0 1px 0 #ffffff;
-  -moz-box-shadow: inset 0 1px 0 #ffffff;
-  box-shadow: inset 0 1px 0 #ffffff;
-  *zoom: 1;
-}
-.modal-footer:before,
-.modal-footer:after {
-  display: table;
-  content: "";
-}
-.modal-footer:after {
-  clear: both;
-}
-.modal-footer .btn {
-  float: left;
-  margin-left: 5px;
-  margin-bottom: 0;
-}
-.tooltip {
-  position: absolute;
-  z-index: 1020;
-  display: block;
-  visibility: visible;
-  padding: 5px;
-  font-size: 11px;
-  opacity: 0;
-  filter: alpha(opacity=0);
-}
-.tooltip.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-.tooltip.top {
-  margin-top: -2px;
-}
-.tooltip.right {
-  margin-left: 2px;
-}
-.tooltip.bottom {
-  margin-top: 2px;
-}
-.tooltip.left {
-  margin-left: -2px;
-}
-.tooltip.top .tooltip-arrow {
-  bottom: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-top: 5px solid #000000;
-}
-.tooltip.left .tooltip-arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-left: 5px solid #000000;
-}
-.tooltip.bottom .tooltip-arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-bottom: 5px solid #000000;
-}
-.tooltip.right .tooltip-arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-right: 5px solid #000000;
-}
-.tooltip-inner {
-  max-width: 200px;
-  padding: 3px 8px;
-  color: #ffffff;
-  text-align: center;
-  text-decoration: none;
-  background-color: #000000;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.tooltip-arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-}
-.popover {
-  position: absolute;
-  top: 0;
-  left: 0;
-  z-index: 1010;
-  display: none;
-  padding: 5px;
-}
-.popover.top {
-  margin-top: -5px;
-}
-.popover.right {
-  margin-left: 5px;
-}
-.popover.bottom {
-  margin-top: 5px;
-}
-.popover.left {
-  margin-left: -5px;
-}
-.popover.top .arrow {
-  bottom: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-top: 5px solid #000000;
-}
-.popover.right .arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-right: 5px solid #000000;
-}
-.popover.bottom .arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-bottom: 5px solid #000000;
-}
-.popover.left .arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-left: 5px solid #000000;
-}
-.popover .arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-}
-.popover-inner {
-  padding: 3px;
-  width: 280px;
-  overflow: hidden;
-  background: #000000;
-  background: rgba(0, 0, 0, 0.8);
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-}
-.popover-title {
-  padding: 9px 15px;
-  line-height: 1;
-  background-color: #f5f5f5;
-  border-bottom: 1px solid #eee;
-  -webkit-border-radius: 3px 3px 0 0;
-  -moz-border-radius: 3px 3px 0 0;
-  border-radius: 3px 3px 0 0;
-}
-.popover-content {
-  padding: 14px;
-  background-color: #ffffff;
-  -webkit-border-radius: 0 0 3px 3px;
-  -moz-border-radius: 0 0 3px 3px;
-  border-radius: 0 0 3px 3px;
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding-box;
-  background-clip: padding-box;
-}
-.popover-content p,
-.popover-content ul,
-.popover-content ol {
-  margin-bottom: 0;
-}
-.thumbnails {
-  margin-left: -20px;
-  list-style: none;
-  *zoom: 1;
-}
-.thumbnails:before,
-.thumbnails:after {
-  display: table;
-  content: "";
-}
-.thumbnails:after {
-  clear: both;
-}
-.thumbnails > li {
-  float: left;
-  margin: 0 0 18px 20px;
-}
-.thumbnail {
-  display: block;
-  padding: 4px;
-  line-height: 1;
-  border: 1px solid #ddd;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-a.thumbnail:hover {
-  border-color: #1b97d1;
-  -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-  -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-  box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-}
-.thumbnail > img {
-  display: block;
-  max-width: 100%;
-  margin-left: auto;
-  margin-right: auto;
-}
-.thumbnail .caption {
-  padding: 9px;
-}
-.label {
-  padding: 1px 3px 2px;
-  font-size: 9.75px;
-  font-weight: bold;
-  color: #ffffff;
-  text-transform: uppercase;
-  background-color: #999999;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.label-important {
-  background-color: #b94a48;
-}
-.label-warning {
-  background-color: #f89406;
-}
-.label-success {
-  background-color: #468847;
-}
-.label-info {
-  background-color: #3a87ad;
-}
-@-webkit-keyframes progress-bar-stripes {
-  from {
-    background-position: 0 0;
-  }
-  to {
-    background-position: 40px 0;
-  }
-}
-@-moz-keyframes progress-bar-stripes {
-  from {
-    background-position: 0 0;
-  }
-  to {
-    background-position: 40px 0;
-  }
-}
-@keyframes progress-bar-stripes {
-  from {
-    background-position: 0 0;
-  }
-  to {
-    background-position: 40px 0;
-  }
-}
-.progress {
-  overflow: hidden;
-  height: 18px;
-  margin-bottom: 18px;
-  background-color: #f7f7f7;
-  background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
-  background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.progress .bar {
-  width: 0%;
-  height: 18px;
-  color: #ffffff;
-  font-size: 12px;
-  text-align: center;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #0e90d2;
-  background-image: -moz-linear-gradient(top, #149bdf, #0480be);
-  background-image: -ms-linear-gradient(top, #149bdf, #0480be);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
-  background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
-  background-image: -o-linear-gradient(top, #149bdf, #0480be);
-  background-image: linear-gradient(top, #149bdf, #0480be);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);
-  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-  -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-  -webkit-transition: width 0.6s ease;
-  -moz-transition: width 0.6s ease;
-  -ms-transition: width 0.6s ease;
-  -o-transition: width 0.6s ease;
-  transition: width 0.6s ease;
-}
-.progress-striped .bar {
-  background-color: #62c462;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  -webkit-background-size: 40px 40px;
-  -moz-background-size: 40px 40px;
-  -o-background-size: 40px 40px;
-  background-size: 40px 40px;
-}
-.progress.active .bar {
-  -webkit-animation: progress-bar-stripes 2s linear infinite;
-  -moz-animation: progress-bar-stripes 2s linear infinite;
-  animation: progress-bar-stripes 2s linear infinite;
-}
-.progress-danger .bar {
-  background-color: #dd514c;
-  background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: linear-gradient(top, #ee5f5b, #c43c35);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
-}
-.progress-danger.progress-striped .bar {
-  background-color: #ee5f5b;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.progress-success .bar {
-  background-color: #5eb95e;
-  background-image: -moz-linear-gradient(top, #62c462, #57a957);
-  background-image: -ms-linear-gradient(top, #62c462, #57a957);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
-  background-image: -webkit-linear-gradient(top, #62c462, #57a957);
-  background-image: -o-linear-gradient(top, #62c462, #57a957);
-  background-image: linear-gradient(top, #62c462, #57a957);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
-}
-.progress-success.progress-striped .bar {
-  background-color: #62c462;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.progress-info .bar {
-  background-color: #4bb1cf;
-  background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: linear-gradient(top, #5bc0de, #339bb9);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);
-}
-.progress-info.progress-striped .bar {
-  background-color: #5bc0de;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.accordion {
-  margin-bottom: 18px;
-}
-.accordion-group {
-  margin-bottom: 2px;
-  border: 1px solid #e5e5e5;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.accordion-heading {
-  border-bottom: 0;
-}
-.accordion-heading .accordion-toggle {
-  display: block;
-  padding: 8px 15px;
-}
-.accordion-inner {
-  padding: 9px 15px;
-  border-top: 1px solid #e5e5e5;
-}
-.carousel {
-  position: relative;
-  margin-bottom: 18px;
-  line-height: 1;
-}
-.carousel-inner {
-  overflow: hidden;
-  width: 100%;
-  position: relative;
-}
-.carousel .item {
-  display: none;
-  position: relative;
-  -webkit-transition: 0.6s ease-in-out left;
-  -moz-transition: 0.6s ease-in-out left;
-  -ms-transition: 0.6s ease-in-out left;
-  -o-transition: 0.6s ease-in-out left;
-  transition: 0.6s ease-in-out left;
-}
-.carousel .item > img {
-  display: block;
-  line-height: 1;
-}
-.carousel .active,
-.carousel .next,
-.carousel .prev {
-  display: block;
-}
-.carousel .active {
-  left: 0;
-}
-.carousel .next,
-.carousel .prev {
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-.carousel .next {
-  left: 100%;
-}
-.carousel .prev {
-  left: -100%;
-}
-.carousel .next.left,
-.carousel .prev.right {
-  left: 0;
-}
-.carousel .active.left {
-  left: -100%;
-}
-.carousel .active.right {
-  left: 100%;
-}
-.carousel-control {
-  position: absolute;
-  top: 40%;
-  left: 15px;
-  width: 40px;
-  height: 40px;
-  margin-top: -20px;
-  font-size: 60px;
-  font-weight: 100;
-  line-height: 30px;
-  color: #ffffff;
-  text-align: center;
-  background: #222222;
-  border: 3px solid #ffffff;
-  -webkit-border-radius: 23px;
-  -moz-border-radius: 23px;
-  border-radius: 23px;
-  opacity: 0.5;
-  filter: alpha(opacity=50);
-}
-.carousel-control.right {
-  left: auto;
-  right: 15px;
-}
-.carousel-control:hover {
-  color: #ffffff;
-  text-decoration: none;
-  opacity: 0.9;
-  filter: alpha(opacity=90);
-}
-.carousel-caption {
-  position: absolute;
-  left: 0;
-  right: 0;
-  bottom: 0;
-  padding: 10px 15px 5px;
-  background: #333333;
-  background: rgba(0, 0, 0, 0.75);
-}
-.carousel-caption h4,
-.carousel-caption p {
-  color: #ffffff;
-}
-.hero-unit {
-  padding: 60px;
-  margin-bottom: 30px;
-  background-color: #f5f5f5;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.hero-unit h1 {
-  margin-bottom: 0;
-  font-size: 60px;
-  line-height: 1;
-  letter-spacing: -1px;
-}
-.hero-unit p {
-  font-size: 18px;
-  font-weight: 200;
-  line-height: 27px;
-}
-.pull-right {
-  float: right;
-}
-.pull-left {
-  float: left;
-}
-.hide {
-  display: none;
-}
-.show {
-  display: block;
-}
-.invisible {
-  visibility: hidden;
-}
-a {
-  color: #000000;
-}
-html,
-body {
-  height: 100%;
-  min-width: 640px;
-}
-html {
-  border-left: 1px solid #c9c9c9;
-  border-right: 1px solid #c9c9c9;
-}
-.title {
-  font-size: 17px;
-}
-.thingy {
-  margin-bottom: 0px !important;
-  padding: 10px 10px 10px 0!important;
-  border-radius: 0px;
-  min-width: 440px;
-}
-.thingy .gravatar50 {
-  position: relative;
-  float: left;
-  margin-top: -15px;
-  right: 5px;
-}
-.thingy .app_title {
-  padding-right: 20px;
-}
-.thingy .bar a {
-  float: right;
-}
-.thingy .button {
-  margin-top: -5px;
-  min-width: 150px;
-}
-.thingy .btn-primary {
-  color: #ffffff;
-}
-.monospace {
-  font-family: monospace !important;
-}
-#selectedApp {
-  font-size: 16px;
-  cursor: pointer;
-  overflow: hidden;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-}
-#fullContainer {
-  position: relative;
-  /* needed for footer positioning*/
-
-  height: auto !important;
-  /* real browsers */
-
-  min-height: 100%;
-  /* real browsers */
-
-  height: 100%;
-  /* IE6: treaded as min-height*/
-
-  min-width: 640px;
-  max-width: 1280px;
-}
-.header-menus {
-  margin: 0 auto;
-}
-#pages {
-  padding: 0;
-}
-#pages > div {
-  display: none;
-}
-#pages .alert-error {
-  display: none;
-}
-#right a {
-  color: #1b97d1;
-  font-weight: 400;
-}
-#right a:visited {
-  color: #1b97d1;
-  font-weight: 400;
-}
-#copyright {
-  padding: 5px;
-}
-a {
-  cursor: pointer;
-}
-a:link {
-  color: #111;
-  text-decoration: none;
-}
-a:visited {
-  color: #000;
-  text-decoration: none;
-}
-a:hover {
-  color: #ff4300;
-  text-decoration: none;
-}
-a:active {
-  color: #000;
-  text-decoration: none;
-}
-.clear {
-  clear: both;
-}
-.marginless {
-  margin: 0 !important;
-}
-.navbar.navbar-fixed-top:before {
-  content: " ";
-  display: block;
-  background: #F93F00;
-  overflow: hidden;
-  width: 100%;
-  height: 8px;
-  margin-bottom: -8px;
-  position: absolute;
-  background-image: -moz-linear-gradient(top, #ff4300, #f03800);
-  background-image: -ms-linear-gradient(top, #ff4300, #f03800);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ff4300), to(#f03800));
-  background-image: -webkit-linear-gradient(top, #ff4300, #f03800);
-  background-repeat: repeat-x;
-  bottom: 8px;
-  left: 0px;
-}
-.navbar {
-  height: 48px;
-  min-width: 660px;
-  background-color: #ff4300;
-  margin: 0px 1px 20px 1px;
-}
-.navbar .navbar-inner {
-  display: none;
-}
-.navbar .navbar-inner b.caret {
-  position: relative;
-  display: inline-block;
-  float: left;
-  top: 48px;
-  left: -83px;
-  border-top: 8px solid #f03800;
-  border-left: 8px solid transparent;
-  border-right: 8px solid transparent;
-  opacity: 1;
-}
-.navbar h1,
-.navbar h2 {
-  display: inline;
-  float: left;
-  color: #ffffff;
-  font-weight: normal;
-}
-.navbar h1 {
-  height: 32px;
-  width: 64px;
-  overflow: hidden;
-  position: relative;
-  color: transparent !important;
-  margin: 0 15px;
-  padding-top: 8px;
-}
-.navbar h2 {
-  font-size: 13px;
-  padding: 5px;
-  line-height: 35px;
-  padding-top: 8px;
-  color: #ffffff;
-}
-.navbar h2 a {
-  color: #ffffff;
-}
-.navbar .secondary-nav {
-  float: right;
-}
-.navbar .nav li a {
-  text-shadow: 0 0px 0 white;
-  padding: 13px 10px 11px;
-  font-weight: normal;
-  color: #ffffff;
-  line-height: 24px;
-}
-.navbar .nav li #console-link:hover {
-  background-color: transparent;
-}
-.navbar .nav .dropdown-toggle span {
-  margin-left: 5px;
-}
-.navbar .nav .dropdown-toggle .caret {
-  margin-top: 13px;
-}
-.navbar .nav .dropdown-menu a {
-  line-height: 18px;
-  color: #000000;
-  padding: 3px 15px;
-}
-.navbar .nav .dropdown-menu a:hover {
-  color: #ffffff;
-  background-color: #1b97d1;
-}
-.navbar .nav .active {
-  background-color: #b22714 !important;
-}
-.navbar .nav .active .go-home {
-  background-color: transparent;
-}
-.navbar .nav .active .go-home:hover {
-  background-color: transparent;
-}
-.navbar .nav .active > a {
-  color: #ffffff;
-}
-.navbar .nav .active > a .caret {
-  opacity: 0.7;
-}
-.main-nav {
-  margin: 0px;
-}
-.sub-nav {
-  position: fixed;
-  top: 42px;
-  left: -1px;
-  right: -2px;
-  margin-bottom: 18p

<TRUNCATED>

[26/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/css/usergrid.css
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/css/usergrid.css b/deleted/dist-cov/usergrid-portal/archive/css/usergrid.css
deleted file mode 100644
index d46ccb2..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/css/usergrid.css
+++ /dev/null
@@ -1,5203 +0,0 @@
-/*!
- * Bootstrap v2.0.0
- *
- * Copyright 2012 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
- */
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-nav,
-section {
-  display: block;
-}
-audio,
-canvas,
-video {
-  display: inline-block;
-  *display: inline;
-  *zoom: 1;
-}
-audio:not([controls]) {
-  display: none;
-}
-html {
-  font-size: 100%;
-  -webkit-text-size-adjust: 100%;
-  -ms-text-size-adjust: 100%;
-}
-a:focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-a:hover,
-a:active {
-  outline: 0;
-}
-sub,
-sup {
-  position: relative;
-  font-size: 75%;
-  line-height: 0;
-  vertical-align: baseline;
-}
-sup {
-  top: -0.5em;
-}
-sub {
-  bottom: -0.25em;
-}
-img {
-  max-width: 100%;
-  height: auto;
-  border: 0;
-  -ms-interpolation-mode: bicubic;
-}
-button,
-input,
-select,
-textarea {
-  margin: 0;
-  font-size: 100%;
-  vertical-align: middle;
-}
-button,
-input {
-  *overflow: visible;
-  line-height: normal;
-}
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-button,
-input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  cursor: pointer;
-  -webkit-appearance: button;
-}
-input[type="search"] {
-  -webkit-appearance: textfield;
-  -webkit-box-sizing: content-box;
-  -moz-box-sizing: content-box;
-  box-sizing: content-box;
-}
-input[type="search"]::-webkit-search-decoration,
-input[type="search"]::-webkit-search-cancel-button {
-  -webkit-appearance: none;
-}
-textarea {
-  overflow: auto;
-  vertical-align: top;
-}
-body {
-  margin: 0;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  line-height: 18px;
-  color: #333333;
-  background-color: #ffffff;
-}
-a {
-  color: #1b97d1;
-  text-decoration: none;
-}
-a:hover {
-  color: #12668d;
-  text-decoration: underline;
-}
-.row {
-  margin-left: -20px;
-  *zoom: 1;
-}
-.row:before,
-.row:after {
-  display: table;
-  content: "";
-}
-.row:after {
-  clear: both;
-}
-[class*="span"] {
-  float: left;
-  margin-left: 20px;
-}
-.span1 {
-  width: 60px;
-}
-.span2 {
-  width: 140px;
-}
-.span3 {
-  width: 220px;
-}
-.span4 {
-  width: 300px;
-}
-.span5 {
-  width: 380px;
-}
-.span6 {
-  width: 460px;
-}
-.span7 {
-  width: 540px;
-}
-.span8 {
-  width: 620px;
-}
-.span9 {
-  width: 700px;
-}
-.span10 {
-  width: 780px;
-}
-.span11 {
-  width: 860px;
-}
-.span12,
-.container {
-  width: 940px;
-}
-.offset1 {
-  margin-left: 100px;
-}
-.offset2 {
-  margin-left: 180px;
-}
-.offset3 {
-  margin-left: 260px;
-}
-.offset4 {
-  margin-left: 340px;
-}
-.offset5 {
-  margin-left: 420px;
-}
-.offset6 {
-  margin-left: 500px;
-}
-.offset7 {
-  margin-left: 580px;
-}
-.offset8 {
-  margin-left: 660px;
-}
-.offset9 {
-  margin-left: 740px;
-}
-.offset10 {
-  margin-left: 820px;
-}
-.offset11 {
-  margin-left: 900px;
-}
-.row-fluid {
-  width: 100%;
-  *zoom: 1;
-}
-.row-fluid:before,
-.row-fluid:after {
-  display: table;
-  content: "";
-}
-.row-fluid:after {
-  clear: both;
-}
-.row-fluid > [class*="span"] {
-  float: left;
-  margin-left: 2.127659574%;
-}
-.row-fluid > [class*="span"]:first-child {
-  margin-left: 0;
-}
-.row-fluid .span1 {
-  width: 6.382978723%;
-}
-.row-fluid .span2 {
-  width: 14.89361702%;
-}
-.row-fluid .span3 {
-  width: 23.404255317%;
-}
-.row-fluid .span4 {
-  width: 31.914893614%;
-}
-.row-fluid .span5 {
-  width: 40.425531911%;
-}
-.row-fluid .span6 {
-  width: 48.93617020799999%;
-}
-.row-fluid .span7 {
-  width: 57.446808505%;
-}
-.row-fluid .span8 {
-  width: 65.95744680199999%;
-}
-.row-fluid .span9 {
-  width: 74.468085099%;
-}
-.row-fluid .span10 {
-  width: 82.97872339599999%;
-}
-.row-fluid .span11 {
-  width: 91.489361693%;
-}
-.row-fluid .span12 {
-  width: 99.99999998999999%;
-}
-.container {
-  width: 940px;
-  margin-left: auto;
-  margin-right: auto;
-  *zoom: 1;
-}
-.container:before,
-.container:after {
-  display: table;
-  content: "";
-}
-.container:after {
-  clear: both;
-}
-.container-fluid {
-  padding-left: 20px;
-  padding-right: 20px;
-  *zoom: 1;
-}
-.container-fluid:before,
-.container-fluid:after {
-  display: table;
-  content: "";
-}
-.container-fluid:after {
-  clear: both;
-}
-p {
-  margin: 0 0 9px;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  line-height: 18px;
-}
-p small {
-  font-size: 11px;
-  color: #999999;
-}
-.lead {
-  margin-bottom: 18px;
-  font-size: 20px;
-  font-weight: 200;
-  line-height: 27px;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  margin: 0;
-  font-weight: bold;
-  color: #333333;
-  text-rendering: optimizelegibility;
-}
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small {
-  font-weight: normal;
-  color: #999999;
-}
-h1 {
-  font-size: 30px;
-  line-height: 36px;
-}
-h1 small {
-  font-size: 18px;
-}
-h2 {
-  font-size: 24px;
-  line-height: 36px;
-}
-h2 small {
-  font-size: 18px;
-}
-h3 {
-  line-height: 27px;
-  font-size: 18px;
-}
-h3 small {
-  font-size: 14px;
-}
-h4,
-h5,
-h6 {
-  line-height: 18px;
-}
-h4 {
-  font-size: 14px;
-}
-h4 small {
-  font-size: 12px;
-}
-h5 {
-  font-size: 12px;
-}
-h6 {
-  font-size: 11px;
-  color: #999999;
-  text-transform: uppercase;
-}
-.page-header {
-  padding-bottom: 17px;
-  margin: 18px 0;
-  border-bottom: 1px solid #eeeeee;
-}
-.page-header h1 {
-  line-height: 1;
-}
-ul,
-ol {
-  padding: 0;
-  margin: 0;
-}
-ul ul,
-ul ol,
-ol ol,
-ol ul {
-  margin-bottom: 0;
-}
-ul {
-  list-style: disc;
-}
-ol {
-  list-style: decimal;
-}
-li {
-  line-height: 18px;
-}
-ul.unstyled {
-  margin-left: 0;
-  list-style: none;
-}
-dl {
-  margin-bottom: 18px;
-}
-dt,
-dd {
-  line-height: 18px;
-}
-dt {
-  font-weight: bold;
-}
-dd {
-  margin-left: 9px;
-}
-hr {
-  margin: 18px 0;
-  border: 0;
-  border-top: 1px solid #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-strong {
-  font-weight: bold;
-}
-em {
-  font-style: italic;
-}
-.muted {
-  color: #999999;
-}
-abbr {
-  font-size: 90%;
-  text-transform: uppercase;
-  border-bottom: 1px dotted #ddd;
-  cursor: help;
-}
-blockquote {
-  padding: 0 0 0 15px;
-  margin: 0 0 18px;
-  border-left: 5px solid #eeeeee;
-}
-blockquote p {
-  margin-bottom: 0;
-  font-size: 16px;
-  font-weight: 300;
-  line-height: 22.5px;
-}
-blockquote small {
-  display: block;
-  line-height: 18px;
-  color: #999999;
-}
-blockquote small:before {
-  content: '\2014 \00A0';
-}
-blockquote.pull-right {
-  float: right;
-  padding-left: 0;
-  padding-right: 15px;
-  border-left: 0;
-  border-right: 5px solid #eeeeee;
-}
-blockquote.pull-right p,
-blockquote.pull-right small {
-  text-align: right;
-}
-q:before,
-q:after,
-blockquote:before,
-blockquote:after {
-  content: "";
-}
-address {
-  display: block;
-  margin-bottom: 18px;
-  line-height: 18px;
-  font-style: normal;
-}
-small {
-  font-size: 100%;
-}
-cite {
-  font-style: normal;
-}
-code,
-pre {
-  padding: 0 3px 2px;
-  font-family: Menlo, Monaco, "Courier New", monospace;
-  font-size: 12px;
-  color: #333333;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-code {
-  padding: 3px 4px;
-  color: #d14;
-  background-color: #f7f7f9;
-  border: 1px solid #e1e1e8;
-}
-pre {
-  display: block;
-  padding: 8.5px;
-  margin: 0 0 9px;
-  font-size: 12px;
-  line-height: 18px;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.15);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  white-space: pre;
-  white-space: pre-wrap;
-  word-break: break-all;
-}
-pre.prettyprint {
-  margin-bottom: 18px;
-}
-pre code {
-  padding: 0;
-  background-color: transparent;
-}
-form {
-  margin: 0 0 18px;
-}
-fieldset {
-  padding: 0;
-  margin: 0;
-  border: 0;
-}
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: 27px;
-  font-size: 19.5px;
-  line-height: 36px;
-  color: #333333;
-  border: 0;
-  border-bottom: 1px solid #eee;
-}
-label,
-input,
-button,
-select,
-textarea {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 18px;
-}
-label {
-  display: block;
-  margin-bottom: 5px;
-  color: #333333;
-}
-input,
-textarea,
-select,
-.uneditable-input {
-  display: inline-block;
-  width: 210px;
-  height: 18px;
-  padding: 4px;
-  margin-bottom: 9px;
-  font-size: 13px;
-  line-height: 18px;
-  color: #555555;
-  border: 1px solid #ccc;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.uneditable-textarea {
-  width: auto;
-  height: auto;
-}
-label input,
-label textarea,
-label select {
-  display: block;
-}
-input[type="image"],
-input[type="checkbox"],
-input[type="radio"] {
-  width: auto;
-  height: auto;
-  padding: 0;
-  margin: 3px 0;
-  *margin-top: 0;
-  /* IE7 */
-
-  line-height: normal;
-  border: 0;
-  cursor: pointer;
-  border-radius: 0 \0/;
-}
-input[type="file"] {
-  padding: initial;
-  line-height: initial;
-  border: initial;
-  background-color: #ffffff;
-  background-color: initial;
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  width: auto;
-  height: auto;
-}
-select,
-input[type="file"] {
-  height: 28px;
-  /* In IE7, the height of the select element cannot be changed by height, only font-size */
-
-  *margin-top: 4px;
-  /* For IE7, add top margin to align select with labels */
-
-  line-height: 28px;
-}
-select {
-  width: 220px;
-  background-color: #ffffff;
-}
-select[multiple],
-select[size] {
-  height: auto;
-}
-input[type="image"] {
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-textarea {
-  height: auto;
-}
-input[type="hidden"] {
-  display: none;
-}
-.radio,
-.checkbox {
-  padding-left: 18px;
-}
-.radio input[type="radio"],
-.checkbox input[type="checkbox"] {
-  float: left;
-  margin-left: -18px;
-}
-.controls > .radio:first-child,
-.controls > .checkbox:first-child {
-  padding-top: 5px;
-}
-.radio.inline,
-.checkbox.inline {
-  display: inline-block;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.radio.inline + .radio.inline,
-.checkbox.inline + .checkbox.inline {
-  margin-left: 10px;
-}
-.controls > .radio.inline:first-child,
-.controls > .checkbox.inline:first-child {
-  padding-top: 0;
-}
-input,
-textarea {
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
-  -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
-  -ms-transition: border linear 0.2s, box-shadow linear 0.2s;
-  -o-transition: border linear 0.2s, box-shadow linear 0.2s;
-  transition: border linear 0.2s, box-shadow linear 0.2s;
-}
-input:focus,
-textarea:focus {
-  border-color: rgba(82, 168, 236, 0.8);
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-  outline: 0;
-  outline: thin dotted \9;
-  /* IE6-8 */
-
-}
-input[type="file"]:focus,
-input[type="checkbox"]:focus,
-select:focus {
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.input-mini {
-  width: 60px;
-}
-.input-small {
-  width: 90px;
-}
-.input-medium {
-  width: 150px;
-}
-.input-large {
-  width: 210px;
-}
-.input-xlarge {
-  width: 270px;
-}
-.input-xxlarge {
-  width: 530px;
-}
-input[class*="span"],
-select[class*="span"],
-textarea[class*="span"],
-.uneditable-input {
-  float: none;
-  margin-left: 0;
-}
-input.span1,
-textarea.span1,
-.uneditable-input.span1 {
-  width: 50px;
-}
-input.span2,
-textarea.span2,
-.uneditable-input.span2 {
-  width: 130px;
-}
-input.span3,
-textarea.span3,
-.uneditable-input.span3 {
-  width: 210px;
-}
-input.span4,
-textarea.span4,
-.uneditable-input.span4 {
-  width: 290px;
-}
-input.span5,
-textarea.span5,
-.uneditable-input.span5 {
-  width: 370px;
-}
-input.span6,
-textarea.span6,
-.uneditable-input.span6 {
-  width: 450px;
-}
-input.span7,
-textarea.span7,
-.uneditable-input.span7 {
-  width: 530px;
-}
-input.span8,
-textarea.span8,
-.uneditable-input.span8 {
-  width: 610px;
-}
-input.span9,
-textarea.span9,
-.uneditable-input.span9 {
-  width: 690px;
-}
-input.span10,
-textarea.span10,
-.uneditable-input.span10 {
-  width: 770px;
-}
-input.span11,
-textarea.span11,
-.uneditable-input.span11 {
-  width: 850px;
-}
-input.span12,
-textarea.span12,
-.uneditable-input.span12 {
-  width: 930px;
-}
-input[disabled],
-select[disabled],
-textarea[disabled],
-input[readonly],
-select[readonly],
-textarea[readonly] {
-  background-color: #f5f5f5;
-  border-color: #ddd;
-  cursor: not-allowed;
-}
-.control-group.warning > label,
-.control-group.warning .help-block,
-.control-group.warning .help-inline {
-  color: #c09853;
-}
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  color: #c09853;
-  border-color: #c09853;
-}
-.control-group.warning input:focus,
-.control-group.warning select:focus,
-.control-group.warning textarea:focus {
-  border-color: #a47e3c;
-  -webkit-box-shadow: 0 0 6px #dbc59e;
-  -moz-box-shadow: 0 0 6px #dbc59e;
-  box-shadow: 0 0 6px #dbc59e;
-}
-.control-group.warning .input-prepend .add-on,
-.control-group.warning .input-append .add-on {
-  color: #c09853;
-  background-color: #fcf8e3;
-  border-color: #c09853;
-}
-.control-group.error > label,
-.control-group.error .help-block,
-.control-group.error .help-inline {
-  color: #b94a48;
-}
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  color: #b94a48;
-  border-color: #b94a48;
-}
-.control-group.error input:focus,
-.control-group.error select:focus,
-.control-group.error textarea:focus {
-  border-color: #953b39;
-  -webkit-box-shadow: 0 0 6px #d59392;
-  -moz-box-shadow: 0 0 6px #d59392;
-  box-shadow: 0 0 6px #d59392;
-}
-.control-group.error .input-prepend .add-on,
-.control-group.error .input-append .add-on {
-  color: #b94a48;
-  background-color: #f2dede;
-  border-color: #b94a48;
-}
-.control-group.success > label,
-.control-group.success .help-block,
-.control-group.success .help-inline {
-  color: #468847;
-}
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  color: #468847;
-  border-color: #468847;
-}
-.control-group.success input:focus,
-.control-group.success select:focus,
-.control-group.success textarea:focus {
-  border-color: #356635;
-  -webkit-box-shadow: 0 0 6px #7aba7b;
-  -moz-box-shadow: 0 0 6px #7aba7b;
-  box-shadow: 0 0 6px #7aba7b;
-}
-.control-group.success .input-prepend .add-on,
-.control-group.success .input-append .add-on {
-  color: #468847;
-  background-color: #dff0d8;
-  border-color: #468847;
-}
-input:focus:required:invalid,
-textarea:focus:required:invalid,
-select:focus:required:invalid {
-  color: #b94a48;
-  border-color: #ee5f5b;
-}
-input:focus:required:invalid:focus,
-textarea:focus:required:invalid:focus,
-select:focus:required:invalid:focus {
-  border-color: #e9322d;
-  -webkit-box-shadow: 0 0 6px #f8b9b7;
-  -moz-box-shadow: 0 0 6px #f8b9b7;
-  box-shadow: 0 0 6px #f8b9b7;
-}
-.form-actions {
-  padding: 17px 20px 18px;
-  margin-top: 18px;
-  margin-bottom: 18px;
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-}
-.uneditable-input {
-  display: block;
-  background-color: #ffffff;
-  border-color: #eee;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  cursor: not-allowed;
-}
-:-moz-placeholder {
-  color: #999999;
-}
-::-webkit-input-placeholder {
-  color: #999999;
-}
-.help-block {
-  margin-top: 5px;
-  margin-bottom: 0;
-  color: #999999;
-}
-.help-inline {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  margin-bottom: 9px;
-  vertical-align: middle;
-  padding-left: 5px;
-}
-.input-prepend,
-.input-append {
-  margin-bottom: 5px;
-  *zoom: 1;
-}
-.input-prepend:before,
-.input-append:before,
-.input-prepend:after,
-.input-append:after {
-  display: table;
-  content: "";
-}
-.input-prepend:after,
-.input-append:after {
-  clear: both;
-}
-.input-prepend input,
-.input-append input,
-.input-prepend .uneditable-input,
-.input-append .uneditable-input {
-  -webkit-border-radius: 0 3px 3px 0;
-  -moz-border-radius: 0 3px 3px 0;
-  border-radius: 0 3px 3px 0;
-}
-.input-prepend input:focus,
-.input-append input:focus,
-.input-prepend .uneditable-input:focus,
-.input-append .uneditable-input:focus {
-  position: relative;
-  z-index: 2;
-}
-.input-prepend .uneditable-input,
-.input-append .uneditable-input {
-  border-left-color: #ccc;
-}
-.input-prepend .add-on,
-.input-append .add-on {
-  float: left;
-  display: block;
-  width: auto;
-  min-width: 16px;
-  height: 18px;
-  margin-right: -1px;
-  padding: 4px 5px;
-  font-weight: normal;
-  line-height: 18px;
-  color: #999999;
-  text-align: center;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  -webkit-border-radius: 3px 0 0 3px;
-  -moz-border-radius: 3px 0 0 3px;
-  border-radius: 3px 0 0 3px;
-}
-.input-prepend .active,
-.input-append .active {
-  background-color: #a9dba9;
-  border-color: #46a546;
-}
-.input-prepend .add-on {
-  *margin-top: 1px;
-  /* IE6-7 */
-
-}
-.input-append input,
-.input-append .uneditable-input {
-  float: left;
-  -webkit-border-radius: 3px 0 0 3px;
-  -moz-border-radius: 3px 0 0 3px;
-  border-radius: 3px 0 0 3px;
-}
-.input-append .uneditable-input {
-  border-right-color: #ccc;
-}
-.input-append .add-on {
-  margin-right: 0;
-  margin-left: -1px;
-  -webkit-border-radius: 0 3px 3px 0;
-  -moz-border-radius: 0 3px 3px 0;
-  border-radius: 0 3px 3px 0;
-}
-.input-append input:first-child {
-  *margin-left: -160px;
-}
-.input-append input:first-child + .add-on {
-  *margin-left: -21px;
-}
-.search-query {
-  padding-left: 14px;
-  padding-right: 14px;
-  margin-bottom: 0;
-  -webkit-border-radius: 14px;
-  -moz-border-radius: 14px;
-  border-radius: 14px;
-}
-.form-search input,
-.form-inline input,
-.form-horizontal input,
-.form-search textarea,
-.form-inline textarea,
-.form-horizontal textarea,
-.form-search select,
-.form-inline select,
-.form-horizontal select,
-.form-search .help-inline,
-.form-inline .help-inline,
-.form-horizontal .help-inline,
-.form-search .uneditable-input,
-.form-inline .uneditable-input,
-.form-horizontal .uneditable-input {
-  display: inline-block;
-  margin-bottom: 0;
-}
-.form-search label,
-.form-inline label,
-.form-search .input-append,
-.form-inline .input-append,
-.form-search .input-prepend,
-.form-inline .input-prepend {
-  display: inline-block;
-}
-.form-search .input-append .add-on,
-.form-inline .input-prepend .add-on,
-.form-search .input-append .add-on,
-.form-inline .input-prepend .add-on {
-  vertical-align: middle;
-}
-.control-group {
-  margin-bottom: 9px;
-}
-.form-horizontal legend + .control-group {
-  margin-top: 18px;
-  -webkit-margin-top-collapse: separate;
-}
-.form-horizontal .control-group {
-  margin-bottom: 18px;
-  *zoom: 1;
-}
-.form-horizontal .control-group:before,
-.form-horizontal .control-group:after {
-  display: table;
-  content: "";
-}
-.form-horizontal .control-group:after {
-  clear: both;
-}
-.form-horizontal .control-group > label {
-  float: left;
-  width: 140px;
-  padding-top: 5px;
-  text-align: right;
-}
-.form-horizontal .controls {
-  margin-left: 160px;
-}
-.form-horizontal .form-actions {
-  padding-left: 160px;
-}
-table {
-  max-width: 100%;
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-.table {
-  width: 100%;
-  margin-bottom: 18px;
-}
-.table th,
-.table td {
-  padding: 8px;
-  line-height: 18px;
-  text-align: left;
-  border-top: 1px solid #ddd;
-}
-.table th {
-  font-weight: bold;
-  vertical-align: bottom;
-}
-.table td {
-  vertical-align: top;
-}
-.table thead:first-child tr th,
-.table thead:first-child tr td {
-  border-top: 0;
-}
-.table tbody + tbody {
-  border-top: 2px solid #ddd;
-}
-.table-condensed th,
-.table-condensed td {
-  padding: 4px 5px;
-}
-.table-bordered {
-  border: 1px solid #ddd;
-  border-collapse: separate;
-  *border-collapse: collapsed;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.table-bordered th + th,
-.table-bordered td + td,
-.table-bordered th + td,
-.table-bordered td + th {
-  border-left: 1px solid #ddd;
-}
-.table-bordered thead:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child td {
-  border-top: 0;
-}
-.table-bordered thead:first-child tr:first-child th:first-child,
-.table-bordered tbody:first-child tr:first-child td:first-child {
-  -webkit-border-radius: 4px 0 0 0;
-  -moz-border-radius: 4px 0 0 0;
-  border-radius: 4px 0 0 0;
-}
-.table-bordered thead:first-child tr:first-child th:last-child,
-.table-bordered tbody:first-child tr:first-child td:last-child {
-  -webkit-border-radius: 0 4px 0 0;
-  -moz-border-radius: 0 4px 0 0;
-  border-radius: 0 4px 0 0;
-}
-.table-bordered thead:last-child tr:last-child th:first-child,
-.table-bordered tbody:last-child tr:last-child td:first-child {
-  -webkit-border-radius: 0 0 0 4px;
-  -moz-border-radius: 0 0 0 4px;
-  border-radius: 0 0 0 4px;
-}
-.table-bordered thead:last-child tr:last-child th:last-child,
-.table-bordered tbody:last-child tr:last-child td:last-child {
-  -webkit-border-radius: 0 0 4px 0;
-  -moz-border-radius: 0 0 4px 0;
-  border-radius: 0 0 4px 0;
-}
-.table-striped tbody tr:nth-child(odd) td,
-.table-striped tbody tr:nth-child(odd) th {
-  background-color: #f9f9f9;
-}
-table .span1 {
-  float: none;
-  width: 44px;
-  margin-left: 0;
-}
-table .span2 {
-  float: none;
-  width: 124px;
-  margin-left: 0;
-}
-table .span3 {
-  float: none;
-  width: 204px;
-  margin-left: 0;
-}
-table .span4 {
-  float: none;
-  width: 284px;
-  margin-left: 0;
-}
-table .span5 {
-  float: none;
-  width: 364px;
-  margin-left: 0;
-}
-table .span6 {
-  float: none;
-  width: 444px;
-  margin-left: 0;
-}
-table .span7 {
-  float: none;
-  width: 524px;
-  margin-left: 0;
-}
-table .span8 {
-  float: none;
-  width: 604px;
-  margin-left: 0;
-}
-table .span9 {
-  float: none;
-  width: 684px;
-  margin-left: 0;
-}
-table .span10 {
-  float: none;
-  width: 764px;
-  margin-left: 0;
-}
-table .span11 {
-  float: none;
-  width: 844px;
-  margin-left: 0;
-}
-table .span12 {
-  float: none;
-  width: 924px;
-  margin-left: 0;
-}
-[class^="icon-"] {
-  display: inline-block;
-  width: 14px;
-  height: 14px;
-  vertical-align: text-top;
-  background-image: url(../images/glyphicons-halflings.png);
-  background-position: 14px 14px;
-  background-repeat: no-repeat;
-  *margin-right: .3em;
-}
-[class^="icon-"]:last-child {
-  *margin-left: 0;
-}
-.icon-white {
-  background-image: url(../images/glyphicons-halflings-white.png);
-}
-.icon-glass {
-  background-position: 0      0;
-}
-.icon-music {
-  background-position: -24px 0;
-}
-.icon-search {
-  background-position: -48px 0;
-}
-.icon-envelope {
-  background-position: -72px 0;
-}
-.icon-heart {
-  background-position: -96px 0;
-}
-.icon-star {
-  background-position: -120px 0;
-}
-.icon-star-empty {
-  background-position: -144px 0;
-}
-.icon-user {
-  background-position: -168px 0;
-}
-.icon-film {
-  background-position: -192px 0;
-}
-.icon-th-large {
-  background-position: -216px 0;
-}
-.icon-th {
-  background-position: -240px 0;
-}
-.icon-th-list {
-  background-position: -264px 0;
-}
-.icon-ok {
-  background-position: -288px 0;
-}
-.icon-remove {
-  background-position: -312px 0;
-}
-.icon-zoom-in {
-  background-position: -336px 0;
-}
-.icon-zoom-out {
-  background-position: -360px 0;
-}
-.icon-off {
-  background-position: -384px 0;
-}
-.icon-signal {
-  background-position: -408px 0;
-}
-.icon-cog {
-  background-position: -432px 0;
-}
-.icon-trash {
-  background-position: -456px 0;
-}
-.icon-home {
-  background-position: 0 -24px;
-}
-.icon-file {
-  background-position: -24px -24px;
-}
-.icon-time {
-  background-position: -48px -24px;
-}
-.icon-road {
-  background-position: -72px -24px;
-}
-.icon-download-alt {
-  background-position: -96px -24px;
-}
-.icon-download {
-  background-position: -120px -24px;
-}
-.icon-upload {
-  background-position: -144px -24px;
-}
-.icon-inbox {
-  background-position: -168px -24px;
-}
-.icon-play-circle {
-  background-position: -192px -24px;
-}
-.icon-repeat {
-  background-position: -216px -24px;
-}
-.icon-refresh {
-  background-position: -240px -24px;
-}
-.icon-list-alt {
-  background-position: -264px -24px;
-}
-.icon-lock {
-  background-position: -287px -24px;
-}
-.icon-flag {
-  background-position: -312px -24px;
-}
-.icon-headphones {
-  background-position: -336px -24px;
-}
-.icon-volume-off {
-  background-position: -360px -24px;
-}
-.icon-volume-down {
-  background-position: -384px -24px;
-}
-.icon-volume-up {
-  background-position: -408px -24px;
-}
-.icon-qrcode {
-  background-position: -432px -24px;
-}
-.icon-barcode {
-  background-position: -456px -24px;
-}
-.icon-tag {
-  background-position: 0 -48px;
-}
-.icon-tags {
-  background-position: -25px -48px;
-}
-.icon-book {
-  background-position: -48px -48px;
-}
-.icon-bookmark {
-  background-position: -72px -48px;
-}
-.icon-print {
-  background-position: -96px -48px;
-}
-.icon-camera {
-  background-position: -120px -48px;
-}
-.icon-font {
-  background-position: -144px -48px;
-}
-.icon-bold {
-  background-position: -167px -48px;
-}
-.icon-italic {
-  background-position: -192px -48px;
-}
-.icon-text-height {
-  background-position: -216px -48px;
-}
-.icon-text-width {
-  background-position: -240px -48px;
-}
-.icon-align-left {
-  background-position: -264px -48px;
-}
-.icon-align-center {
-  background-position: -288px -48px;
-}
-.icon-align-right {
-  background-position: -312px -48px;
-}
-.icon-align-justify {
-  background-position: -336px -48px;
-}
-.icon-list {
-  background-position: -360px -48px;
-}
-.icon-indent-left {
-  background-position: -384px -48px;
-}
-.icon-indent-right {
-  background-position: -408px -48px;
-}
-.icon-facetime-video {
-  background-position: -432px -48px;
-}
-.icon-picture {
-  background-position: -456px -48px;
-}
-.icon-pencil {
-  background-position: 0 -72px;
-}
-.icon-map-marker {
-  background-position: -24px -72px;
-}
-.icon-adjust {
-  background-position: -48px -72px;
-}
-.icon-tint {
-  background-position: -72px -72px;
-}
-.icon-edit {
-  background-position: -96px -72px;
-}
-.icon-share {
-  background-position: -120px -72px;
-}
-.icon-check {
-  background-position: -144px -72px;
-}
-.icon-move {
-  background-position: -168px -72px;
-}
-.icon-step-backward {
-  background-position: -192px -72px;
-}
-.icon-fast-backward {
-  background-position: -216px -72px;
-}
-.icon-backward {
-  background-position: -240px -72px;
-}
-.icon-play {
-  background-position: -264px -72px;
-}
-.icon-pause {
-  background-position: -288px -72px;
-}
-.icon-stop {
-  background-position: -312px -72px;
-}
-.icon-forward {
-  background-position: -336px -72px;
-}
-.icon-fast-forward {
-  background-position: -360px -72px;
-}
-.icon-step-forward {
-  background-position: -384px -72px;
-}
-.icon-eject {
-  background-position: -408px -72px;
-}
-.icon-chevron-left {
-  background-position: -432px -72px;
-}
-.icon-chevron-right {
-  background-position: -456px -72px;
-}
-.icon-plus-sign {
-  background-position: 0 -96px;
-}
-.icon-minus-sign {
-  background-position: -24px -96px;
-}
-.icon-remove-sign {
-  background-position: -48px -96px;
-}
-.icon-ok-sign {
-  background-position: -72px -96px;
-}
-.icon-question-sign {
-  background-position: -96px -96px;
-}
-.icon-info-sign {
-  background-position: -120px -96px;
-}
-.icon-screenshot {
-  background-position: -144px -96px;
-}
-.icon-remove-circle {
-  background-position: -168px -96px;
-}
-.icon-ok-circle {
-  background-position: -192px -96px;
-}
-.icon-ban-circle {
-  background-position: -216px -96px;
-}
-.icon-arrow-left {
-  background-position: -240px -96px;
-}
-.icon-arrow-right {
-  background-position: -264px -96px;
-}
-.icon-arrow-up {
-  background-position: -289px -96px;
-}
-.icon-arrow-down {
-  background-position: -312px -96px;
-}
-.icon-share-alt {
-  background-position: -336px -96px;
-}
-.icon-resize-full {
-  background-position: -360px -96px;
-}
-.icon-resize-small {
-  background-position: -384px -96px;
-}
-.icon-plus {
-  background-position: -408px -96px;
-}
-.icon-minus {
-  background-position: -433px -96px;
-}
-.icon-asterisk {
-  background-position: -456px -96px;
-}
-.icon-exclamation-sign {
-  background-position: 0 -120px;
-}
-.icon-gift {
-  background-position: -24px -120px;
-}
-.icon-leaf {
-  background-position: -48px -120px;
-}
-.icon-fire {
-  background-position: -72px -120px;
-}
-.icon-eye-open {
-  background-position: -96px -120px;
-}
-.icon-eye-close {
-  background-position: -120px -120px;
-}
-.icon-warning-sign {
-  background-position: -144px -120px;
-}
-.icon-plane {
-  background-position: -168px -120px;
-}
-.icon-calendar {
-  background-position: -192px -120px;
-}
-.icon-notifications {
-  background-position: -192px -120px;
-}
-.icon-random {
-  background-position: -216px -120px;
-}
-.icon-comment {
-  background-position: -240px -120px;
-}
-.icon-magnet {
-  background-position: -264px -120px;
-}
-.icon-chevron-up {
-  background-position: -288px -120px;
-}
-.icon-chevron-down {
-  background-position: -313px -119px;
-}
-.icon-retweet {
-  background-position: -336px -120px;
-}
-.icon-shopping-cart {
-  background-position: -360px -120px;
-}
-.icon-folder-close {
-  background-position: -384px -120px;
-}
-.icon-folder-open {
-  background-position: -408px -120px;
-}
-.icon-resize-vertical {
-  background-position: -432px -119px;
-}
-.icon-resize-horizontal {
-  background-position: -456px -118px;
-}
-.dropdown {
-  position: relative;
-}
-.dropdown-toggle {
-  *margin-bottom: -3px;
-}
-.dropdown-toggle:active,
-.open .dropdown-toggle {
-  outline: 0;
-}
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  text-indent: -99999px;
-  *text-indent: 0;
-  vertical-align: top;
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-top: 4px solid #000000;
-  opacity: 0.3;
-  filter: alpha(opacity=30);
-  content: "\2193";
-}
-.dropdown .caret {
-  margin-top: 8px;
-  margin-left: 2px;
-}
-.dropdown:hover .caret,
-.open.dropdown .caret {
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  float: left;
-  display: none;
-  min-width: 160px;
-  max-width: 220px;
-  _width: 160px;
-  padding: 4px 0;
-  margin: 0;
-  list-style: none;
-  background-color: #ffffff;
-  border-color: #ccc;
-  border-color: rgba(0, 0, 0, 0.2);
-  border-style: solid;
-  border-width: 1px;
-  -webkit-border-radius: 0 0 5px 5px;
-  -moz-border-radius: 0 0 5px 5px;
-  border-radius: 0 0 5px 5px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding;
-  background-clip: padding-box;
-  *border-right-width: 2px;
-  *border-bottom-width: 2px;
-}
-.dropdown-menu.bottom-up {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 2px;
-}
-.dropdown-menu .divider {
-  height: 1px;
-  margin: 5px 1px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-  *width: 100%;
-  *margin: -5px 0 5px;
-}
-.dropdown-menu a {
-  display: block;
-  padding: 3px 15px;
-  clear: both;
-  font-weight: normal;
-  line-height: 18px;
-  color: #555555;
-  white-space: nowrap;
-}
-.dropdown-menu li > a:hover,
-.dropdown-menu .active > a,
-.dropdown-menu .active > a:hover {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #1b97d1;
-}
-.dropdown.open {
-  *z-index: 1000;
-}
-.dropdown.open .dropdown-toggle {
-  color: #ffffff;
-  background: #ccc;
-  background: rgba(0, 0, 0, 0.3);
-}
-.dropdown.open .dropdown-menu {
-  display: block;
-}
-.typeahead {
-  margin-top: 2px;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.well {
-  min-height: 20px;
-  padding: 19px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border: 1px solid #eee;
-  border: 1px solid rgba(0, 0, 0, 0.05);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-.well blockquote {
-  border-color: #ddd;
-  border-color: rgba(0, 0, 0, 0.15);
-}
-.fade {
-  -webkit-transition: opacity 0.15s linear;
-  -moz-transition: opacity 0.15s linear;
-  -ms-transition: opacity 0.15s linear;
-  -o-transition: opacity 0.15s linear;
-  transition: opacity 0.15s linear;
-  opacity: 0;
-}
-.fade.in {
-  opacity: 1;
-}
-.collapse {
-  -webkit-transition: height 0.35s ease;
-  -moz-transition: height 0.35s ease;
-  -ms-transition: height 0.35s ease;
-  -o-transition: height 0.35s ease;
-  transition: height 0.35s ease;
-  position: relative;
-  overflow: hidden;
-  height: 0;
-}
-.collapse.in {
-  height: auto;
-}
-.close {
-  float: right;
-  font-size: 20px;
-  font-weight: bold;
-  line-height: 18px;
-  color: #000000;
-  text-shadow: 0 1px 0 #ffffff;
-  opacity: 0.2;
-  filter: alpha(opacity=20);
-}
-.close:hover {
-  color: #000000;
-  text-decoration: none;
-  opacity: 0.4;
-  filter: alpha(opacity=40);
-  cursor: pointer;
-}
-.btn {
-  display: inline-block;
-  padding: 4px 10px 4px;
-  font-size: 13px;
-  line-height: 18px;
-  color: #333333;
-  text-align: center;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
-  background-color: #fafafa;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6));
-  background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6);
-  background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-repeat: no-repeat;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);
-  border: 1px solid #ccc;
-  border-bottom-color: #bbb;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  cursor: pointer;
-  *margin-left: .3em;
-}
-.btn:first-child {
-  *margin-left: 0;
-}
-.btn:hover {
-  color: #333333;
-  text-decoration: none;
-  background-color: #e6e6e6;
-  background-position: 0 -15px;
-  -webkit-transition: background-position 0.1s linear;
-  -moz-transition: background-position 0.1s linear;
-  -ms-transition: background-position 0.1s linear;
-  -o-transition: background-position 0.1s linear;
-  transition: background-position 0.1s linear;
-}
-.btn:focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.btn.active,
-.btn:active {
-  background-image: none;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  background-color: #e6e6e6;
-  background-color: #d9d9d9 \9;
-  color: rgba(0, 0, 0, 0.5);
-  outline: 0;
-}
-.btn.disabled,
-.btn[disabled] {
-  cursor: default;
-  background-image: none;
-  background-color: #e6e6e6;
-  opacity: 0.65;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-.btn-large {
-  padding: 9px 14px;
-  font-size: 15px;
-  line-height: normal;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.btn-large .icon {
-  margin-top: 1px;
-}
-.btn-small {
-  padding: 5px 9px;
-  font-size: 11px;
-  line-height: 16px;
-}
-.btn-small .icon {
-  margin-top: -1px;
-}
-.btn-primary,
-.btn-primary:hover,
-.btn-warning,
-.btn-warning:hover,
-.btn-danger,
-.btn-danger:hover,
-.btn-success,
-.btn-success:hover,
-.btn-info,
-.btn-info:hover {
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  color: #ffffff;
-}
-.btn-primary.active,
-.btn-warning.active,
-.btn-danger.active,
-.btn-success.active,
-.btn-info.active {
-  color: rgba(255, 255, 255, 0.75);
-}
-.btn-primary {
-  background-color: #1b7fd1;
-  background-image: -moz-linear-gradient(top, #1b97d1, #1b5ad1);
-  background-image: -ms-linear-gradient(top, #1b97d1, #1b5ad1);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#1b97d1), to(#1b5ad1));
-  background-image: -webkit-linear-gradient(top, #1b97d1, #1b5ad1);
-  background-image: -o-linear-gradient(top, #1b97d1, #1b5ad1);
-  background-image: linear-gradient(top, #1b97d1, #1b5ad1);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1b97d1', endColorstr='#1b5ad1', GradientType=0);
-  border-color: #1b5ad1 #1b5ad1 #123d8d;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-primary:hover,
-.btn-primary:active,
-.btn-primary.active,
-.btn-primary.disabled,
-.btn-primary[disabled] {
-  background-color: #1b5ad1;
-}
-.btn-primary:active,
-.btn-primary.active {
-  background-color: #1547a4 \9;
-}
-.btn-warning {
-  background-color: #faa732;
-  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
-  background-image: -ms-linear-gradient(top, #fbb450, #f89406);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
-  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
-  background-image: -o-linear-gradient(top, #fbb450, #f89406);
-  background-image: linear-gradient(top, #fbb450, #f89406);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);
-  border-color: #f89406 #f89406 #ad6704;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-warning:hover,
-.btn-warning:active,
-.btn-warning.active,
-.btn-warning.disabled,
-.btn-warning[disabled] {
-  background-color: #f89406;
-}
-.btn-warning:active,
-.btn-warning.active {
-  background-color: #c67605 \9;
-}
-.btn-danger {
-  background-color: #da4f49;
-  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: linear-gradient(top, #ee5f5b, #bd362f);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);
-  border-color: #bd362f #bd362f #802420;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-danger:hover,
-.btn-danger:active,
-.btn-danger.active,
-.btn-danger.disabled,
-.btn-danger[disabled] {
-  background-color: #bd362f;
-}
-.btn-danger:active,
-.btn-danger.active {
-  background-color: #942a25 \9;
-}
-.btn-success {
-  background-color: #5bb75b;
-  background-image: -moz-linear-gradient(top, #62c462, #51a351);
-  background-image: -ms-linear-gradient(top, #62c462, #51a351);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
-  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
-  background-image: -o-linear-gradient(top, #62c462, #51a351);
-  background-image: linear-gradient(top, #62c462, #51a351);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);
-  border-color: #51a351 #51a351 #387038;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-success:hover,
-.btn-success:active,
-.btn-success.active,
-.btn-success.disabled,
-.btn-success[disabled] {
-  background-color: #51a351;
-}
-.btn-success:active,
-.btn-success.active {
-  background-color: #408140 \9;
-}
-.btn-info {
-  background-color: #49afcd;
-  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: linear-gradient(top, #5bc0de, #2f96b4);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);
-  border-color: #2f96b4 #2f96b4 #1f6377;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-info:hover,
-.btn-info:active,
-.btn-info.active,
-.btn-info.disabled,
-.btn-info[disabled] {
-  background-color: #2f96b4;
-}
-.btn-info:active,
-.btn-info.active {
-  background-color: #24748c \9;
-}
-button.btn,
-input[type="submit"].btn {
-  *padding-top: 2px;
-  *padding-bottom: 2px;
-}
-button.btn::-moz-focus-inner,
-input[type="submit"].btn::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-button.btn.large,
-input[type="submit"].btn.large {
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-button.btn.small,
-input[type="submit"].btn.small {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-.btn-group {
-  position: relative;
-  *zoom: 1;
-  *margin-left: .3em;
-}
-.btn-group:before,
-.btn-group:after {
-  display: table;
-  content: "";
-}
-.btn-group:after {
-  clear: both;
-}
-.btn-group:first-child {
-  *margin-left: 0;
-}
-.btn-group + .btn-group {
-  margin-left: 5px;
-}
-.btn-toolbar {
-  margin-top: 9px;
-  margin-bottom: 9px;
-}
-.btn-toolbar .btn-group {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-}
-.btn-group .btn {
-  position: relative;
-  float: left;
-  margin-left: -1px;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-group .btn:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-  -webkit-border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  border-bottom-left-radius: 4px;
-}
-.btn-group .btn:last-child,
-.btn-group .dropdown-toggle {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-  -webkit-border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  border-bottom-right-radius: 4px;
-}
-.btn-group .btn.large:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 6px;
-  -moz-border-radius-topleft: 6px;
-  border-top-left-radius: 6px;
-  -webkit-border-bottom-left-radius: 6px;
-  -moz-border-radius-bottomleft: 6px;
-  border-bottom-left-radius: 6px;
-}
-.btn-group .btn.large:last-child,
-.btn-group .large.dropdown-toggle {
-  -webkit-border-top-right-radius: 6px;
-  -moz-border-radius-topright: 6px;
-  border-top-right-radius: 6px;
-  -webkit-border-bottom-right-radius: 6px;
-  -moz-border-radius-bottomright: 6px;
-  border-bottom-right-radius: 6px;
-}
-.btn-group .btn:hover,
-.btn-group .btn:focus,
-.btn-group .btn:active,
-.btn-group .btn.active {
-  z-index: 2;
-}
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-.btn-group .dropdown-toggle {
-  padding-left: 8px;
-  padding-right: 8px;
-  -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  *padding-top: 5px;
-  *padding-bottom: 5px;
-}
-.btn-group.open {
-  *z-index: 1000;
-}
-.btn-group.open .dropdown-menu {
-  display: block;
-  margin-top: 1px;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.btn-group.open .dropdown-toggle {
-  background-image: none;
-  -webkit-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-.btn .caret {
-  margin-top: 7px;
-  margin-left: 0;
-}
-.btn:hover .caret,
-.open.btn-group .caret {
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.btn-primary .caret,
-.btn-danger .caret,
-.btn-info .caret,
-.btn-success .caret {
-  border-top-color: #ffffff;
-  opacity: 0.75;
-  filter: alpha(opacity=75);
-}
-.btn-small .caret {
-  margin-top: 4px;
-}
-.alert {
-  padding: 8px 35px 8px 14px;
-  margin-bottom: 18px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  background-color: #fcf8e3;
-  border: 1px solid #fbeed5;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.alert,
-.alert-heading {
-  color: #c09853;
-}
-.alert .close {
-  position: relative;
-  top: -2px;
-  right: -21px;
-  line-height: 18px;
-}
-.alert-success {
-  background-color: #dff0d8;
-  border-color: #d6e9c6;
-}
-.alert-success,
-.alert-success .alert-heading {
-  color: #468847;
-}
-.alert-danger,
-.alert-error {
-  background-color: #f2dede;
-  border-color: #eed3d7;
-}
-.alert-danger,
-.alert-error,
-.alert-danger .alert-heading,
-.alert-error .alert-heading {
-  color: #b94a48;
-}
-.alert-info {
-  background-color: #d9edf7;
-  border-color: #bce8f1;
-}
-.alert-info,
-.alert-info .alert-heading {
-  color: #3a87ad;
-}
-.alert-block {
-  padding-top: 14px;
-  padding-bottom: 14px;
-}
-.alert-block > p,
-.alert-block > ul {
-  margin-bottom: 0;
-}
-.alert-block p + p {
-  margin-top: 5px;
-}
-.nav {
-  margin-left: 0;
-  margin-bottom: 18px;
-  list-style: none;
-}
-.nav > li > a {
-  display: block;
-}
-.nav > li > a:hover {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-.nav-list {
-  padding-left: 14px;
-  padding-right: 14px;
-  margin-bottom: 0;
-}
-.nav-list > li > a,
-.nav-list .nav-header {
-  display: block;
-  padding: 3px 15px;
-  margin-left: -15px;
-  margin-right: -15px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-}
-.nav-list .nav-header {
-  font-size: 11px;
-  font-weight: bold;
-  line-height: 18px;
-  color: #999999;
-  text-transform: uppercase;
-}
-.nav-list > li + .nav-header {
-  margin-top: 9px;
-}
-.nav-list .active > a {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
-  background-color: #1b97d1;
-}
-.nav-list .icon {
-  margin-right: 2px;
-}
-
-.nav-tabs,
-.nav-pills {
-  *zoom: 1;
-}
-.nav-tabs:before,
-.nav-pills:before,
-.nav-tabs:after,
-.nav-pills:after {
-  display: table;
-  content: "";
-}
-.nav-tabs:after,
-.nav-pills:after {
-  clear: both;
-}
-.nav-tabs > li,
-.nav-pills > li {
-  float: left;
-}
-.nav-tabs > li > a,
-.nav-pills > li > a {
-  padding-right: 12px;
-  padding-left: 12px;
-  margin-right: 2px;
-  line-height: 14px;
-}
-.nav-tabs {
-  border-bottom: 1px solid #ddd;
-}
-.nav-tabs > li {
-  margin-bottom: -1px;
-}
-.nav-tabs > li > a {
-  padding-top: 9px;
-  padding-bottom: 9px;
-  border: 1px solid transparent;
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.nav-tabs > li > a:hover {
-  border-color: #eeeeee #eeeeee #dddddd;
-}
-.nav-tabs > .active > a,
-.nav-tabs > .active > a:hover {
-  color: #555555;
-  background-color: #ffffff;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-  cursor: default;
-}
-.nav-pills > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  margin-top: 2px;
-  margin-bottom: 2px;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.nav-pills .active > a,
-.nav-pills .active > a:hover {
-  color: #ffffff;
-  background-color: #1b97d1;
-}
-.nav-stacked > li {
-  float: none;
-}
-.nav-stacked > li > a {
-  margin-right: 0;
-}
-.nav-tabs.nav-stacked {
-  border-bottom: 0;
-}
-.nav-tabs.nav-stacked > li > a {
-  border: 1px solid #ddd;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.nav-tabs.nav-stacked > li:first-child > a {
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.nav-tabs.nav-stacked > li:last-child > a {
-  -webkit-border-radius: 0 0 4px 4px;
-  -moz-border-radius: 0 0 4px 4px;
-  border-radius: 0 0 4px 4px;
-}
-.nav-tabs.nav-stacked > li > a:hover {
-  border-color: #ddd;
-  z-index: 2;
-}
-.nav-pills.nav-stacked > li > a {
-  margin-bottom: 3px;
-}
-.nav-pills.nav-stacked > li:last-child > a {
-  margin-bottom: 1px;
-}
-.nav-tabs .dropdown-menu,
-.nav-pills .dropdown-menu {
-  margin-top: 1px;
-  border-width: 1px;
-}
-.nav-pills .dropdown-menu {
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.nav-tabs .dropdown-toggle .caret,
-.nav-pills .dropdown-toggle .caret {
-  border-top-color: #1b97d1;
-  margin-top: 6px;
-}
-.nav-tabs .dropdown-toggle:hover .caret,
-.nav-pills .dropdown-toggle:hover .caret {
-  border-top-color: #12668d;
-}
-.nav-tabs .active .dropdown-toggle .caret,
-.nav-pills .active .dropdown-toggle .caret {
-  border-top-color: #333333;
-}
-.nav > .dropdown.active > a:hover {
-  color: #000000;
-  cursor: pointer;
-}
-.nav-tabs .open .dropdown-toggle,
-.nav-pills .open .dropdown-toggle,
-.nav > .open.active > a:hover {
-  color: #ffffff;
-  background-color: #999999;
-  border-color: #999999;
-}
-.nav .open .caret,
-.nav .open.active .caret,
-.nav .open a:hover .caret {
-  border-top-color: #ffffff;
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.tabs-stacked .open > a:hover {
-  border-color: #999999;
-}
-.tabbable {
-  *zoom: 1;
-}
-.tabbable:before,
-.tabbable:after {
-  display: table;
-  content: "";
-}
-.tabbable:after {
-  clear: both;
-}
-.tabs-below .nav-tabs,
-.tabs-right .nav-tabs,
-.tabs-left .nav-tabs {
-  border-bottom: 0;
-}
-.tab-content > .tab-pane,
-.pill-content > .pill-pane {
-  display: none;
-}
-.tab-content > .active,
-.pill-content > .active {
-  display: block;
-}
-.tabs-below .nav-tabs {
-  border-top: 1px solid #ddd;
-}
-.tabs-below .nav-tabs > li {
-  margin-top: -1px;
-  margin-bottom: 0;
-}
-.tabs-below .nav-tabs > li > a {
-  -webkit-border-radius: 0 0 4px 4px;
-  -moz-border-radius: 0 0 4px 4px;
-  border-radius: 0 0 4px 4px;
-}
-.tabs-below .nav-tabs > li > a:hover {
-  border-bottom-color: transparent;
-  border-top-color: #ddd;
-}
-.tabs-below .nav-tabs .active > a,
-.tabs-below .nav-tabs .active > a:hover {
-  border-color: transparent #ddd #ddd #ddd;
-}
-.tabs-left .nav-tabs > li,
-.tabs-right .nav-tabs > li {
-  float: none;
-}
-.tabs-left .nav-tabs > li > a,
-.tabs-right .nav-tabs > li > a {
-  min-width: 74px;
-  margin-right: 0;
-  margin-bottom: 3px;
-}
-.tabs-left .nav-tabs {
-  float: left;
-  margin-right: 19px;
-  border-right: 1px solid #ddd;
-}
-.tabs-left .nav-tabs > li > a {
-  margin-right: -1px;
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.tabs-left .nav-tabs > li > a:hover {
-  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
-}
-.tabs-left .nav-tabs .active > a,
-.tabs-left .nav-tabs .active > a:hover {
-  border-color: #ddd transparent #ddd #ddd;
-  *border-right-color: #ffffff;
-}
-.tabs-right .nav-tabs {
-  float: right;
-  margin-left: 19px;
-  border-left: 1px solid #ddd;
-}
-.tabs-right .nav-tabs > li > a {
-  margin-left: -1px;
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.tabs-right .nav-tabs > li > a:hover {
-  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
-}
-.tabs-right .nav-tabs .active > a,
-.tabs-right .nav-tabs .active > a:hover {
-  border-color: #ddd #ddd #ddd transparent;
-  *border-left-color: #ffffff;
-}
-.navbar {
-  overflow: visible;
-  margin-bottom: 18px;
-}
-.navbar-inner {
-  padding-left: 20px;
-  padding-right: 20px;
-  background-color: #f8f8f8;
-  background-image: -moz-linear-gradient(top, #ffffff, #ededed);
-  background-image: -ms-linear-gradient(top, #ffffff, #ededed);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#ededed));
-  background-image: -webkit-linear-gradient(top, #ffffff, #ededed);
-  background-image: -o-linear-gradient(top, #ffffff, #ededed);
-  background-image: linear-gradient(top, #ffffff, #ededed);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#ededed', GradientType=0);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
-  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
-  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
-}
-.btn-navbar {
-  display: none;
-  float: right;
-  padding: 7px 10px;
-  margin-left: 5px;
-  margin-right: 5px;
-  background-color: #f8f8f8;
-  background-image: -moz-linear-gradient(top, #ffffff, #ededed);
-  background-image: -ms-linear-gradient(top, #ffffff, #ededed);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#ededed));
-  background-image: -webkit-linear-gradient(top, #ffffff, #ededed);
-  background-image: -o-linear-gradient(top, #ffffff, #ededed);
-  background-image: linear-gradient(top, #ffffff, #ededed);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#ededed', GradientType=0);
-  border-color: #ededed #ededed #c7c7c7;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-  -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-}
-.btn-navbar:hover,
-.btn-navbar:active,
-.btn-navbar.active,
-.btn-navbar.disabled,
-.btn-navbar[disabled] {
-  background-color: #ededed;
-}
-.btn-navbar:active,
-.btn-navbar.active {
-  background-color: #d4d4d4 \9;
-}
-.btn-navbar .icon-bar {
-  display: block;
-  width: 18px;
-  height: 2px;
-  background-color: #f5f5f5;
-  -webkit-border-radius: 1px;
-  -moz-border-radius: 1px;
-  border-radius: 1px;
-  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-}
-.btn-navbar .icon-bar + .icon-bar {
-  margin-top: 3px;
-}
-.nav-collapse.collapse {
-  height: auto;
-}
-.navbar .brand:hover {
-  text-decoration: none;
-}
-.navbar .brand {
-  float: left;
-  display: block;
-  padding: 8px 20px 12px;
-  margin-left: -20px;
-  font-size: 20px;
-  font-weight: 200;
-  line-height: 1;
-  color: #ffffff;
-}
-.navbar .navbar-text {
-  margin-bottom: 0;
-  line-height: 40px;
-  color: #999999;
-}
-.navbar .navbar-text a:hover {
-  color: #ffffff;
-  background-color: transparent;
-}
-.navbar .btn,
-.navbar .btn-group {
-  margin-top: 5px;
-}
-.navbar .btn-group .btn {
-  margin-top: 0;
-}
-.navbar-form {
-  margin-bottom: 0;
-  *zoom: 1;
-}
-.navbar-form:before,
-.navbar-form:after {
-  display: table;
-  content: "";
-}
-.navbar-form:after {
-  clear: both;
-}
-.navbar-form input,
-.navbar-form select {
-  display: inline-block;
-  margin-top: 5px;
-  margin-bottom: 0;
-}
-.navbar-form .radio,
-.navbar-form .checkbox {
-  margin-top: 5px;
-}
-.navbar-form input[type="image"],
-.navbar-form input[type="checkbox"],
-.navbar-form input[type="radio"] {
-  margin-top: 3px;
-}
-.navbar-search {
-  position: relative;
-  float: left;
-  margin-top: 6px;
-  margin-bottom: 0;
-}
-.navbar-search .search-query {
-  padding: 4px 9px;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 1;
-  color: #ffffff;
-  color: rgba(255, 255, 255, 0.75);
-  background: #666;
-  background: rgba(255, 255, 255, 0.3);
-  border: 1px solid #111;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
-  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
-  -webkit-transition: none;
-  -moz-transition: none;
-  -ms-transition: none;
-  -o-transition: none;
-  transition: none;
-}
-.navbar-search .search-query :-moz-placeholder {
-  color: #eeeeee;
-}
-.navbar-search .search-query ::-webkit-input-placeholder {
-  color: #eeeeee;
-}
-.navbar-search .search-query:hover {
-  color: #ffffff;
-  background-color: #999999;
-  background-color: rgba(255, 255, 255, 0.5);
-}
-.navbar-search .search-query:focus,
-.navbar-search .search-query.focused {
-  padding: 5px 10px;
-  color: #333333;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #ffffff;
-  border: 0;
-  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  outline: 0;
-}
-.navbar-fixed-top {
-  position: fixed;
-  top: 0;
-  right: 0;
-  left: 0;
-  z-index: 1030;
-}
-.navbar-fixed-top .navbar-inner {
-  padding-left: 0;
-  padding-right: 0;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.navbar .nav {
-  position: relative;
-  left: 0;
-  display: block;
-  float: left;
-  margin: 0 10px 0 0;
-}
-.navbar .nav.pull-right {
-  float: right;
-}
-.navbar .nav > li {
-  display: block;
-  float: left;
-}
-.navbar .nav > li > a {
-  float: none;
-  padding: 10px 10px 11px;
-  line-height: 19px;
-  color: #999999;
-  text-decoration: none;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.navbar .nav > li > a:hover {
-  background-color: transparent;
-  color: #ffffff;
-  text-decoration: none;
-}
-.navbar .nav .active > a,
-.navbar .nav .active > a:hover {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #ededed;
-  background-color: rgba(0, 0, 0, 0.5);
-}
-.navbar .divider-vertical {
-  height: 40px;
-  width: 1px;
-  margin: 0 9px;
-  overflow: hidden;
-  background-color: #ededed;
-  border-right: 1px solid #ffffff;
-}
-.navbar .nav.pull-right {
-  margin-left: 10px;
-  margin-right: 0;
-}
-.navbar .dropdown-menu {
-  margin-top: 1px;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.navbar .dropdown-menu:before {
-  content: '';
-  display: inline-block;
-  border-left: 7px solid transparent;
-  border-right: 7px solid transparent;
-  border-bottom: 7px solid #ccc;
-  border-bottom-color: rgba(0, 0, 0, 0.2);
-  position: absolute;
-  top: -7px;
-  left: 9px;
-}
-.navbar .dropdown-menu:after {
-  content: '';
-  display: inline-block;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-bottom: 6px solid #ffffff;
-  position: absolute;
-  top: -6px;
-  left: 10px;
-}
-.navbar .nav .dropdown-toggle .caret,
-.navbar .nav .open.dropdown .caret {
-  border-top-color: #ffffff;
-}
-.navbar .nav .active .caret {
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.navbar .nav .open > .dropdown-toggle,
-.navbar .nav .active > .dropdown-toggle,
-.navbar .nav .open.active > .dropdown-toggle {
-  background-color: transparent;
-}
-.navbar .nav .active > .dropdown-toggle:hover {
-  color: #ffffff;
-}
-.navbar .nav.pull-right .dropdown-menu {
-  left: auto;
-  right: 0;
-}
-.navbar .nav.pull-right .dropdown-menu:before {
-  left: auto;
-  right: 12px;
-}
-.navbar .nav.pull-right .dropdown-menu:after {
-  left: auto;
-  right: 13px;
-}
-.breadcrumb {
-  padding: 7px 14px;
-  margin: 0 0 18px;
-  background-color: #fbfbfb;
-  background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5);
-  background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5));
-  background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5);
-  background-image: -o-linear-gradient(top, #ffffff, #f5f5f5);
-  background-image: linear-gradient(top, #ffffff, #f5f5f5);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);
-  border: 1px solid #ddd;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-  -webkit-box-shadow: inset 0 1px 0 #ffffff;
-  -moz-box-shadow: inset 0 1px 0 #ffffff;
-  box-shadow: inset 0 1px 0 #ffffff;
-}
-.breadcrumb li {
-  display: inline;
-  text-shadow: 0 1px 0 #ffffff;
-}
-.breadcrumb .divider {
-  padding: 0 5px;
-  color: #999999;
-}
-.breadcrumb .active a {
-  color: #333333;
-}
-.pagination {
-  height: 36px;
-  margin: 18px 0;
-}
-.pagination ul {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  margin-left: 0;
-  margin-bottom: 0;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-.pagination li {
-  display: inline;
-}
-.pagination a {
-  float: left;
-  padding: 0 14px;
-  line-height: 34px;
-  text-decoration: none;
-  border: 1px solid #ddd;
-  border-left-width: 0;
-}
-.pagination a:hover,
-.pagination .active a {
-  background-color: #f5f5f5;
-}
-.pagination .active a {
-  color: #999999;
-  cursor: default;
-}
-.pagination .disabled a,
-.pagination .disabled a:hover {
-  color: #999999;
-  background-color: transparent;
-  cursor: default;
-}
-.pagination li:first-child a {
-  border-left-width: 1px;
-  -webkit-border-radius: 3px 0 0 3px;
-  -moz-border-radius: 3px 0 0 3px;
-  border-radius: 3px 0 0 3px;
-}
-.pagination li:last-child a {
-  -webkit-border-radius: 0 3px 3px 0;
-  -moz-border-radius: 0 3px 3px 0;
-  border-radius: 0 3px 3px 0;
-}
-.pagination-centered {
-  text-align: center;
-}
-.pagination-right {
-  text-align: right;
-}
-.pager {
-  margin-left: 0;
-  margin-bottom: 18px;
-  list-style: none;
-  text-align: center;
-  *zoom: 1;
-}
-.pager:before,
-.pager:after {
-  display: table;
-  content: "";
-}
-.pager:after {
-  clear: both;
-}
-.pager li {
-  display: inline;
-}
-.pager a {
-  display: inline-block;
-  padding: 5px 14px;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  -webkit-border-radius: 15px;
-  -moz-border-radius: 15px;
-  border-radius: 15px;
-}
-.pager a:hover {
-  text-decoration: none;
-  background-color: #f5f5f5;
-}
-.pager .next a {
-  float: right;
-}
-.pager .previous a {
-  float: left;
-}
-.modal-open .dropdown-menu {
-  z-index: 2050;
-}
-.modal-open .dropdown.open {
-  *z-index: 2050;
-}
-.modal-open .popover {
-  z-index: 2060;
-}
-.modal-open .tooltip {
-  z-index: 2070;
-}
-.modal-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 1040;
-  background-color: #000000;
-}
-.modal-backdrop.fade {
-  opacity: 0;
-}
-.modal-backdrop,
-.modal-backdrop.fade.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-.modal {
-  position: fixed;
-  top: 50%;
-  left: 50%;
-  z-index: 1050;
-  max-height: 500px;
-  overflow: auto;
-  width: 560px;
-  margin: -250px 0 0 -280px;
-  background-color: #ffffff;
-  border: 1px solid #999;
-  border: 1px solid rgba(0, 0, 0, 0.3);
-  *border: 1px solid #999;
-  /* IE6-7 */
-
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding-box;
-  background-clip: padding-box;
-}
-.modal.fade {
-  -webkit-transition: opacity .3s linear, top .3s ease-out;
-  -moz-transition: opacity .3s linear, top .3s ease-out;
-  -ms-transition: opacity .3s linear, top .3s ease-out;
-  -o-transition: opacity .3s linear, top .3s ease-out;
-  transition: opacity .3s linear, top .3s ease-out;
-  top: -25%;
-}
-.modal.fade.in {
-  top: 50%;
-}
-.modal-header {
-  padding: 9px 15px;
-  border-bottom: 1px solid #eee;
-}
-.modal-header .close {
-  margin-top: 2px;
-}
-.modal-body {
-  padding: 15px;
-}
-.modal-footer {
-  padding: 14px 15px 15px;
-  margin-bottom: 0;
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-  -webkit-box-shadow: inset 0 1px 0 #ffffff;
-  -moz-box-shadow: inset 0 1px 0 #ffffff;
-  box-shadow: inset 0 1px 0 #ffffff;
-  *zoom: 1;
-}
-.modal-footer:before,
-.modal-footer:after {
-  display: table;
-  content: "";
-}
-.modal-footer:after {
-  clear: both;
-}
-.modal-footer .btn {
-  float: left;
-  margin-left: 5px;
-  margin-bottom: 0;
-}
-.tooltip {
-  position: absolute;
-  z-index: 1020;
-  display: block;
-  visibility: visible;
-  padding: 5px;
-  font-size: 11px;
-  opacity: 0;
-  filter: alpha(opacity=0);
-}
-.tooltip.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-.tooltip.top {
-  margin-top: -2px;
-}
-.tooltip.right {
-  margin-left: 2px;
-}
-.tooltip.bottom {
-  margin-top: 2px;
-}
-.tooltip.left {
-  margin-left: -2px;
-}
-.tooltip.top .tooltip-arrow {
-  bottom: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-top: 5px solid #000000;
-}
-.tooltip.left .tooltip-arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-left: 5px solid #000000;
-}
-.tooltip.bottom .tooltip-arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-bottom: 5px solid #000000;
-}
-.tooltip.right .tooltip-arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-right: 5px solid #000000;
-}
-.tooltip-inner {
-  max-width: 200px;
-  padding: 3px 8px;
-  color: #ffffff;
-  text-align: center;
-  text-decoration: none;
-  background-color: #000000;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.tooltip-arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-}
-.popover {
-  position: absolute;
-  top: 0;
-  left: 0;
-  z-index: 1010;
-  display: none;
-  padding: 5px;
-}
-.popover.top {
-  margin-top: -5px;
-}
-.popover.right {
-  margin-left: 5px;
-}
-.popover.bottom {
-  margin-top: 5px;
-}
-.popover.left {
-  margin-left: -5px;
-}
-.popover.top .arrow {
-  bottom: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-top: 5px solid #000000;
-}
-.popover.right .arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-right: 5px solid #000000;
-}
-.popover.bottom .arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-bottom: 5px solid #000000;
-}
-.popover.left .arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-left: 5px solid #000000;
-}
-.popover .arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-}
-.popover-inner {
-  padding: 3px;
-  width: 280px;
-  overflow: hidden;
-  background: #000000;
-  background: rgba(0, 0, 0, 0.8);
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-}
-.popover-title {
-  padding: 9px 15px;
-  line-height: 1;
-  background-color: #f5f5f5;
-  border-bottom: 1px solid #eee;
-  -webkit-border-radius: 3px 3px 0 0;
-  -moz-border-radius: 3px 3px 0 0;
-  border-radius: 3px 3px 0 0;
-}
-.popover-content {
-  padding: 14px;
-  background-color: #ffffff;
-  -webkit-border-radius: 0 0 3px 3px;
-  -moz-border-radius: 0 0 3px 3px;
-  border-radius: 0 0 3px 3px;
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding-box;
-  background-clip: padding-box;
-}
-.popover-content p,
-.popover-content ul,
-.popover-content ol {
-  margin-bottom: 0;
-}
-.thumbnails {
-  margin-left: -20px;
-  list-style: none;
-  *zoom: 1;
-}
-.thumbnails:before,
-.thumbnails:after {
-  display: table;
-  content: "";
-}
-.thumbnails:after {
-  clear: both;
-}
-.thumbnails > li {
-  float: left;
-  margin: 0 0 18px 20px;
-}
-.thumbnail {
-  display: block;
-  padding: 4px;
-  line-height: 1;
-  border: 1px solid #ddd;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-a.thumbnail:hover {
-  border-color: #1b97d1;
-  -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-  -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-  box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-}
-.thumbnail > img {
-  display: block;
-  max-width: 100%;
-  margin-left: auto;
-  margin-right: auto;
-}
-.thumbnail .caption {
-  padding: 9px;
-}
-.label {
-  padding: 1px 3px 2px;
-  font-size: 9.75px;
-  font-weight: bold;
-  color: #ffffff;
-  text-transform: uppercase;
-  background-color: #999999;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.label-important {
-  background-color: #b94a48;
-}
-.label-warning {
-  background-color: #f89406;
-}
-.label-success {
-  background-color: #468847;
-}
-.label-info {
-  background-color: #3a87ad;
-}
-@-webkit-keyframes progress-bar-stripes {
-  from {
-    background-position: 0 0;
-  }
-  to {
-    background-position: 40px 0;
-  }
-}
-@-moz-keyframes progress-bar-stripes {
-  from {
-    background-position: 0 0;
-  }
-  to {
-    background-position: 40px 0;
-  }
-}
-@keyframes progress-bar-stripes {
-  from {
-    background-position: 0 0;
-  }
-  to {
-    background-position: 40px 0;
-  }
-}
-.progress {
-  overflow: hidden;
-  height: 18px;
-  margin-bottom: 18px;
-  background-color: #f7f7f7;
-  background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
-  background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.progress .bar {
-  width: 0%;
-  height: 18px;
-  color: #ffffff;
-  font-size: 12px;
-  text-align: center;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #0e90d2;
-  background-image: -moz-linear-gradient(top, #149bdf, #0480be);
-  background-image: -ms-linear-gradient(top, #149bdf, #0480be);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
-  background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
-  background-image: -o-linear-gradient(top, #149bdf, #0480be);
-  background-image: linear-gradient(top, #149bdf, #0480be);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);
-  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-  -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-  -webkit-transition: width 0.6s ease;
-  -moz-transition: width 0.6s ease;
-  -ms-transition: width 0.6s ease;
-  -o-transition: width 0.6s ease;
-  transition: width 0.6s ease;
-}
-.progress-striped .bar {
-  background-color: #62c462;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  -webkit-background-size: 40px 40px;
-  -moz-background-size: 40px 40px;
-  -o-background-size: 40px 40px;
-  background-size: 40px 40px;
-}
-.progress.active .bar {
-  -webkit-animation: progress-bar-stripes 2s linear infinite;
-  -moz-animation: progress-bar-stripes 2s linear infinite;
-  animation: progress-bar-stripes 2s linear infinite;
-}
-.progress-danger .bar {
-  background-color: #dd514c;
-  background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: linear-gradient(top, #ee5f5b, #c43c35);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
-}
-.progress-danger.progress-striped .bar {
-  background-color: #ee5f5b;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.progress-success .bar {
-  background-color: #5eb95e;
-  background-image: -moz-linear-gradient(top, #62c462, #57a957);
-  background-image: -ms-linear-gradient(top, #62c462, #57a957);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
-  background-image: -webkit-linear-gradient(top, #62c462, #57a957);
-  background-image: -o-linear-gradient(top, #62c462, #57a957);
-  background-image: linear-gradient(top, #62c462, #57a957);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
-}
-.progress-success.progress-striped .bar {
-  background-color: #62c462;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.progress-info .bar {
-  background-color: #4bb1cf;
-  background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: linear-gradient(top, #5bc0de, #339bb9);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);
-}
-.progress-info.progress-striped .bar {
-  background-color: #5bc0de;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.accordion {
-  margin-bottom: 18px;
-}
-.accordion-group {
-  margin-bottom: 2px;
-  border: 1px solid #e5e5e5;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.accordion-heading {
-  border-bottom: 0;
-}
-.accordion-heading .accordion-toggle {
-  display: block;
-  padding: 8px 15px;
-}
-.accordion-inner {
-  padding: 9px 15px;
-  border-top: 1px solid #e5e5e5;
-}
-.carousel {
-  position: relative;
-  margin-bottom: 18px;
-  line-height: 1;
-}
-.carousel-inner {
-  overflow: hidden;
-  width: 100%;
-  position: relative;
-}
-.carousel .item {
-  display: none;
-  position: relative;
-  -webkit-transition: 0.6s ease-in-out left;
-  -moz-transition: 0.6s ease-in-out left;
-  -ms-transition: 0.6s ease-in-out left;
-  -o-transition: 0.6s ease-in-out left;
-  transition: 0.6s ease-in-out left;
-}
-.carousel .item > img {
-  display: block;
-  line-height: 1;
-}
-.carousel .active,
-.carousel .next,
-.carousel .prev {
-  display: block;
-}
-.carousel .active {
-  left: 0;
-}
-.carousel .next,
-.carousel .prev {
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-.carousel .next {
-  left: 100%;
-}
-.carousel .prev {
-  left: -100%;
-}
-.carousel .next.left,
-.carousel .prev.right {
-  left: 0;
-}
-.carousel .active.left {
-  left: -100%;
-}
-.carousel .active.right {
-  left: 100%;
-}
-.carousel-control {
-  position: absolute;
-  top: 40%;
-  left: 15px;
-  width: 40px;
-  height: 40px;
-  margin-top: -20px;
-  font-size: 60px;
-  font-weight: 100;
-  line-height: 30px;
-  color: #ffffff;
-  text-align: center;
-  background: #222222;
-  border: 3px solid #ffffff;
-  -webkit-border-radius: 23px;
-  -moz-border-radius: 23px;
-  border-radius: 23px;
-  opacity: 0.5;
-  filter: alpha(opacity=50);
-}
-.carousel-control.right {
-  left: auto;
-  right: 15px;
-}
-.carousel-control:hover {
-  color: #ffffff;
-  text-decoration: none;
-  opacity: 0.9;
-  filter: alpha(opacity=90);
-}
-.carousel-caption {
-  position: absolute;
-  left: 0;
-  right: 0;
-  bottom: 0;
-  padding: 10px 15px 5px;
-  background: #333333;
-  background: rgba(0, 0, 0, 0.75);
-}
-.carousel-caption h4,
-.carousel-caption p {
-  color: #ffffff;
-}
-.hero-unit {
-  padding: 60px;
-  margin-bottom: 30px;
-  background-color: #f5f5f5;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.hero-unit h1 {
-  margin-bottom: 0;
-  font-size: 60px;
-  line-height: 1;
-  letter-spacing: -1px;
-}
-.hero-unit p {
-  font-size: 18px;
-  font-weight: 200;
-  line-height: 27px;
-}
-.pull-right {
-  float: right;
-}
-.pull-left {
-  float: left;
-}
-.hide {
-  display: none;
-}
-.show {
-  display: block;
-}
-.invisible {
-  visibility: hidden;
-}
-a {
-  color: #000000;
-}
-html,
-body {
-  height: 100%;
-  min-width: 640px;
-}
-html {
-  border-left: 1px solid #c9c9c9;
-  border-right: 1px solid #c9c9c9;
-}
-.title {
-  font-size: 17px;
-}
-.thingy {
-  margin-bottom: 0px !important;
-  padding: 10px 10px 10px 0!important;
-  border-radius: 0px;
-  min-width: 440px;
-}
-.thingy .gravatar50 {
-  position: relative;
-  float: left;
-  margin-top: -15px;
-  right: 5px;
-}
-.thingy .app_title {
-  padding-right: 20px;
-}
-.thingy .bar a {
-  float: right;
-}
-.thingy .button {
-  margin-top: -5px;
-  min-width: 150px;
-}
-.thingy .btn-primary {
-  color: #ffffff;
-}
-.monospace {
-  font-family: monospace !important;
-}
-#selectedApp {
-  font-size: 16px;
-  cursor: pointer;
-  overflow: hidden;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-}
-#fullContainer {
-  position: relative;
-  /* needed for footer positioning*/
-
-  height: auto !important;
-  /* real browsers */
-
-  min-height: 100%;
-  /* real browsers */
-
-  height: 100%;
-  /* IE6: treaded as min-height*/
-
-  min-width: 640px;
-  max-width: 1280px;
-}
-.header-menus {
-  margin: 0 auto;
-}
-#pages {
-  padding: 0;
-}
-#pages > div {
-  display: none;
-}
-#pages .alert-error {
-  display: none;
-}
-#right a {
-  color: #1b97d1;
-  font-weight: 400;
-}
-#right a:visited {
-  color: #1b97d1;
-  font-weight: 400;
-}
-#copyright {
-  padding: 5px;
-}
-a {
-  cursor: pointer;
-}
-a:link {
-  color: #111;
-  text-decoration: none;
-}
-a:visited {
-  color: #000;
-  text-decoration: none;
-}
-a:hover {
-  color: #ff4300;
-  text-decoration: none;
-}
-a:active {
-  color: #000;
-  text-decoration: none;
-}
-.clear {
-  clear: both;
-}
-.marginless {
-  margin: 0 !important;
-}
-.navbar.navbar-fixed-top:before {
-  content: " ";
-  display: block;
-  background: #F93F00;
-  overflow: hidden;
-  width: 100%;
-  height: 8px;
-  margin-bottom: -8px;
-  position: absolute;
-  background-image: -moz-linear-gradient(top, #ff4300, #f03800);
-  background-image: -ms-linear-gradient(top, #ff4300, #f03800);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ff4300), to(#f03800));
-  background-image: -webkit-linear-gradient(top, #ff4300, #f03800);
-  background-repeat: repeat-x;
-  bottom: 8px;
-  left: 0px;
-}
-.navbar {
-  height: 48px;
-  min-width: 660px;
-  background-color: #ff4300;
-  margin: 0px 1px 20px 1px;
-}
-.navbar .navbar-inner {
-  display: none;
-}
-.navbar .navbar-inner b.caret {
-  position: relative;
-  display: inline-block;
-  float: left;
-  top: 48px;
-  left: -83px;
-  border-top: 8px solid #f03800;
-  border-left: 8px solid transparent;
-  border-right: 8px solid transparent;
-  opacity: 1;
-}
-.navbar h1,
-.navbar h2 {
-  display: inline;
-  float: left;
-  color: #ffffff;
-  font-weight: normal;
-}
-.navbar h1 {
-  height: 32px;
-  width: 64px;
-  overflow: hidden;
-  position: relative;
-  color: transparent !important;
-  margin: 0 15px;
-  padding-top: 8px;
-}
-.navbar h2 {
-  font-size: 13px;
-  padding: 5px;
-  line-height: 35px;
-  padding-top: 8px;
-  color: #ffffff;
-}
-.navbar h2 a {
-  color: #ffffff;
-}
-.navbar .secondary-nav {
-  float: right;
-}
-.navbar .nav li a {
-  text-shadow: 0 0px 0 white;
-  padding: 13px 10px 11px;
-  font-weight: normal;
-  color: #ffffff;
-  line-height: 24px;
-}
-.navbar .nav li #console-link:hover {
-  background-color: transparent;
-}
-.navbar .nav .dropdown-toggle span {
-  margin-left: 5px;
-}
-.navbar .nav .dropdown-toggle .caret {
-  margin-top: 13px;
-}
-.navbar .nav .dropdown-menu a {
-  line-height: 18px;
-  color: #000000;
-  padding: 3px 15px;
-}
-.navbar .nav .dropdown-menu a:hover {
-  color: #ffffff;
-  background-color: #1b97d1;
-}
-.navbar .nav .active {
-  background-color: #b22714 !important;
-}
-.navbar .nav .active .go-home {
-  background-color: transparent;
-}
-.navbar .nav .active .go-home:hover {
-  background-color: transparent;
-}
-.navbar .nav .active > a {
-  color: #ffffff;
-}
-.navbar .nav .active > a .caret {
-  opacity: 0.7;
-}
-.main-nav {
-  margin: 0px;
-

<TRUNCATED>

[02/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angular/bower.json
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angular/bower.json b/deleted/dist-cov/usergrid-portal/bower_components/angular/bower.json
deleted file mode 100644
index 877c8cc..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angular/bower.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "name": "angular",
-  "version": "1.3.0-build.2607+sha.b2e48e6",
-  "main": "./angular.js",
-  "dependencies": {
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/Gruntfile.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/Gruntfile.js b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/Gruntfile.js
deleted file mode 100644
index 1337d97..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/Gruntfile.js
+++ /dev/null
@@ -1,62 +0,0 @@
-module.exports = function(grunt) {
-   'use strict';
-
-   grunt.initConfig({
-      pkg: grunt.file.readJSON('package.json'),
-
-      karma: {
-         unit: {
-            configFile: 'karma.conf.js',
-            singleRun: true
-         }
-      },
-
-      jshint: {
-         all: ['Gruntfile.js', 'src/*.js', 'test/**/*.js']
-      },
-
-      concat: {
-         options: {
-            stripBanners: false
-         },
-         dist: {
-            src: ['dist/angulartics-scroll.min.js', 'components/jquery-waypoints/waypoints.min.js'],
-            dest: 'dist/angulartics-scroll.min.js'
-         }
-      },
-
-      uglify: {
-         options: {
-            preserveComments: 'some',
-            report: 'min'
-         },
-         predist: {
-            files: {
-               'dist/angulartics-scroll.min.js': ['src/angulartics-scroll.js']
-            }
-         },
-         dist: {
-            files: {
-               'dist/angulartics.min.js': ['src/angulartics.js'],
-               'dist/angulartics-chartbeat.min.js': ['src/angulartics-chartbeat.js'],
-               'dist/angulartics-ga.min.js': ['src/angulartics-ga.js'],
-               'dist/angulartics-ga-cordova.min.js': ['src/angulartics-ga-cordova.js'],
-               'dist/angulartics-kissmetrics.min.js': ['src/angulartics-kissmetrics.js'],
-               'dist/angulartics-mixpanel.min.js': ['src/angulartics-mixpanel.js'],
-               'dist/angulartics-segmentio.min.js': ['src/angulartics-segmentio.js']
-            }
-         }
-      },
-
-      clean: ['dist']
-   });
-
-   grunt.loadNpmTasks('grunt-contrib-jshint');
-   grunt.loadNpmTasks('grunt-karma');
-   grunt.loadNpmTasks('grunt-contrib-concat');
-   grunt.loadNpmTasks('grunt-contrib-uglify');
-   grunt.loadNpmTasks('grunt-contrib-clean');
-
-   grunt.registerTask('test', ['jshint', 'karma']);
-   grunt.registerTask('default', ['jshint', 'karma', 'uglify:predist', 'concat:dist', 'uglify:dist']);
-};

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/LICENSE
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/LICENSE b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/LICENSE
deleted file mode 100644
index 84a7dd5..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 2013 Luis Farzati
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/README.md
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/README.md b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/README.md
deleted file mode 100644
index bd775b2..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/README.md
+++ /dev/null
@@ -1,115 +0,0 @@
-angulartics
-===========
-
-Vendor-agnostic analytics for AngularJS applications. [luisfarzati.github.io/angulartics](http://luisfarzati.github.io/angulartics "Go to the website")
-
-# Minimal setup
-
-## for Google Analytics ##
-
-    angular.module('myApp', ['angulartics', 'angulartics.google.analytics'])
-
-Delete the automatic pageview tracking line in the snippet code provided by Google Analytics:
-
-      ...
-      ga('create', '{YOUR GA CODE}', '{YOUR DOMAIN}');
-      ga('send', 'pageview'); // <-- DELETE THIS LINE!
-    </script>
-    
-Done. Open your app, browse across the different routes and check [the realtime GA dashboard](http://google.com/analytics/web) to see the hits. 
-
-## for other providers
-
-[Browse the website for detailed instructions.](http://luisfarzati.github.io/angulartics)
-
-## Supported providers
-
-* Google Analytics
-* Kissmetrics
-* Mixpanel
-* Chartbeat
-* Segment.io
-
-If there's no Angulartics plugin for your analytics vendor of choice, please feel free to write yours and PR' it! Here's how to do it.
-
-## Creating your own vendor plugin ##
-
-It's very easy to write your own plugin. First, create your module and inject `$analyticsProvider`:
-
-	angular.module('angulartics.myplugin', ['angulartics'])
-	  .config(['$analyticsProvider', function ($analyticsProvider) {
-
-The module name can be anything of course, but it would be convenient to follow the style `angulartics.{vendorname}`.
-
-Next, you register either the page track function, event track function, or both. You do it by calling the `registerPageTrack` and `registerEventTrack` methods. Let's take a look at page tracking first:
-
-    $analyticsProvider.registerPageTrack(function (path) {
-		// your implementation here
-	}
-
-By calling `registerPageTrack`, you tell Angulartics to invoke your function on `$routeChangeSuccess`. Angulartics will send the new path as an argument.
-
-    $analyticsProvider.registerEventTrack(function (action, properties) {
-		// your implementation here
-
-This is very similar to page tracking. Angulartics will invoke your function every time the event (`analytics-on` attribute) is fired, passing the action (`analytics-event` attribute) and an object composed of any `analytics-*` attributes you put in the element.
-
-Check out the bundled plugins as reference. If you still have any questions, feel free to email me or post an issue at GitHub!
-
-# Playing around
-
-## Disabling virtual pageview tracking
-
-If you want to keep pageview tracking for its traditional meaning (whole page visits only), set virtualPageviews to false:
-
-	module.config(function ($analyticsProvider) {
-		$analyticsProvider.virtualPageviews(false);     
-
-## Programmatic tracking
-
-Use the `$analytics` service to emit pageview and event tracking:
-
-	module.controller('SampleCtrl', function($analytics) {
-		// emit pageview beacon with path /my/url
-	    $analytics.pageTrack('/my/url');
-
-		// emit event track (without properties)
-	    $analytics.eventTrack('eventName');
-
-		// emit event track (with category and label properties for GA)
-	    $analytics.eventTrack('eventName', { 
-	      category: 'category', label: 'label'
-        }); 
-
-## Declarative tracking
-
-Use `analytics-on` and `analytics-event` attributes for enabling event tracking on a specific HTML element:
-
-	<a href="file.pdf" 
-		analytics-on="click" 
-		analytics-event="Download">Download</a>
-
-`analytics-on` lets you specify the DOM event that triggers the event tracking; `analytics-event` is the event name to be sent. 
-
-Additional properties (for example, category as required by GA) may be specified by adding `analytics-*` attributes:
-
-	<a href="file.pdf" 
-		analytics-on="click" 
-		analytics-event="Download"
-		analytics-category="Content Actions">Download</a>
-
-# What else?
-
-See full docs and more samples at [http://luisfarzati.github.io/angulartics](http://luisfarzati.github.io/angulartics "http://luisfarzati.github.io/angulartics").
-
-# License
-
-Angulartics is freely distributable under the terms of the MIT license.
-
-Copyright (c) 2013 Luis Farzati
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/bower.json
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/bower.json b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/bower.json
deleted file mode 100644
index 5dad647..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/bower.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "name": "angulartics",
-  "version": "0.8.7",
-  "main": "./src/angulartics.js",
-  "dependencies": {
-    "angular": ">= 1.0.7",
-    "jquery-waypoints": "~v2.0.3"
-  },
-  "devDependencies": {
-    "angular-mocks": ">= 1.0.7"
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-chartbeat.min.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-chartbeat.min.js b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-chartbeat.min.js
deleted file mode 100644
index b5c35a5..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-chartbeat.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * @license Angulartics v0.8.5
- * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
- * Contributed by http://github.com/chechoacosta
- * License: MIT
- */
-!function(a){"use strict";a.module("angulartics.chartbeat",["angulartics"]).config(["$analyticsProvider",function(a){angulartics.waitForVendorApi("pSUPERFLY",500,function(b){a.registerPageTrack(function(a){b.virtualPage(a)})}),a.registerEventTrack(function(){console.warn("Chartbeat doesn't support event tracking -- silently ignored.")})}])}(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-ga-cordova.min.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-ga-cordova.min.js b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-ga-cordova.min.js
deleted file mode 100644
index 7892f86..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-ga-cordova.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * @license Angulartics v0.8.5
- * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
- * License: MIT
- */
-!function(a){"use strict";a.module("angulartics.google.analytics.cordova",["angulartics"]).provider("googleAnalyticsCordova",function(){var b=["$q","$log","ready","debug","trackingId","period",function(a,b,c,d,e,f){function g(){d&&b.info(arguments)}function h(a){d&&b.error(a)}var i=a.defer(),j=!1;window.addEventListener("deviceReady",function(){j=!0,i.resolve()}),setTimeout(function(){j||i.resolve()},3e3),this.init=function(){return i.promise.then(function(){var a=window.plugins&&window.plugins.gaPlugin;a?a.init(function(){c(a,g,h)},h,e,f||10):d&&b.error("Google Analytics for Cordova is not available")})}}];return{$get:["$injector",function(c){return c.instantiate(b,{ready:this._ready||a.noop,debug:this.debug,trackingId:this.trackingId,period:this.period})}],ready:function(a){this._ready=a}}}).config(["$analyticsProvider","googleAnalyticsCordovaProvider",function(a,b){b.ready(function(b,c,d){a.registerPageTrack(function(a){b.trackPage(c,d,a)}),a.registerEventTrack(function(a,e){b.tr
 ackEvent(c,d,e.category,a,e.label,e.value)})})}]).run(["googleAnalyticsCordova",function(a){a.init()}])}(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-ga.min.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-ga.min.js b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-ga.min.js
deleted file mode 100644
index 4fae153..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-ga.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * @license Angulartics v0.8.5
- * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
- * Universal Analytics update contributed by http://github.com/willmcclellan
- * License: MIT
- */
-!function(a){"use strict";a.module("angulartics.google.analytics",["angulartics"]).config(["$analyticsProvider",function(a){a.registerPageTrack(function(a){window._gaq&&_gaq.push(["_trackPageview",a]),window.ga&&ga("send","pageview",a)}),a.registerEventTrack(function(a,b){window._gaq&&_gaq.push(["_trackEvent",b.category,a,b.label,b.value]),window.ga&&ga("send","event",b.category,a,b.label,b.value)})}])}(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-google-analytics.min.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-google-analytics.min.js b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-google-analytics.min.js
deleted file mode 100644
index 4fae153..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-google-analytics.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * @license Angulartics v0.8.5
- * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
- * Universal Analytics update contributed by http://github.com/willmcclellan
- * License: MIT
- */
-!function(a){"use strict";a.module("angulartics.google.analytics",["angulartics"]).config(["$analyticsProvider",function(a){a.registerPageTrack(function(a){window._gaq&&_gaq.push(["_trackPageview",a]),window.ga&&ga("send","pageview",a)}),a.registerEventTrack(function(a,b){window._gaq&&_gaq.push(["_trackEvent",b.category,a,b.label,b.value]),window.ga&&ga("send","event",b.category,a,b.label,b.value)})}])}(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-kissmetrics.min.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-kissmetrics.min.js b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-kissmetrics.min.js
deleted file mode 100644
index 2973de3..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-kissmetrics.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * @license Angulartics v0.8.5
- * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
- * License: MIT
- */
-!function(a){"use strict";a.module("angulartics.kissmetrics",["angulartics"]).config(["$analyticsProvider",function(a){a.registerPageTrack(function(a){_kmq.push(["record","Pageview",{Page:a}])}),a.registerEventTrack(function(a,b){_kmq.push(["record",a,b])})}])}(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-mixpanel.min.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-mixpanel.min.js b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-mixpanel.min.js
deleted file mode 100644
index e2b3d97..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-mixpanel.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * @license Angulartics v0.8.5
- * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
- * Contributed by http://github.com/L42y
- * License: MIT
- */
-!function(a){"use strict";a.module("angulartics.mixpanel",["angulartics"]).config(["$analyticsProvider",function(a){a.registerPageTrack(function(a){mixpanel.track_pageview(a)}),a.registerEventTrack(function(a,b){mixpanel.track(a,b)})}])}(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-scroll.min.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-scroll.min.js b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-scroll.min.js
deleted file mode 100644
index 0df3655..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-scroll.min.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * @license Angulartics v0.8.5
- * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
- * License: MIT
- */
-!function(a){"use strict";a.module("angulartics.scroll",["angulartics"]).directive("analyticsOn",["$analytics",function(){function b(a){return"scrollby"===a.substr(0,8)}function c(a){return["","true","false"].indexOf(a)>-1?"true"===a.replace("","true"):a}return{restrict:"A",priority:5,scope:!1,link:function(d,e,f){if("scrollby"===f.analyticsOn){var g={continuous:!1,triggerOnce:!0};a.forEach(f.$attr,function(a,d){b(a)&&(g[d.slice(8,9).toLowerCase()+d.slice(9)]=c(f[d]))}),$(e[0]).waypoint(function(){this.dispatchEvent(new Event("scrollby"))},g)}}}}])}(angular);
-// Generated by CoffeeScript 1.6.2
-/*
-jQuery Waypoints - v2.0.3
-Copyright (c) 2011-2013 Caleb Troughton
-Dual licensed under the MIT license and GPL license.
-https://github.com/imakewebthings/jquery-waypoints/blob/master/licenses.txt
-*/
-(function(){var t=[].indexOf||function(t){for(var e=0,n=this.length;e<n;e++){if(e in this&&this[e]===t)return e}return-1},e=[].slice;(function(t,e){if(typeof define==="function"&&define.amd){return define("waypoints",["jquery"],function(n){return e(n,t)})}else{return e(t.jQuery,t)}})(this,function(n,r){var i,o,l,s,f,u,a,c,h,d,p,y,v,w,g,m;i=n(r);c=t.call(r,"ontouchstart")>=0;s={horizontal:{},vertical:{}};f=1;a={};u="waypoints-context-id";p="resize.waypoints";y="scroll.waypoints";v=1;w="waypoints-waypoint-ids";g="waypoint";m="waypoints";o=function(){function t(t){var e=this;this.$element=t;this.element=t[0];this.didResize=false;this.didScroll=false;this.id="context"+f++;this.oldScroll={x:t.scrollLeft(),y:t.scrollTop()};this.waypoints={horizontal:{},vertical:{}};t.data(u,this.id);a[this.id]=this;t.bind(y,function(){var t;if(!(e.didScroll||c)){e.didScroll=true;t=function(){e.doScroll();return e.didScroll=false};return r.setTimeout(t,n[m].settings.scrollThrottle)}});t.bind(p,function(){v
 ar t;if(!e.didResize){e.didResize=true;t=function(){n[m]("refresh");return e.didResize=false};return r.setTimeout(t,n[m].settings.resizeThrottle)}})}t.prototype.doScroll=function(){var t,e=this;t={horizontal:{newScroll:this.$element.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.$element.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};if(c&&(!t.vertical.oldScroll||!t.vertical.newScroll)){n[m]("refresh")}n.each(t,function(t,r){var i,o,l;l=[];o=r.newScroll>r.oldScroll;i=o?r.forward:r.backward;n.each(e.waypoints[t],function(t,e){var n,i;if(r.oldScroll<(n=e.offset)&&n<=r.newScroll){return l.push(e)}else if(r.newScroll<(i=e.offset)&&i<=r.oldScroll){return l.push(e)}});l.sort(function(t,e){return t.offset-e.offset});if(!o){l.reverse()}return n.each(l,function(t,e){if(e.options.continuous||t===l.length-1){return e.trigger([i])}})});return this.oldScroll={x:t.horizontal.newScroll,y:t.vertical.newScroll}};t.prototype.re
 fresh=function(){var t,e,r,i=this;r=n.isWindow(this.element);e=this.$element.offset();this.doScroll();t={horizontal:{contextOffset:r?0:e.left,contextScroll:r?0:this.oldScroll.x,contextDimension:this.$element.width(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:r?0:e.top,contextScroll:r?0:this.oldScroll.y,contextDimension:r?n[m]("viewportHeight"):this.$element.height(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};return n.each(t,function(t,e){return n.each(i.waypoints[t],function(t,r){var i,o,l,s,f;i=r.options.offset;l=r.offset;o=n.isWindow(r.element)?0:r.$element.offset()[e.offsetProp];if(n.isFunction(i)){i=i.apply(r.element)}else if(typeof i==="string"){i=parseFloat(i);if(r.options.offset.indexOf("%")>-1){i=Math.ceil(e.contextDimension*i/100)}}r.offset=o-e.contextOffset+e.contextScroll-i;if(r.options.onlyOnScroll&&l!=null||!r.enabled){return}if(l!==null&&l<(s=e.oldScroll)&&s<=r.offset){return r.t
 rigger([e.backward])}else if(l!==null&&l>(f=e.oldScroll)&&f>=r.offset){return r.trigger([e.forward])}else if(l===null&&e.oldScroll>=r.offset){return r.trigger([e.forward])}})})};t.prototype.checkEmpty=function(){if(n.isEmptyObject(this.waypoints.horizontal)&&n.isEmptyObject(this.waypoints.vertical)){this.$element.unbind([p,y].join(" "));return delete a[this.id]}};return t}();l=function(){function t(t,e,r){var i,o;r=n.extend({},n.fn[g].defaults,r);if(r.offset==="bottom-in-view"){r.offset=function(){var t;t=n[m]("viewportHeight");if(!n.isWindow(e.element)){t=e.$element.height()}return t-n(this).outerHeight()}}this.$element=t;this.element=t[0];this.axis=r.horizontal?"horizontal":"vertical";this.callback=r.handler;this.context=e;this.enabled=r.enabled;this.id="waypoints"+v++;this.offset=null;this.options=r;e.waypoints[this.axis][this.id]=this;s[this.axis][this.id]=this;i=(o=t.data(w))!=null?o:[];i.push(this.id);t.data(w,i)}t.prototype.trigger=function(t){if(!this.enabled){return}if(this
 .callback!=null){this.callback.apply(this.element,t)}if(this.options.triggerOnce){return this.destroy()}};t.prototype.disable=function(){return this.enabled=false};t.prototype.enable=function(){this.context.refresh();return this.enabled=true};t.prototype.destroy=function(){delete s[this.axis][this.id];delete this.context.waypoints[this.axis][this.id];return this.context.checkEmpty()};t.getWaypointsByElement=function(t){var e,r;r=n(t).data(w);if(!r){return[]}e=n.extend({},s.horizontal,s.vertical);return n.map(r,function(t){return e[t]})};return t}();d={init:function(t,e){var r;if(e==null){e={}}if((r=e.handler)==null){e.handler=t}this.each(function(){var t,r,i,s;t=n(this);i=(s=e.context)!=null?s:n.fn[g].defaults.context;if(!n.isWindow(i)){i=t.closest(i)}i=n(i);r=a[i.data(u)];if(!r){r=new o(i)}return new l(t,r,e)});n[m]("refresh");return this},disable:function(){return d._invoke(this,"disable")},enable:function(){return d._invoke(this,"enable")},destroy:function(){return d._invoke(this
 ,"destroy")},prev:function(t,e){return d._traverse.call(this,t,e,function(t,e,n){if(e>0){return t.push(n[e-1])}})},next:function(t,e){return d._traverse.call(this,t,e,function(t,e,n){if(e<n.length-1){return t.push(n[e+1])}})},_traverse:function(t,e,i){var o,l;if(t==null){t="vertical"}if(e==null){e=r}l=h.aggregate(e);o=[];this.each(function(){var e;e=n.inArray(this,l[t]);return i(o,e,l[t])});return this.pushStack(o)},_invoke:function(t,e){t.each(function(){var t;t=l.getWaypointsByElement(this);return n.each(t,function(t,n){n[e]();return true})});return this}};n.fn[g]=function(){var t,r;r=arguments[0],t=2<=arguments.length?e.call(arguments,1):[];if(d[r]){return d[r].apply(this,t)}else if(n.isFunction(r)){return d.init.apply(this,arguments)}else if(n.isPlainObject(r)){return d.init.apply(this,[null,r])}else if(!r){return n.error("jQuery Waypoints needs a callback function or handler option.")}else{return n.error("The "+r+" method does not exist in jQuery Waypoints.")}};n.fn[g].defaults
 ={context:r,continuous:true,enabled:true,horizontal:false,offset:0,triggerOnce:false};h={refresh:function(){return n.each(a,function(t,e){return e.refresh()})},viewportHeight:function(){var t;return(t=r.innerHeight)!=null?t:i.height()},aggregate:function(t){var e,r,i;e=s;if(t){e=(i=a[n(t).data(u)])!=null?i.waypoints:void 0}if(!e){return[]}r={horizontal:[],vertical:[]};n.each(r,function(t,i){n.each(e[t],function(t,e){return i.push(e)});i.sort(function(t,e){return t.offset-e.offset});r[t]=n.map(i,function(t){return t.element});return r[t]=n.unique(r[t])});return r},above:function(t){if(t==null){t=r}return h._filter(t,"vertical",function(t,e){return e.offset<=t.oldScroll.y})},below:function(t){if(t==null){t=r}return h._filter(t,"vertical",function(t,e){return e.offset>t.oldScroll.y})},left:function(t){if(t==null){t=r}return h._filter(t,"horizontal",function(t,e){return e.offset<=t.oldScroll.x})},right:function(t){if(t==null){t=r}return h._filter(t,"horizontal",function(t,e){return e.of
 fset>t.oldScroll.x})},enable:function(){return h._invoke("enable")},disable:function(){return h._invoke("disable")},destroy:function(){return h._invoke("destroy")},extendFn:function(t,e){return d[t]=e},_invoke:function(t){var e;e=n.extend({},s.vertical,s.horizontal);return n.each(e,function(e,n){n[t]();return true})},_filter:function(t,e,r){var i,o;i=a[n(t).data(u)];if(!i){return[]}o=[];n.each(i.waypoints[e],function(t,e){if(r(i,e)){return o.push(e)}});o.sort(function(t,e){return t.offset-e.offset});return n.map(o,function(t){return t.element})}};n[m]=function(){var t,n;n=arguments[0],t=2<=arguments.length?e.call(arguments,1):[];if(h[n]){return h[n].apply(null,t)}else{return h.aggregate.call(null,n)}};n[m].settings={resizeThrottle:100,scrollThrottle:30};return i.load(function(){return n[m]("refresh")})})}).call(this);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-segmentio.min.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-segmentio.min.js b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-segmentio.min.js
deleted file mode 100644
index 7ef6699..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics-segmentio.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * @license Angulartics v0.8.5
- * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
- * License: MIT
- */
-!function(a){"use strict";a.module("angulartics.segment.io",["angulartics"]).config(["$analyticsProvider",function(a){a.registerPageTrack(function(a){analytics.pageview(a)}),a.registerEventTrack(function(a,b){analytics.track(a,b)})}])}(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics.min.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics.min.js b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics.min.js
deleted file mode 100644
index 93eaa0e..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/dist/angulartics.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * @license Angulartics v0.8.5
- * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
- * License: MIT
- */
-!function(a){"use strict";var b=window.angulartics||(window.angulartics={});b.waitForVendorApi=function(a,c,d){window.hasOwnProperty(a)?d(window[a]):setTimeout(function(){b.waitForVendorApi(a,c,d)},c)},a.module("angulartics",[]).provider("$analytics",function(){var b={pageTracking:{autoTrackFirstPage:!0,autoTrackVirtualPages:!0,basePath:"",bufferFlushDelay:1e3},eventTracking:{bufferFlushDelay:1e3}},c={pageviews:[],events:[]},d=function(a){c.pageviews.push(a)},e=function(a,b){c.events.push({name:a,properties:b})},f={settings:b,pageTrack:d,eventTrack:e},g=function(d){f.pageTrack=d,a.forEach(c.pageviews,function(a,c){setTimeout(function(){f.pageTrack(a)},c*b.pageTracking.bufferFlushDelay)})},h=function(d){f.eventTrack=d,a.forEach(c.events,function(a,c){setTimeout(function(){f.eventTrack(a.name,a.properties)},c*b.eventTracking.bufferFlushDelay)})};return{$get:function(){return f},settings:b,virtualPageviews:function(a){this.settings.pageTracking.autoTrackVirtualPages=a},firstPageview:fu
 nction(a){this.settings.pageTracking.autoTrackFirstPage=a},withBase:function(b){this.settings.pageTracking.basePath=b?a.element("base").attr("href"):""},registerPageTrack:g,registerEventTrack:h}}).run(["$rootScope","$location","$analytics",function(a,b,c){c.settings.pageTracking.autoTrackFirstPage&&c.pageTrack(b.absUrl()),c.settings.pageTracking.autoTrackVirtualPages&&a.$on("$routeChangeSuccess",function(a,d){if(!d||!(d.$$route||d).redirectTo){var e=c.settings.pageTracking.basePath+b.url();c.pageTrack(e)}})}]).directive("analyticsOn",["$analytics",function(b){function c(a){return["a:","button:","button:button","button:submit","input:button","input:submit"].indexOf(a.tagName.toLowerCase()+":"+(a.type||""))>=0}function d(a){return c(a)?"click":"click"}function e(a){return c(a)?a.innerText||a.value:a.id||a.name||a.tagName}function f(a){return"analytics"===a.substr(0,9)&&-1===["on","event"].indexOf(a.substr(10))}return{restrict:"A",scope:!1,link:function(c,g,h){var i=h.analyticsOn||d(g[
 0]),j=h.analyticsEvent||e(g[0]),k={};a.forEach(h.$attr,function(a,b){f(a)&&(k[b.slice(9).toLowerCase()]=h[b])}),a.element(g[0]).bind(i,function(){b.eventTrack(j,k)})}}}])}(angular);

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/karma.conf.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/karma.conf.js b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/karma.conf.js
deleted file mode 100644
index 7523b29..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/karma.conf.js
+++ /dev/null
@@ -1,22 +0,0 @@
-module.exports = function(config) {
-  'use strict';
-  
-  config.set({
-
-    basePath: './',
-
-    frameworks: ["jasmine"],
-
-    files: [
-      'components/angular/angular.js',
-      'components/angular-mocks/angular-mocks.js',
-      'src/**/*.js',
-      'test/**/*.js'
-    ],
-
-    autoWatch: true,
-
-    browsers: ['PhantomJS']
-
-  });
-};

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/package.json
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/package.json b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/package.json
deleted file mode 100644
index ce3ef9a..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/package.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
-  "name": "angulartics",
-  "description": "Vendor-agnostic web analytics for AngularJS applications",
-  "version": "0.8.7",
-  "filename": "./src/angulartics.min.js",
-  "homepage": "http://luisfarzati.github.io/angulartics",
-  "author": {
-    "name": "Luis Farzati",
-    "email": "lfarzati@gmail.com",
-    "url": "http://github.com/luisfarzati"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/luisfarzati/angulartics.git"
-  },
-  "keywords": [
-    "angular",
-    "analytics",
-    "tracking",
-    "google analytics",
-    "mixpanel",
-    "kissmetrics",
-    "chartbeat",
-    "segment.io",
-    "page tracking",
-    "event tracking",
-    "scroll tracking"
-  ],
-  "bugs": {
-    "url": "http://github.com/luisfarzati/angulartics/issues"
-  },
-  "dependencies": {
-  },
-  "devDependencies": {
-    "grunt": "latest",
-    "grunt-karma": "latest",
-    "grunt-contrib-jshint": "latest",
-    "grunt-contrib-concat": "latest",
-    "grunt-contrib-uglify": "latest",
-    "grunt-contrib-clean": "latest",
-    "phantomjs": "latest"
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/chartbeat.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/chartbeat.html b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/chartbeat.html
deleted file mode 100644
index 445a65e..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/chartbeat.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-	<meta charset="utf8">
-	<title>Chartbeat sample | Angulartics</title>
-	<link rel="stylesheet" href="//bootswatch.com/cosmo/bootstrap.min.css">
-	<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
-	<script src="../src/angulartics.js"></script>
-	<script src="../src/angulartics-chartbeat.js"></script>
-	<script type="text/javascript">var _sf_startpt=(new Date()).getTime()</script>
-</head>
-<body ng-app="sample">
-
-<div class="navbar navbar-default">
-	<div class="navbar-header">
-		<a class="navbar-brand" href="#/">My App</a>
-	</div>
-	<div>
-		<ul class="nav navbar-nav">
-			<li><a href="#/a">Page A</a></li>
-			<li><a href="#/b">Page B</a></li>
-			<li><a href="#/c">Page C</a></li>
-		</ul>
-	</div>
-</div>
-
-<div class="container">
-	<div ng-view></div>
-	<hr>
-
-	<button disabled analytics-on="click" analytics-event="Button 1" analytics-category="Commands" class="btn btn-default">Button 1</button>
-
-	<!-- same as analytics-on="click", because 'click' is the default -->
-	<button disabled analytics-on analytics-event="Button 2" analytics-category="Commands" class="btn btn-primary">Button 2</button>
-
-	<!-- same as analytics-event="Button 3", because is inferred from innerText -->
-	<button disabled analytics-on analytics-category="Commands" class="btn btn-success">Button 3</button>
-
-	<button disabled analytics-on analytics-label="Button4 label" analytics-value="1" class="btn btn-info">Button 4</button>
-
-	<span>(Chartbeat doesn't support Event Tracking)</span>
-	<hr>
-
-	<p class="alert alert-success">
-		Open the network inspector in your browser, click any of the nav options or buttons above and you'll see the analytics
-		request being executed. Then check <a class="alert-link" href="http://chartbeat.com/dashboard">your Chartbeat dashboard</a>.
-	</p>
-</div>
-
-<script>
-	angular.module('sample', ['angulartics', 'angulartics.chartbeat'])
-	.config(function ($routeProvider, $analyticsProvider) {
-		$routeProvider
-			.when('/', { templateUrl: '/samples/partials/root.tpl.html', controller: 'SampleCtrl' })
-	  	.when('/a', { templateUrl: '/samples/partials/a.tpl.html', controller: 'SampleCtrl' })
-		  .when('/b', { templateUrl: '/samples/partials/b.tpl.html', controller: 'SampleCtrl' })
-		  .when('/c', { templateUrl: '/samples/partials/c.tpl.html', controller: 'SampleCtrl' })
-		  .otherwise({ redirectTo: '/' });
-	})
-	.controller('SampleCtrl', function () {});
-</script>
-<script type="text/javascript">
-  var _sf_async_config = { uid: 48378, domain: 'angulartics.herokuapp.com', useCanonical: true };
-  (function() {
-    function loadChartbeat() {
-      window._sf_endpt = (new Date()).getTime();
-      var e = document.createElement('script');
-      e.setAttribute('language', 'javascript');
-      e.setAttribute('type', 'text/javascript');
-      e.setAttribute('src','//static.chartbeat.com/js/chartbeat.js');
-      document.body.appendChild(e);
-    };
-    var oldonload = window.onload;
-    window.onload = (typeof window.onload != 'function') ?
-      loadChartbeat : function() { oldonload(); loadChartbeat(); };
-  })();
-</script>
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/google-analytics.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/google-analytics.html b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/google-analytics.html
deleted file mode 100644
index 470b100..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/google-analytics.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-	<meta charset="utf8">
-	<title>Google Analytics sample | Angulartics</title>
-	<link rel="stylesheet" href="//bootswatch.com/cosmo/bootstrap.min.css">
-	<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
-	<script src="../src/angulartics.js"></script>
-	<script src="../src/angulartics-ga.js"></script>
-	<script>
-	  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-	  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-	  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-	  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  	ga('create', 'UA-10255892-9', { 'cookieDomain': 'none' });
-	</script>
-
-</head>
-<body ng-app="sample">
-
-<div class="navbar navbar-default">
-	<div class="navbar-header">
-		<a class="navbar-brand" href="#/">My App</a>
-	</div>
-	<div>
-		<ul class="nav navbar-nav">
-			<li><a href="#/a">Page A</a></li>
-			<li><a href="#/b">Page B</a></li>
-			<li><a href="#/c">Page C</a></li>
-		</ul>
-	</div>
-</div>
-
-<div class="container">
-	<div ng-view></div>
-	<hr>
-
-	<button analytics-on="click" analytics-event="Button 1" analytics-category="Commands" class="btn btn-default">Button 1</button>
-
-	<!-- same as analytics-on="click", because 'click' is the default -->
-	<button analytics-on analytics-event="Button 2" analytics-category="Commands" class="btn btn-primary">Button 2</button>
-
-	<!-- same as analytics-event="Button 3", because is inferred from innerText -->
-	<button analytics-on analytics-category="Commands" class="btn btn-success">Button 3</button>
-
-	<button analytics-on analytics-label="Button4 label" analytics-value="1" class="btn btn-info">Button 4</button>
-	<hr>
-
-	<p class="alert alert-success">
-		Open the network inspector in your browser, click any of the nav options or buttons above and you'll see the analytics
-		request being executed. Then check <a class="alert-link" href="http://www.google.com/analytics/web/">your Google Analytics dashboard</a>.
-	</p>
-</div>
-
-<script>
-	angular.module('sample', ['angulartics', 'angulartics.google.analytics'])
-	.config(function ($routeProvider, $analyticsProvider) {
-		$routeProvider
-			.when('/', { templateUrl: '/samples/partials/root.tpl.html', controller: 'SampleCtrl' })
-	  	.when('/a', { templateUrl: '/samples/partials/a.tpl.html', controller: 'SampleCtrl' })
-		  .when('/b', { templateUrl: '/samples/partials/b.tpl.html', controller: 'SampleCtrl' })
-		  .when('/c', { templateUrl: '/samples/partials/c.tpl.html', controller: 'SampleCtrl' })
-		  .otherwise({ redirectTo: '/' });
-	})
-	.controller('SampleCtrl', function () {});
-</script>
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/kissmetrics.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/kissmetrics.html b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/kissmetrics.html
deleted file mode 100644
index 2365d5d..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/kissmetrics.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-	<meta charset="utf8">
-	<title>Kissmetrics sample | Angulartics</title>
-	<link rel="stylesheet" href="//bootswatch.com/cosmo/bootstrap.min.css">
-
-	<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
-	<script src="../src/angulartics.js"></script>
-	<script src="../src/angulartics-kissmetrics.js"></script>
-	<script type="text/javascript">
-		var _kmq = _kmq || [];
-		var _kmk = _kmk || 'a41242214c6f8c693b4c8a59fa8f981e13549deb';
-		function _kms(u){
-		setTimeout(function(){
-		  var d = document, f = d.getElementsByTagName('script')[0],
-		  s = d.createElement('script');
-		  s.type = 'text/javascript'; s.async = true; s.src = u;
-		  f.parentNode.insertBefore(s, f);
-		}, 1);
-		}
-		_kms('//i.kissmetrics.com/i.js');
-		_kms('//doug1izaerwt3.cloudfront.net/' + _kmk + '.1.js');		
-	</script>
-</head>
-<body ng-app="sample">
-
-<div class="navbar navbar-default">
-	<div class="navbar-header">
-		<a class="navbar-brand" href="#/">My App</a>
-	</div>
-	<div>
-		<ul class="nav navbar-nav">
-			<li><a href="#/a">Page A</a></li>
-			<li><a href="#/b">Page B</a></li>
-			<li><a href="#/c">Page C</a></li>
-		</ul>
-	</div>
-</div>
-
-<div class="container">
-	<div ng-view></div>
-	<hr>
-
-	<button analytics-on="click" analytics-event="Button 1" analytics-category="Commands" class="btn btn-default">Button 1</button>
-
-	<!-- same as analytics-on="click", because 'click' is the default -->
-	<button analytics-on analytics-event="Button 2" analytics-category="Commands" class="btn btn-primary">Button 2</button>
-
-	<!-- same as analytics-event="Button 3", because is inferred from innerText -->
-	<button analytics-on analytics-category="Commands" class="btn btn-success">Button 3</button>
-
-	<button analytics-on analytics-label="Button4 label" analytics-value="1" class="btn btn-info">Button 4</button>
-	<hr>
-
-	<p class="alert alert-success">
-		Open the network inspector in your browser, click any of the nav options or buttons above and you'll see the analytics
-		request being executed. Then check <a class="alert-link" href="http://kissmetrics.com">your Kissmetrics dashboard</a>.
-	</p>
-</div>
-
-<script>
-	angular.module('sample', ['angulartics', 'angulartics.kissmetrics'])
-	.config(function ($routeProvider, $analyticsProvider) {
-		$routeProvider
-			.when('/', { templateUrl: '/samples/partials/root.tpl.html', controller: 'SampleCtrl' })
-	  	.when('/a', { templateUrl: '/samples/partials/a.tpl.html', controller: 'SampleCtrl' })
-		  .when('/b', { templateUrl: '/samples/partials/b.tpl.html', controller: 'SampleCtrl' })
-		  .when('/c', { templateUrl: '/samples/partials/c.tpl.html', controller: 'SampleCtrl' })
-		  .otherwise({ redirectTo: '/' });
-	})
-	.controller('SampleCtrl', function () {});
-</script>
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/mixpanel.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/mixpanel.html b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/mixpanel.html
deleted file mode 100644
index b22c94d..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/mixpanel.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-	<meta charset="utf8">
-	<title>Mixpanel sample | Angulartics</title>
-	<link rel="stylesheet" href="//bootswatch.com/cosmo/bootstrap.min.css">
-
-	<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
-	<script src="../src/angulartics.js"></script>
-	<script src="../src/angulartics-mixpanel.js"></script>
-<!-- start Mixpanel --><script type="text/javascript">(function(e,b){if(!b.__SV){var a,f,i,g;window.mixpanel=b;a=e.createElement("script");a.type="text/javascript";a.async=!0;a.src=("https:"===e.location.protocol?"https:":"http:")+'//cdn.mxpnl.com/libs/mixpanel-2.2.min.js';f=e.getElementsByTagName("script")[0];f.parentNode.insertBefore(a,f);b._i=[];b.init=function(a,e,d){function f(b,h){var a=h.split(".");2==a.length&&(b=b[a[0]],h=a[1]);b[h]=function(){b.push([h].concat(Array.prototype.slice.call(arguments,0)))}}var c=b;"undefined"!==
-typeof d?c=b[d]=[]:d="mixpanel";c.people=c.people||[];c.toString=function(b){var a="mixpanel";"mixpanel"!==d&&(a+="."+d);b||(a+=" (stub)");return a};c.people.toString=function(){return c.toString(1)+".people (stub)"};i="disable track track_pageview track_links track_forms register register_once alias unregister identify name_tag set_config people.set people.set_once people.increment people.append people.track_charge people.clear_charges people.delete_user".split(" ");for(g=0;g<i.length;g++)f(c,i[g]);
-b._i.push([a,e,d])};b.__SV=1.2}})(document,window.mixpanel||[]);
-mixpanel.init("82846d4a839f20a2a616b30ca30b6298", { track_pageview: false });</script><!-- end Mixpanel -->
-</head>
-<body ng-app="sample">
-
-<div class="navbar navbar-default">
-	<div class="navbar-header">
-		<a class="navbar-brand" href="#/">My App</a>
-	</div>
-	<div>
-		<ul class="nav navbar-nav">
-			<li><a href="#/a">Page A</a></li>
-			<li><a href="#/b">Page B</a></li>
-			<li><a href="#/c">Page C</a></li>
-		</ul>
-	</div>
-</div>
-
-<div class="container">
-	<div ng-view></div>
-	<hr>
-
-	<button analytics-on="click" analytics-event="Button 1" analytics-category="Commands" class="btn btn-default">Button 1</button>
-
-	<!-- same as analytics-on="click", because 'click' is the default -->
-	<button analytics-on analytics-event="Button 2" analytics-category="Commands" class="btn btn-primary">Button 2</button>
-
-	<!-- same as analytics-event="Button 3", because is inferred from innerText -->
-	<button analytics-on analytics-category="Commands" class="btn btn-success">Button 3</button>
-
-	<button analytics-on analytics-label="Button4 label" analytics-value="1" class="btn btn-info">Button 4</button>
-	<hr>
-
-	<p class="alert alert-success">
-		Open the network inspector in your browser, click any of the nav options or buttons above and you'll see the analytics
-		request being executed. Then check <a class="alert-link" href="http://mixpanel.com/report">your Mixpanel dashboard</a>.
-	</p>
-</div>
-
-<script>
-	angular.module('sample', ['angulartics', 'angulartics.mixpanel'])
-	.config(function ($routeProvider, $analyticsProvider) {
-		$routeProvider
-			.when('/', { templateUrl: '/samples/partials/root.tpl.html', controller: 'SampleCtrl' })
-	  	.when('/a', { templateUrl: '/samples/partials/a.tpl.html', controller: 'SampleCtrl' })
-		  .when('/b', { templateUrl: '/samples/partials/b.tpl.html', controller: 'SampleCtrl' })
-		  .when('/c', { templateUrl: '/samples/partials/c.tpl.html', controller: 'SampleCtrl' })
-		  .otherwise({ redirectTo: '/' });
-	})
-	.controller('SampleCtrl', function () {});
-</script>
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/partials/a.tpl.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/partials/a.tpl.html b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/partials/a.tpl.html
deleted file mode 100644
index 252886f..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/partials/a.tpl.html
+++ /dev/null
@@ -1 +0,0 @@
-<h3>Sample page "A"</h3>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/partials/b.tpl.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/partials/b.tpl.html b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/partials/b.tpl.html
deleted file mode 100644
index b2dd91c..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/partials/b.tpl.html
+++ /dev/null
@@ -1 +0,0 @@
-<h3>Sample page "B"</h3>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/partials/c.tpl.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/partials/c.tpl.html b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/partials/c.tpl.html
deleted file mode 100644
index b91053c..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/partials/c.tpl.html
+++ /dev/null
@@ -1 +0,0 @@
-<h3>Sample page "C"</h3>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/partials/root.tpl.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/partials/root.tpl.html b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/partials/root.tpl.html
deleted file mode 100644
index a5c91e8..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/partials/root.tpl.html
+++ /dev/null
@@ -1 +0,0 @@
-<h3>Sample root page</h3>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/scroll.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/scroll.html b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/scroll.html
deleted file mode 100644
index f2b47e8..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/scroll.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-	<meta charset="utf8">
-	<title>Scrolling sample | Angulartics</title>
-	<link rel="stylesheet" href="//bootswatch.com/cosmo/bootstrap.min.css">
-	<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
-	<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
-	<script src="../src/angulartics.js"></script>
-	<script src="../src/angulartics-scroll.js"></script>
-</head>
-<body ng-app="sample" style="padding-top:100px">
-
-<div class="navbar navbar-default navbar-fixed-top">
-	<div class="navbar-header">
-		<a class="navbar-brand" href="#/">My App</a>
-	</div>
-	<div>
-		<ul class="nav navbar-nav">
-			<li><a href="#first">First</a></li>
-			<li><a href="#second">Second</a></li>
-			<li><a href="#third">Third</a></li>
-			<li><a href="#tenth">Tenth</a></li>
-		</ul>
-		<ul class="nav navbar-nav navbar-right">
-			<li><p id="notifier" class="navbar-text" style="display:none;background-color:darkorange;padding:6px;margin:8px"></p></li>
-		</ul>
-	</div>
-</div>
-
-<div class="container">
-<section id="first" analytics-on="scrollby" scrollby-offset="15%" scrollby-trigger-once scrollby-continuous>
-<h2>First</h2><p><blockquote>Cras eget nisl sed velit eleifend ultrices at vitae dolor. Ut at elementum libero, viverra lacinia nisl. Sed aliquam nulla ac suscipit faucibus. Fusce et purus nisl. Vivamus molestie nisi eu nulla fermentum luctus. Quisque cursus, nibh nec vestibulum condimentum, turpis orci tincidunt ante, eu faucibus lorem urna id arcu. Mauris volutpat velit nec eros facilisis, eu porttitor erat scelerisque. Praesent accumsan velit vitae tellus venenatis dapibus. Nulla vitae consequat tellus, eu scelerisque dui. Proin turpis justo, gravida quis elit a, ultricies gravida dui. Nulla facilisi. Sed nec pellentesque ligula.</blockquote></p>
-</section>
-
-<section id="second" analytics-on="scrollby" scrollby-offset="15%" scrollby-trigger-once="false">
-<h2>Second <small>(triggers multiple times)</small></h2><p><blockquote>Sed porta, odio sit amet sagittis varius, tellus mauris faucibus velit, sed posuere leo nunc ac lorem. Duis risus purus, consequat vitae pharetra et, auctor faucibus neque. Ut ac faucibus erat. Proin consectetur tempor quam non gravida. Suspendisse cursus mollis dolor, a elementum tellus eleifend at. Nunc ac felis sit amet nibh ultricies feugiat at ac felis. Fusce dignissim purus ornare tristique mollis. Phasellus elementum at libero in molestie. Sed eget luctus purus. Ut vulputate massa eget dictum accumsan. Maecenas semper augue a felis fringilla vehicula. Cras fringilla felis mauris, ac vehicula erat congue a. Mauris eget urna libero. Maecenas ac risus at elit sodales tempus. Nam varius consequat hendrerit.</blockquote></p>
-</section>
-
-<section id="third" analytics-on="scrollby" scrollby-offset="15%">
-<h2>Third</h2><p><blockquote>Integer vel nisi id nulla rutrum hendrerit et vitae risus. Nam sit amet ipsum orci. Ut nec leo eu sapien posuere pharetra et ut nibh. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque accumsan eros ligula, in eleifend nisl ornare nec. Vestibulum massa lacus, gravida at facilisis vel, consequat vel orci. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sed condimentum mi. Curabitur in neque semper, volutpat turpis non, iaculis quam. Maecenas id lectus non nulla euismod tempor. Nulla eu magna ut justo congue rutrum. Nunc vel felis eleifend, feugiat enim quis, tempus augue. Quisque in varius erat, eget feugiat augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris feugiat justo at nulla commodo vestibulum.</blockquote></p>
-</section>
-
-<section id="fourth" analytics-on="scrollby" scrollby-offset="15%">
-<h2>Fourth</h2><p><blockquote>Aenean ac pharetra ligula, id viverra purus. In malesuada odio ac lacinia consequat. Ut lobortis, nisl id fermentum vehicula, lorem diam ultricies velit, sed suscipit nisl risus et magna. Cras porttitor nisl eget nulla venenatis ultrices. Praesent sed pellentesque neque. Duis rhoncus purus sit amet elit bibendum, tincidunt facilisis mauris sagittis. Aenean quis tristique lectus, sed scelerisque diam. Nam tempus elementum orci, quis pulvinar nisl rutrum eget. Curabitur ornare tristique justo, in faucibus massa venenatis eu. Vestibulum eget lacus vitae lectus tincidunt sollicitudin. Suspendisse pellentesque tincidunt leo quis egestas. Aenean tellus lacus, aliquam vitae arcu eu, scelerisque tristique eros.</blockquote></p>
-</section>
-
-<section id="fifth" analytics-on="scrollby" scrollby-offset="15%">
-<h2>Fifth</h2><p><blockquote>Phasellus nec leo risus. Proin feugiat massa sit amet aliquam scelerisque. Aenean porta nec ante in auctor. Pellentesque eget egestas leo. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Morbi dignissim lobortis urna, non molestie magna lacinia ac. In id tellus ultrices, tempor libero at, porttitor neque. Donec et lobortis lacus, at ornare eros. Curabitur ac vulputate augue. Mauris vitae mi justo. Sed velit erat, volutpat a libero ut, luctus molestie metus. Duis elementum tellus sed rhoncus lacinia. Nam pharetra lacus placerat mollis accumsan. Duis consectetur orci eu arcu ultricies luctus. Morbi ipsum augue, hendrerit id viverra vitae, sagittis quis dolor.</blockquote></p>
-</section>
-
-<section id="sixth" analytics-on="scrollby" scrollby-offset="15%">
-<h2>Sixth</h2><p><blockquote>Nam neque sem, tempor non elementum non, suscipit vitae magna. Nulla congue euismod facilisis. Curabitur at tortor augue. Praesent nec interdum mauris. Vivamus tristique placerat tellus, sed venenatis felis placerat ac. Mauris ultrices dolor quis massa pulvinar rhoncus. Pellentesque condimentum augue risus, sed lacinia dolor dictum ut.</blockquote></p>
-</section>
-
-<section id="seventh" analytics-on="scrollby" scrollby-offset="15%">
-<h2>Seventh</h2><p><blockquote>Pellentesque metus nisl, eleifend a est in, ullamcorper suscipit enim. Vestibulum consequat sapien eu quam consectetur interdum. Vestibulum ut convallis ligula. Ut suscipit metus sed diam blandit, et gravida velit posuere. Curabitur posuere arcu nibh, ac rutrum mauris ornare ac. Donec orci nisl, tempor ac ligula et, accumsan pretium purus. Nam aliquam magna nec diam sodales placerat. Nunc odio nunc, pretium lacinia neque eget, lacinia porttitor risus. In ut felis ac erat elementum consequat at ut dolor.</blockquote></p>
-</section>
-
-<section id="eighth" analytics-on="scrollby" scrollby-offset="15%">
-<h2>Eighth</h2><p><blockquote>Curabitur eget tincidunt ipsum. Nam cursus leo sed commodo pretium. Morbi commodo lectus gravida erat feugiat venenatis. Vivamus pulvinar nulla sit amet diam luctus tristique. Donec eget elit non dui aliquam euismod. Vivamus id scelerisque urna, et feugiat elit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nunc ultricies nisl felis, eget laoreet justo ultrices at. Donec interdum neque at urna posuere fermentum ac in metus. Pellentesque eu tellus tortor. Donec consectetur metus purus, vitae scelerisque velit dapibus imperdiet. Quisque at consectetur odio, eu venenatis lectus. Aenean suscipit felis vitae cursus vestibulum. Curabitur odio ligula, dapibus a diam dignissim, pellentesque gravida dui. Nunc vehicula orci quam, ac viverra velit tempor id.</blockquote></p>
-</section>
-
-<section id="ninth" analytics-on="scrollby" scrollby-offset="15%">
-<h2>Ninth</h2><p><blockquote>Cras mollis leo ut diam commodo, eu venenatis lectus scelerisque. In at nisi vitae lorem tristique iaculis id nec libero. Pellentesque dictum lobortis blandit. Maecenas malesuada leo bibendum ante pharetra tristique. Nullam urna arcu, gravida sed turpis consequat, vestibulum vehicula enim. Mauris at facilisis leo. Donec placerat nisl tortor, non mattis elit facilisis sit amet. Sed dolor lectus, tincidunt at tortor ut, hendrerit pharetra felis. Suspendisse potenti. Proin in viverra nibh, ut congue odio. Praesent accumsan, eros sit amet varius tincidunt, velit leo tempus nisl, sit amet hendrerit nisi orci sed massa. Sed nec cursus justo. Maecenas malesuada, enim sit amet dapibus viverra, nisi lectus consequat tellus, pellentesque mollis augue augue sit amet dolor. Suspendisse dignissim rhoncus lectus nec laoreet. Ut laoreet turpis lobortis mauris facilisis, sed vestibulum erat accumsan. Nulla facilisi.</blockquote></p>
-</section>
-
-<section id="tenth" analytics-on="scrollby" scrollby-offset="15%">
-<h2>Tenth</h2><p><blockquote>Vestibulum porttitor dolor in ligula sollicitudin, a hendrerit lorem tincidunt. Donec erat lectus, malesuada ac justo non, sollicitudin rutrum justo. Maecenas euismod at nisi quis semper. Quisque sed odio dictum, rutrum leo et, pellentesque nulla. Nam semper velit enim, vitae bibendum ipsum viverra in. In et dapibus massa. Integer rutrum nibh urna, ultricies varius mauris ultricies nec. In eget ultricies metus. Curabitur eu cursus nunc. Etiam vitae eleifend lorem. Duis eleifend orci massa, interdum dapibus nunc adipiscing vitae.</blockquote></p>
-</section>
-
-<script>
-	angular.module('sample', ['angulartics', 'angulartics.scroll'])
-	.config(function ($routeProvider, $analyticsProvider) {
-	  $analyticsProvider.registerEventTrack(function (eventName, properties) {
-	  	$('#notifier').text('hit: '+eventName).show().delay(1000).fadeOut(1000);
-	  });
-	})
-	.controller('SampleCtrl', function () {});
-</script>
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/segmentio.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/segmentio.html b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/segmentio.html
deleted file mode 100644
index 68ade1c..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/samples/segmentio.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-	<meta charset="utf8">
-	<title>Segment.io sample | Angulartics</title>
-	<link rel="stylesheet" href="//bootswatch.com/cosmo/bootstrap.min.css">
-
-	<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
-	<script src="../src/angulartics.js"></script>
-	<script src="../src/angulartics-segmentio.js"></script>
-	<script type="text/javascript">
-		var analytics=analytics||[];(function(){var e=["identify","track","trackLink","trackForm","trackClick","trackSubmit","page","pageview","ab","alias","ready","group"],t=function(e){return function(){analytics.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var n=0;n<e.length;n++)analytics[e[n]]=t(e[n])})(),analytics.load=function(e){var t=document.createElement("script");t.type="text/javascript",t.async=!0,t.src=("https:"===document.location.protocol?"https://":"http://")+"d2dq2ahtl5zl1z.cloudfront.net/analytics.js/v1/"+e+"/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n)};
-		analytics.load("pfhpxyjs1z");
-  </script>
-</head>
-<body ng-app="sample">
-
-<div class="navbar navbar-default">
-	<div class="navbar-header">
-		<a class="navbar-brand" href="#/">My App</a>
-	</div>
-	<div>
-		<ul class="nav navbar-nav">
-			<li><a href="#/a">Page A</a></li>
-			<li><a href="#/b">Page B</a></li>
-			<li><a href="#/c">Page C</a></li>
-		</ul>
-	</div>
-</div>
-
-<div class="container">
-	<div ng-view></div>
-	<hr>
-
-	<button analytics-on="click" analytics-event="Button 1" analytics-category="Commands" class="btn btn-default">Button 1</button>
-
-	<!-- same as analytics-on="click", because 'click' is the default -->
-	<button analytics-on analytics-event="Button 2" analytics-category="Commands" class="btn btn-primary">Button 2</button>
-
-	<!-- same as analytics-event="Button 3", because is inferred from innerText -->
-	<button analytics-on analytics-category="Commands" class="btn btn-success">Button 3</button>
-
-	<button analytics-on analytics-label="Button4 label" analytics-value="1" class="btn btn-info">Button 4</button>
-	<hr>
-
-	<p class="alert alert-success">
-		Open the network inspector in your browser, click any of the nav options or buttons above and you'll see the analytics
-		request being executed. Then check <a class="alert-link" href="http://segment.io">your Segment.io dashboard</a>.
-	</p>
-</div>
-
-<script>
-	angular.module('sample', ['angulartics', 'angulartics.segment.io'])
-	.config(function ($routeProvider, $analyticsProvider) {
-		$routeProvider
-			.when('/', { templateUrl: '/samples/partials/root.tpl.html', controller: 'SampleCtrl' })
-	  	.when('/a', { templateUrl: '/samples/partials/a.tpl.html', controller: 'SampleCtrl' })
-		  .when('/b', { templateUrl: '/samples/partials/b.tpl.html', controller: 'SampleCtrl' })
-		  .when('/c', { templateUrl: '/samples/partials/c.tpl.html', controller: 'SampleCtrl' })
-		  .otherwise({ redirectTo: '/' });
-	})
-	.controller('SampleCtrl', function () {});
-</script>
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-chartbeat.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-chartbeat.js b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-chartbeat.js
deleted file mode 100644
index 312f67b..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-chartbeat.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * @license Angulartics v0.8.5
- * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
- * Contributed by http://github.com/chechoacosta
- * License: MIT
- */
-(function(angular) {
-'use strict';
-
-/**
- * @ngdoc overview
- * @name angulartics.chartbeat
- * Enables analytics support for Chartbeat (http://chartbeat.com)
- */
-angular.module('angulartics.chartbeat', ['angulartics'])
-.config(['$analyticsProvider', function ($analyticsProvider) {
-
-  angulartics.waitForVendorApi('pSUPERFLY', 500, function (pSUPERFLY) {
-    $analyticsProvider.registerPageTrack(function (path) {
-      pSUPERFLY.virtualPage(path);
-    });
-  });
-
-  $analyticsProvider.registerEventTrack(function () {
-    console.warn('Chartbeat doesn\'t support event tracking -- silently ignored.');
-  });
-  
-}]);
-})(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-ga-cordova.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-ga-cordova.js b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-ga-cordova.js
deleted file mode 100644
index c7f610e..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-ga-cordova.js
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * @license Angulartics v0.8.5
- * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
- * License: MIT
- */
-(function(angular) {
-'use strict';
-
-/**
- * @ngdoc overview
- * @name angulartics.google.analytics
- * Enables analytics support for Google Analytics (http://google.com/analytics)
- */
-angular.module('angulartics.google.analytics.cordova', ['angulartics'])
-
-.provider('googleAnalyticsCordova', function () {
-  var GoogleAnalyticsCordova = [
-  '$q', '$log', 'ready', 'debug', 'trackingId', 'period',
-  function ($q, $log, ready, debug, trackingId, period) {
-    var deferred = $q.defer();
-    var deviceReady = false;
-
-    window.addEventListener('deviceReady', function () {
-      deviceReady = true;
-      deferred.resolve();
-    });
-
-    setTimeout(function () {
-      if (!deviceReady) {
-        deferred.resolve();
-      }
-    }, 3000);
-
-    function success() {
-      if (debug) {
-        $log.info(arguments);
-      }
-    }
-
-    function failure(err) {
-      if (debug) {
-        $log.error(err);
-      }
-    }
-
-    this.init = function () {
-      return deferred.promise.then(function () {
-        var analytics = window.plugins && window.plugins.gaPlugin;
-        if (analytics) {
-          analytics.init(function onInit() {
-            ready(analytics, success, failure);
-          }, failure, trackingId, period || 10);
-        } else if (debug) {
-          $log.error('Google Analytics for Cordova is not available');
-        }
-      });
-    };
-  }];
-
-  return {
-    $get: ['$injector', function ($injector) {
-      return $injector.instantiate(GoogleAnalyticsCordova, {
-        ready: this._ready || angular.noop,
-        debug: this.debug,
-        trackingId: this.trackingId,
-        period: this.period
-      });
-    }],
-    ready: function (fn) {
-      this._ready = fn;
-    }
-  };
-})
-
-.config(['$analyticsProvider', 'googleAnalyticsCordovaProvider', function ($analyticsProvider, googleAnalyticsCordovaProvider) {
-  googleAnalyticsCordovaProvider.ready(function (analytics, success, failure) {
-    $analyticsProvider.registerPageTrack(function (path) {
-      analytics.trackPage(success, failure, path);
-    });
-
-    $analyticsProvider.registerEventTrack(function (action, properties) {
-      analytics.trackEvent(success, failure, properties.category, action, properties.label, properties.value);
-    });
-  });
-}])
-
-.run(['googleAnalyticsCordova', function (googleAnalyticsCordova) {
-  googleAnalyticsCordova.init();
-}]);
-
-})(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-ga.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-ga.js b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-ga.js
deleted file mode 100644
index bea8f5b..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-ga.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * @license Angulartics v0.8.5
- * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
- * Universal Analytics update contributed by http://github.com/willmcclellan
- * License: MIT
- */
-(function(angular) {
-'use strict';
-
-/**
- * @ngdoc overview
- * @name angulartics.google.analytics
- * Enables analytics support for Google Analytics (http://google.com/analytics)
- */
-angular.module('angulartics.google.analytics', ['angulartics'])
-.config(['$analyticsProvider', function ($analyticsProvider) {
-
-  // GA already supports buffered invocations so we don't need
-  // to wrap these inside angulartics.waitForVendorApi
-
-  $analyticsProvider.registerPageTrack(function (path) {
-    if (window._gaq) _gaq.push(['_trackPageview', path]);
-    if (window.ga) ga('send', 'pageview', path);
-  });
-
-  $analyticsProvider.registerEventTrack(function (action, properties) {
-    if (window._gaq) _gaq.push(['_trackEvent', properties.category, action, properties.label, properties.value]);
-    if (window.ga) ga('send', 'event', properties.category, action, properties.label, properties.value);
-  });
-  
-}]);
-})(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-kissmetrics.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-kissmetrics.js b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-kissmetrics.js
deleted file mode 100644
index 46c86ff..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-kissmetrics.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * @license Angulartics v0.8.5
- * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
- * License: MIT
- */
-(function(angular) {
-'use strict';
-
-/**
- * @ngdoc overview
- * @name angulartics.kissmetrics
- * Enables analytics support for KISSmetrics (http://kissmetrics.com)
- */
-angular.module('angulartics.kissmetrics', ['angulartics'])
-.config(['$analyticsProvider', function ($analyticsProvider) {
-
-  // KM already supports buffered invocations so we don't need
-  // to wrap these inside angulartics.waitForVendorApi
-
-  $analyticsProvider.registerPageTrack(function (path) {
-    _kmq.push(['record', 'Pageview', { 'Page': path }]);
-  });
-
-  $analyticsProvider.registerEventTrack(function (action, properties) {
-    _kmq.push(['record', action, properties]);
-  });
-  
-}]);
-})(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-mixpanel.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-mixpanel.js b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-mixpanel.js
deleted file mode 100644
index 18dba0c..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-mixpanel.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * @license Angulartics v0.8.5
- * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
- * Contributed by http://github.com/L42y
- * License: MIT
- */
-(function(angular) {
-'use strict';
-
-/**
- * @ngdoc overview
- * @name angulartics.mixpanel
- * Enables analytics support for Mixpanel (http://mixpanel.com)
- */
-angular.module('angulartics.mixpanel', ['angulartics'])
-.config(['$analyticsProvider', function ($analyticsProvider) {
-  angulartics.waitForVendorApi('mixpanel', 500, function (mixpanel) {
-    $analyticsProvider.registerPageTrack(function (path) {
-      mixpanel.track_pageview(path);
-    });
-  });
-
-  angulartics.waitForVendorApi('mixpanel', 500, function (mixpanel) {
-    $analyticsProvider.registerEventTrack(function (action, properties) {
-      mixpanel.track(action, properties);
-    });
-  });
-}]);
-})(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-scroll.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-scroll.js b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-scroll.js
deleted file mode 100644
index e5a3271..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-scroll.js
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * @license Angulartics v0.8.5
- * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
- * License: MIT
- */
-(function (angular) {
-'use strict';
-
-/**
- * @ngdoc overview
- * @name angulartics.scroll
- * Provides an implementation of jQuery Waypoints (http://imakewebthings.com/jquery-waypoints/)
- * for use as a valid DOM event in analytics-on.
- */
-angular.module('angulartics.scroll', ['angulartics'])
-.directive('analyticsOn', ['$analytics', function ($analytics) {
-  function isProperty(name) {
-    return name.substr(0, 8) === 'scrollby';
-  }
-  function cast(value) {
-    if (['', 'true', 'false'].indexOf(value) > -1) {
-      return value.replace('', 'true') === 'true';
-    }
-    return value;
-  }
-
-  return {
-    restrict: 'A',
-    priority: 5,
-    scope: false,
-    link: function ($scope, $element, $attrs) {
-      if ($attrs.analyticsOn !== 'scrollby') return;
-
-      var properties = { continuous: false, triggerOnce: true };
-      angular.forEach($attrs.$attr, function(attr, name) {
-        if (isProperty(attr)) {
-          properties[name.slice(8,9).toLowerCase()+name.slice(9)] = cast($attrs[name]);
-        }
-      });
-
-      $($element[0]).waypoint(function () {
-        this.dispatchEvent(new Event('scrollby'));
-      }, properties);
-    }
-  };
-}]);
-})(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-segmentio.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-segmentio.js b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-segmentio.js
deleted file mode 100644
index 1aae091..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics-segmentio.js
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * @license Angulartics v0.8.5
- * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
- * License: MIT
- */
-(function(angular) {
-'use strict';
-
-/**
- * @ngdoc overview
- * @name angulartics.segment.io
- * Enables analytics support for Segment.io (http://segment.io)
- */
-angular.module('angulartics.segment.io', ['angulartics'])
-.config(['$analyticsProvider', function ($analyticsProvider) {
-  $analyticsProvider.registerPageTrack(function (path) {
-    analytics.pageview(path);
-  });
-
-  $analyticsProvider.registerEventTrack(function (action, properties) {
-    analytics.track(action, properties);
-  });
-}]);
-})(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics.js b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics.js
deleted file mode 100644
index 6376960..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/src/angulartics.js
+++ /dev/null
@@ -1,132 +0,0 @@
-/**
- * @license Angulartics v0.8.5
- * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
- * License: MIT
- */
-(function(angular, analytics) {
-'use strict';
-
-var angulartics = window.angulartics || (window.angulartics = {});
-angulartics.waitForVendorApi = function (objectName, delay, registerFn) {
-  if (!Object.prototype.hasOwnProperty.call(window, objectName)) {
-    setTimeout(function () { angulartics.waitForVendorApi(objectName, delay, registerFn); }, delay);
-  }
-  else {
-    registerFn(window[objectName]);
-  }
-};
-
-/**
- * @ngdoc overview
- * @name angulartics
- */
-angular.module('angulartics', [])
-.provider('$analytics', function () {
-  var settings = { 
-    pageTracking: { 
-      autoTrackFirstPage: true,
-      autoTrackVirtualPages: true,
-      basePath: '',
-      bufferFlushDelay: 1000 
-    },
-    eventTracking: {
-      bufferFlushDelay: 1000
-    } 
-  };
-
-  var cache = {
-    pageviews: [],
-    events: []
-  };
-
-  var bufferedPageTrack = function (path) {
-    cache.pageviews.push(path);
-  };
-  var bufferedEventTrack = function (event, properties) {
-    cache.events.push({name: event, properties: properties});
-  };
-
-  var api = {
-    settings: settings,
-    pageTrack: bufferedPageTrack,
-    eventTrack: bufferedEventTrack
-  };
-
-  var registerPageTrack = function (fn) {
-    api.pageTrack = fn;
-    angular.forEach(cache.pageviews, function (path, index) {
-      setTimeout(function () { api.pageTrack(path); }, index * settings.pageTracking.bufferFlushDelay);
-    });
-  };
-  var registerEventTrack = function (fn) {
-    api.eventTrack = fn;
-    angular.forEach(cache.events, function (event, index) {
-      setTimeout(function () { api.eventTrack(event.name, event.properties); }, index * settings.eventTracking.bufferFlushDelay);
-    });
-  };
-
-  return {
-    $get: function() { return api; },
-    settings: settings,
-    virtualPageviews: function (value) { this.settings.pageTracking.autoTrackVirtualPages = value; },
-    firstPageview: function (value) { this.settings.pageTracking.autoTrackFirstPage = value; },
-    withBase: function (value) { this.settings.pageTracking.basePath = (value) ? angular.element('base').attr('href').slice(0, -1) : ''; },
-    registerPageTrack: registerPageTrack,
-    registerEventTrack: registerEventTrack
-  };
-})
-
-.run(['$rootScope', '$location', '$analytics', function ($rootScope, $location, $analytics) {
-  if ($analytics.settings.pageTracking.autoTrackFirstPage) {
-    $analytics.pageTrack($location.absUrl());
-  }
-  if ($analytics.settings.pageTracking.autoTrackVirtualPages) {
-    $rootScope.$on('$routeChangeSuccess', function (event, current) {
-      if (current && (current.$$route||current).redirectTo) return;
-      var url = $analytics.settings.pageTracking.basePath + $location.url();
-      $analytics.pageTrack(url);
-    });
-  }
-}])
-
-.directive('analyticsOn', ['$analytics', function ($analytics) {
-  function isCommand(element) {
-    return ['a:','button:','button:button','button:submit','input:button','input:submit'].indexOf(
-      element.tagName.toLowerCase()+':'+(element.type||'')) >= 0;
-  }
-
-  function inferEventType(element) {
-    if (isCommand(element)) return 'click';
-    return 'click';
-  }
-
-  function inferEventName(element) {
-    if (isCommand(element)) return element.innerText || element.value;
-    return element.id || element.name || element.tagName;
-  }
-
-  function isProperty(name) {
-    return name.substr(0, 9) === 'analytics' && ['on', 'event'].indexOf(name.substr(10)) === -1;
-  }
-
-  return {
-    restrict: 'A',
-    scope: false,
-    link: function ($scope, $element, $attrs) {
-      var eventType = $attrs.analyticsOn || inferEventType($element[0]),
-          eventName = $attrs.analyticsEvent || inferEventName($element[0]);
-
-      var properties = {};
-      angular.forEach($attrs.$attr, function(attr, name) {
-        if (isProperty(attr)) {
-          properties[name.slice(9).toLowerCase()] = $attrs[name];
-        }
-      });
-
-      angular.element($element[0]).bind(eventType, function () {
-        $analytics.eventTrack(eventName, properties);
-      });
-    }
-  };
-}]);
-})(angular);

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angularitics/test/angularticsSpec.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/test/angularticsSpec.js b/deleted/dist-cov/usergrid-portal/bower_components/angularitics/test/angularticsSpec.js
deleted file mode 100644
index 04bab44..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angularitics/test/angularticsSpec.js
+++ /dev/null
@@ -1,38 +0,0 @@
-describe('Module: angulartics', function() {
-  beforeEach(module('angulartics'));
-
-  it('should be configurable', function() {
-    module(function(_$analyticsProvider_) {
-      _$analyticsProvider_.virtualPageviews(false);
-    });
-    inject(function(_$analytics_) {
-      expect(_$analytics_.settings.pageTracking.autoTrackVirtualPages).toBe(false);
-    });
-  });
-
-  describe('Provider: analytics', function() {
-    var analytics,
-      rootScope,
-      location;
-    beforeEach(inject(function(_$analytics_, _$rootScope_, _$location_) {
-      analytics = _$analytics_;
-      location = _$location_;
-      rootScope = _$rootScope_;
-
-      spyOn(analytics, 'pageTrack');
-    }));
-
-    describe('initialize', function() {
-      it('should tracking pages by default', function() {
-        expect(analytics.settings.pageTracking.autoTrackVirtualPages).toBe(true);
-      });
-    });
-
-    it('should tracking pages on route change', function() {
-      location.path('/abc');
-      rootScope.$emit('$routeChangeSuccess');
-      expect(analytics.pageTrack).toHaveBeenCalledWith('/abc');
-    });
-    
-  });
-});
\ No newline at end of file


[34/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/lib/jquery-ui-1.8.18.min.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/lib/jquery-ui-1.8.18.min.js b/deleted/archive/js/lib/jquery-ui-1.8.18.min.js
deleted file mode 100644
index 59d4a5e..0000000
--- a/deleted/archive/js/lib/jquery-ui-1.8.18.min.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/*!
- * jQuery UI 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI
- */(function(a,b){function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;if(!b.href||!g||f.nodeName.toLowerCase()!=="map")return!1;h=a("img[usemap=#"+g+"]")[0];return!!h&&d(h)}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}a.ui=a.ui||{};a.ui.version||(a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="numb
 er"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelecti
 on:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(c,d){function h(b,c,d,f){a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)});return c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){if(c===b)return g["inner"+d].call(this);return this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){if(typeof b!="number")return g["outer"+d].call(this,b);return this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:function(b,c,d){return!!a.data(b,d[3])},
 focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));c.offsetHeight,a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!!d&&!!a.element[0].parentNode)for(var e=0;e<d.length;e++)a.options[d[e][0]]&&d[e][1].apply(a.element,c)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(b,c){if(a(b).css("overflow")==="hidden")return!1;var d=c&&c==="left"?"scrollLeft":"scrollTop",e=!1;if(b[d]>0)return!0;b[d]=
 1,e=b[d]>0,b[d]=0;return e},isOverAxis:function(a,b,c){return a>b&&a<b+c},isOver:function(b,c,d,e,f,g){return a.ui.isOverAxis(b,d,f)&&a.ui.isOverAxis(c,e,g)}}))})(jQuery),function(a,b){if(a.cleanData){var c=a.cleanData;a.cleanData=function(b){for(var d=0,e;(e=b[d])!=null;d++)try{a(e).triggerHandler("remove")}catch(f){}c(b)}}else{var d=a.fn.remove;a.fn.remove=function(b,c){return this.each(function(){c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(b){}});return d.call(a(this),b,c)})}}a.widget=function(b,c,d){var e=b.split(".")[0],f;b=b.split(".")[1],f=e+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][f]=function(c){return!!a.data(c,b)},a[e]=a[e]||{},a[e][b]=function(a,b){arguments.length&&this._createWidget(a,b)};var g=new c;g.options=a.extend(!0,{},g.options),a[e][b].prototype=a.extend(!0,g,{namespace:e,widgetName:b,widgetEventPrefix:a[e][b].prototype.widgetEventPrefix||b,widgetBaseClass:f},d),a.widget.bridge(b,a[e][b])},a
 .widget.bridge=function(c,d){a.fn[c]=function(e){var f=typeof e=="string",g=Array.prototype.slice.call(arguments,1),h=this;e=!f&&g.length?a.extend.apply(null,[!0,e].concat(g)):e;if(f&&e.charAt(0)==="_")return h;f?this.each(function(){var d=a.data(this,c),f=d&&a.isFunction(d[e])?d[e].apply(d,g):d;if(f!==d&&f!==b){h=f;return!1}}):this.each(function(){var b=a.data(this,c);b?b.option(e||{})._init():a.data(this,c,new d(e,this))});return h}},a.Widget=function(a,b){arguments.length&&this._createWidget(a,b)},a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(b,c){a.data(c,this.widgetName,this),this.element=a(c),this.options=a.extend(!0,{},this.options,this._getCreateOptions(),b);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}),this._create(),this._trigger("create"),this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:func
 tion(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName),this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+"ui-state-disabled")},widget:function(){return this.element},option:function(c,d){var e=c;if(arguments.length===0)return a.extend({},this.options);if(typeof c=="string"){if(d===b)return this.options[c];e={},e[c]=d}this._setOptions(e);return this},_setOptions:function(b){var c=this;a.each(b,function(a,b){c._setOption(a,b)});return this},_setOption:function(a,b){this.options[a]=b,a==="disabled"&&this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",b);return this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(b,c,d){var e,f,g=this.options[b];d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).
 toLowerCase(),c.target=this.element[0],f=c.originalEvent;if(f)for(e in f)e in c||(c[e]=f[e]);this.element.trigger(c,d);return!(a.isFunction(g)&&g.call(this.element[0],c,d)===!1||c.isDefaultPrevented())}}}(jQuery),function(a,b){var c=!1;a(document).mouseup(function(a){c=!1}),a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(a){return b._mouseDown(a)}).bind("click."+this.widgetName,function(c){if(!0===a.data(c.target,b.widgetName+".preventClickEvent")){a.removeData(c.target,b.widgetName+".preventClickEvent"),c.stopImmediatePropagation();return!1}}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(b){if(!c){this._mouseStarted&&this._mouseUp(b),this._mouseDownEvent=b;var d=this,e=b.which==1,f=typeof this.options.cancel=="string"&&b.target.nodeName?a(b.target).closest(this.options.cancel).length:!1;if(!e||f||!this._mouseCap
 ture(b))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){d.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=this._mouseStart(b)!==!1;if(!this._mouseStarted){b.preventDefault();return!0}}!0===a.data(b.target,this.widgetName+".preventClickEvent")&&a.removeData(b.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(a){return d._mouseMove(a)},this._mouseUpDelegate=function(a){return d._mouseUp(a)},a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),b.preventDefault(),c=!0;return!0}},_mouseMove:function(b){if(a.browser.msie&&!(document.documentMode>=9)&&!b.button)return this._mouseUp(b);if(this._mouseStarted){this._mouseDrag(b);return b.preventDefault()}this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==
 !1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b));return!this._mouseStarted},_mouseUp:function(b){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b));return!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})}(jQuery),function(a,b){a.widget("ui.draggable",a.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refresh
 Positions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1},_create:function(){this.options.helper=="original"&&!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},destroy:function(){if(!!this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy();return this}},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is(".ui-resizable-handle"))return!1;this.handle=this._getHandle(b);if(!this.handle)return!1;c.iframeFix&&a(c.iframeFix===!0?"iframe":c.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"><
 /div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(a(this).offset()).appendTo("body")});return!0},_mouseStart:function(b){var c=this.options;this.helper=this._createHelper(b),this._cacheHelperProportions(),a.ui.ddmanager&&(a.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt),c.containment&&this._setContainment();if(this._trigger("start",b)===!1){this._clear();return!1
 }this._cacheHelperProportions(),a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.helper.addClass("ui-draggable-dragging"),this._mouseDrag(b,!0),a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,b);return!0},_mouseDrag:function(b,c){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute");if(!c){var d=this._uiHash();if(this._trigger("drag",b,d)===!1){this._mouseUp({});return!1}this.position=d.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";a.ui.ddmanager&&a.ui.ddmanager.drag(this,b);return!1},_mouseStop:function(b){var c=!1;a.ui.ddmanager&&!this.options.dropBehaviour&&(c=a.ui.ddmanager.drop(this,b)),this.dropped&&(c=this.dropped,this.dropped=!1);if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return!1;if(this.options.revert=="invalid"&&!c||t
 his.options.revert=="valid"&&c||this.options.revert===!0||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var d=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){d._trigger("stop",b)!==!1&&d._clear()})}else this._trigger("stop",b)!==!1&&this._clear();return!1},_mouseUp:function(b){this.options.iframeFix===!0&&a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),a.ui.ddmanager&&a.ui.ddmanager.dragStop(this,b);return a.ui.mouse.prototype._mouseUp.call(this,b)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?!0:!1;a(this.options.handle,this.element).find("*").andSelf().each(function(){this==b.target&&(c=!0)});return c},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b])):c
 .helper=="clone"?this.element.clone().removeAttr("id"):this.element;d.parents("body").length||d.appendTo(c.appendTo=="parent"?this.element[0].parentNode:c.appendTo),d[0]!=this.element[0]&&!/(fixed|absolute)/.test(d.css("position"))&&d.css("position","absolute");return d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop
 ());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function
 (){var b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[b.containment=="document"?0:a(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,b.containment=="document"?0:a(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(b.containment=="document"?0:a(window).scrollLeft())+a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(b.containment=="document"?0:a(window).scrollTop())+(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)&&b.containment.constructor!=Array){var c=a(b.containment),d=c[0];if(!d)return;var e=c.offset(),f=a(d).css("overflow")!="hidden";this.containment=[(parseInt(a(d).css("borderLeftWidth"),10)||0)+(parseInt(a(d).css("paddingLeft"),10)||0),(p
 arseInt(a(d).css("borderTopWidth"),10)||0)+(parseInt(a(d).css("paddingTop"),10)||0),(f?Math.max(d.scrollWidth,d.offsetWidth):d.offsetWidth)-(parseInt(a(d).css("borderLeftWidth"),10)||0)-(parseInt(a(d).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(f?Math.max(d.scrollHeight,d.offsetHeight):d.offsetHeight)-(parseInt(a(d).css("borderTopWidth"),10)||0)-(parseInt(a(d).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=c}else b.containment.constructor==Array&&(this.containment=b.containment)},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&a.browser
 .version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(d[0].tagName),f=b.pageX,g=b.pageY;if(this.originalPosition){var h;if(this.containment){if(this.relative_container){var i=this.relative_container.offset();h=[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]}else h=this.containment;b.pageX-this.offset.click.left<h[0]&&(f=h[0]+this.offset.click.left),b.pageY-this.offset.click.top<h[1]&&(g=h[1]+this.offset.click.top),
 b.pageX-this.offset.click.left>h[2]&&(f=h[2]+this.offset.click.left),b.pageY-this.offset.click.top>h[3]&&(g=h[3]+this.offset.click.top)}if(c.grid){var j=c.grid[1]?this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY;g=h?j-this.offset.click.top<h[1]||j-this.offset.click.top>h[3]?j-this.offset.click.top<h[1]?j+c.grid[1]:j-c.grid[1]:j:j;var k=c.grid[0]?this.originalPageX+Math.round((f-this.originalPageX)/c.grid[0])*c.grid[0]:this.originalPageX;f=h?k-this.offset.click.left<h[0]||k-this.offset.click.left>h[2]?k-this.offset.click.left<h[0]?k+c.grid[0]:k-c.grid[0]:k:k}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:d.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssP
 osition=="fixed"?-this.scrollParent.scrollLeft():e?0:d.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(b,c,d){d=d||this._uiHash(),a.ui.plugin.call(this,b,[c,d]),b=="drag"&&(this.positionAbs=this._convertPositionTo("absolute"));return a.Widget.prototype._trigger.call(this,b,c,d)},plugins:{},_uiHash:function(a){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),a.extend(a.ui.draggable,{version:"1.8.18"}),a.ui.plugin.add("draggable","connectToSortable",{start:function(b,c){var d=a(this).data("draggable"),e=d.options,f=a.extend({},c,{item:d.element});d.sortables=[],a(e.connectToSortable).each(function(){var c=a.data(this,"sortable");c&&!c.options.disabled&&(d.sortables.push({instance:c,shouldRevert:c.options.revert}),c.refreshPositions(),c._trigg
 er("activate",b,f))})},stop:function(b,c){var d=a(this).data("draggable"),e=a.extend({},c,{item:d.element});a.each(d.sortables,function(){this.instance.isOver?(this.instance.isOver=0,d.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(b),this.instance.options.helper=this.instance.options._helper,d.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",b,e))})},drag:function(b,c){var d=a(this).data("draggable"),e=this,f=function(b){var c=this.offset.click.top,d=this.offset.click.left,e=this.positionAbs.top,f=this.positionAbs.left,g=b.height,h=b.width,i=b.top,j=b.left;return a.ui.isOver(e+c,f+d,i,j,g,h)};a.each(d.sortables,function(f){this.instance.positionAbs=d.positionAbs,this.instance.helperProportions=d.helperProportions,this.instance.offset.click=d.offset.click,this.instance._intersectsWith(
 this.instance.containerCache)?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=a(e).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return c.helper[0]},b.target=this.instance.currentItem[0],this.instance._mouseCapture(b,!0),this.instance._mouseStart(b,!0,!0),this.instance.offset.click.top=d.offset.click.top,this.instance.offset.click.left=d.offset.click.left,this.instance.offset.parent.left-=d.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=d.offset.parent.top-this.instance.offset.parent.top,d._trigger("toSortable",b),d.dropped=this.instance.element,d.currentItem=d.element,this.instance.fromOutside=d),this.instance.currentItem&&this.instance._mouseDrag(b)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger(
 "out",b,this.instance._uiHash(this.instance)),this.instance._mouseStop(b,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),d._trigger("fromSortable",b),d.dropped=!1)})}}),a.ui.plugin.add("draggable","cursor",{start:function(b,c){var d=a("body"),e=a(this).data("draggable").options;d.css("cursor")&&(e._cursor=d.css("cursor")),d.css("cursor",e.cursor)},stop:function(b,c){var d=a(this).data("draggable").options;d._cursor&&a("body").css("cursor",d._cursor)}}),a.ui.plugin.add("draggable","opacity",{start:function(b,c){var d=a(c.helper),e=a(this).data("draggable").options;d.css("opacity")&&(e._opacity=d.css("opacity")),d.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("draggable").options;d._opacity&&a(c.helper).css("opacity",d._opacity)}}),a.ui.plugin.add("draggable","scroll",{start:function(b,c){var d=a(this).data("draggable");d.scrollParent[0]!=document&&d.scroll
 Parent[0].tagName!="HTML"&&(d.overflowOffset=d.scrollParent.offset())},drag:function(b,c){var d=a(this).data("draggable"),e=d.options,f=!1;if(d.scrollParent[0]!=document&&d.scrollParent[0].tagName!="HTML"){if(!e.axis||e.axis!="x")d.overflowOffset.top+d.scrollParent[0].offsetHeight-b.pageY<e.scrollSensitivity?d.scrollParent[0].scrollTop=f=d.scrollParent[0].scrollTop+e.scrollSpeed:b.pageY-d.overflowOffset.top<e.scrollSensitivity&&(d.scrollParent[0].scrollTop=f=d.scrollParent[0].scrollTop-e.scrollSpeed);if(!e.axis||e.axis!="y")d.overflowOffset.left+d.scrollParent[0].offsetWidth-b.pageX<e.scrollSensitivity?d.scrollParent[0].scrollLeft=f=d.scrollParent[0].scrollLeft+e.scrollSpeed:b.pageX-d.overflowOffset.left<e.scrollSensitivity&&(d.scrollParent[0].scrollLeft=f=d.scrollParent[0].scrollLeft-e.scrollSpeed)}else{if(!e.axis||e.axis!="x")b.pageY-a(document).scrollTop()<e.scrollSensitivity?f=a(document).scrollTop(a(document).scrollTop()-e.scrollSpeed):a(window).height()-(b.pageY-a(document).sc
 rollTop())<e.scrollSensitivity&&(f=a(document).scrollTop(a(document).scrollTop()+e.scrollSpeed));if(!e.axis||e.axis!="y")b.pageX-a(document).scrollLeft()<e.scrollSensitivity?f=a(document).scrollLeft(a(document).scrollLeft()-e.scrollSpeed):a(window).width()-(b.pageX-a(document).scrollLeft())<e.scrollSensitivity&&(f=a(document).scrollLeft(a(document).scrollLeft()+e.scrollSpeed))}f!==!1&&a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(d,b)}}),a.ui.plugin.add("draggable","snap",{start:function(b,c){var d=a(this).data("draggable"),e=d.options;d.snapElements=[],a(e.snap.constructor!=String?e.snap.items||":data(draggable)":e.snap).each(function(){var b=a(this),c=b.offset();this!=d.element[0]&&d.snapElements.push({item:this,width:b.outerWidth(),height:b.outerHeight(),top:c.top,left:c.left})})},drag:function(b,c){var d=a(this).data("draggable"),e=d.options,f=e.snapTolerance,g=c.offset.left,h=g+d.helperProportions.width,i=c.offset.top,j=i+d.helperProportions.height;for(var k=d
 .snapElements.length-1;k>=0;k--){var l=d.snapElements[k].left,m=l+d.snapElements[k].width,n=d.snapElements[k].top,o=n+d.snapElements[k].height;if(!(l-f<g&&g<m+f&&n-f<i&&i<o+f||l-f<g&&g<m+f&&n-f<j&&j<o+f||l-f<h&&h<m+f&&n-f<i&&i<o+f||l-f<h&&h<m+f&&n-f<j&&j<o+f)){d.snapElements[k].snapping&&d.options.snap.release&&d.options.snap.release.call(d.element,b,a.extend(d._uiHash(),{snapItem:d.snapElements[k].item})),d.snapElements[k].snapping=!1;continue}if(e.snapMode!="inner"){var p=Math.abs(n-j)<=f,q=Math.abs(o-i)<=f,r=Math.abs(l-h)<=f,s=Math.abs(m-g)<=f;p&&(c.position.top=d._convertPositionTo("relative",{top:n-d.helperProportions.height,left:0}).top-d.margins.top),q&&(c.position.top=d._convertPositionTo("relative",{top:o,left:0}).top-d.margins.top),r&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l-d.helperProportions.width}).left-d.margins.left),s&&(c.position.left=d._convertPositionTo("relative",{top:0,left:m}).left-d.margins.left)}var t=p||q||r||s;if(e.snapMode!="outer"){
 var p=Math.abs(n-i)<=f,q=Math.abs(o-j)<=f,r=Math.abs(l-g)<=f,s=Math.abs(m-h)<=f;p&&(c.position.top=d._convertPositionTo("relative",{top:n,left:0}).top-d.margins.top),q&&(c.position.top=d._convertPositionTo("relative",{top:o-d.helperProportions.height,left:0}).top-d.margins.top),r&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l}).left-d.margins.left),s&&(c.position.left=d._convertPositionTo("relative",{top:0,left:m-d.helperProportions.width}).left-d.margins.left)}!d.snapElements[k].snapping&&(p||q||r||s||t)&&d.options.snap.snap&&d.options.snap.snap.call(d.element,b,a.extend(d._uiHash(),{snapItem:d.snapElements[k].item})),d.snapElements[k].snapping=p||q||r||s||t}}}),a.ui.plugin.add("draggable","stack",{start:function(b,c){var d=a(this).data("draggable").options,e=a.makeArray(a(d.stack)).sort(function(b,c){return(parseInt(a(b).css("zIndex"),10)||0)-(parseInt(a(c).css("zIndex"),10)||0)});if(!!e.length){var f=parseInt(e[0].style.zIndex)||0;a(e).each(function(a){this.style
 .zIndex=f+a}),this[0].style.zIndex=f+e.length}}}),a.ui.plugin.add("draggable","zIndex",{start:function(b,c){var d=a(c.helper),e=a(this).data("draggable").options;d.css("zIndex")&&(e._zIndex=d.css("zIndex")),d.css("zIndex",e.zIndex)},stop:function(b,c){var d=a(this).data("draggable").options;d._zIndex&&a(c.helper).css("zIndex",d._zIndex)}})}(jQuery),function(a,b){a.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect"},_create:function(){var b=this.options,c=b.accept;this.isover=0,this.isout=1,this.accept=a.isFunction(c)?c:function(a){return a.is(c)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},a.ui.ddmanager.droppables[b.scope]=a.ui.ddmanager.droppables[b.scope]||[],a.ui.ddmanager.droppables[b.scope].push(this),b.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){var b=a.ui.ddmanager.droppables[this.options.scope];for
 (var c=0;c<b.length;c++)b[c]==this&&b.splice(c,1);this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");return this},_setOption:function(b,c){b=="accept"&&(this.accept=a.isFunction(c)?c:function(a){return a.is(c)}),a.Widget.prototype._setOption.apply(this,arguments)},_activate:function(b){var c=a.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),c&&this._trigger("activate",b,this.ui(c))},_deactivate:function(b){var c=a.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),c&&this._trigger("deactivate",b,this.ui(c))},_over:function(b){var c=a.ui.ddmanager.current;!!c&&(c.currentItem||c.element)[0]!=this.element[0]&&this.accept.call(this.element[0],c.currentItem||c.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",b,this.ui(c)))},_out:function(b){var c=a.ui.ddmanager.current;!!c&&(c.currentI
 tem||c.element)[0]!=this.element[0]&&this.accept.call(this.element[0],c.currentItem||c.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",b,this.ui(c)))},_drop:function(b,c){var d=c||a.ui.ddmanager.current;if(!d||(d.currentItem||d.element)[0]==this.element[0])return!1;var e=!1;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var b=a.data(this,"droppable");if(b.options.greedy&&!b.options.disabled&&b.options.scope==d.options.scope&&b.accept.call(b.element[0],d.currentItem||d.element)&&a.ui.intersect(d,a.extend(b,{offset:b.element.offset()}),b.options.tolerance)){e=!0;return!1}});if(e)return!1;if(this.accept.call(this.element[0],d.currentItem||d.element)){this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",b,this.ui(d));return this.element}return!1},ui:function(a){return{draggab
 le:a.currentItem||a.element,helper:a.helper,position:a.position,offset:a.positionAbs}}}),a.extend(a.ui.droppable,{version:"1.8.18"}),a.ui.intersect=function(b,c,d){if(!c.offset)return!1;var e=(b.positionAbs||b.position.absolute).left,f=e+b.helperProportions.width,g=(b.positionAbs||b.position.absolute).top,h=g+b.helperProportions.height,i=c.offset.left,j=i+c.proportions.width,k=c.offset.top,l=k+c.proportions.height;switch(d){case"fit":return i<=e&&f<=j&&k<=g&&h<=l;case"intersect":return i<e+b.helperProportions.width/2&&f-b.helperProportions.width/2<j&&k<g+b.helperProportions.height/2&&h-b.helperProportions.height/2<l;case"pointer":var m=(b.positionAbs||b.position.absolute).left+(b.clickOffset||b.offset.click).left,n=(b.positionAbs||b.position.absolute).top+(b.clickOffset||b.offset.click).top,o=a.ui.isOver(n,m,k,i,c.proportions.height,c.proportions.width);return o;case"touch":return(g>=k&&g<=l||h>=k&&h<=l||g<k&&h>l)&&(e>=i&&e<=j||f>=i&&f<=j||e<i&&f>j);default:return!1}},a.ui.ddmanager
 ={current:null,droppables:{"default":[]},prepareOffsets:function(b,c){var d=a.ui.ddmanager.droppables[b.options.scope]||[],e=c?c.type:null,f=(b.currentItem||b.element).find(":data(droppable)").andSelf();droppablesLoop:for(var g=0;g<d.length;g++){if(d[g].options.disabled||b&&!d[g].accept.call(d[g].element[0],b.currentItem||b.element))continue;for(var h=0;h<f.length;h++)if(f[h]==d[g].element[0]){d[g].proportions.height=0;continue droppablesLoop}d[g].visible=d[g].element.css("display")!="none";if(!d[g].visible)continue;e=="mousedown"&&d[g]._activate.call(d[g],c),d[g].offset=d[g].element.offset(),d[g].proportions={width:d[g].element[0].offsetWidth,
-height:d[g].element[0].offsetHeight}}},drop:function(b,c){var d=!1;a.each(a.ui.ddmanager.droppables[b.options.scope]||[],function(){!this.options||(!this.options.disabled&&this.visible&&a.ui.intersect(b,this,this.options.tolerance)&&(d=this._drop.call(this,c)||d),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],b.currentItem||b.element)&&(this.isout=1,this.isover=0,this._deactivate.call(this,c)))});return d},dragStart:function(b,c){b.element.parents(":not(body,html)").bind("scroll.droppable",function(){b.options.refreshPositions||a.ui.ddmanager.prepareOffsets(b,c)})},drag:function(b,c){b.options.refreshPositions&&a.ui.ddmanager.prepareOffsets(b,c),a.each(a.ui.ddmanager.droppables[b.options.scope]||[],function(){if(!(this.options.disabled||this.greedyChild||!this.visible)){var d=a.ui.intersect(b,this,this.options.tolerance),e=!d&&this.isover==1?"isout":d&&this.isover==0?"isover":null;if(!e)return;var f;if(this.options.greedy){var g=this.element.parents(":data(dr
 oppable):eq(0)");g.length&&(f=a.data(g[0],"droppable"),f.greedyChild=e=="isover"?1:0)}f&&e=="isover"&&(f.isover=0,f.isout=1,f._out.call(f,c)),this[e]=1,this[e=="isout"?"isover":"isout"]=0,this[e=="isover"?"_over":"_out"].call(this,c),f&&e=="isout"&&(f.isout=0,f.isover=1,f._over.call(f,c))}})},dragStop:function(b,c){b.element.parents(":not(body,html)").unbind("scroll.droppable"),b.options.refreshPositions||a.ui.ddmanager.prepareOffsets(b,c)}}}(jQuery),function(a,b){a.widget("ui.resizable",a.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1e3},_create:function(){var b=this,c=this.options;this.element.addClass("ui-resizable"),a.extend(this,{_aspectRatio:!!c.aspectRatio,aspectRatio:c.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:c.helper||c
 .ghost||c.animate?c.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(a('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,displ
 ay:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=c.handles||(a(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se");if(this.handles.constructor==String){this.handles=="all"&&(this.handles="n,e,s,w,se,sw,ne,nw");var d=this.handles.split(",");this.handles={};for(var e=0;e<d.length;e++){var f=a.trim(d[e]),g="ui-resizable-"+f,h=a('<div class="ui-resizable-handle '+g+'"></div>');/sw|se|ne|nw/.test(f)&&h.css({zIndex:++c.zIndex}),"se"==f&&h.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[f]=".ui-resizable-"+f,this.element.append(h)}}this._renderAxis=function(b){b=b||this.element;for(var c in this.handles){this.handles[c].constructor==String&&(this.handles[c]=a(this.handles[c],this.element).show());if(this.elementIsWrapper&&this.or
 iginalElement[0].nodeName.match(/textarea|input|select|button/i)){var d=a(this.handles[c],this.element),e=0;e=/sw|ne|nw|se|n|s/.test(c)?d.outerHeight():d.outerWidth();var f=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join("");b.css(f,e),this._proportionallyResize()}if(!a(this.handles[c]).length)continue}},this._renderAxis(this.element),this._handles=a(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!b.resizing){if(this.className)var a=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=a&&a[1]?a[1]:"se"}}),c.autoHide&&(this._handles.hide(),a(this.element).addClass("ui-resizable-autohide").hover(function(){c.disabled||(a(this).removeClass("ui-resizable-autohide"),b._handles.show())},function(){c.disabled||b.resizing||(a(this).addClass("ui-resizable-autohide"),b._handles.hide())})),this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(b){a(b).removeClass("ui
 -resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var c=this.element;c.after(this.originalElement.css({position:c.css("position"),width:c.outerWidth(),height:c.outerHeight(),top:c.css("top"),left:c.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle),b(this.originalElement);return this},_mouseCapture:function(b){var c=!1;for(var d in this.handles)a(this.handles[d])[0]==b.target&&(c=!0);return!this.options.disabled&&c},_mouseStart:function(b){var d=this.options,e=this.element.position(),f=this.element;this.resizing=!0,this.documentScroll={top:a(document).scrollTop(),left:a(document).scrollLeft()},(f.is(".ui-draggable")||/absolute/.test(f.css("position")))&&f.css({position:"absolute",top:e.top,left:e.left}),this._renderProxy();var g=c(this.helper.css("left")),h=c(this.helper.css("top"));d.containment&&(g+=a(d.containment).s
 crollLeft()||0,h+=a(d.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:g,top:h},this.size=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalSize=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalPosition={left:g,top:h},this.sizeDiff={width:f.outerWidth()-f.width(),height:f.outerHeight()-f.height()},this.originalMousePosition={left:b.pageX,top:b.pageY},this.aspectRatio=typeof d.aspectRatio=="number"?d.aspectRatio:this.originalSize.width/this.originalSize.height||1;var i=a(".ui-resizable-"+this.axis).css("cursor");a("body").css("cursor",i=="auto"?this.axis+"-resize":i),f.addClass("ui-resizable-resizing"),this._propagate("start",b);return!0},_mouseDrag:function(b){var c=this.helper,d=this.options,e={},f=this,g=this.originalMousePosition,h=this.axis,i=b.pageX-g.left||0,j=b.pageY-g.top||0,k=this._change[h];if(!k)return!1;var l=k.apply(this,[
 b,i,j]),m=a.browser.msie&&a.browser.version<7,n=this.sizeDiff;this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)l=this._updateRatio(l,b);l=this._respectSize(l,b),this._propagate("resize",b),c.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"}),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),this._updateCache(l),this._trigger("resize",b,this.ui());return!1},_mouseStop:function(b){this.resizing=!1;var c=this.options,d=this;if(this._helper){var e=this._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName),g=f&&a.ui.hasScroll(e[0],"left")?0:d.sizeDiff.height,h=f?0:d.sizeDiff.width,i={width:d.helper.width()-h,height:d.helper.height()-g},j=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,k=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;c.animate||this.element.css(a.extend(i,{
 top:k,left:j})),d.helper.height(d.size.height),d.helper.width(d.size.width),this._helper&&!c.animate&&this._proportionallyResize()}a("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",b),this._helper&&this.helper.remove();return!1},_updateVirtualBoundaries:function(a){var b=this.options,c,e,f,g,h;h={minWidth:d(b.minWidth)?b.minWidth:0,maxWidth:d(b.maxWidth)?b.maxWidth:Infinity,minHeight:d(b.minHeight)?b.minHeight:0,maxHeight:d(b.maxHeight)?b.maxHeight:Infinity};if(this._aspectRatio||a)c=h.minHeight*this.aspectRatio,f=h.minWidth/this.aspectRatio,e=h.maxHeight*this.aspectRatio,g=h.maxWidth/this.aspectRatio,c>h.minWidth&&(h.minWidth=c),f>h.minHeight&&(h.minHeight=f),e<h.maxWidth&&(h.maxWidth=e),g<h.maxHeight&&(h.maxHeight=g);this._vBoundaries=h},_updateCache:function(a){var b=this.options;this.offset=this.helper.offset(),d(a.left)&&(this.position.left=a.left),d(a.top)&&(this.position.top=a.top),d(a.height)&&(this.size.height=a.height),
 d(a.width)&&(this.size.width=a.width)},_updateRatio:function(a,b){var c=this.options,e=this.position,f=this.size,g=this.axis;d(a.height)?a.width=a.height*this.aspectRatio:d(a.width)&&(a.height=a.width/this.aspectRatio),g=="sw"&&(a.left=e.left+(f.width-a.width),a.top=null),g=="nw"&&(a.top=e.top+(f.height-a.height),a.left=e.left+(f.width-a.width));return a},_respectSize:function(a,b){var c=this.helper,e=this._vBoundaries,f=this._aspectRatio||b.shiftKey,g=this.axis,h=d(a.width)&&e.maxWidth&&e.maxWidth<a.width,i=d(a.height)&&e.maxHeight&&e.maxHeight<a.height,j=d(a.width)&&e.minWidth&&e.minWidth>a.width,k=d(a.height)&&e.minHeight&&e.minHeight>a.height;j&&(a.width=e.minWidth),k&&(a.height=e.minHeight),h&&(a.width=e.maxWidth),i&&(a.height=e.maxHeight);var l=this.originalPosition.left+this.originalSize.width,m=this.position.top+this.size.height,n=/sw|nw|w/.test(g),o=/nw|ne|n/.test(g);j&&n&&(a.left=l-e.minWidth),h&&n&&(a.left=l-e.maxWidth),k&&o&&(a.top=m-e.minHeight),i&&o&&(a.top=m-e.maxHeig
 ht);var p=!a.width&&!a.height;p&&!a.left&&a.top?a.top=null:p&&!a.top&&a.left&&(a.left=null);return a},_proportionallyResize:function(){var b=this.options;if(!!this._proportionallyResizeElements.length){var c=this.helper||this.element;for(var d=0;d<this._proportionallyResizeElements.length;d++){var e=this._proportionallyResizeElements[d];if(!this.borderDif){var f=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],g=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];this.borderDif=a.map(f,function(a,b){var c=parseInt(a,10)||0,d=parseInt(g[b],10)||0;return c+d})}if(a.browser.msie&&(!!a(c).is(":hidden")||!!a(c).parents(":hidden").length))continue;e.css({height:c.height()-this.borderDif[0]-this.borderDif[2]||0,width:c.width()-this.borderDif[1]-this.borderDif[3]||0})}}},_renderProxy:function(){var b=this.element,c=this.options;this.elementOffset=b.offset();if(this._helper){this.helper=this.helper||a(
 '<div style="overflow:hidden;"></div>');var d=a.browser.msie&&a.browser.version<7,e=d?1:0,f=d?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+f,height:this.element.outerHeight()+f,position:"absolute",left:this.elementOffset.left-e+"px",top:this.elementOffset.top-e+"px",zIndex:++c.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(a,b,c){return{width:this.originalSize.width+b}},w:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{left:f.left+b,width:e.width-b}},n:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{top:f.top+c,height:e.height-c}},s:function(a,b,c){return{height:this.originalSize.height+c}},se:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},sw:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,c,d]))},ne:function(
 b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},nw:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,c,d]))}},_propagate:function(b,c){a.ui.plugin.call(this,b,[c,this.ui()]),b!="resize"&&this._trigger(b,c,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),a.extend(a.ui.resizable,{version:"1.8.18"}),a.ui.plugin.add("resizable","alsoResize",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=function(b){a(b).each(function(){var b=a(this);b.data("resizable-alsoresize",{width:parseInt(b.width(),10),height:parseInt(b.height(),10),left:parseInt(b.css("left"),10),top:parseInt(b.css("top"),10)})})};typeof e.alsoResize=="object"&&!e.alsoResize.parentNode?e.alsoResize.length?(e.alsoResize=e.alsoResize[0]
 ,f(e.alsoResize)):a.each(e.alsoResize,function(a){f(a)}):f(e.alsoResize)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.originalSize,g=d.originalPosition,h={height:d.size.height-f.height||0,width:d.size.width-f.width||0,top:d.position.top-g.top||0,left:d.position.left-g.left||0},i=function(b,d){a(b).each(function(){var b=a(this),e=a(this).data("resizable-alsoresize"),f={},g=d&&d.length?d:b.parents(c.originalElement[0]).length?["width","height"]:["width","height","top","left"];a.each(g,function(a,b){var c=(e[b]||0)+(h[b]||0);c&&c>=0&&(f[b]=c||null)}),b.css(f)})};typeof e.alsoResize=="object"&&!e.alsoResize.nodeType?a.each(e.alsoResize,function(a,b){i(a,b)}):i(e.alsoResize)},stop:function(b,c){a(this).removeData("resizable-alsoresize")}}),a.ui.plugin.add("resizable","animate",{stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d._proportionallyResizeElements,g=f.length&&/textarea/i.test(f[0].nodeName),h=g&&a.ui.hasScroll(f[0],"left")?0:d.sizeDiff.h
 eight,i=g?0:d.sizeDiff.width,j={width:d.size.width-i,height:d.size.height-h},k=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,l=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;d.element.animate(a.extend(j,l&&k?{top:l,left:k}:{}),{duration:e.animateDuration,easing:e.animateEasing,step:function(){var c={width:parseInt(d.element.css("width"),10),height:parseInt(d.element.css("height"),10),top:parseInt(d.element.css("top"),10),left:parseInt(d.element.css("left"),10)};f&&f.length&&a(f[0]).css({width:c.width,height:c.height}),d._updateCache(c),d._propagate("resize",b)}})}}),a.ui.plugin.add("resizable","containment",{start:function(b,d){var e=a(this).data("resizable"),f=e.options,g=e.element,h=f.containment,i=h instanceof a?h.get(0):/parent/.test(h)?g.parent().get(0):h;if(!!i){e.containerElement=a(i);if(/document/.test(h)||h==document)e.containerOffset={left:0,top:0},e.containerPosition={left:0,top:0},e.parentData={element
 :a(document),left:0,top:0,width:a(document).width(),height:a(document).height()||document.body.parentNode.scrollHeight};else{var j=a(i),k=[];a(["Top","Right","Left","Bottom"]).each(function(a,b){k[a]=c(j.css("padding"+b))}),e.containerOffset=j.offset(),e.containerPosition=j.position(),e.containerSize={height:j.innerHeight()-k[3],width:j.innerWidth()-k[1]};var l=e.containerOffset,m=e.containerSize.height,n=e.containerSize.width,o=a.ui.hasScroll(i,"left")?i.scrollWidth:n,p=a.ui.hasScroll(i)?i.scrollHeight:m;e.parentData={element:i,left:l.left,top:l.top,width:o,height:p}}}},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.containerSize,g=d.containerOffset,h=d.size,i=d.position,j=d._aspectRatio||b.shiftKey,k={top:0,left:0},l=d.containerElement;l[0]!=document&&/static/.test(l.css("position"))&&(k=g),i.left<(d._helper?g.left:0)&&(d.size.width=d.size.width+(d._helper?d.position.left-g.left:d.position.left-k.left),j&&(d.size.height=d.size.width/e.aspectRatio),d.position.
 left=e.helper?g.left:0),i.top<(d._helper?g.top:0)&&(d.size.height=d.size.height+(d._helper?d.position.top-g.top:d.position.top),j&&(d.size.width=d.size.height*e.aspectRatio),d.position.top=d._helper?g.top:0),d.offset.left=d.parentData.left+d.position.left,d.offset.top=d.parentData.top+d.position.top;var m=Math.abs((d._helper?d.offset.left-k.left:d.offset.left-k.left)+d.sizeDiff.width),n=Math.abs((d._helper?d.offset.top-k.top:d.offset.top-g.top)+d.sizeDiff.height),o=d.containerElement.get(0)==d.element.parent().get(0),p=/relative|absolute/.test(d.containerElement.css("position"));o&&p&&(m-=d.parentData.left),m+d.size.width>=d.parentData.width&&(d.size.width=d.parentData.width-m,j&&(d.size.height=d.size.width/d.aspectRatio)),n+d.size.height>=d.parentData.height&&(d.size.height=d.parentData.height-n,j&&(d.size.width=d.size.height*d.aspectRatio))},stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.position,g=d.containerOffset,h=d.containerPosition,i=d.containerElement,j=
 a(d.helper),k=j.offset(),l=j.outerWidth()-d.sizeDiff.width,m=j.outerHeight()-d.sizeDiff.height;d._helper&&!e.animate&&/relative/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m}),d._helper&&!e.animate&&/static/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m})}}),a.ui.plugin.add("resizable","ghost",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size;d.ghost=d.originalElement.clone(),d.ghost.css({opacity:.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof e.ghost=="string"?e.ghost:""),d.ghost.appendTo(d.helper)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})},stop:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.helper&&d.helper.get(0).removeChild(d.ghost.get(0))}}),a.ui.plugin.add("resizab
 le","grid",{resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size,g=d.originalSize,h=d.originalPosition,i=d.axis,j=e._aspectRatio||b.shiftKey;e.grid=typeof e.grid=="number"?[e.grid,e.grid]:e.grid;var k=Math.round((f.width-g.width)/(e.grid[0]||1))*(e.grid[0]||1),l=Math.round((f.height-g.height)/(e.grid[1]||1))*(e.grid[1]||1);/^(se|s|e)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l):/^(ne)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l):/^(sw)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.left=h.left-k):(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l,d.position.left=h.left-k)}});var c=function(a){return parseInt(a,10)||0},d=function(a){return!isNaN(parseInt(a,10))}}(jQuery),function(a,b){a.widget("ui.selectable",a.ui.mouse,{options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var b=this;this.element.addClass("ui-selectable")
 ,this.dragged=!1;var c;this.refresh=function(){c=a(b.options.filter,b.element[0]),c.addClass("ui-selectee"),c.each(function(){var b=a(this),c=b.offset();a.data(this,"selectable-item",{element:this,$element:b,left:c.left,top:c.top,right:c.left+b.outerWidth(),bottom:c.top+b.outerHeight(),startselected:!1,selected:b.hasClass("ui-selected"),selecting:b.hasClass("ui-selecting"),unselecting:b.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=c.addClass("ui-selectee"),this._mouseInit(),this.helper=a("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable"),this._mouseDestroy();return this},_mouseStart:function(b){var c=this;this.opos=[b.pageX,b.pageY];if(!this.options.disabled){var d=this.options;this.selectees=a(d.filter,this.element[0]),this._trigger("start",b),a(d.appendTo).append(this.he
 lper),this.helper.css({left:b.clientX,top:b.clientY,width:0,height:0}),d.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var d=a.data(this,"selectable-item");d.startselected=!0,!b.metaKey&&!b.ctrlKey&&(d.$element.removeClass("ui-selected"),d.selected=!1,d.$element.addClass("ui-unselecting"),d.unselecting=!0,c._trigger("unselecting",b,{unselecting:d.element}))}),a(b.target).parents().andSelf().each(function(){var d=a.data(this,"selectable-item");if(d){var e=!b.metaKey&&!b.ctrlKey||!d.$element.hasClass("ui-selected");d.$element.removeClass(e?"ui-unselecting":"ui-selected").addClass(e?"ui-selecting":"ui-unselecting"),d.unselecting=!e,d.selecting=e,d.selected=e,e?c._trigger("selecting",b,{selecting:d.element}):c._trigger("unselecting",b,{unselecting:d.element});return!1}})}},_mouseDrag:function(b){var c=this;this.dragged=!0;if(!this.options.disabled){var d=this.options,e=this.opos[0],f=this.opos[1],g=b.pageX,h=b.pageY;if(e>g){var i=g;g=e,e=i}if(f>h){var
  i=h;h=f,f=i}this.helper.css({left:e,top:f,width:g-e,height:h-f}),this.selectees.each(function(){var i=a.data(this,"selectable-item");if(!!i&&i.element!=c.element[0]){var j=!1;d.tolerance=="touch"?j=!(i.left>g||i.right<e||i.top>h||i.bottom<f):d.tolerance=="fit"&&(j=i.left>e&&i.right<g&&i.top>f&&i.bottom<h),j?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,c._trigger("selecting",b,{selecting:i.element}))):(i.selecting&&((b.metaKey||b.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),c._trigger("unselecting",b,{unselecting:i.element}))),i.selected&&!b.metaKey&&!b.ctrlKey&&!i.startselected&&(i.$element.removeClass("ui-selec
 ted"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,c._trigger("unselecting",b,{unselecting:i.element})))}});return!1}},_mouseStop:function(b){var c=this;this.dragged=!1;var d=this.options;a(".ui-unselecting",this.element[0]).each(function(){var d=a.data(this,"selectable-item");d.$element.removeClass("ui-unselecting"),d.unselecting=!1,d.startselected=!1,c._trigger("unselected",b,{unselected:d.element})}),a(".ui-selecting",this.element[0]).each(function(){var d=a.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected"),d.selecting=!1,d.selected=!0,d.startselected=!0,c._trigger("selected",b,{selected:d.element})}),this._trigger("stop",b),this.helper.remove();return!1}}),a.extend(a.ui.selectable,{version:"1.8.18"})}(jQuery),function(a,b){a.widget("ui.sortable",a.ui.mouse,{widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSiz
 e:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3},_create:function(){var a=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?a.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},destroy:function(){a.Widget.prototype.destroy.call(this),this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var b=this.items.length-1;b>=0;b--)this.items[b].item.removeData(this.widgetName+"-item");return this},_setOption:function(b,c){b==="disabled"?(this.options[b]=c,this.widget()[c?"addClass":"removeClass"]("ui-sortable-disabled")):a.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(b,c)
 {var d=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type=="static")return!1;this._refreshItems(b);var e=null,f=this,g=a(b.target).parents().each(function(){if(a.data(this,d.widgetName+"-item")==f){e=a(this);return!1}});a.data(b.target,d.widgetName+"-item")==f&&(e=a(b.target));if(!e)return!1;if(this.options.handle&&!c){var h=!1;a(this.options.handle,e).find("*").andSelf().each(function(){this==b.target&&(h=!0)});if(!h)return!1}this.currentItem=e,this._removeCurrentsFromItems();return!0},_mouseStart:function(b,c,d){var e=this.options,f=this;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(b),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),a.extend(this.offset,{click:{le
 ft:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,e.cursorAt&&this._adjustOffsetFromHelper(e.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!=this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),e.containment&&this._setContainment(),e.cursor&&(a("body").css("cursor")&&(this._storedCursor=a("body").css("cursor")),a("body").css("cursor",e.cursor)),e.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",e.opacity)),e.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",e.zIndex)),this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",b
 ,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!d)for(var g=this.containers.length-1;g>=0;g--)this.containers[g]._trigger("activate",b,f._uiHash(this));a.ui.ddmanager&&(a.ui.ddmanager.current=this),a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(b);return!0},_mouseDrag:function(b){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var c=this.options,d=!1;this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-b.pageY<c.scrollSensitivity?this.scrollParent[0].scrollTop=d=this.scrollParent[0].scrollTop+c.scrollSpeed:b.pageY-this.overflowOffset.top<c.scrollSensitivity&&(this.scrollParent[0].scrollTop=d=this.scrollParent[0].scrollTop-c.scrollSpeed),this.ove
 rflowOffset.left+this.scrollParent[0].offsetWidth-b.pageX<c.scrollSensitivity?this.scrollParent[0].scrollLeft=d=this.scrollParent[0].scrollLeft+c.scrollSpeed:b.pageX-this.overflowOffset.left<c.scrollSensitivity&&(this.scrollParent[0].scrollLeft=d=this.scrollParent[0].scrollLeft-c.scrollSpeed)):(b.pageY-a(document).scrollTop()<c.scrollSensitivity?d=a(document).scrollTop(a(document).scrollTop()-c.scrollSpeed):a(window).height()-(b.pageY-a(document).scrollTop())<c.scrollSensitivity&&(d=a(document).scrollTop(a(document).scrollTop()+c.scrollSpeed)),b.pageX-a(document).scrollLeft()<c.scrollSensitivity?d=a(document).scrollLeft(a(document).scrollLeft()-c.scrollSpeed):a(window).width()-(b.pageX-a(document).scrollLeft())<c.scrollSensitivity&&(d=a(document).scrollLeft(a(document).scrollLeft()+c.scrollSpeed))),d!==!1&&a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.hel
 per[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(var e=this.items.length-1;e>=0;e--){var f=this.items[e],g=f.item[0],h=this._intersectsWithPointer(f);if(!h)continue;if(g!=this.currentItem[0]&&this.placeholder[h==1?"next":"prev"]()[0]!=g&&!a.ui.contains(this.placeholder[0],g)&&(this.options.type=="semi-dynamic"?!a.ui.contains(this.element[0],g):!0)){this.direction=h==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(f))this._rearrange(b,f);else break;this._trigger("change",b,this._uiHash());break}}this._contactContainers(b),a.ui.ddmanager&&a.ui.ddmanager.drag(this,b),this._trigger("sort",b,this._uiHash()),this.lastPositionAbs=this.positionAbs;return!1},_mouseStop:function(b,c){if(!!b){a.ui.ddmanager&&!this.options.dropBehaviour&&a.ui.ddmanager.drop(this,b);if(this.options.revert){var d=this,e=d.placeholder.offset();d.reverting=!0,a(this.helper).animate({left:e.left-t
 his.offset.parent.left-d.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:e.top-this.offset.parent.top-d.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){d._clear(b)})}else this._clear(b,c);return!1}},cancel:function(){var b=this;if(this.dragging){this._mouseUp({target:null}),this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("deactivate",null,b._uiHash(this)),this.containers[c].containerCache.over&&(this.containers[c]._trigger("out",null,b._uiHash(this)),this.containers[c].containerCache.over=0)}this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),a.extend(this
 ,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?a(this.domPosition.prev).after(this.currentItem):a(this.domPosition.parent).prepend(this.currentItem));return this},serialize:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];b=b||{},a(c).each(function(){var c=(a(b.item||this).attr(b.attribute||"id")||"").match(b.expression||/(.+)[-=_](.+)/);c&&d.push((b.key||c[1]+"[]")+"="+(b.key&&b.expression?c[1]:c[2]))}),!d.length&&b.key&&d.push(b.key+"=");return d.join("&")},toArray:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];b=b||{},c.each(function(){d.push(a(b.item||this).attr(b.attribute||"id")||"")});return d},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,d=this.positionAbs.top,e=d+this.helperProportions.height,f=a.left,g=f+a.width,h=a.top,i=h+a.height,j=this.offset.click.top,k=this.offset.click.left,l=d+j>h&&d+j<i&&b+k>f&&b+k<g;return this.options.tolerance=="pointer"||this.options.force
 PointerForContainers||this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>a[this.floating?"width":"height"]?l:f<b+this.helperProportions.width/2&&c-this.helperProportions.width/2<g&&h<d+this.helperProportions.height/2&&e-this.helperProportions.height/2<i},_intersectsWithPointer:function(b){var c=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,b.top,b.height),d=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,b.left,b.width),e=c&&d,f=this._getDragVerticalDirection(),g=this._getDragHorizontalDirection();if(!e)return!1;return this.floating?g&&g=="right"||f=="down"?2:1:f&&(f=="down"?2:1)},_intersectsWithSides:function(b){var c=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,b.top+b.height/2,b.height),d=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,b.left+b.width/2,b.width),e=this._getDragVerticalDirection(),f=this._getDragHorizontalDirection();return this.floating&&f?f=="right"&&d||f=="left"&&!d:e&&(e
 =="down"&&c||e=="up"&&!c)},_getDragVerticalDirection:function(){var a=this.positionAbs.top-this.lastPositionAbs.top;return a!=0&&(a>0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a),this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(b){var c=this,d=[],e=[],f=this._connectWith();if(f&&b)for(var g=f.length-1;g>=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&e.push([a.isFunction(j.options.items)?j.options.items.call(j.element):a(j.options.items,j.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),j])}}e.push
-([a.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):a(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var g=e.length-1;g>=0;g--)e[g][0].each(function(){d.push(this)});return a(d)},_removeCurrentsFromItems:function(){var a=this.currentItem.find(":data("+this.widgetName+"-item)");for(var b=0;b<this.items.length;b++)for(var c=0;c<a.length;c++)a[c]==this.items[b].item[0]&&this.items.splice(b,1)},_refreshItems:function(b){this.items=[],this.containers=[this];var c=this.items,d=this,e=[[a.isFunction(this.options.items)?this.options.items.call(this.element[0],b,{item:this.currentItem}):a(this.options.items,this.element),this]],f=this._connectWith();if(f&&this.ready)for(var g=f.length-1;g>=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&(e.push([a.isFunction(j.options.items)?j.options.items.call(
 j.element[0],b,{item:this.currentItem}):a(j.options.items,j.element),j]),this.containers.push(j))}}for(var g=e.length-1;g>=0;g--){var k=e[g][1],l=e[g][0];for(var i=0,m=l.length;i<m;i++){var n=a(l[i]);n.data(this.widgetName+"-item",k),c.push({item:n,instance:k,width:0,height:0,left:0,top:0})}}},refreshPositions:function(b){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());for(var c=this.items.length-1;c>=0;c--){var d=this.items[c];if(d.instance!=this.currentContainer&&this.currentContainer&&d.item[0]!=this.currentItem[0])continue;var e=this.options.toleranceElement?a(this.options.toleranceElement,d.item):d.item;b||(d.width=e.outerWidth(),d.height=e.outerHeight());var f=e.offset();d.left=f.left,d.top=f.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(var c=this.containers.length-1;c>=0;c--){var f=this.containers[c].element.offset();this.containers[c].containerCache.left=f.left,this.co
 ntainers[c].containerCache.top=f.top,this.containers[c].containerCache.width=this.containers[c].element.outerWidth(),this.containers[c].containerCache.height=this.containers[c].element.outerHeight()}return this},_createPlaceholder:function(b){var c=b||this,d=c.options;if(!d.placeholder||d.placeholder.constructor==String){var e=d.placeholder;d.placeholder={element:function(){var b=a(document.createElement(c.currentItem[0].nodeName)).addClass(e||c.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];e||(b.style.visibility="hidden");return b},update:function(a,b){if(!e||!!d.forcePlaceholderSize)b.height()||b.height(c.currentItem.innerHeight()-parseInt(c.currentItem.css("paddingTop")||0,10)-parseInt(c.currentItem.css("paddingBottom")||0,10)),b.width()||b.width(c.currentItem.innerWidth()-parseInt(c.currentItem.css("paddingLeft")||0,10)-parseInt(c.currentItem.css("paddingRight")||0,10))}}}c.placeholder=a(d.placeholder.element.call(c.element,c.currentIt
 em)),c.currentItem.after(c.placeholder),d.placeholder.update(c,c.placeholder)},_contactContainers:function(b){var c=null,d=null;for(var e=this.containers.length-1;e>=0;e--){if(a.ui.contains(this.currentItem[0],this.containers[e].element[0]))continue;if(this._intersectsWith(this.containers[e].containerCache)){if(c&&a.ui.contains(this.containers[e].element[0],c.element[0]))continue;c=this.containers[e],d=e}else this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",b,this._uiHash(this)),this.containers[e].containerCache.over=0)}if(!!c)if(this.containers.length===1)this.containers[d]._trigger("over",b,this._uiHash(this)),this.containers[d].containerCache.over=1;else if(this.currentContainer!=this.containers[d]){var f=1e4,g=null,h=this.positionAbs[this.containers[d].floating?"left":"top"];for(var i=this.items.length-1;i>=0;i--){if(!a.ui.contains(this.containers[d].element[0],this.items[i].item[0]))continue;var j=this.items[i][this.containers[d].floating?"left":"top"]
 ;Math.abs(j-h)<f&&(f=Math.abs(j-h),g=this.items[i])}if(!g&&!this.options.dropOnEmpty)return;this.currentContainer=this.containers[d],g?this._rearrange(b,g,null,!0):this._rearrange(b,null,this.containers[d].element,!0),this._trigger("change",b,this._uiHash()),this.containers[d]._trigger("change",b,this._uiHash(this)),this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[d]._trigger("over",b,this._uiHash(this)),this.containers[d].containerCache.over=1}},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b,this.currentItem])):c.helper=="clone"?this.currentItem.clone():this.currentItem;d.parents("body").length||a(c.appendTo!="parent"?c.appendTo:this.currentItem[0].parentNode)[0].appendChild(d[0]),d[0]==this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.c
 urrentItem.css("left")}),(d[0].style.width==""||c.forceHelperSize)&&d.width(this.currentItem.width()),(d[0].style.height==""||c.forceHelperSize)&&d.height(this.currentItem.height());return d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.o
 ffsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.currentItem.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[0-this.offset.rel
 ative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)){var c=a(b.containment)[0],d=a(b.containment).offset(),e=a(c).css("overflow")!="hidden";this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(e?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(e?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("bord
 erTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scr
 ollParent,e=/(html|body)/i.test(d[0].tagName);this.cssPosition=="relative"&&(this.scrollParent[0]==document||this.scrollParent[0]==this.offsetParent[0])&&(this.offset.relative=this._getRelativeOffset());var f=b.pageX,g=b.pageY;if(this.originalPosition){this.containment&&(b.pageX-this.offset.click.left<this.containment[0]&&(f=this.containment[0]+this.offset.click.left),b.pageY-this.offset.click.top<this.containment[1]&&(g=this.containment[1]+this.offset.click.top),b.pageX-this.offset.click.left>this.containment[2]&&(f=this.containment[2]+this.offset.click.left),b.pageY-this.offset.click.top>this.containment[3]&&(g=this.containment[3]+this.offset.click.top));if(c.grid){var h=this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1];g=this.containment?h-this.offset.click.top<this.containment[1]||h-this.offset.click.top>this.containment[3]?h-this.offset.click.top<this.containment[1]?h+c.grid[1]:h-c.grid[1]:h:h;var i=this.originalPageX+Math.round((f-this.originalPageX)/c.
 grid[0])*c.grid[0];f=this.containment?i-this.offset.click.left<this.containment[0]||i-this.offset.click.left>this.containment[2]?i-this.offset.click.left<this.containment[0]?i+c.grid[0]:i-c.grid[0]:i:i}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:d.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:d.scrollLeft())}},_rearrange:function(a,b,c,d){c?c[0].appendChild(this.placeholder[0]):b.item[0].parentNode.insertBefore(this.placeholder[0],this.direction=="down"?b.item[0]:b.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var e=this,f=this.counter;window.setTimeout(function(){f==e.counter&&e.refreshPositions(!d)},0)},_clear:function(b,c){this.reverting=!1;var d=[],e=this;!this._
 noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var f in this._storedCSS)if(this._storedCSS[f]=="auto"||this._storedCSS[f]=="static")this._storedCSS[f]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!c&&d.push(function(a){this._trigger("receive",a,this._uiHash(this.fromOutside))}),(this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!c&&d.push(function(a){this._trigger("update",a,this._uiHash())});if(!a.ui.contains(this.element[0],this.currentItem[0])){c||d.push(function(a){this._trigger("remove",a,this._uiHash())});for(var f=this.containers.length-1;f>=0;f--)a.ui.contains(this.containers[f].element[0],this.currentItem[0])&&!c&&(d.push(function(a){return function(b){a._trigger("receive",b,this._uiHash(thi
 s))}}.call(this,this.containers[f])),d.push(function(a){return function(b){a._trigger("update",b,this._uiHash(this))}}.call(this,this.containers[f])))}for(var f=this.containers.length-1;f>=0;f--)c||d.push(function(a){return function(b){a._trigger("deactivate",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over&&(d.push(function(a){return function(b){a._trigger("out",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over=0);this._storedCursor&&a("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!c){this._trigger("beforeStop",b,this._uiHash());for(var f=0;f<d.length;f++)d[f].call(this,b);this._trigger("stop",b,this._uiHash())}return!1}c||this._trigger("beforeStop",b,this._uiHash()),this.placeholder[0].pare
 ntNode.removeChild(this.placeholder[0]),this.helper[0]!=this.currentItem[0]&&this.helper.remove(),this.helper=null;if(!c){for(var f=0;f<d.length;f++)d[f].call(this,b);this._trigger("stop",b,this._uiHash())}this.fromOutside=!1;return!0},_trigger:function(){a.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(b){var c=b||this;return{helper:c.helper,placeholder:c.placeholder||a([]),position:c.position,originalPosition:c.originalPosition,offset:c.positionAbs,item:c.currentItem,sender:b?b.element:null}}}),a.extend(a.ui.sortable,{version:"1.8.18"})}(jQuery),jQuery.effects||function(a,b){function l(b){if(!b||typeof b=="number"||a.fx.speeds[b])return!0;if(typeof b=="string"&&!a.effects[b])return!0;return!1}function k(b,c,d,e){typeof b=="object"&&(e=c,d=null,c=b,b=c.effect),a.isFunction(c)&&(e=c,d=null,c={});if(typeof c=="number"||a.fx.speeds[c])e=d,d=c,c={};a.isFunction(d)&&(e=d,d=null),c=c||{},d=d||c.duration,d=a.fx.off?0:typeof d=="number"?d:d in a.fx.sp
 eeds?a.fx.speeds[d]:a.fx.speeds._default,e=e||c.complete;return[b,c,d,e]}function j(a,b){var c={_:0},d;for(d in b)a[d]!=b[d]&&(c[d]=b[d]);return c}function i(b){var c,d;for(c in b)d=b[c],(d==null||a.isFunction(d)||c in g||/scrollbar/.test(c)||!/color/i.test(c)&&isNaN(parseFloat(d)))&&delete b[c];return b}function h(){var a=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,b={},c,d;if(a&&a.length&&a[0]&&a[a[0]]){var e=a.length;while(e--)c=a[e],typeof a[c]=="string"&&(d=c.replace(/\-(\w)/g,function(a,b){return b.toUpperCase()}),b[d]=a[c])}else for(c in a)typeof a[c]=="string"&&(b[c]=a[c]);return b}function d(b,d){var e;do{e=a.curCSS(b,d);if(e!=""&&e!="transparent"||a.nodeName(b,"body"))break;d="backgroundColor"}while(b=b.parentNode);return c(e)}function c(b){var c;if(b&&b.constructor==Array&&b.length==3)return b;if(c=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(b))return[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],1
 0)];if(c=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(b))return[parseFloat(c[1])*2.55,parseFloat(c[2])*2.55,parseFloat(c[3])*2.55];if(c=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(b))return[parseInt(c[1],16),parseInt(c[2],16),parseInt(c[3],16)];if(c=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(b))return[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)];if(c=/rgba\(0, 0, 0, 0\)/.exec(b))return e.transparent;return e[a.trim(b).toLowerCase()]}a.effects={},a.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","borderColor","color","outlineColor"],function(b,e){a.fx.step[e]=function(a){a.colorInit||(a.start=d(a.elem,e),a.end=c(a.end),a.colorInit=!0),a.elem.style[e]="rgb("+Math.max(Math.min(parseInt(a.pos*(a.end[0]-a.start[0])+a.start[0],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[1]-a.start[1])+a.start[1],10),255),0)+","+Math.max(Math.mi
 n(parseInt(a.pos*(a.end[2]-a.start[2])+a.start[2],10),255),0)+")"}});var e={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},f=["add","remove","toggle"],g
 ={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};a.effects.animateClass=function(b,c,d,e){a.isFunction(d)&&(e=d,d=null);return this.queue(function(){var g=a(this),k=g.attr("style")||" ",l=i(h.call(this)),m,n=g.attr("class");a.each(f,function(a,c){b[c]&&g[c+"Class"](b[c])}),m=i(h.call(this)),g.attr("class",n),g.animate(j(l,m),{queue:!1,duration:c,easing:d,complete:function(){a.each(f,function(a,c){b[c]&&g[c+"Class"](b[c])}),typeof g.attr("style")=="object"?(g.attr("style").cssText="",g.attr("style").cssText=k):g.attr("style",k),e&&e.apply(this,arguments),a.dequeue(this)}})})},a.fn.extend({_addClass:a.fn.addClass,addClass:function(b,c,d,e){return c?a.effects.animateClass.apply(this,[{add:b},c,d,e]):this._addClass(b)},_removeClass:a.fn.removeClass,removeClass:function(b,c,d,e){return c?a.effects.animateClass.apply(this,[{remove:b},c,d,e]):this._removeClass(b)},_toggleClass:a.fn.toggleClass,toggleClass:function(c,d,e,f,g){r
 eturn typeof d=="boolean"||d===b?e?a.effects.animateClass.apply(this,[d?{add:c}:{remove:c},e,f,g]):this._toggleClass(c,d):a.effects.animateClass.apply(this,[{toggle:c},d,e,f])},switchClass:function(b,c,d,e,f){return a.effects.animateClass.apply(this,[{add:c,remove:b},d,e,f])}}),a.extend(a.effects,{version:"1.8.18",save:function(a,b){for(var c=0;c<b.length;c++)b[c]!==null&&a.data("ec.storage."+b[c],a[0].style[b[c]])},restore:function(a,b){for(var c=0;c<b.length;c++)b[c]!==null&&a.css(b[c],a.data("ec.storage."+b[c]))},setMode:function(a,b){b=="toggle"&&(b=a.is(":hidden")?"show":"hide");return b},getBaseline:function(a,b){var c,d;switch(a[0]){case"top":c=0;break;case"middle":c=.5;break;case"bottom":c=1;break;default:c=a[0]/b.height}switch(a[1]){case"left":d=0;break;case"center":d=.5;break;case"right":d=1;break;default:d=a[1]/b.width}return{x:d,y:c}},createWrapper:function(b){if(b.parent().is(".ui-effects-wrapper"))return b.parent();var c={width:b.outerWidth(!0),height:b.outerHeight(!0)
 ,"float":b.css("float")},d=a("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e=document.activeElement;b.wrap(d),(b[0]===e||a.contains(b[0],e))&&a(e).focus(),d=b.parent(),b.css("position")=="static"?(d.css({position:"relative"}),b.css({position:"relative"})):(a.extend(c,{position:b.css("position"),zIndex:b.css("z-index")}),a.each(["top","left","bottom","right"],function(a,d){c[d]=b.css(d),isNaN(parseInt(c[d],10))&&(c[d]="auto")}),b.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"}));return d.css(c).show()},removeWrapper:function(b){var c,d=document.activeElement;if(b.parent().is(".ui-effects-wrapper")){c=b.parent().replaceWith(b),(b[0]===d||a.contains(b[0],d))&&a(d).focus();return c}return b},setTransition:function(b,c,d,e){e=e||{},a.each(c,function(a,c){unit=b.cssUnit(c),unit[0]>0&&(e[c]=unit[0]*d+unit[1])});return e}}),a.fn.extend({effect:function(b,c,d,e){var f=k.apply(this,arguments),g=
 {options:f[1],duration:f[2],callback:f[3]},h=g.options.mode,i=a.effects[b];if(a.fx.off||!i)return h?this[h](g.duration,g.callback):this.each(function(){g.callback&&g.callback.call(this)});return i.call(this,g)},_show:a.fn.show,show:function(a){if(l(a))return this._show.apply(this,arguments);var b=k.apply(this,arguments);b[1].mode="show";return this.effect.apply(this,b)},_hide:a.fn.hide,hide:function(a){if(l(a))return this._hide.apply(this,arguments);var b=k.apply(this,arguments);b[1].mode="hide";return this.effect.apply(this,b)},__toggle:a.fn.toggle,toggle:function(b){if(l(b)||typeof b=="boolean"||a.isFunction(b))return this.__toggle.apply(this,arguments);var c=k.apply(this,arguments);c[1].mode="toggle";return this.effect.apply(this,c)},cssUnit:function(b){var c=this.css(b),d=[];a.each(["em","px","%","pt"],function(a,b){c.indexOf(b)>0&&(d=[parseFloat(c),b])});return d}}),a.easing.jswing=a.easing.swing,a.extend(a.easing,{def:"easeOutQuad",swing:function(b,c,d,e,f){return a.easing[a.e
 asing.def](b,c,d,e,f)},easeInQuad:function(a,b,c,d,e){return d*(b/=e)*b+c},easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c},easeInOutQuad:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b+c;return-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b+c;return d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c},easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b*b+c;return-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b*b*b+c;return d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){
 return d*Math.sin(b/e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return b==0?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){if(b==0)return c;if(b==e)return c+d;if((b/=e/2)<1)return d/2*Math.pow(2,10*(b-1))+c;return d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)*b)+c},easeInOutCirc:function(a,b,c,d,e){if((b/=e/2)<1)return-d/2*(Math.sqrt(1-b*b)-1)+c;return d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e)==1)return c+d;g||(g=e*.3);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g))+c},easeOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)retur
 n c;if((b/=e)==1)return c+d;g||(g=e*.3);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*b)*Math.sin((b*e-f)*2*Math.PI/g)+d+c},easeInOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e/2)==2)return c+d;g||(g=e*.3*1.5);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);if(b<1)return-0.5*h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g)+c;return h*Math.pow(2,-10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g)*.5+d+c},easeInBack:function(a,c,d,e,f,g){g==b&&(g=1.70158);return e*(c/=f)*c*((g+1)*

<TRUNCATED>

[49/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/css/usergrid-stripped.css
----------------------------------------------------------------------
diff --git a/deleted/archive/css/usergrid-stripped.css b/deleted/archive/css/usergrid-stripped.css
deleted file mode 100644
index d93058c..0000000
--- a/deleted/archive/css/usergrid-stripped.css
+++ /dev/null
@@ -1,5199 +0,0 @@
-/*!
- * Bootstrap v2.0.0
- *
- * Copyright 2012 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
- */
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-nav,
-section {
-  display: block;
-}
-audio,
-canvas,
-video {
-  display: inline-block;
-  *display: inline;
-  *zoom: 1;
-}
-audio:not([controls]) {
-  display: none;
-}
-html {
-  font-size: 100%;
-  -webkit-text-size-adjust: 100%;
-  -ms-text-size-adjust: 100%;
-}
-a:focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-a:hover,
-a:active {
-  outline: 0;
-}
-sub,
-sup {
-  position: relative;
-  font-size: 75%;
-  line-height: 0;
-  vertical-align: baseline;
-}
-sup {
-  top: -0.5em;
-}
-sub {
-  bottom: -0.25em;
-}
-img {
-  max-width: 100%;
-  height: auto;
-  border: 0;
-  -ms-interpolation-mode: bicubic;
-}
-button,
-input,
-select,
-textarea {
-  margin: 0;
-  font-size: 100%;
-  vertical-align: middle;
-}
-button,
-input {
-  *overflow: visible;
-  line-height: normal;
-}
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-button,
-input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  cursor: pointer;
-  -webkit-appearance: button;
-}
-input[type="search"] {
-  -webkit-appearance: textfield;
-  -webkit-box-sizing: content-box;
-  -moz-box-sizing: content-box;
-  box-sizing: content-box;
-}
-input[type="search"]::-webkit-search-decoration,
-input[type="search"]::-webkit-search-cancel-button {
-  -webkit-appearance: none;
-}
-textarea {
-  overflow: auto;
-  vertical-align: top;
-}
-body {
-  margin: 0;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  line-height: 18px;
-  color: #333333;
-  background-color: #ffffff;
-}
-a {
-  color: #1b97d1;
-  text-decoration: none;
-}
-a:hover {
-  color: #12668d;
-  text-decoration: underline;
-}
-.row {
-  margin-left: -20px;
-  *zoom: 1;
-}
-.row:before,
-.row:after {
-  display: table;
-  content: "";
-}
-.row:after {
-  clear: both;
-}
-[class*="span"] {
-  float: left;
-  margin-left: 20px;
-}
-.span1 {
-  width: 60px;
-}
-.span2 {
-  width: 140px;
-}
-.span3 {
-  width: 220px;
-}
-.span4 {
-  width: 300px;
-}
-.span5 {
-  width: 380px;
-}
-.span6 {
-  width: 460px;
-}
-.span7 {
-  width: 540px;
-}
-.span8 {
-  width: 620px;
-}
-.span9 {
-  width: 700px;
-}
-.span10 {
-  width: 780px;
-}
-.span11 {
-  width: 860px;
-}
-.span12,
-.container {
-  width: 940px;
-}
-.offset1 {
-  margin-left: 100px;
-}
-.offset2 {
-  margin-left: 180px;
-}
-.offset3 {
-  margin-left: 260px;
-}
-.offset4 {
-  margin-left: 340px;
-}
-.offset5 {
-  margin-left: 420px;
-}
-.offset6 {
-  margin-left: 500px;
-}
-.offset7 {
-  margin-left: 580px;
-}
-.offset8 {
-  margin-left: 660px;
-}
-.offset9 {
-  margin-left: 740px;
-}
-.offset10 {
-  margin-left: 820px;
-}
-.offset11 {
-  margin-left: 900px;
-}
-.row-fluid {
-  width: 100%;
-  *zoom: 1;
-}
-.row-fluid:before,
-.row-fluid:after {
-  display: table;
-  content: "";
-}
-.row-fluid:after {
-  clear: both;
-}
-.row-fluid > [class*="span"] {
-  float: left;
-  margin-left: 2.127659574%;
-}
-.row-fluid > [class*="span"]:first-child {
-  margin-left: 0;
-}
-.row-fluid .span1 {
-  width: 6.382978723%;
-}
-.row-fluid .span2 {
-  width: 14.89361702%;
-}
-.row-fluid .span3 {
-  width: 23.404255317%;
-}
-.row-fluid .span4 {
-  width: 31.914893614%;
-}
-.row-fluid .span5 {
-  width: 40.425531911%;
-}
-.row-fluid .span6 {
-  width: 48.93617020799999%;
-}
-.row-fluid .span7 {
-  width: 57.446808505%;
-}
-.row-fluid .span8 {
-  width: 65.95744680199999%;
-}
-.row-fluid .span9 {
-  width: 74.468085099%;
-}
-.row-fluid .span10 {
-  width: 82.97872339599999%;
-}
-.row-fluid .span11 {
-  width: 91.489361693%;
-}
-.row-fluid .span12 {
-  width: 99.99999998999999%;
-}
-.container {
-  width: 940px;
-  margin-left: auto;
-  margin-right: auto;
-  *zoom: 1;
-}
-.container:before,
-.container:after {
-  display: table;
-  content: "";
-}
-.container:after {
-  clear: both;
-}
-.container-fluid {
-  padding-left: 20px;
-  padding-right: 20px;
-  *zoom: 1;
-}
-.container-fluid:before,
-.container-fluid:after {
-  display: table;
-  content: "";
-}
-.container-fluid:after {
-  clear: both;
-}
-p {
-  margin: 0 0 9px;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  line-height: 18px;
-}
-p small {
-  font-size: 11px;
-  color: #999999;
-}
-.lead {
-  margin-bottom: 18px;
-  font-size: 20px;
-  font-weight: 200;
-  line-height: 27px;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  margin: 0;
-  font-weight: bold;
-  color: #333333;
-  text-rendering: optimizelegibility;
-}
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small {
-  font-weight: normal;
-  color: #999999;
-}
-h1 {
-  font-size: 30px;
-  line-height: 36px;
-}
-h1 small {
-  font-size: 18px;
-}
-h2 {
-  font-size: 24px;
-  line-height: 36px;
-}
-h2 small {
-  font-size: 18px;
-}
-h3 {
-  line-height: 27px;
-  font-size: 18px;
-}
-h3 small {
-  font-size: 14px;
-}
-h4,
-h5,
-h6 {
-  line-height: 18px;
-}
-h4 {
-  font-size: 14px;
-}
-h4 small {
-  font-size: 12px;
-}
-h5 {
-  font-size: 12px;
-}
-h6 {
-  font-size: 11px;
-  color: #999999;
-  text-transform: uppercase;
-}
-.page-header {
-  padding-bottom: 17px;
-  margin: 18px 0;
-  border-bottom: 1px solid #eeeeee;
-}
-.page-header h1 {
-  line-height: 1;
-}
-ul,
-ol {
-  padding: 0;
-  margin: 0;
-}
-ul ul,
-ul ol,
-ol ol,
-ol ul {
-  margin-bottom: 0;
-}
-ul {
-  list-style: disc;
-}
-ol {
-  list-style: decimal;
-}
-li {
-  line-height: 18px;
-}
-ul.unstyled {
-  margin-left: 0;
-  list-style: none;
-}
-dl {
-  margin-bottom: 18px;
-}
-dt,
-dd {
-  line-height: 18px;
-}
-dt {
-  font-weight: bold;
-}
-dd {
-  margin-left: 9px;
-}
-hr {
-  margin: 18px 0;
-  border: 0;
-  border-top: 1px solid #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-strong {
-  font-weight: bold;
-}
-em {
-  font-style: italic;
-}
-.muted {
-  color: #999999;
-}
-abbr {
-  font-size: 90%;
-  text-transform: uppercase;
-  border-bottom: 1px dotted #ddd;
-  cursor: help;
-}
-blockquote {
-  padding: 0 0 0 15px;
-  margin: 0 0 18px;
-  border-left: 5px solid #eeeeee;
-}
-blockquote p {
-  margin-bottom: 0;
-  font-size: 16px;
-  font-weight: 300;
-  line-height: 22.5px;
-}
-blockquote small {
-  display: block;
-  line-height: 18px;
-  color: #999999;
-}
-blockquote small:before {
-  content: '\2014 \00A0';
-}
-blockquote.pull-right {
-  float: right;
-  padding-left: 0;
-  padding-right: 15px;
-  border-left: 0;
-  border-right: 5px solid #eeeeee;
-}
-blockquote.pull-right p,
-blockquote.pull-right small {
-  text-align: right;
-}
-q:before,
-q:after,
-blockquote:before,
-blockquote:after {
-  content: "";
-}
-address {
-  display: block;
-  margin-bottom: 18px;
-  line-height: 18px;
-  font-style: normal;
-}
-small {
-  font-size: 100%;
-}
-cite {
-  font-style: normal;
-}
-code,
-pre {
-  padding: 0 3px 2px;
-  font-family: Menlo, Monaco, "Courier New", monospace;
-  font-size: 12px;
-  color: #333333;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-code {
-  padding: 3px 4px;
-  color: #d14;
-  background-color: #f7f7f9;
-  border: 1px solid #e1e1e8;
-}
-pre {
-  display: block;
-  padding: 8.5px;
-  margin: 0 0 9px;
-  font-size: 12px;
-  line-height: 18px;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.15);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  white-space: pre;
-  white-space: pre-wrap;
-  word-break: break-all;
-}
-pre.prettyprint {
-  margin-bottom: 18px;
-}
-pre code {
-  padding: 0;
-  background-color: transparent;
-}
-form {
-  margin: 0 0 18px;
-}
-fieldset {
-  padding: 0;
-  margin: 0;
-  border: 0;
-}
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: 27px;
-  font-size: 19.5px;
-  line-height: 36px;
-  color: #333333;
-  border: 0;
-  border-bottom: 1px solid #eee;
-}
-label,
-input,
-button,
-select,
-textarea {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 18px;
-}
-label {
-  display: block;
-  margin-bottom: 5px;
-  color: #333333;
-}
-input,
-textarea,
-select,
-.uneditable-input {
-  display: inline-block;
-  width: 210px;
-  height: 18px;
-  padding: 4px;
-  margin-bottom: 9px;
-  font-size: 13px;
-  line-height: 18px;
-  color: #555555;
-  border: 1px solid #ccc;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.uneditable-textarea {
-  width: auto;
-  height: auto;
-}
-label input,
-label textarea,
-label select {
-  display: block;
-}
-input[type="image"],
-input[type="checkbox"],
-input[type="radio"] {
-  width: auto;
-  height: auto;
-  padding: 0;
-  margin: 3px 0;
-  *margin-top: 0;
-  /* IE7 */
-
-  line-height: normal;
-  border: 0;
-  cursor: pointer;
-  border-radius: 0 \0/;
-}
-input[type="file"] {
-  padding: initial;
-  line-height: initial;
-  border: initial;
-  background-color: #ffffff;
-  background-color: initial;
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  width: auto;
-  height: auto;
-}
-select,
-input[type="file"] {
-  height: 28px;
-  /* In IE7, the height of the select element cannot be changed by height, only font-size */
-
-  *margin-top: 4px;
-  /* For IE7, add top margin to align select with labels */
-
-  line-height: 28px;
-}
-select {
-  width: 220px;
-  background-color: #ffffff;
-}
-select[multiple],
-select[size] {
-  height: auto;
-}
-input[type="image"] {
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-textarea {
-  height: auto;
-}
-input[type="hidden"] {
-  display: none;
-}
-.radio,
-.checkbox {
-  padding-left: 18px;
-}
-.radio input[type="radio"],
-.checkbox input[type="checkbox"] {
-  float: left;
-  margin-left: -18px;
-}
-.controls > .radio:first-child,
-.controls > .checkbox:first-child {
-  padding-top: 5px;
-}
-.radio.inline,
-.checkbox.inline {
-  display: inline-block;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.radio.inline + .radio.inline,
-.checkbox.inline + .checkbox.inline {
-  margin-left: 10px;
-}
-.controls > .radio.inline:first-child,
-.controls > .checkbox.inline:first-child {
-  padding-top: 0;
-}
-input,
-textarea {
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
-  -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
-  -ms-transition: border linear 0.2s, box-shadow linear 0.2s;
-  -o-transition: border linear 0.2s, box-shadow linear 0.2s;
-  transition: border linear 0.2s, box-shadow linear 0.2s;
-}
-input:focus,
-textarea:focus {
-  border-color: rgba(82, 168, 236, 0.8);
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-  outline: 0;
-  outline: thin dotted \9;
-  /* IE6-8 */
-
-}
-input[type="file"]:focus,
-input[type="checkbox"]:focus,
-select:focus {
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.input-mini {
-  width: 60px;
-}
-.input-small {
-  width: 90px;
-}
-.input-medium {
-  width: 150px;
-}
-.input-large {
-  width: 210px;
-}
-.input-xlarge {
-  width: 270px;
-}
-.input-xxlarge {
-  width: 530px;
-}
-input[class*="span"],
-select[class*="span"],
-textarea[class*="span"],
-.uneditable-input {
-  float: none;
-  margin-left: 0;
-}
-input.span1,
-textarea.span1,
-.uneditable-input.span1 {
-  width: 50px;
-}
-input.span2,
-textarea.span2,
-.uneditable-input.span2 {
-  width: 130px;
-}
-input.span3,
-textarea.span3,
-.uneditable-input.span3 {
-  width: 210px;
-}
-input.span4,
-textarea.span4,
-.uneditable-input.span4 {
-  width: 290px;
-}
-input.span5,
-textarea.span5,
-.uneditable-input.span5 {
-  width: 370px;
-}
-input.span6,
-textarea.span6,
-.uneditable-input.span6 {
-  width: 450px;
-}
-input.span7,
-textarea.span7,
-.uneditable-input.span7 {
-  width: 530px;
-}
-input.span8,
-textarea.span8,
-.uneditable-input.span8 {
-  width: 610px;
-}
-input.span9,
-textarea.span9,
-.uneditable-input.span9 {
-  width: 690px;
-}
-input.span10,
-textarea.span10,
-.uneditable-input.span10 {
-  width: 770px;
-}
-input.span11,
-textarea.span11,
-.uneditable-input.span11 {
-  width: 850px;
-}
-input.span12,
-textarea.span12,
-.uneditable-input.span12 {
-  width: 930px;
-}
-input[disabled],
-select[disabled],
-textarea[disabled],
-input[readonly],
-select[readonly],
-textarea[readonly] {
-  background-color: #f5f5f5;
-  border-color: #ddd;
-  cursor: not-allowed;
-}
-.control-group.warning > label,
-.control-group.warning .help-block,
-.control-group.warning .help-inline {
-  color: #c09853;
-}
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  color: #c09853;
-  border-color: #c09853;
-}
-.control-group.warning input:focus,
-.control-group.warning select:focus,
-.control-group.warning textarea:focus {
-  border-color: #a47e3c;
-  -webkit-box-shadow: 0 0 6px #dbc59e;
-  -moz-box-shadow: 0 0 6px #dbc59e;
-  box-shadow: 0 0 6px #dbc59e;
-}
-.control-group.warning .input-prepend .add-on,
-.control-group.warning .input-append .add-on {
-  color: #c09853;
-  background-color: #fcf8e3;
-  border-color: #c09853;
-}
-.control-group.error > label,
-.control-group.error .help-block,
-.control-group.error .help-inline {
-  color: #b94a48;
-}
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  color: #b94a48;
-  border-color: #b94a48;
-}
-.control-group.error input:focus,
-.control-group.error select:focus,
-.control-group.error textarea:focus {
-  border-color: #953b39;
-  -webkit-box-shadow: 0 0 6px #d59392;
-  -moz-box-shadow: 0 0 6px #d59392;
-  box-shadow: 0 0 6px #d59392;
-}
-.control-group.error .input-prepend .add-on,
-.control-group.error .input-append .add-on {
-  color: #b94a48;
-  background-color: #f2dede;
-  border-color: #b94a48;
-}
-.control-group.success > label,
-.control-group.success .help-block,
-.control-group.success .help-inline {
-  color: #468847;
-}
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  color: #468847;
-  border-color: #468847;
-}
-.control-group.success input:focus,
-.control-group.success select:focus,
-.control-group.success textarea:focus {
-  border-color: #356635;
-  -webkit-box-shadow: 0 0 6px #7aba7b;
-  -moz-box-shadow: 0 0 6px #7aba7b;
-  box-shadow: 0 0 6px #7aba7b;
-}
-.control-group.success .input-prepend .add-on,
-.control-group.success .input-append .add-on {
-  color: #468847;
-  background-color: #dff0d8;
-  border-color: #468847;
-}
-input:focus:required:invalid,
-textarea:focus:required:invalid,
-select:focus:required:invalid {
-  color: #b94a48;
-  border-color: #ee5f5b;
-}
-input:focus:required:invalid:focus,
-textarea:focus:required:invalid:focus,
-select:focus:required:invalid:focus {
-  border-color: #e9322d;
-  -webkit-box-shadow: 0 0 6px #f8b9b7;
-  -moz-box-shadow: 0 0 6px #f8b9b7;
-  box-shadow: 0 0 6px #f8b9b7;
-}
-.form-actions {
-  padding: 17px 20px 18px;
-  margin-top: 18px;
-  margin-bottom: 18px;
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-}
-.uneditable-input {
-  display: block;
-  background-color: #ffffff;
-  border-color: #eee;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  cursor: not-allowed;
-}
-:-moz-placeholder {
-  color: #999999;
-}
-::-webkit-input-placeholder {
-  color: #999999;
-}
-.help-block {
-  margin-top: 5px;
-  margin-bottom: 0;
-  color: #999999;
-}
-.help-inline {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  margin-bottom: 9px;
-  vertical-align: middle;
-  padding-left: 5px;
-}
-.input-prepend,
-.input-append {
-  margin-bottom: 5px;
-  *zoom: 1;
-}
-.input-prepend:before,
-.input-append:before,
-.input-prepend:after,
-.input-append:after {
-  display: table;
-  content: "";
-}
-.input-prepend:after,
-.input-append:after {
-  clear: both;
-}
-.input-prepend input,
-.input-append input,
-.input-prepend .uneditable-input,
-.input-append .uneditable-input {
-  -webkit-border-radius: 0 3px 3px 0;
-  -moz-border-radius: 0 3px 3px 0;
-  border-radius: 0 3px 3px 0;
-}
-.input-prepend input:focus,
-.input-append input:focus,
-.input-prepend .uneditable-input:focus,
-.input-append .uneditable-input:focus {
-  position: relative;
-  z-index: 2;
-}
-.input-prepend .uneditable-input,
-.input-append .uneditable-input {
-  border-left-color: #ccc;
-}
-.input-prepend .add-on,
-.input-append .add-on {
-  float: left;
-  display: block;
-  width: auto;
-  min-width: 16px;
-  height: 18px;
-  margin-right: -1px;
-  padding: 4px 5px;
-  font-weight: normal;
-  line-height: 18px;
-  color: #999999;
-  text-align: center;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  -webkit-border-radius: 3px 0 0 3px;
-  -moz-border-radius: 3px 0 0 3px;
-  border-radius: 3px 0 0 3px;
-}
-.input-prepend .active,
-.input-append .active {
-  background-color: #a9dba9;
-  border-color: #46a546;
-}
-.input-prepend .add-on {
-  *margin-top: 1px;
-  /* IE6-7 */
-
-}
-.input-append input,
-.input-append .uneditable-input {
-  float: left;
-  -webkit-border-radius: 3px 0 0 3px;
-  -moz-border-radius: 3px 0 0 3px;
-  border-radius: 3px 0 0 3px;
-}
-.input-append .uneditable-input {
-  border-right-color: #ccc;
-}
-.input-append .add-on {
-  margin-right: 0;
-  margin-left: -1px;
-  -webkit-border-radius: 0 3px 3px 0;
-  -moz-border-radius: 0 3px 3px 0;
-  border-radius: 0 3px 3px 0;
-}
-.input-append input:first-child {
-  *margin-left: -160px;
-}
-.input-append input:first-child + .add-on {
-  *margin-left: -21px;
-}
-.search-query {
-  padding-left: 14px;
-  padding-right: 14px;
-  margin-bottom: 0;
-  -webkit-border-radius: 14px;
-  -moz-border-radius: 14px;
-  border-radius: 14px;
-}
-.form-search input,
-.form-inline input,
-.form-horizontal input,
-.form-search textarea,
-.form-inline textarea,
-.form-horizontal textarea,
-.form-search select,
-.form-inline select,
-.form-horizontal select,
-.form-search .help-inline,
-.form-inline .help-inline,
-.form-horizontal .help-inline,
-.form-search .uneditable-input,
-.form-inline .uneditable-input,
-.form-horizontal .uneditable-input {
-  display: inline-block;
-  margin-bottom: 0;
-}
-.form-search label,
-.form-inline label,
-.form-search .input-append,
-.form-inline .input-append,
-.form-search .input-prepend,
-.form-inline .input-prepend {
-  display: inline-block;
-}
-.form-search .input-append .add-on,
-.form-inline .input-prepend .add-on,
-.form-search .input-append .add-on,
-.form-inline .input-prepend .add-on {
-  vertical-align: middle;
-}
-.control-group {
-  margin-bottom: 9px;
-}
-.form-horizontal legend + .control-group {
-  margin-top: 18px;
-  -webkit-margin-top-collapse: separate;
-}
-.form-horizontal .control-group {
-  margin-bottom: 18px;
-  *zoom: 1;
-}
-.form-horizontal .control-group:before,
-.form-horizontal .control-group:after {
-  display: table;
-  content: "";
-}
-.form-horizontal .control-group:after {
-  clear: both;
-}
-.form-horizontal .control-group > label {
-  float: left;
-  width: 140px;
-  padding-top: 5px;
-  text-align: right;
-}
-.form-horizontal .controls {
-  margin-left: 160px;
-}
-.form-horizontal .form-actions {
-  padding-left: 160px;
-}
-table {
-  max-width: 100%;
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-.table {
-  width: 100%;
-  margin-bottom: 18px;
-}
-.table th,
-.table td {
-  padding: 8px;
-  line-height: 18px;
-  text-align: left;
-  border-top: 1px solid #ddd;
-}
-.table th {
-  font-weight: bold;
-  vertical-align: bottom;
-}
-.table td {
-  vertical-align: top;
-}
-.table thead:first-child tr th,
-.table thead:first-child tr td {
-  border-top: 0;
-}
-.table tbody + tbody {
-  border-top: 2px solid #ddd;
-}
-.table-condensed th,
-.table-condensed td {
-  padding: 4px 5px;
-}
-.table-bordered {
-  border: 1px solid #ddd;
-  border-collapse: separate;
-  *border-collapse: collapsed;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.table-bordered th + th,
-.table-bordered td + td,
-.table-bordered th + td,
-.table-bordered td + th {
-  border-left: 1px solid #ddd;
-}
-.table-bordered thead:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child td {
-  border-top: 0;
-}
-.table-bordered thead:first-child tr:first-child th:first-child,
-.table-bordered tbody:first-child tr:first-child td:first-child {
-  -webkit-border-radius: 4px 0 0 0;
-  -moz-border-radius: 4px 0 0 0;
-  border-radius: 4px 0 0 0;
-}
-.table-bordered thead:first-child tr:first-child th:last-child,
-.table-bordered tbody:first-child tr:first-child td:last-child {
-  -webkit-border-radius: 0 4px 0 0;
-  -moz-border-radius: 0 4px 0 0;
-  border-radius: 0 4px 0 0;
-}
-.table-bordered thead:last-child tr:last-child th:first-child,
-.table-bordered tbody:last-child tr:last-child td:first-child {
-  -webkit-border-radius: 0 0 0 4px;
-  -moz-border-radius: 0 0 0 4px;
-  border-radius: 0 0 0 4px;
-}
-.table-bordered thead:last-child tr:last-child th:last-child,
-.table-bordered tbody:last-child tr:last-child td:last-child {
-  -webkit-border-radius: 0 0 4px 0;
-  -moz-border-radius: 0 0 4px 0;
-  border-radius: 0 0 4px 0;
-}
-.table-striped tbody tr:nth-child(odd) td,
-.table-striped tbody tr:nth-child(odd) th {
-  background-color: #f9f9f9;
-}
-table .span1 {
-  float: none;
-  width: 44px;
-  margin-left: 0;
-}
-table .span2 {
-  float: none;
-  width: 124px;
-  margin-left: 0;
-}
-table .span3 {
-  float: none;
-  width: 204px;
-  margin-left: 0;
-}
-table .span4 {
-  float: none;
-  width: 284px;
-  margin-left: 0;
-}
-table .span5 {
-  float: none;
-  width: 364px;
-  margin-left: 0;
-}
-table .span6 {
-  float: none;
-  width: 444px;
-  margin-left: 0;
-}
-table .span7 {
-  float: none;
-  width: 524px;
-  margin-left: 0;
-}
-table .span8 {
-  float: none;
-  width: 604px;
-  margin-left: 0;
-}
-table .span9 {
-  float: none;
-  width: 684px;
-  margin-left: 0;
-}
-table .span10 {
-  float: none;
-  width: 764px;
-  margin-left: 0;
-}
-table .span11 {
-  float: none;
-  width: 844px;
-  margin-left: 0;
-}
-table .span12 {
-  float: none;
-  width: 924px;
-  margin-left: 0;
-}
-[class^="icon-"] {
-  display: inline-block;
-  width: 14px;
-  height: 14px;
-  vertical-align: text-top;
-  background-image: url(../images/glyphicons-halflings.png);
-  background-position: 14px 14px;
-  background-repeat: no-repeat;
-  *margin-right: .3em;
-}
-[class^="icon-"]:last-child {
-  *margin-left: 0;
-}
-.icon-white {
-  background-image: url(../images/glyphicons-halflings-white.png);
-}
-.icon-glass {
-  background-position: 0      0;
-}
-.icon-music {
-  background-position: -24px 0;
-}
-.icon-search {
-  background-position: -48px 0;
-}
-.icon-envelope {
-  background-position: -72px 0;
-}
-.icon-heart {
-  background-position: -96px 0;
-}
-.icon-star {
-  background-position: -120px 0;
-}
-.icon-star-empty {
-  background-position: -144px 0;
-}
-.icon-user {
-  background-position: -168px 0;
-}
-.icon-film {
-  background-position: -192px 0;
-}
-.icon-th-large {
-  background-position: -216px 0;
-}
-.icon-th {
-  background-position: -240px 0;
-}
-.icon-th-list {
-  background-position: -264px 0;
-}
-.icon-ok {
-  background-position: -288px 0;
-}
-.icon-remove {
-  background-position: -312px 0;
-}
-.icon-zoom-in {
-  background-position: -336px 0;
-}
-.icon-zoom-out {
-  background-position: -360px 0;
-}
-.icon-off {
-  background-position: -384px 0;
-}
-.icon-signal {
-  background-position: -408px 0;
-}
-.icon-cog {
-  background-position: -432px 0;
-}
-.icon-trash {
-  background-position: -456px 0;
-}
-.icon-home {
-  background-position: 0 -24px;
-}
-.icon-file {
-  background-position: -24px -24px;
-}
-.icon-time {
-  background-position: -48px -24px;
-}
-.icon-road {
-  background-position: -72px -24px;
-}
-.icon-download-alt {
-  background-position: -96px -24px;
-}
-.icon-download {
-  background-position: -120px -24px;
-}
-.icon-upload {
-  background-position: -144px -24px;
-}
-.icon-inbox {
-  background-position: -168px -24px;
-}
-.icon-play-circle {
-  background-position: -192px -24px;
-}
-.icon-repeat {
-  background-position: -216px -24px;
-}
-.icon-refresh {
-  background-position: -240px -24px;
-}
-.icon-list-alt {
-  background-position: -264px -24px;
-}
-.icon-lock {
-  background-position: -287px -24px;
-}
-.icon-flag {
-  background-position: -312px -24px;
-}
-.icon-headphones {
-  background-position: -336px -24px;
-}
-.icon-volume-off {
-  background-position: -360px -24px;
-}
-.icon-volume-down {
-  background-position: -384px -24px;
-}
-.icon-volume-up {
-  background-position: -408px -24px;
-}
-.icon-qrcode {
-  background-position: -432px -24px;
-}
-.icon-barcode {
-  background-position: -456px -24px;
-}
-.icon-tag {
-  background-position: 0 -48px;
-}
-.icon-tags {
-  background-position: -25px -48px;
-}
-.icon-book {
-  background-position: -48px -48px;
-}
-.icon-bookmark {
-  background-position: -72px -48px;
-}
-.icon-print {
-  background-position: -96px -48px;
-}
-.icon-camera {
-  background-position: -120px -48px;
-}
-.icon-font {
-  background-position: -144px -48px;
-}
-.icon-bold {
-  background-position: -167px -48px;
-}
-.icon-italic {
-  background-position: -192px -48px;
-}
-.icon-text-height {
-  background-position: -216px -48px;
-}
-.icon-text-width {
-  background-position: -240px -48px;
-}
-.icon-align-left {
-  background-position: -264px -48px;
-}
-.icon-align-center {
-  background-position: -288px -48px;
-}
-.icon-align-right {
-  background-position: -312px -48px;
-}
-.icon-align-justify {
-  background-position: -336px -48px;
-}
-.icon-list {
-  background-position: -360px -48px;
-}
-.icon-indent-left {
-  background-position: -384px -48px;
-}
-.icon-indent-right {
-  background-position: -408px -48px;
-}
-.icon-facetime-video {
-  background-position: -432px -48px;
-}
-.icon-picture {
-  background-position: -456px -48px;
-}
-.icon-pencil {
-  background-position: 0 -72px;
-}
-.icon-map-marker {
-  background-position: -24px -72px;
-}
-.icon-adjust {
-  background-position: -48px -72px;
-}
-.icon-tint {
-  background-position: -72px -72px;
-}
-.icon-edit {
-  background-position: -96px -72px;
-}
-.icon-share {
-  background-position: -120px -72px;
-}
-.icon-check {
-  background-position: -144px -72px;
-}
-.icon-move {
-  background-position: -168px -72px;
-}
-.icon-step-backward {
-  background-position: -192px -72px;
-}
-.icon-fast-backward {
-  background-position: -216px -72px;
-}
-.icon-backward {
-  background-position: -240px -72px;
-}
-.icon-play {
-  background-position: -264px -72px;
-}
-.icon-pause {
-  background-position: -288px -72px;
-}
-.icon-stop {
-  background-position: -312px -72px;
-}
-.icon-forward {
-  background-position: -336px -72px;
-}
-.icon-fast-forward {
-  background-position: -360px -72px;
-}
-.icon-step-forward {
-  background-position: -384px -72px;
-}
-.icon-eject {
-  background-position: -408px -72px;
-}
-.icon-chevron-left {
-  background-position: -432px -72px;
-}
-.icon-chevron-right {
-  background-position: -456px -72px;
-}
-.icon-plus-sign {
-  background-position: 0 -96px;
-}
-.icon-minus-sign {
-  background-position: -24px -96px;
-}
-.icon-remove-sign {
-  background-position: -48px -96px;
-}
-.icon-ok-sign {
-  background-position: -72px -96px;
-}
-.icon-question-sign {
-  background-position: -96px -96px;
-}
-.icon-info-sign {
-  background-position: -120px -96px;
-}
-.icon-screenshot {
-  background-position: -144px -96px;
-}
-.icon-remove-circle {
-  background-position: -168px -96px;
-}
-.icon-ok-circle {
-  background-position: -192px -96px;
-}
-.icon-ban-circle {
-  background-position: -216px -96px;
-}
-.icon-arrow-left {
-  background-position: -240px -96px;
-}
-.icon-arrow-right {
-  background-position: -264px -96px;
-}
-.icon-arrow-up {
-  background-position: -289px -96px;
-}
-.icon-arrow-down {
-  background-position: -312px -96px;
-}
-.icon-share-alt {
-  background-position: -336px -96px;
-}
-.icon-resize-full {
-  background-position: -360px -96px;
-}
-.icon-resize-small {
-  background-position: -384px -96px;
-}
-.icon-plus {
-  background-position: -408px -96px;
-}
-.icon-minus {
-  background-position: -433px -96px;
-}
-.icon-asterisk {
-  background-position: -456px -96px;
-}
-.icon-exclamation-sign {
-  background-position: 0 -120px;
-}
-.icon-gift {
-  background-position: -24px -120px;
-}
-.icon-leaf {
-  background-position: -48px -120px;
-}
-.icon-fire {
-  background-position: -72px -120px;
-}
-.icon-eye-open {
-  background-position: -96px -120px;
-}
-.icon-eye-close {
-  background-position: -120px -120px;
-}
-.icon-warning-sign {
-  background-position: -144px -120px;
-}
-.icon-plane {
-  background-position: -168px -120px;
-}
-.icon-calendar {
-  background-position: -192px -120px;
-}
-.icon-notifications {
-  background-position: -192px -120px;
-}
-.icon-random {
-  background-position: -216px -120px;
-}
-.icon-comment {
-  background-position: -240px -120px;
-}
-.icon-magnet {
-  background-position: -264px -120px;
-}
-.icon-chevron-up {
-  background-position: -288px -120px;
-}
-.icon-chevron-down {
-  background-position: -313px -119px;
-}
-.icon-retweet {
-  background-position: -336px -120px;
-}
-.icon-shopping-cart {
-  background-position: -360px -120px;
-}
-.icon-folder-close {
-  background-position: -384px -120px;
-}
-.icon-folder-open {
-  background-position: -408px -120px;
-}
-.icon-resize-vertical {
-  background-position: -432px -119px;
-}
-.icon-resize-horizontal {
-  background-position: -456px -118px;
-}
-.dropdown {
-  position: relative;
-}
-.dropdown-toggle {
-  *margin-bottom: -3px;
-}
-.dropdown-toggle:active,
-.open .dropdown-toggle {
-  outline: 0;
-}
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  text-indent: -99999px;
-  *text-indent: 0;
-  vertical-align: top;
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-top: 4px solid #000000;
-  opacity: 0.3;
-  filter: alpha(opacity=30);
-  content: "\2193";
-}
-.dropdown .caret {
-  margin-top: 8px;
-  margin-left: 2px;
-}
-.dropdown:hover .caret,
-.open.dropdown .caret {
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  float: left;
-  display: none;
-  min-width: 160px;
-  max-width: 220px;
-  _width: 160px;
-  padding: 4px 0;
-  margin: 0;
-  list-style: none;
-  background-color: #ffffff;
-  border-color: #ccc;
-  border-color: rgba(0, 0, 0, 0.2);
-  border-style: solid;
-  border-width: 1px;
-  -webkit-border-radius: 0 0 5px 5px;
-  -moz-border-radius: 0 0 5px 5px;
-  border-radius: 0 0 5px 5px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding;
-  background-clip: padding-box;
-  *border-right-width: 2px;
-  *border-bottom-width: 2px;
-}
-.dropdown-menu.bottom-up {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 2px;
-}
-.dropdown-menu .divider {
-  height: 1px;
-  margin: 5px 1px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-  *width: 100%;
-  *margin: -5px 0 5px;
-}
-.dropdown-menu a {
-  display: block;
-  padding: 3px 15px;
-  clear: both;
-  font-weight: normal;
-  line-height: 18px;
-  color: #555555;
-  white-space: nowrap;
-}
-.dropdown-menu li > a:hover,
-.dropdown-menu .active > a,
-.dropdown-menu .active > a:hover {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #1b97d1;
-}
-.dropdown.open {
-  *z-index: 1000;
-}
-.dropdown.open .dropdown-toggle {
-  color: #ffffff;
-  background: #ccc;
-  background: rgba(0, 0, 0, 0.3);
-}
-.dropdown.open .dropdown-menu {
-  display: block;
-}
-.typeahead {
-  margin-top: 2px;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.well {
-  min-height: 20px;
-  padding: 19px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border: 1px solid #eee;
-  border: 1px solid rgba(0, 0, 0, 0.05);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-.well blockquote {
-  border-color: #ddd;
-  border-color: rgba(0, 0, 0, 0.15);
-}
-.fade {
-  -webkit-transition: opacity 0.15s linear;
-  -moz-transition: opacity 0.15s linear;
-  -ms-transition: opacity 0.15s linear;
-  -o-transition: opacity 0.15s linear;
-  transition: opacity 0.15s linear;
-  opacity: 0;
-}
-.fade.in {
-  opacity: 1;
-}
-.collapse {
-  -webkit-transition: height 0.35s ease;
-  -moz-transition: height 0.35s ease;
-  -ms-transition: height 0.35s ease;
-  -o-transition: height 0.35s ease;
-  transition: height 0.35s ease;
-  position: relative;
-  overflow: hidden;
-  height: 0;
-}
-.collapse.in {
-  height: auto;
-}
-.close {
-  float: right;
-  font-size: 20px;
-  font-weight: bold;
-  line-height: 18px;
-  color: #000000;
-  text-shadow: 0 1px 0 #ffffff;
-  opacity: 0.2;
-  filter: alpha(opacity=20);
-}
-.close:hover {
-  color: #000000;
-  text-decoration: none;
-  opacity: 0.4;
-  filter: alpha(opacity=40);
-  cursor: pointer;
-}
-.btn {
-  display: inline-block;
-  padding: 4px 10px 4px;
-  font-size: 13px;
-  line-height: 18px;
-  color: #333333;
-  text-align: center;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
-  background-color: #fafafa;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6));
-  background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6);
-  background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-repeat: no-repeat;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);
-  border: 1px solid #ccc;
-  border-bottom-color: #bbb;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  cursor: pointer;
-  *margin-left: .3em;
-}
-.btn:first-child {
-  *margin-left: 0;
-}
-.btn:hover {
-  color: #333333;
-  text-decoration: none;
-  background-color: #e6e6e6;
-  background-position: 0 -15px;
-  -webkit-transition: background-position 0.1s linear;
-  -moz-transition: background-position 0.1s linear;
-  -ms-transition: background-position 0.1s linear;
-  -o-transition: background-position 0.1s linear;
-  transition: background-position 0.1s linear;
-}
-.btn:focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.btn.active,
-.btn:active {
-  background-image: none;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  background-color: #e6e6e6;
-  background-color: #d9d9d9 \9;
-  color: rgba(0, 0, 0, 0.5);
-  outline: 0;
-}
-.btn.disabled,
-.btn[disabled] {
-  cursor: default;
-  background-image: none;
-  background-color: #e6e6e6;
-  opacity: 0.65;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-.btn-large {
-  padding: 9px 14px;
-  font-size: 15px;
-  line-height: normal;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.btn-large .icon {
-  margin-top: 1px;
-}
-.btn-small {
-  padding: 5px 9px;
-  font-size: 11px;
-  line-height: 16px;
-}
-.btn-small .icon {
-  margin-top: -1px;
-}
-.btn-primary,
-.btn-primary:hover,
-.btn-warning,
-.btn-warning:hover,
-.btn-danger,
-.btn-danger:hover,
-.btn-success,
-.btn-success:hover,
-.btn-info,
-.btn-info:hover {
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  color: #ffffff;
-}
-.btn-primary.active,
-.btn-warning.active,
-.btn-danger.active,
-.btn-success.active,
-.btn-info.active {
-  color: rgba(255, 255, 255, 0.75);
-}
-.btn-primary {
-  background-color: #1b7fd1;
-  background-image: -moz-linear-gradient(top, #1b97d1, #1b5ad1);
-  background-image: -ms-linear-gradient(top, #1b97d1, #1b5ad1);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#1b97d1), to(#1b5ad1));
-  background-image: -webkit-linear-gradient(top, #1b97d1, #1b5ad1);
-  background-image: -o-linear-gradient(top, #1b97d1, #1b5ad1);
-  background-image: linear-gradient(top, #1b97d1, #1b5ad1);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1b97d1', endColorstr='#1b5ad1', GradientType=0);
-  border-color: #1b5ad1 #1b5ad1 #123d8d;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-primary:hover,
-.btn-primary:active,
-.btn-primary.active,
-.btn-primary.disabled,
-.btn-primary[disabled] {
-  background-color: #1b5ad1;
-}
-.btn-primary:active,
-.btn-primary.active {
-  background-color: #1547a4 \9;
-}
-.btn-warning {
-  background-color: #faa732;
-  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
-  background-image: -ms-linear-gradient(top, #fbb450, #f89406);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
-  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
-  background-image: -o-linear-gradient(top, #fbb450, #f89406);
-  background-image: linear-gradient(top, #fbb450, #f89406);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);
-  border-color: #f89406 #f89406 #ad6704;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-warning:hover,
-.btn-warning:active,
-.btn-warning.active,
-.btn-warning.disabled,
-.btn-warning[disabled] {
-  background-color: #f89406;
-}
-.btn-warning:active,
-.btn-warning.active {
-  background-color: #c67605 \9;
-}
-.btn-danger {
-  background-color: #da4f49;
-  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: linear-gradient(top, #ee5f5b, #bd362f);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);
-  border-color: #bd362f #bd362f #802420;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-danger:hover,
-.btn-danger:active,
-.btn-danger.active,
-.btn-danger.disabled,
-.btn-danger[disabled] {
-  background-color: #bd362f;
-}
-.btn-danger:active,
-.btn-danger.active {
-  background-color: #942a25 \9;
-}
-.btn-success {
-  background-color: #5bb75b;
-  background-image: -moz-linear-gradient(top, #62c462, #51a351);
-  background-image: -ms-linear-gradient(top, #62c462, #51a351);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
-  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
-  background-image: -o-linear-gradient(top, #62c462, #51a351);
-  background-image: linear-gradient(top, #62c462, #51a351);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);
-  border-color: #51a351 #51a351 #387038;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-success:hover,
-.btn-success:active,
-.btn-success.active,
-.btn-success.disabled,
-.btn-success[disabled] {
-  background-color: #51a351;
-}
-.btn-success:active,
-.btn-success.active {
-  background-color: #408140 \9;
-}
-.btn-info {
-  background-color: #49afcd;
-  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: linear-gradient(top, #5bc0de, #2f96b4);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);
-  border-color: #2f96b4 #2f96b4 #1f6377;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-info:hover,
-.btn-info:active,
-.btn-info.active,
-.btn-info.disabled,
-.btn-info[disabled] {
-  background-color: #2f96b4;
-}
-.btn-info:active,
-.btn-info.active {
-  background-color: #24748c \9;
-}
-button.btn,
-input[type="submit"].btn {
-  *padding-top: 2px;
-  *padding-bottom: 2px;
-}
-button.btn::-moz-focus-inner,
-input[type="submit"].btn::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-button.btn.large,
-input[type="submit"].btn.large {
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-button.btn.small,
-input[type="submit"].btn.small {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-.btn-group {
-  position: relative;
-  *zoom: 1;
-  *margin-left: .3em;
-}
-.btn-group:before,
-.btn-group:after {
-  display: table;
-  content: "";
-}
-.btn-group:after {
-  clear: both;
-}
-.btn-group:first-child {
-  *margin-left: 0;
-}
-.btn-group + .btn-group {
-  margin-left: 5px;
-}
-.btn-toolbar {
-  margin-top: 9px;
-  margin-bottom: 9px;
-}
-.btn-toolbar .btn-group {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-}
-.btn-group .btn {
-  position: relative;
-  float: left;
-  margin-left: -1px;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-group .btn:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-  -webkit-border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  border-bottom-left-radius: 4px;
-}
-.btn-group .btn:last-child,
-.btn-group .dropdown-toggle {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-  -webkit-border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  border-bottom-right-radius: 4px;
-}
-.btn-group .btn.large:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 6px;
-  -moz-border-radius-topleft: 6px;
-  border-top-left-radius: 6px;
-  -webkit-border-bottom-left-radius: 6px;
-  -moz-border-radius-bottomleft: 6px;
-  border-bottom-left-radius: 6px;
-}
-.btn-group .btn.large:last-child,
-.btn-group .large.dropdown-toggle {
-  -webkit-border-top-right-radius: 6px;
-  -moz-border-radius-topright: 6px;
-  border-top-right-radius: 6px;
-  -webkit-border-bottom-right-radius: 6px;
-  -moz-border-radius-bottomright: 6px;
-  border-bottom-right-radius: 6px;
-}
-.btn-group .btn:hover,
-.btn-group .btn:focus,
-.btn-group .btn:active,
-.btn-group .btn.active {
-  z-index: 2;
-}
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-.btn-group .dropdown-toggle {
-  padding-left: 8px;
-  padding-right: 8px;
-  -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  *padding-top: 5px;
-  *padding-bottom: 5px;
-}
-.btn-group.open {
-  *z-index: 1000;
-}
-.btn-group.open .dropdown-menu {
-  display: block;
-  margin-top: 1px;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.btn-group.open .dropdown-toggle {
-  background-image: none;
-  -webkit-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-.btn .caret {
-  margin-top: 7px;
-  margin-left: 0;
-}
-.btn:hover .caret,
-.open.btn-group .caret {
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.btn-primary .caret,
-.btn-danger .caret,
-.btn-info .caret,
-.btn-success .caret {
-  border-top-color: #ffffff;
-  opacity: 0.75;
-  filter: alpha(opacity=75);
-}
-.btn-small .caret {
-  margin-top: 4px;
-}
-.alert {
-  padding: 8px 35px 8px 14px;
-  margin-bottom: 18px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  background-color: #fcf8e3;
-  border: 1px solid #fbeed5;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.alert,
-.alert-heading {
-  color: #c09853;
-}
-.alert .close {
-  position: relative;
-  top: -2px;
-  right: -21px;
-  line-height: 18px;
-}
-.alert-success {
-  background-color: #dff0d8;
-  border-color: #d6e9c6;
-}
-.alert-success,
-.alert-success .alert-heading {
-  color: #468847;
-}
-.alert-danger,
-.alert-error {
-  background-color: #f2dede;
-  border-color: #eed3d7;
-}
-.alert-danger,
-.alert-error,
-.alert-danger .alert-heading,
-.alert-error .alert-heading {
-  color: #b94a48;
-}
-.alert-info {
-  background-color: #d9edf7;
-  border-color: #bce8f1;
-}
-.alert-info,
-.alert-info .alert-heading {
-  color: #3a87ad;
-}
-.alert-block {
-  padding-top: 14px;
-  padding-bottom: 14px;
-}
-.alert-block > p,
-.alert-block > ul {
-  margin-bottom: 0;
-}
-.alert-block p + p {
-  margin-top: 5px;
-}
-.nav {
-  margin-left: 0;
-  margin-bottom: 18px;
-  list-style: none;
-}
-.nav > li > a {
-  display: block;
-}
-.nav > li > a:hover {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-.nav-list {
-  padding-left: 14px;
-  padding-right: 14px;
-  margin-bottom: 0;
-}
-.nav-list > li > a,
-.nav-list .nav-header {
-  display: block;
-  padding: 3px 15px;
-  margin-left: -15px;
-  margin-right: -15px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-}
-.nav-list .nav-header {
-  font-size: 11px;
-  font-weight: bold;
-  line-height: 18px;
-  color: #999999;
-  text-transform: uppercase;
-}
-.nav-list > li + .nav-header {
-  margin-top: 9px;
-}
-.nav-list .active > a {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
-  background-color: #1b97d1;
-}
-.nav-list .icon {
-  margin-right: 2px;
-}
-
-.nav-tabs,
-.nav-pills {
-  *zoom: 1;
-}
-.nav-tabs:before,
-.nav-pills:before,
-.nav-tabs:after,
-.nav-pills:after {
-  display: table;
-  content: "";
-}
-.nav-tabs:after,
-.nav-pills:after {
-  clear: both;
-}
-.nav-tabs > li,
-.nav-pills > li {
-  float: left;
-}
-.nav-tabs > li > a,
-.nav-pills > li > a {
-  padding-right: 12px;
-  padding-left: 12px;
-  margin-right: 2px;
-  line-height: 14px;
-}
-.nav-tabs {
-  border-bottom: 1px solid #ddd;
-}
-.nav-tabs > li {
-  margin-bottom: -1px;
-}
-.nav-tabs > li > a {
-  padding-top: 9px;
-  padding-bottom: 9px;
-  border: 1px solid transparent;
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.nav-tabs > li > a:hover {
-  border-color: #eeeeee #eeeeee #dddddd;
-}
-.nav-tabs > .active > a,
-.nav-tabs > .active > a:hover {
-  color: #555555;
-  background-color: #ffffff;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-  cursor: default;
-}
-.nav-pills > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  margin-top: 2px;
-  margin-bottom: 2px;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.nav-pills .active > a,
-.nav-pills .active > a:hover {
-  color: #ffffff;
-  background-color: #1b97d1;
-}
-.nav-stacked > li {
-  float: none;
-}
-.nav-stacked > li > a {
-  margin-right: 0;
-}
-.nav-tabs.nav-stacked {
-  border-bottom: 0;
-}
-.nav-tabs.nav-stacked > li > a {
-  border: 1px solid #ddd;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.nav-tabs.nav-stacked > li:first-child > a {
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.nav-tabs.nav-stacked > li:last-child > a {
-  -webkit-border-radius: 0 0 4px 4px;
-  -moz-border-radius: 0 0 4px 4px;
-  border-radius: 0 0 4px 4px;
-}
-.nav-tabs.nav-stacked > li > a:hover {
-  border-color: #ddd;
-  z-index: 2;
-}
-.nav-pills.nav-stacked > li > a {
-  margin-bottom: 3px;
-}
-.nav-pills.nav-stacked > li:last-child > a {
-  margin-bottom: 1px;
-}
-.nav-tabs .dropdown-menu,
-.nav-pills .dropdown-menu {
-  margin-top: 1px;
-  border-width: 1px;
-}
-.nav-pills .dropdown-menu {
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.nav-tabs .dropdown-toggle .caret,
-.nav-pills .dropdown-toggle .caret {
-  border-top-color: #1b97d1;
-  margin-top: 6px;
-}
-.nav-tabs .dropdown-toggle:hover .caret,
-.nav-pills .dropdown-toggle:hover .caret {
-  border-top-color: #12668d;
-}
-.nav-tabs .active .dropdown-toggle .caret,
-.nav-pills .active .dropdown-toggle .caret {
-  border-top-color: #333333;
-}
-.nav > .dropdown.active > a:hover {
-  color: #000000;
-  cursor: pointer;
-}
-.nav-tabs .open .dropdown-toggle,
-.nav-pills .open .dropdown-toggle,
-.nav > .open.active > a:hover {
-  color: #ffffff;
-  background-color: #999999;
-  border-color: #999999;
-}
-.nav .open .caret,
-.nav .open.active .caret,
-.nav .open a:hover .caret {
-  border-top-color: #ffffff;
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.tabs-stacked .open > a:hover {
-  border-color: #999999;
-}
-.tabbable {
-  *zoom: 1;
-}
-.tabbable:before,
-.tabbable:after {
-  display: table;
-  content: "";
-}
-.tabbable:after {
-  clear: both;
-}
-.tabs-below .nav-tabs,
-.tabs-right .nav-tabs,
-.tabs-left .nav-tabs {
-  border-bottom: 0;
-}
-.tab-content > .tab-pane,
-.pill-content > .pill-pane {
-  display: none;
-}
-.tab-content > .active,
-.pill-content > .active {
-  display: block;
-}
-.tabs-below .nav-tabs {
-  border-top: 1px solid #ddd;
-}
-.tabs-below .nav-tabs > li {
-  margin-top: -1px;
-  margin-bottom: 0;
-}
-.tabs-below .nav-tabs > li > a {
-  -webkit-border-radius: 0 0 4px 4px;
-  -moz-border-radius: 0 0 4px 4px;
-  border-radius: 0 0 4px 4px;
-}
-.tabs-below .nav-tabs > li > a:hover {
-  border-bottom-color: transparent;
-  border-top-color: #ddd;
-}
-.tabs-below .nav-tabs .active > a,
-.tabs-below .nav-tabs .active > a:hover {
-  border-color: transparent #ddd #ddd #ddd;
-}
-.tabs-left .nav-tabs > li,
-.tabs-right .nav-tabs > li {
-  float: none;
-}
-.tabs-left .nav-tabs > li > a,
-.tabs-right .nav-tabs > li > a {
-  min-width: 74px;
-  margin-right: 0;
-  margin-bottom: 3px;
-}
-.tabs-left .nav-tabs {
-  float: left;
-  margin-right: 19px;
-  border-right: 1px solid #ddd;
-}
-.tabs-left .nav-tabs > li > a {
-  margin-right: -1px;
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.tabs-left .nav-tabs > li > a:hover {
-  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
-}
-.tabs-left .nav-tabs .active > a,
-.tabs-left .nav-tabs .active > a:hover {
-  border-color: #ddd transparent #ddd #ddd;
-  *border-right-color: #ffffff;
-}
-.tabs-right .nav-tabs {
-  float: right;
-  margin-left: 19px;
-  border-left: 1px solid #ddd;
-}
-.tabs-right .nav-tabs > li > a {
-  margin-left: -1px;
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.tabs-right .nav-tabs > li > a:hover {
-  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
-}
-.tabs-right .nav-tabs .active > a,
-.tabs-right .nav-tabs .active > a:hover {
-  border-color: #ddd #ddd #ddd transparent;
-  *border-left-color: #ffffff;
-}
-.navbar {
-  overflow: visible;
-  margin-bottom: 18px;
-}
-.navbar-inner {
-  padding-left: 20px;
-  padding-right: 20px;
-  background-color: #f8f8f8;
-  background-image: -moz-linear-gradient(top, #ffffff, #ededed);
-  background-image: -ms-linear-gradient(top, #ffffff, #ededed);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#ededed));
-  background-image: -webkit-linear-gradient(top, #ffffff, #ededed);
-  background-image: -o-linear-gradient(top, #ffffff, #ededed);
-  background-image: linear-gradient(top, #ffffff, #ededed);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#ededed', GradientType=0);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
-  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
-  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
-}
-.btn-navbar {
-  display: none;
-  float: right;
-  padding: 7px 10px;
-  margin-left: 5px;
-  margin-right: 5px;
-  background-color: #f8f8f8;
-  background-image: -moz-linear-gradient(top, #ffffff, #ededed);
-  background-image: -ms-linear-gradient(top, #ffffff, #ededed);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#ededed));
-  background-image: -webkit-linear-gradient(top, #ffffff, #ededed);
-  background-image: -o-linear-gradient(top, #ffffff, #ededed);
-  background-image: linear-gradient(top, #ffffff, #ededed);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#ededed', GradientType=0);
-  border-color: #ededed #ededed #c7c7c7;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-  -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-}
-.btn-navbar:hover,
-.btn-navbar:active,
-.btn-navbar.active,
-.btn-navbar.disabled,
-.btn-navbar[disabled] {
-  background-color: #ededed;
-}
-.btn-navbar:active,
-.btn-navbar.active {
-  background-color: #d4d4d4 \9;
-}
-.btn-navbar .icon-bar {
-  display: block;
-  width: 18px;
-  height: 2px;
-  background-color: #f5f5f5;
-  -webkit-border-radius: 1px;
-  -moz-border-radius: 1px;
-  border-radius: 1px;
-  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-}
-.btn-navbar .icon-bar + .icon-bar {
-  margin-top: 3px;
-}
-.nav-collapse.collapse {
-  height: auto;
-}
-.navbar .brand:hover {
-  text-decoration: none;
-}
-.navbar .brand {
-  float: left;
-  display: block;
-  padding: 8px 20px 12px;
-  margin-left: -20px;
-  font-size: 20px;
-  font-weight: 200;
-  line-height: 1;
-  color: #ffffff;
-}
-.navbar .navbar-text {
-  margin-bottom: 0;
-  line-height: 40px;
-  color: #999999;
-}
-.navbar .navbar-text a:hover {
-  color: #ffffff;
-  background-color: transparent;
-}
-.navbar .btn,
-.navbar .btn-group {
-  margin-top: 5px;
-}
-.navbar .btn-group .btn {
-  margin-top: 0;
-}
-.navbar-form {
-  margin-bottom: 0;
-  *zoom: 1;
-}
-.navbar-form:before,
-.navbar-form:after {
-  display: table;
-  content: "";
-}
-.navbar-form:after {
-  clear: both;
-}
-.navbar-form input,
-.navbar-form select {
-  display: inline-block;
-  margin-top: 5px;
-  margin-bottom: 0;
-}
-.navbar-form .radio,
-.navbar-form .checkbox {
-  margin-top: 5px;
-}
-.navbar-form input[type="image"],
-.navbar-form input[type="checkbox"],
-.navbar-form input[type="radio"] {
-  margin-top: 3px;
-}
-.navbar-search {
-  position: relative;
-  float: left;
-  margin-top: 6px;
-  margin-bottom: 0;
-}
-.navbar-search .search-query {
-  padding: 4px 9px;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 1;
-  color: #ffffff;
-  color: rgba(255, 255, 255, 0.75);
-  background: #666;
-  background: rgba(255, 255, 255, 0.3);
-  border: 1px solid #111;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
-  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
-  -webkit-transition: none;
-  -moz-transition: none;
-  -ms-transition: none;
-  -o-transition: none;
-  transition: none;
-}
-.navbar-search .search-query :-moz-placeholder {
-  color: #eeeeee;
-}
-.navbar-search .search-query ::-webkit-input-placeholder {
-  color: #eeeeee;
-}
-.navbar-search .search-query:hover {
-  color: #ffffff;
-  background-color: #999999;
-  background-color: rgba(255, 255, 255, 0.5);
-}
-.navbar-search .search-query:focus,
-.navbar-search .search-query.focused {
-  padding: 5px 10px;
-  color: #333333;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #ffffff;
-  border: 0;
-  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  outline: 0;
-}
-.navbar-fixed-top {
-  position: fixed;
-  top: 0;
-  right: 0;
-  left: 0;
-  z-index: 1030;
-}
-.navbar-fixed-top .navbar-inner {
-  padding-left: 0;
-  padding-right: 0;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.navbar .nav {
-  position: relative;
-  left: 0;
-  display: block;
-  float: left;
-  margin: 0 10px 0 0;
-}
-.navbar .nav.pull-right {
-  float: right;
-}
-.navbar .nav > li {
-  display: block;
-  float: left;
-}
-.navbar .nav > li > a {
-  float: none;
-  padding: 10px 10px 11px;
-  line-height: 19px;
-  color: #999999;
-  text-decoration: none;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.navbar .nav > li > a:hover {
-  background-color: transparent;
-  color: #ffffff;
-  text-decoration: none;
-}
-.navbar .nav .active > a,
-.navbar .nav .active > a:hover {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #ededed;
-  background-color: rgba(0, 0, 0, 0.5);
-}
-.navbar .divider-vertical {
-  height: 40px;
-  width: 1px;
-  margin: 0 9px;
-  overflow: hidden;
-  background-color: #ededed;
-  border-right: 1px solid #ffffff;
-}
-.navbar .nav.pull-right {
-  margin-left: 10px;
-  margin-right: 0;
-}
-.navbar .dropdown-menu {
-  margin-top: 1px;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.navbar .dropdown-menu:before {
-  content: '';
-  display: inline-block;
-  border-left: 7px solid transparent;
-  border-right: 7px solid transparent;
-  border-bottom: 7px solid #ccc;
-  border-bottom-color: rgba(0, 0, 0, 0.2);
-  position: absolute;
-  top: -7px;
-  left: 9px;
-}
-.navbar .dropdown-menu:after {
-  content: '';
-  display: inline-block;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-bottom: 6px solid #ffffff;
-  position: absolute;
-  top: -6px;
-  left: 10px;
-}
-.navbar .nav .dropdown-toggle .caret,
-.navbar .nav .open.dropdown .caret {
-  border-top-color: #ffffff;
-}
-.navbar .nav .active .caret {
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.navbar .nav .open > .dropdown-toggle,
-.navbar .nav .active > .dropdown-toggle,
-.navbar .nav .open.active > .dropdown-toggle {
-  background-color: transparent;
-}
-.navbar .nav .active > .dropdown-toggle:hover {
-  color: #ffffff;
-}
-.navbar .nav.pull-right .dropdown-menu {
-  left: auto;
-  right: 0;
-}
-.navbar .nav.pull-right .dropdown-menu:before {
-  left: auto;
-  right: 12px;
-}
-.navbar .nav.pull-right .dropdown-menu:after {
-  left: auto;
-  right: 13px;
-}
-.breadcrumb {
-  padding: 7px 14px;
-  margin: 0 0 18px;
-  background-color: #fbfbfb;
-  background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5);
-  background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5));
-  background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5);
-  background-image: -o-linear-gradient(top, #ffffff, #f5f5f5);
-  background-image: linear-gradient(top, #ffffff, #f5f5f5);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);
-  border: 1px solid #ddd;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-  -webkit-box-shadow: inset 0 1px 0 #ffffff;
-  -moz-box-shadow: inset 0 1px 0 #ffffff;
-  box-shadow: inset 0 1px 0 #ffffff;
-}
-.breadcrumb li {
-  display: inline;
-  text-shadow: 0 1px 0 #ffffff;
-}
-.breadcrumb .divider {
-  padding: 0 5px;
-  color: #999999;
-}
-.breadcrumb .active a {
-  color: #333333;
-}
-.pagination {
-  height: 36px;
-  margin: 18px 0;
-}
-.pagination ul {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  margin-left: 0;
-  margin-bottom: 0;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-.pagination li {
-  display: inline;
-}
-.pagination a {
-  float: left;
-  padding: 0 14px;
-  line-height: 34px;
-  text-decoration: none;
-  border: 1px solid #ddd;
-  border-left-width: 0;
-}
-.pagination a:hover,
-.pagination .active a {
-  background-color: #f5f5f5;
-}
-.pagination .active a {
-  color: #999999;
-  cursor: default;
-}
-.pagination .disabled a,
-.pagination .disabled a:hover {
-  color: #999999;
-  background-color: transparent;
-  cursor: default;
-}
-.pagination li:first-child a {
-  border-left-width: 1px;
-  -webkit-border-radius: 3px 0 0 3px;
-  -moz-border-radius: 3px 0 0 3px;
-  border-radius: 3px 0 0 3px;
-}
-.pagination li:last-child a {
-  -webkit-border-radius: 0 3px 3px 0;
-  -moz-border-radius: 0 3px 3px 0;
-  border-radius: 0 3px 3px 0;
-}
-.pagination-centered {
-  text-align: center;
-}
-.pagination-right {
-  text-align: right;
-}
-.pager {
-  margin-left: 0;
-  margin-bottom: 18px;
-  list-style: none;
-  text-align: center;
-  *zoom: 1;
-}
-.pager:before,
-.pager:after {
-  display: table;
-  content: "";
-}
-.pager:after {
-  clear: both;
-}
-.pager li {
-  display: inline;
-}
-.pager a {
-  display: inline-block;
-  padding: 5px 14px;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  -webkit-border-radius: 15px;
-  -moz-border-radius: 15px;
-  border-radius: 15px;
-}
-.pager a:hover {
-  text-decoration: none;
-  background-color: #f5f5f5;
-}
-.pager .next a {
-  float: right;
-}
-.pager .previous a {
-  float: left;
-}
-.modal-open .dropdown-menu {
-  z-index: 2050;
-}
-.modal-open .dropdown.open {
-  *z-index: 2050;
-}
-.modal-open .popover {
-  z-index: 2060;
-}
-.modal-open .tooltip {
-  z-index: 2070;
-}
-.modal-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 1040;
-  background-color: #000000;
-}
-.modal-backdrop.fade {
-  opacity: 0;
-}
-.modal-backdrop,
-.modal-backdrop.fade.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-.modal {
-  position: fixed;
-  top: 50%;
-  left: 50%;
-  z-index: 1050;
-  max-height: 500px;
-  overflow: auto;
-  width: 560px;
-  margin: -250px 0 0 -280px;
-  background-color: #ffffff;
-  border: 1px solid #999;
-  border: 1px solid rgba(0, 0, 0, 0.3);
-  *border: 1px solid #999;
-  /* IE6-7 */
-
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding-box;
-  background-clip: padding-box;
-}
-.modal.fade {
-  -webkit-transition: opacity .3s linear, top .3s ease-out;
-  -moz-transition: opacity .3s linear, top .3s ease-out;
-  -ms-transition: opacity .3s linear, top .3s ease-out;
-  -o-transition: opacity .3s linear, top .3s ease-out;
-  transition: opacity .3s linear, top .3s ease-out;
-  top: -25%;
-}
-.modal.fade.in {
-  top: 50%;
-}
-.modal-header {
-  padding: 9px 15px;
-  border-bottom: 1px solid #eee;
-}
-.modal-header .close {
-  margin-top: 2px;
-}
-.modal-body {
-  padding: 15px;
-}
-.modal-footer {
-  padding: 14px 15px 15px;
-  margin-bottom: 0;
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-  -webkit-box-shadow: inset 0 1px 0 #ffffff;
-  -moz-box-shadow: inset 0 1px 0 #ffffff;
-  box-shadow: inset 0 1px 0 #ffffff;
-  *zoom: 1;
-}
-.modal-footer:before,
-.modal-footer:after {
-  display: table;
-  content: "";
-}
-.modal-footer:after {
-  clear: both;
-}
-.modal-footer .btn {
-  float: left;
-  margin-left: 5px;
-  margin-bottom: 0;
-}
-.tooltip {
-  position: absolute;
-  z-index: 1020;
-  display: block;
-  visibility: visible;
-  padding: 5px;
-  font-size: 11px;
-  opacity: 0;
-  filter: alpha(opacity=0);
-}
-.tooltip.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-.tooltip.top {
-  margin-top: -2px;
-}
-.tooltip.right {
-  margin-left: 2px;
-}
-.tooltip.bottom {
-  margin-top: 2px;
-}
-.tooltip.left {
-  margin-left: -2px;
-}
-.tooltip.top .tooltip-arrow {
-  bottom: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-top: 5px solid #000000;
-}
-.tooltip.left .tooltip-arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-left: 5px solid #000000;
-}
-.tooltip.bottom .tooltip-arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-bottom: 5px solid #000000;
-}
-.tooltip.right .tooltip-arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-right: 5px solid #000000;
-}
-.tooltip-inner {
-  max-width: 200px;
-  padding: 3px 8px;
-  color: #ffffff;
-  text-align: center;
-  text-decoration: none;
-  background-color: #000000;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.tooltip-arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-}
-.popover {
-  position: absolute;
-  top: 0;
-  left: 0;
-  z-index: 1010;
-  display: none;
-  padding: 5px;
-}
-.popover.top {
-  margin-top: -5px;
-}
-.popover.right {
-  margin-left: 5px;
-}
-.popover.bottom {
-  margin-top: 5px;
-}
-.popover.left {
-  margin-left: -5px;
-}
-.popover.top .arrow {
-  bottom: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-top: 5px solid #000000;
-}
-.popover.right .arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-right: 5px solid #000000;
-}
-.popover.bottom .arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-bottom: 5px solid #000000;
-}
-.popover.left .arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-left: 5px solid #000000;
-}
-.popover .arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-}
-.popover-inner {
-  padding: 3px;
-  width: 280px;
-  overflow: hidden;
-  background: #000000;
-  background: rgba(0, 0, 0, 0.8);
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-}
-.popover-title {
-  padding: 9px 15px;
-  line-height: 1;
-  background-color: #f5f5f5;
-  border-bottom: 1px solid #eee;
-  -webkit-border-radius: 3px 3px 0 0;
-  -moz-border-radius: 3px 3px 0 0;
-  border-radius: 3px 3px 0 0;
-}
-.popover-content {
-  padding: 14px;
-  background-color: #ffffff;
-  -webkit-border-radius: 0 0 3px 3px;
-  -moz-border-radius: 0 0 3px 3px;
-  border-radius: 0 0 3px 3px;
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding-box;
-  background-clip: padding-box;
-}
-.popover-content p,
-.popover-content ul,
-.popover-content ol {
-  margin-bottom: 0;
-}
-.thumbnails {
-  margin-left: -20px;
-  list-style: none;
-  *zoom: 1;
-}
-.thumbnails:before,
-.thumbnails:after {
-  display: table;
-  content: "";
-}
-.thumbnails:after {
-  clear: both;
-}
-.thumbnails > li {
-  float: left;
-  margin: 0 0 18px 20px;
-}
-.thumbnail {
-  display: block;
-  padding: 4px;
-  line-height: 1;
-  border: 1px solid #ddd;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-a.thumbnail:hover {
-  border-color: #1b97d1;
-  -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-  -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-  box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-}
-.thumbnail > img {
-  display: block;
-  max-width: 100%;
-  margin-left: auto;
-  margin-right: auto;
-}
-.thumbnail .caption {
-  padding: 9px;
-}
-.label {
-  padding: 1px 3px 2px;
-  font-size: 9.75px;
-  font-weight: bold;
-  color: #ffffff;
-  text-transform: uppercase;
-  background-color: #999999;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.label-important {
-  background-color: #b94a48;
-}
-.label-warning {
-  background-color: #f89406;
-}
-.label-success {
-  background-color: #468847;
-}
-.label-info {
-  background-color: #3a87ad;
-}
-@-webkit-keyframes progress-bar-stripes {
-  from {
-    background-position: 0 0;
-  }
-  to {
-    background-position: 40px 0;
-  }
-}
-@-moz-keyframes progress-bar-stripes {
-  from {
-    background-position: 0 0;
-  }
-  to {
-    background-position: 40px 0;
-  }
-}
-@keyframes progress-bar-stripes {
-  from {
-    background-position: 0 0;
-  }
-  to {
-    background-position: 40px 0;
-  }
-}
-.progress {
-  overflow: hidden;
-  height: 18px;
-  margin-bottom: 18px;
-  background-color: #f7f7f7;
-  background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
-  background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.progress .bar {
-  width: 0%;
-  height: 18px;
-  color: #ffffff;
-  font-size: 12px;
-  text-align: center;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #0e90d2;
-  background-image: -moz-linear-gradient(top, #149bdf, #0480be);
-  background-image: -ms-linear-gradient(top, #149bdf, #0480be);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
-  background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
-  background-image: -o-linear-gradient(top, #149bdf, #0480be);
-  background-image: linear-gradient(top, #149bdf, #0480be);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);
-  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-  -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-  -webkit-transition: width 0.6s ease;
-  -moz-transition: width 0.6s ease;
-  -ms-transition: width 0.6s ease;
-  -o-transition: width 0.6s ease;
-  transition: width 0.6s ease;
-}
-.progress-striped .bar {
-  background-color: #62c462;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  -webkit-background-size: 40px 40px;
-  -moz-background-size: 40px 40px;
-  -o-background-size: 40px 40px;
-  background-size: 40px 40px;
-}
-.progress.active .bar {
-  -webkit-animation: progress-bar-stripes 2s linear infinite;
-  -moz-animation: progress-bar-stripes 2s linear infinite;
-  animation: progress-bar-stripes 2s linear infinite;
-}
-.progress-danger .bar {
-  background-color: #dd514c;
-  background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: linear-gradient(top, #ee5f5b, #c43c35);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
-}
-.progress-danger.progress-striped .bar {
-  background-color: #ee5f5b;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.progress-success .bar {
-  background-color: #5eb95e;
-  background-image: -moz-linear-gradient(top, #62c462, #57a957);
-  background-image: -ms-linear-gradient(top, #62c462, #57a957);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
-  background-image: -webkit-linear-gradient(top, #62c462, #57a957);
-  background-image: -o-linear-gradient(top, #62c462, #57a957);
-  background-image: linear-gradient(top, #62c462, #57a957);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
-}
-.progress-success.progress-striped .bar {
-  background-color: #62c462;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.progress-info .bar {
-  background-color: #4bb1cf;
-  background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: linear-gradient(top, #5bc0de, #339bb9);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);
-}
-.progress-info.progress-striped .bar {
-  background-color: #5bc0de;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.accordion {
-  margin-bottom: 18px;
-}
-.accordion-group {
-  margin-bottom: 2px;
-  border: 1px solid #e5e5e5;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.accordion-heading {
-  border-bottom: 0;
-}
-.accordion-heading .accordion-toggle {
-  display: block;
-  padding: 8px 15px;
-}
-.accordion-inner {
-  padding: 9px 15px;
-  border-top: 1px solid #e5e5e5;
-}
-.carousel {
-  position: relative;
-  margin-bottom: 18px;
-  line-height: 1;
-}
-.carousel-inner {
-  overflow: hidden;
-  width: 100%;
-  position: relative;
-}
-.carousel .item {
-  display: none;
-  position: relative;
-  -webkit-transition: 0.6s ease-in-out left;
-  -moz-transition: 0.6s ease-in-out left;
-  -ms-transition: 0.6s ease-in-out left;
-  -o-transition: 0.6s ease-in-out left;
-  transition: 0.6s ease-in-out left;
-}
-.carousel .item > img {
-  display: block;
-  line-height: 1;
-}
-.carousel .active,
-.carousel .next,
-.carousel .prev {
-  display: block;
-}
-.carousel .active {
-  left: 0;
-}
-.carousel .next,
-.carousel .prev {
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-.carousel .next {
-  left: 100%;
-}
-.carousel .prev {
-  left: -100%;
-}
-.carousel .next.left,
-.carousel .prev.right {
-  left: 0;
-}
-.carousel .active.left {
-  left: -100%;
-}
-.carousel .active.right {
-  left: 100%;
-}
-.carousel-control {
-  position: absolute;
-  top: 40%;
-  left: 15px;
-  width: 40px;
-  height: 40px;
-  margin-top: -20px;
-  font-size: 60px;
-  font-weight: 100;
-  line-height: 30px;
-  color: #ffffff;
-  text-align: center;
-  background: #222222;
-  border: 3px solid #ffffff;
-  -webkit-border-radius: 23px;
-  -moz-border-radius: 23px;
-  border-radius: 23px;
-  opacity: 0.5;
-  filter: alpha(opacity=50);
-}
-.carousel-control.right {
-  left: auto;
-  right: 15px;
-}
-.carousel-control:hover {
-  color: #ffffff;
-  text-decoration: none;
-  opacity: 0.9;
-  filter: alpha(opacity=90);
-}
-.carousel-caption {
-  position: absolute;
-  left: 0;
-  right: 0;
-  bottom: 0;
-  padding: 10px 15px 5px;
-  background: #333333;
-  background: rgba(0, 0, 0, 0.75);
-}
-.carousel-caption h4,
-.carousel-caption p {
-  color: #ffffff;
-}
-.hero-unit {
-  padding: 60px;
-  margin-bottom: 30px;
-  background-color: #f5f5f5;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.hero-unit h1 {
-  margin-bottom: 0;
-  font-size: 60px;
-  line-height: 1;
-  letter-spacing: -1px;
-}
-.hero-unit p {
-  font-size: 18px;
-  font-weight: 200;
-  line-height: 27px;
-}
-.pull-right {
-  float: right;
-}
-.pull-left {
-  float: left;
-}
-.hide {
-  display: none;
-}
-.show {
-  display: block;
-}
-.invisible {
-  visibility: hidden;
-}
-a {
-  color: #000000;
-}
-html,
-body {
-  height: 100%;
-  min-width: 640px;
-}
-.title {
-  font-size: 17px;
-}
-.thingy {
-  margin-bottom: 0px !important;
-  padding: 10px 10px 10px 0!important;
-  border-radius: 0px;
-  min-width: 440px;
-}
-.thingy .gravatar50 {
-  position: relative;
-  float: left;
-  margin-top: -15px;
-  right: 5px;
-}
-.thingy .app_title {
-  padding-right: 20px;
-}
-.thingy .bar a {
-  float: right;
-}
-.thingy .button {
-  margin-top: -5px;
-  min-width: 150px;
-}
-.thingy .btn-primary {
-  color: #ffffff;
-}
-.monospace {
-  font-family: monospace !important;
-}
-#selectedApp {
-  font-size: 16px;
-  cursor: pointer;
-  overflow: hidden;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-}
-#fullContainer {
-  position: relative;
-  /* needed for footer positioning*/
-
-  height: auto !important;
-  /* real browsers */
-
-  min-height: 100%;
-  /* real browsers */
-
-  height: 100%;
-  /* IE6: treaded as min-height*/
-
-  min-width: 640px;
-  max-width: 1280px;
-}
-.header-menus {
-  margin: 0 auto;
-}
-#pages {
-  padding: 0;
-}
-#pages > div {
-  display: none;
-}
-#pages .alert-error {
-  display: none;
-}
-#right a {
-  color: #1b97d1;
-  font-weight: 400;
-}
-#right a:visited {
-  color: #1b97d1;
-  font-weight: 400;
-}
-#copyright {
-  padding: 5px;
-}
-a {
-  cursor: pointer;
-}
-a:link {
-  color: #111;
-  text-decoration: none;
-}
-a:visited {
-  color: #000;
-  text-decoration: none;
-}
-a:hover {
-  color: #ff4300;
-  text-decoration: none;
-}
-a:active {
-  color: #000;
-  text-decoration: none;
-}
-.clear {
-  clear: both;
-}
-.marginless {
-  margin: 0 !important;
-}
-.navbar.navbar-fixed-top:before {
-  content: " ";
-  display: block;
-  background: #F93F00;
-  overflow: hidden;
-  width: 100%;
-  height: 8px;
-  margin-bottom: -8px;
-  position: absolute;
-  background-image: -moz-linear-gradient(top, #ff4300, #f03800);
-  background-image: -ms-linear-gradient(top, #ff4300, #f03800);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ff4300), to(#f03800));
-  background-image: -webkit-linear-gradient(top, #ff4300, #f03800);
-  background-repeat: repeat-x;
-  bottom: 8px;
-  left: 0px;
-}
-.navbar {
-  height: 48px;
-  min-width: 660px;
-  background-color: #ff4300;
-  margin: 0px 1px 20px 1px;
-}
-.navbar .navbar-inner {
-  display: none;
-}
-.navbar .navbar-inner b.caret {
-  position: relative;
-  display: inline-block;
-  float: left;
-  top: 48px;
-  left: -83px;
-  border-top: 8px solid #f03800;
-  border-left: 8px solid transparent;
-  border-right: 8px solid transparent;
-  opacity: 1;
-}
-.navbar h1,
-.navbar h2 {
-  display: inline;
-  float: left;
-  color: #ffffff;
-  font-weight: normal;
-}
-.navbar h1 {
-  height: 32px;
-  width: 64px;
-  overflow: hidden;
-  position: relative;
-  color: transparent !important;
-  margin: 0 15px;
-  padding-top: 8px;
-}
-.navbar h2 {
-  font-size: 13px;
-  padding: 5px;
-  line-height: 35px;
-  padding-top: 8px;
-  color: #ffffff;
-}
-.navbar h2 a {
-  color: #ffffff;
-}
-.navbar .secondary-nav {
-  float: right;
-}
-.navbar .nav li a {
-  text-shadow: 0 0px 0 white;
-  padding: 13px 10px 11px;
-  font-weight: normal;
-  color: #ffffff;
-  line-height: 24px;
-}
-.navbar .nav li #console-link:hover {
-  background-color: transparent;
-}
-.navbar .nav .dropdown-toggle span {
-  margin-left: 5px;
-}
-.navbar .nav .dropdown-toggle .caret {
-  margin-top: 13px;
-}
-.navbar .nav .dropdown-menu a {
-  line-height: 18px;
-  color: #000000;
-  padding: 3px 15px;
-}
-.navbar .nav .dropdown-menu a:hover {
-  color: #ffffff;
-  background-color: #1b97d1;
-}
-.navbar .nav .active {
-  background-color: #b22714 !important;
-}
-.navbar .nav .active .go-home {
-  background-color: transparent;
-}
-.navbar .nav .active .go-home:hover {
-  background-color: transparent;
-}
-.navbar .nav .active > a {
-  color: #ffffff;
-}
-.navbar .nav .active > a .caret {
-  opacity: 0.7;
-}
-.main-nav {
-  margin: 0px;
-}
-.sub-nav {
-  position: fixed;
-  top: 42px;
-  left: -1px;
-  right: -2px;
-  margin-bottom: 18px;
-  background-color: #b22714;
-  z-index: 1

<TRUNCATED>

[54/54] [abbrv] git commit: Merge branch 'pr/35'

Posted by sn...@apache.org.
Merge branch 'pr/35'


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/9fc1ab40
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/9fc1ab40
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/9fc1ab40

Branch: refs/heads/master
Commit: 9fc1ab40878c4a4756e9734bd444ccdad436d4fd
Parents: d61fba9 0f2e203
Author: Dave Johnson <sn...@apache.org>
Authored: Mon Aug 4 15:56:51 2014 -0400
Committer: Dave Johnson <sn...@apache.org>
Committed: Mon Aug 4 15:56:51 2014 -0400

----------------------------------------------------------------------
 .gitignore                                      |    10 +-
 bower.json                                      |    39 -
 portal/Gruntfile.js                             |    98 +-
 portal/README.md                                |     2 +-
 portal/archive/coming_soon.html                 |    31 -
 portal/archive/config.js                        |    72 -
 .../ui-bg_diagonals-thick_90_eeeeee_40x40.png   |   Bin 251 -> 0 bytes
 .../images/ui-bg_flat_100_deedf7_40x100.png     |   Bin 182 -> 0 bytes
 .../images/ui-bg_flat_100_e4f1fb_40x100.png     |   Bin 213 -> 0 bytes
 .../images/ui-bg_flat_100_f2f5f7_40x100.png     |   Bin 212 -> 0 bytes
 .../images/ui-bg_flat_15_cd0a0a_40x100.png      |   Bin 181 -> 0 bytes
 .../images/ui-bg_flat_50_3baae3_40x100.png      |   Bin 182 -> 0 bytes
 .../images/ui-bg_flat_80_d7ebf9_40x100.png      |   Bin 183 -> 0 bytes
 .../ui-bg_highlight-hard_70_000000_1x100.png    |   Bin 118 -> 0 bytes
 .../ui-bg_highlight-soft_25_ffef8f_1x100.png    |   Bin 153 -> 0 bytes
 .../images/ui-icons_000000_256x240.png          |   Bin 4369 -> 0 bytes
 .../images/ui-icons_2694e8_256x240.png          |   Bin 4369 -> 0 bytes
 .../images/ui-icons_2e83ff_256x240.png          |   Bin 4369 -> 0 bytes
 .../images/ui-icons_3d80b3_256x240.png          |   Bin 4369 -> 0 bytes
 .../images/ui-icons_72a7cf_256x240.png          |   Bin 4369 -> 0 bytes
 .../images/ui-icons_ffffff_256x240.png          |   Bin 4369 -> 0 bytes
 .../css/custom-theme/jquery-ui-1.8.9.custom.css |   573 -
 portal/archive/css/jquery-ui-timepicker.css     |    53 -
 portal/archive/css/jquery.ui.statusbar.css      |    25 -
 portal/archive/css/prettify.css                 |    52 -
 portal/archive/css/usergrid-stripped.css        |  5199 ---
 portal/archive/css/usergrid.css                 |  5203 ---
 portal/archive/dash/README.md                   |     3 -
 .../archive/dash/config/testacular-e2e.conf.js  |    22 -
 portal/archive/dash/config/testacular.conf.js   |    20 -
 portal/archive/dash/test/e2e/runner.html        |    10 -
 portal/archive/dash/test/e2e/scenarios.js       |    45 -
 .../dash/test/lib/angular/angular-mocks.js      |  1764 -
 .../dash/test/lib/angular/angular-scenario.js   | 26195 -------------
 .../archive/dash/test/lib/angular/version.txt   |     1 -
 .../archive/dash/test/unit/controllersSpec.js   |    31 -
 portal/archive/dash/test/unit/directivesSpec.js |    19 -
 portal/archive/dash/test/unit/filtersSpec.js    |    19 -
 portal/archive/dash/test/unit/servicesSpec.js   |    14 -
 portal/archive/images/APNS_cert_upload.png      |   Bin 33956 -> 0 bytes
 portal/archive/images/APNS_certification.png    |   Bin 16855 -> 0 bytes
 portal/archive/images/android-notification.png  |   Bin 41629 -> 0 bytes
 portal/archive/images/android-sdk-download.png  |   Bin 4848 -> 0 bytes
 portal/archive/images/api-activity.gif          |   Bin 10819 -> 0 bytes
 portal/archive/images/apigee-logo.png           |   Bin 3647 -> 0 bytes
 portal/archive/images/apigeetopbar.png          |   Bin 4658 -> 0 bytes
 portal/archive/images/background_one_col.png    |   Bin 3126 -> 0 bytes
 portal/archive/images/btn-copyCurl-up.png       |   Bin 2762 -> 0 bytes
 portal/archive/images/clippy-bg.png             |   Bin 561 -> 0 bytes
 portal/archive/images/close.gif                 |   Bin 718 -> 0 bytes
 portal/archive/images/dotnet-sdk-download.png   |   Bin 7149 -> 0 bytes
 portal/archive/images/down_arrow.png            |   Bin 1285 -> 0 bytes
 portal/archive/images/error.png                 |   Bin 2009 -> 0 bytes
 portal/archive/images/faviconApigee.ico         |   Bin 1150 -> 0 bytes
 .../images/glyphicons-halflings-white.png       |   Bin 4352 -> 0 bytes
 portal/archive/images/glyphicons-halflings.png  |   Bin 4352 -> 0 bytes
 .../glyphicons_halflings_135_wrench-white2.pdn  |   Bin 5400 -> 0 bytes
 .../glyphicons_halflings_135_wrench-white2.png  |   Bin 296 -> 0 bytes
 .../images/glyphicons_halflings_135_wrench.png  |   Bin 228 -> 0 bytes
 .../glyphicons_halflings_135_wrench_white.png   |   Bin 251 -> 0 bytes
 .../glyphicons_halflings_wrench_white.png       |   Bin 1016 -> 0 bytes
 portal/archive/images/google_api_key.png        |   Bin 98118 -> 0 bytes
 portal/archive/images/green_dot.png             |   Bin 3472 -> 0 bytes
 portal/archive/images/grid.png                  |   Bin 166 -> 0 bytes
 portal/archive/images/icons.png                 |   Bin 13132 -> 0 bytes
 portal/archive/images/ios-sdk-download.png      |   Bin 4886 -> 0 bytes
 portal/archive/images/iphone_message.png        |   Bin 90307 -> 0 bytes
 .../archive/images/javascript-sdk-download.png  |   Bin 4618 -> 0 bytes
 portal/archive/images/left_arrow.png            |   Bin 1257 -> 0 bytes
 portal/archive/images/logo-white.png            |   Bin 2014 -> 0 bytes
 portal/archive/images/menuActiveTriangle.png    |   Bin 315 -> 0 bytes
 portal/archive/images/nodejs-sdk-download.png   |   Bin 5273 -> 0 bytes
 portal/archive/images/notice.png                |   Bin 2112 -> 0 bytes
 portal/archive/images/orange-arrow.png          |   Bin 242 -> 0 bytes
 .../archive/images/push_notifications_icon.png  |   Bin 338 -> 0 bytes
 portal/archive/images/red_dot.png               |   Bin 3482 -> 0 bytes
 portal/archive/images/right_arrow.png           |   Bin 1251 -> 0 bytes
 portal/archive/images/ruby-sdk-download.png     |   Bin 6343 -> 0 bytes
 portal/archive/images/step_1.png                |   Bin 1953 -> 0 bytes
 portal/archive/images/step_2.png                |   Bin 2117 -> 0 bytes
 portal/archive/images/step_3.png                |   Bin 2162 -> 0 bytes
 portal/archive/images/success.png               |   Bin 1863 -> 0 bytes
 portal/archive/images/swish_arrow.png           |   Bin 220 -> 0 bytes
 portal/archive/images/topbackground.png         |   Bin 2890 -> 0 bytes
 portal/archive/images/up_arrow.png              |   Bin 1292 -> 0 bytes
 portal/archive/images/user-photo.png            |   Bin 3849 -> 0 bytes
 portal/archive/images/user_profile.png          |   Bin 3775 -> 0 bytes
 portal/archive/images/usergrid_200.png          |   Bin 6397 -> 0 bytes
 portal/archive/images/usergrid_400.png          |   Bin 8746 -> 0 bytes
 portal/archive/images/warning.png               |   Bin 1179 -> 0 bytes
 portal/archive/images/yellow_dot.png            |   Bin 3475 -> 0 bytes
 portal/archive/index-stripped2.html             |  1795 -
 portal/archive/index.html                       |  1932 -
 portal/archive/js/app/app.js                    |   131 -
 portal/archive/js/app/console.js                |  5397 ---
 portal/archive/js/app/helpers.js                |   241 -
 portal/archive/js/app/navigation.js             |   251 -
 portal/archive/js/app/pages.js                  |   161 -
 portal/archive/js/app/params.js                 |    30 -
 portal/archive/js/app/quickLogin.js             |    30 -
 portal/archive/js/app/session.js                |   176 -
 portal/archive/js/app/sso.js                    |   135 -
 portal/archive/js/app/status.js                 |    37 -
 portal/archive/js/app/ui/collections.entity.js  |   320 -
 portal/archive/js/app/ui/collections.user.js    |   120 -
 portal/archive/js/app/ui/ui.js                  |   415 -
 portal/archive/js/app/usergrid.appSDK.js        |  2097 --
 portal/archive/js/app/usergrid.appSDK.orig.js   |  2070 --
 portal/archive/js/lib/MD5.min.js                |     1 -
 portal/archive/js/lib/backbone.js               |  1431 -
 portal/archive/js/lib/bootstrap.min.js          |     7 -
 portal/archive/js/lib/date.min.js               |     2 -
 portal/archive/js/lib/jquery-1.7.2.min.js       |     4 -
 portal/archive/js/lib/jquery-ui-1.8.18.min.js   |    15 -
 portal/archive/js/lib/jquery.dataset.min.js     |     1 -
 portal/archive/js/lib/jquery.dform-0.1.3.min.js |    16 -
 portal/archive/js/lib/jquery.jsonp-2.3.1.min.js |     3 -
 portal/archive/js/lib/jquery.tmpl.min.js        |    10 -
 .../archive/js/lib/jquery.ui.statusbar.min.js   |     1 -
 .../archive/js/lib/jquery.ui.timepicker.min.js  |     1 -
 portal/archive/js/lib/prettify.js               |  1477 -
 portal/archive/js/lib/underscore-min.js         |     5 -
 portal/archive/js/spec/client-tests.js          |   159 -
 portal/archive/js/spec/index.html               |    20 -
 portal/archive/js/spec/qunit-git.css            |   238 -
 portal/archive/js/spec/qunit-git.js             |  1865 -
 portal/archive/js/unit-tests/appSDK-tests.js    |   255 -
 portal/archive/js/unit-tests/ie-jquery-tests.js |   191 -
 portal/archive/js/unit-tests/qunit.css          |   231 -
 portal/archive/js/unit-tests/qunit.js           |  1934 -
 portal/archive/loading.html                     |     9 -
 portal/archive/max/index.html                   |     0
 portal/archive/planned_outage.html              |    48 -
 portal/archive/push/index.html                  |    34 -
 portal/archive/service_down.html                |    48 -
 .../apigee.ui.activities.table_rows.html        |    14 -
 .../templates/apigee.ui.admins.table_rows.html  |     8 -
 .../apigee.ui.applications.table_rows.html      |     4 -
 .../apigee.ui.collection.table_rows.html        |    67 -
 .../apigee.ui.collections.query.indexes.html    |     5 -
 .../apigee.ui.collections.table_rows.html       |     9 -
 .../apigee.ui.collections.user.header.html      |    21 -
 .../templates/apigee.ui.curl.detail.html        |    11 -
 .../templates/apigee.ui.feed.table_rows.html    |    15 -
 .../templates/apigee.ui.groups.table_rows.html  |    14 -
 .../apigee.ui.panels.group.activities.html      |    28 -
 .../apigee.ui.panels.group.details.html         |    97 -
 .../apigee.ui.panels.group.memberships.html     |    40 -
 .../apigee.ui.panels.group.permissions.html     |    99 -
 ...pigee.ui.panels.notifications.configure.html |    14 -
 .../apigee.ui.panels.role.permissions.html      |    58 -
 .../templates/apigee.ui.panels.role.users.html  |    38 -
 .../apigee.ui.panels.user.activities.html       |    40 -
 .../templates/apigee.ui.panels.user.graph.html  |    80 -
 .../apigee.ui.panels.user.memberships.html      |    40 -
 .../apigee.ui.panels.user.permissions.html      |   105 -
 .../apigee.ui.panels.user.profile.html          |   113 -
 .../apigee.ui.role.groups.table_rows.html       |    44 -
 .../templates/apigee.ui.roles.table_rows.html   |    15 -
 .../templates/apigee.ui.users.table_rows.html   |    18 -
 portal/archive/templates/test/modalForm2.html   |    32 -
 portal/archive/test/autocomplete.html           |    25 -
 portal/archive/test/modalForm.html              |    32 -
 portal/bower.json                               |     4 -
 portal/build.sh                                 |     7 +-
 portal/config.js                                |    29 +-
 portal/css/apigeeGlobalNavigation.css           |   291 -
 portal/css/dash.min.css                         |     1 -
 portal/css/main.css                             |    94 +-
 portal/css/main.min.css                         |     1 +
 .../usergrid-portal/archive/coming_soon.html    |    31 -
 portal/dist/usergrid-portal/archive/config.js   |    72 -
 .../ui-bg_diagonals-thick_90_eeeeee_40x40.png   |   Bin 251 -> 0 bytes
 .../images/ui-bg_flat_100_deedf7_40x100.png     |   Bin 182 -> 0 bytes
 .../images/ui-bg_flat_100_e4f1fb_40x100.png     |   Bin 213 -> 0 bytes
 .../images/ui-bg_flat_100_f2f5f7_40x100.png     |   Bin 212 -> 0 bytes
 .../images/ui-bg_flat_15_cd0a0a_40x100.png      |   Bin 181 -> 0 bytes
 .../images/ui-bg_flat_50_3baae3_40x100.png      |   Bin 182 -> 0 bytes
 .../images/ui-bg_flat_80_d7ebf9_40x100.png      |   Bin 183 -> 0 bytes
 .../ui-bg_highlight-hard_70_000000_1x100.png    |   Bin 118 -> 0 bytes
 .../ui-bg_highlight-soft_25_ffef8f_1x100.png    |   Bin 153 -> 0 bytes
 .../images/ui-icons_000000_256x240.png          |   Bin 4369 -> 0 bytes
 .../images/ui-icons_2694e8_256x240.png          |   Bin 4369 -> 0 bytes
 .../images/ui-icons_2e83ff_256x240.png          |   Bin 4369 -> 0 bytes
 .../images/ui-icons_3d80b3_256x240.png          |   Bin 4369 -> 0 bytes
 .../images/ui-icons_72a7cf_256x240.png          |   Bin 4369 -> 0 bytes
 .../images/ui-icons_ffffff_256x240.png          |   Bin 4369 -> 0 bytes
 .../css/custom-theme/jquery-ui-1.8.9.custom.css |   573 -
 .../archive/css/jquery-ui-timepicker.css        |    53 -
 .../archive/css/jquery.ui.statusbar.css         |    25 -
 .../usergrid-portal/archive/css/prettify.css    |    52 -
 .../archive/css/usergrid-stripped.css           |  5199 ---
 .../usergrid-portal/archive/css/usergrid.css    |  5203 ---
 .../dist/usergrid-portal/archive/dash/README.md |     3 -
 .../archive/dash/config/testacular-e2e.conf.js  |    22 -
 .../archive/dash/config/testacular.conf.js      |    20 -
 .../archive/dash/test/e2e/runner.html           |    10 -
 .../archive/dash/test/e2e/scenarios.js          |    45 -
 .../dash/test/lib/angular/angular-mocks.js      |  1764 -
 .../dash/test/lib/angular/angular-scenario.js   | 26195 -------------
 .../archive/dash/test/lib/angular/version.txt   |     1 -
 .../archive/dash/test/unit/controllersSpec.js   |    31 -
 .../archive/dash/test/unit/directivesSpec.js    |    19 -
 .../archive/dash/test/unit/filtersSpec.js       |    19 -
 .../archive/dash/test/unit/servicesSpec.js      |    14 -
 .../archive/images/APNS_cert_upload.png         |   Bin 33956 -> 0 bytes
 .../archive/images/APNS_certification.png       |   Bin 16855 -> 0 bytes
 .../archive/images/android-notification.png     |   Bin 41629 -> 0 bytes
 .../archive/images/android-sdk-download.png     |   Bin 4848 -> 0 bytes
 .../archive/images/api-activity.gif             |   Bin 10819 -> 0 bytes
 .../archive/images/apigee-logo.png              |   Bin 3647 -> 0 bytes
 .../archive/images/apigeetopbar.png             |   Bin 4658 -> 0 bytes
 .../archive/images/background_one_col.png       |   Bin 3126 -> 0 bytes
 .../archive/images/btn-copyCurl-up.png          |   Bin 2762 -> 0 bytes
 .../archive/images/clippy-bg.png                |   Bin 561 -> 0 bytes
 .../usergrid-portal/archive/images/close.gif    |   Bin 718 -> 0 bytes
 .../archive/images/dotnet-sdk-download.png      |   Bin 7149 -> 0 bytes
 .../archive/images/down_arrow.png               |   Bin 1285 -> 0 bytes
 .../usergrid-portal/archive/images/error.png    |   Bin 2009 -> 0 bytes
 .../archive/images/faviconApigee.ico            |   Bin 1150 -> 0 bytes
 .../images/glyphicons-halflings-white.png       |   Bin 4352 -> 0 bytes
 .../archive/images/glyphicons-halflings.png     |   Bin 4352 -> 0 bytes
 .../glyphicons_halflings_135_wrench-white2.pdn  |   Bin 5400 -> 0 bytes
 .../glyphicons_halflings_135_wrench-white2.png  |   Bin 296 -> 0 bytes
 .../images/glyphicons_halflings_135_wrench.png  |   Bin 228 -> 0 bytes
 .../glyphicons_halflings_135_wrench_white.png   |   Bin 251 -> 0 bytes
 .../glyphicons_halflings_wrench_white.png       |   Bin 1016 -> 0 bytes
 .../archive/images/google_api_key.png           |   Bin 98118 -> 0 bytes
 .../archive/images/green_dot.png                |   Bin 3472 -> 0 bytes
 .../usergrid-portal/archive/images/grid.png     |   Bin 166 -> 0 bytes
 .../usergrid-portal/archive/images/icons.png    |   Bin 13132 -> 0 bytes
 .../archive/images/ios-sdk-download.png         |   Bin 4886 -> 0 bytes
 .../archive/images/iphone_message.png           |   Bin 90307 -> 0 bytes
 .../archive/images/javascript-sdk-download.png  |   Bin 4618 -> 0 bytes
 .../archive/images/left_arrow.png               |   Bin 1257 -> 0 bytes
 .../archive/images/logo-white.png               |   Bin 2014 -> 0 bytes
 .../archive/images/menuActiveTriangle.png       |   Bin 315 -> 0 bytes
 .../archive/images/nodejs-sdk-download.png      |   Bin 5273 -> 0 bytes
 .../usergrid-portal/archive/images/notice.png   |   Bin 2112 -> 0 bytes
 .../archive/images/orange-arrow.png             |   Bin 242 -> 0 bytes
 .../archive/images/push_notifications_icon.png  |   Bin 338 -> 0 bytes
 .../usergrid-portal/archive/images/red_dot.png  |   Bin 3482 -> 0 bytes
 .../archive/images/right_arrow.png              |   Bin 1251 -> 0 bytes
 .../archive/images/ruby-sdk-download.png        |   Bin 6343 -> 0 bytes
 .../usergrid-portal/archive/images/step_1.png   |   Bin 1953 -> 0 bytes
 .../usergrid-portal/archive/images/step_2.png   |   Bin 2117 -> 0 bytes
 .../usergrid-portal/archive/images/step_3.png   |   Bin 2162 -> 0 bytes
 .../usergrid-portal/archive/images/success.png  |   Bin 1863 -> 0 bytes
 .../archive/images/swish_arrow.png              |   Bin 220 -> 0 bytes
 .../archive/images/topbackground.png            |   Bin 2890 -> 0 bytes
 .../usergrid-portal/archive/images/up_arrow.png |   Bin 1292 -> 0 bytes
 .../archive/images/user-photo.png               |   Bin 3849 -> 0 bytes
 .../archive/images/user_profile.png             |   Bin 3775 -> 0 bytes
 .../archive/images/usergrid_200.png             |   Bin 6397 -> 0 bytes
 .../archive/images/usergrid_400.png             |   Bin 8746 -> 0 bytes
 .../usergrid-portal/archive/images/warning.png  |   Bin 1179 -> 0 bytes
 .../archive/images/yellow_dot.png               |   Bin 3475 -> 0 bytes
 .../archive/index-stripped2.html                |  1795 -
 portal/dist/usergrid-portal/archive/index.html  |  1932 -
 .../dist/usergrid-portal/archive/js/app/app.js  |   131 -
 .../usergrid-portal/archive/js/app/console.js   |  5397 ---
 .../usergrid-portal/archive/js/app/helpers.js   |   241 -
 .../archive/js/app/navigation.js                |   251 -
 .../usergrid-portal/archive/js/app/pages.js     |   161 -
 .../usergrid-portal/archive/js/app/params.js    |    30 -
 .../archive/js/app/quickLogin.js                |    30 -
 .../usergrid-portal/archive/js/app/session.js   |   176 -
 .../dist/usergrid-portal/archive/js/app/sso.js  |   135 -
 .../usergrid-portal/archive/js/app/status.js    |    37 -
 .../archive/js/app/ui/collections.entity.js     |   320 -
 .../archive/js/app/ui/collections.user.js       |   120 -
 .../usergrid-portal/archive/js/app/ui/ui.js     |   415 -
 .../archive/js/app/usergrid.appSDK.js           |  2097 --
 .../archive/js/app/usergrid.appSDK.orig.js      |  2070 --
 .../usergrid-portal/archive/js/lib/MD5.min.js   |     1 -
 .../usergrid-portal/archive/js/lib/backbone.js  |  1431 -
 .../archive/js/lib/bootstrap.min.js             |     7 -
 .../usergrid-portal/archive/js/lib/date.min.js  |     2 -
 .../archive/js/lib/jquery-1.7.2.min.js          |     4 -
 .../archive/js/lib/jquery-ui-1.8.18.min.js      |    15 -
 .../archive/js/lib/jquery.dataset.min.js        |     1 -
 .../archive/js/lib/jquery.dform-0.1.3.min.js    |    16 -
 .../archive/js/lib/jquery.jsonp-2.3.1.min.js    |     3 -
 .../archive/js/lib/jquery.tmpl.min.js           |    10 -
 .../archive/js/lib/jquery.ui.statusbar.min.js   |     1 -
 .../archive/js/lib/jquery.ui.timepicker.min.js  |     1 -
 .../usergrid-portal/archive/js/lib/prettify.js  |  1477 -
 .../archive/js/lib/underscore-min.js            |     5 -
 .../archive/js/spec/client-tests.js             |   159 -
 .../usergrid-portal/archive/js/spec/index.html  |    20 -
 .../archive/js/spec/qunit-git.css               |   238 -
 .../archive/js/spec/qunit-git.js                |  1865 -
 .../archive/js/unit-tests/appSDK-tests.js       |   255 -
 .../archive/js/unit-tests/ie-jquery-tests.js    |   191 -
 .../archive/js/unit-tests/qunit.css             |   231 -
 .../archive/js/unit-tests/qunit.js              |  1934 -
 .../dist/usergrid-portal/archive/loading.html   |     9 -
 .../dist/usergrid-portal/archive/max/index.html |     0
 .../usergrid-portal/archive/planned_outage.html |    48 -
 .../usergrid-portal/archive/push/index.html     |    34 -
 .../usergrid-portal/archive/service_down.html   |    48 -
 .../apigee.ui.activities.table_rows.html        |    14 -
 .../templates/apigee.ui.admins.table_rows.html  |     8 -
 .../apigee.ui.applications.table_rows.html      |     4 -
 .../apigee.ui.collection.table_rows.html        |    67 -
 .../apigee.ui.collections.query.indexes.html    |     5 -
 .../apigee.ui.collections.table_rows.html       |     9 -
 .../apigee.ui.collections.user.header.html      |    21 -
 .../templates/apigee.ui.curl.detail.html        |    11 -
 .../templates/apigee.ui.feed.table_rows.html    |    15 -
 .../templates/apigee.ui.groups.table_rows.html  |    14 -
 .../apigee.ui.panels.group.activities.html      |    28 -
 .../apigee.ui.panels.group.details.html         |    97 -
 .../apigee.ui.panels.group.memberships.html     |    40 -
 .../apigee.ui.panels.group.permissions.html     |    99 -
 ...pigee.ui.panels.notifications.configure.html |    14 -
 .../apigee.ui.panels.role.permissions.html      |    58 -
 .../templates/apigee.ui.panels.role.users.html  |    38 -
 .../apigee.ui.panels.user.activities.html       |    40 -
 .../templates/apigee.ui.panels.user.graph.html  |    80 -
 .../apigee.ui.panels.user.memberships.html      |    40 -
 .../apigee.ui.panels.user.permissions.html      |   105 -
 .../apigee.ui.panels.user.profile.html          |   113 -
 .../apigee.ui.role.groups.table_rows.html       |    44 -
 .../templates/apigee.ui.roles.table_rows.html   |    15 -
 .../templates/apigee.ui.users.table_rows.html   |    18 -
 .../archive/templates/test/modalForm2.html      |    32 -
 .../archive/test/autocomplete.html              |    25 -
 .../usergrid-portal/archive/test/modalForm.html |    32 -
 .../angular-intro.js/Gruntfile.js               |    40 -
 .../bower_components/angular-intro.js/LICENSE   |    20 -
 .../angular-intro.js/bower.json                 |    20 -
 .../angular-intro.js/build/angular-intro.min.js |     2 -
 .../angular-intro.js/example/app.js             |    61 -
 .../angular-intro.js/package.json               |    36 -
 .../angular-intro.js/src/angular-intro.js       |    60 -
 .../bower_components/angular/README.md          |    48 -
 .../bower_components/angular/angular-csp.css    |    13 -
 .../bower_components/angular/angular.js         | 22775 ------------
 .../bower_components/angular/angular.min.js     |   220 -
 .../angular/angular.min.js.gzip                 |   Bin 40453 -> 0 bytes
 .../bower_components/angular/angular.min.js.map |     8 -
 .../bower_components/angular/bower.json         |     7 -
 .../bower_components/angularitics/Gruntfile.js  |    62 -
 .../bower_components/angularitics/LICENSE       |    22 -
 .../bower_components/angularitics/README.md     |   115 -
 .../bower_components/angularitics/bower.json    |    12 -
 .../dist/angulartics-chartbeat.min.js           |     7 -
 .../dist/angulartics-ga-cordova.min.js          |     6 -
 .../angularitics/dist/angulartics-ga.min.js     |     7 -
 .../dist/angulartics-google-analytics.min.js    |     7 -
 .../dist/angulartics-kissmetrics.min.js         |     6 -
 .../dist/angulartics-mixpanel.min.js            |     7 -
 .../angularitics/dist/angulartics-scroll.min.js |    14 -
 .../dist/angulartics-segmentio.min.js           |     6 -
 .../angularitics/dist/angulartics.min.js        |     6 -
 .../bower_components/angularitics/karma.conf.js |    22 -
 .../bower_components/angularitics/package.json  |    43 -
 .../angularitics/samples/chartbeat.html         |    79 -
 .../angularitics/samples/google-analytics.html  |    68 -
 .../angularitics/samples/kissmetrics.html       |    75 -
 .../angularitics/samples/mixpanel.html          |    65 -
 .../angularitics/samples/partials/a.tpl.html    |     1 -
 .../angularitics/samples/partials/b.tpl.html    |     1 -
 .../angularitics/samples/partials/c.tpl.html    |     1 -
 .../angularitics/samples/partials/root.tpl.html |     1 -
 .../angularitics/samples/scroll.html            |    82 -
 .../angularitics/samples/segmentio.html         |    65 -
 .../angularitics/src/angulartics-chartbeat.js   |    29 -
 .../angularitics/src/angulartics-ga-cordova.js  |    91 -
 .../angularitics/src/angulartics-ga.js          |    32 -
 .../angularitics/src/angulartics-kissmetrics.js |    29 -
 .../angularitics/src/angulartics-mixpanel.js    |    29 -
 .../angularitics/src/angulartics-scroll.js      |    47 -
 .../angularitics/src/angulartics-segmentio.js   |    24 -
 .../angularitics/src/angulartics.js             |   132 -
 .../angularitics/test/angularticsSpec.js        |    38 -
 .../bower_components/apigee-sdk/apigee.js       |  3260 --
 .../bower_components/apigee-sdk/apigee.min.js   |     3 -
 .../bower_components/apigee-sdk/bower.json      |    13 -
 .../apigee-sdk/samples/books/index.html         |   139 -
 .../samples/collections/css/apigee.min.css      |   213 -
 .../collections/css/jquery.mobile.icons.min.css |     3 -
 .../samples/collections/css/theme.min.css       |   213 -
 .../apigee-sdk/samples/collections/index.html   |    91 -
 .../apigee-sdk/samples/collections/js/index.js  |   360 -
 .../entities/css/jquery.mobile.icons.min.css    |     3 -
 .../samples/entities/css/theme.min.css          |   213 -
 .../apigee-sdk/samples/entities/index.html      |    86 -
 .../apigee-sdk/samples/entities/js/index.js     |   228 -
 .../geolocation/css/jquery.mobile.icons.min.css |     3 -
 .../samples/geolocation/css/theme.min.css       |   213 -
 .../apigee-sdk/samples/geolocation/index.html   |    75 -
 .../apigee-sdk/samples/geolocation/js/index.js  |   133 -
 .../apigee-sdk/samples/messagee/app.js          |   634 -
 .../apigee-sdk/samples/messagee/index.html      |   176 -
 .../samples/messagee/usergrid.validation.js     |   249 -
 .../apigee-sdk/samples/monitoring/index.html    |   113 -
 .../samples/push/android/AndroidManifest.xml    |    79 -
 .../samples/push/android/ant.properties         |    17 -
 .../push/android/assets/www/PushNotification.js |    65 -
 .../push/android/assets/www/cordova-2.7.0.js    |  6836 ----
 .../push/android/assets/www/css/index.css       |   115 -
 .../push/android/assets/www/img/cordova.png     |   Bin 19932 -> 0 bytes
 .../push/android/assets/www/img/logo.png        |   Bin 21814 -> 0 bytes
 .../samples/push/android/assets/www/index.html  |    51 -
 .../samples/push/android/assets/www/js/index.js |   241 -
 .../samples/push/android/assets/www/main.js     |   165 -
 .../samples/push/android/assets/www/master.css  |   116 -
 .../screen/android/screen-hdpi-landscape.png    |   Bin 218302 -> 0 bytes
 .../res/screen/android/screen-hdpi-portrait.png |   Bin 222148 -> 0 bytes
 .../screen/android/screen-ldpi-landscape.png    |   Bin 42616 -> 0 bytes
 .../res/screen/android/screen-ldpi-portrait.png |   Bin 42034 -> 0 bytes
 .../screen/android/screen-mdpi-landscape.png    |   Bin 92347 -> 0 bytes
 .../res/screen/android/screen-mdpi-portrait.png |   Bin 90555 -> 0 bytes
 .../screen/android/screen-xhdpi-landscape.png   |   Bin 489604 -> 0 bytes
 .../screen/android/screen-xhdpi-portrait.png    |   Bin 504508 -> 0 bytes
 .../samples/push/android/assets/www/spec.html   |    68 -
 .../push/android/assets/www/spec/helper.js      |    33 -
 .../push/android/assets/www/spec/index.js       |    67 -
 .../www/spec/lib/jasmine-1.2.0/MIT.LICENSE      |    20 -
 .../www/spec/lib/jasmine-1.2.0/jasmine-html.js  |   616 -
 .../www/spec/lib/jasmine-1.2.0/jasmine.css      |    81 -
 .../www/spec/lib/jasmine-1.2.0/jasmine.js       |  2529 --
 .../apigee-sdk/samples/push/android/build.xml   |    92 -
 .../samples/push/android/cordova/appinfo.jar    |   Bin 1574 -> 0 bytes
 .../samples/push/android/cordova/build          |    24 -
 .../samples/push/android/cordova/clean          |    24 -
 .../samples/push/android/cordova/cordova        |   159 -
 .../apigee-sdk/samples/push/android/cordova/log |    24 -
 .../samples/push/android/cordova/release        |    24 -
 .../apigee-sdk/samples/push/android/cordova/run |    24 -
 .../push/android/libs/android-support-v13.jar   |   Bin 402581 -> 0 bytes
 .../samples/push/android/libs/cordova-2.7.0.jar |   Bin 256941 -> 0 bytes
 .../samples/push/android/libs/gcm.jar           |   Bin 13662 -> 0 bytes
 .../samples/push/android/proguard-project.txt   |    20 -
 .../samples/push/android/project.properties     |    14 -
 .../android/res/drawable-hdpi/ic_launcher.png   |   Bin 9397 -> 0 bytes
 .../push/android/res/drawable-hdpi/icon.png     |   Bin 6080 -> 0 bytes
 .../android/res/drawable-ldpi/ic_launcher.png   |   Bin 2729 -> 0 bytes
 .../push/android/res/drawable-ldpi/icon.png     |   Bin 3096 -> 0 bytes
 .../android/res/drawable-mdpi/ic_launcher.png   |   Bin 5237 -> 0 bytes
 .../push/android/res/drawable-mdpi/icon.png     |   Bin 4090 -> 0 bytes
 .../android/res/drawable-xhdpi/ic_launcher.png  |   Bin 14383 -> 0 bytes
 .../push/android/res/drawable-xhdpi/icon.png    |   Bin 7685 -> 0 bytes
 .../samples/push/android/res/drawable/icon.png  |   Bin 7685 -> 0 bytes
 .../samples/push/android/res/layout/main.xml    |    13 -
 .../samples/push/android/res/values/strings.xml |     4 -
 .../samples/push/android/res/xml/config.xml     |    62 -
 .../plugin/gcm/CordovaGCMBroadcastReceiver.java |    19 -
 .../src/com/plugin/gcm/GCMIntentService.java    |   163 -
 .../src/com/plugin/gcm/PushHandlerActivity.java |    66 -
 .../android/src/com/plugin/gcm/PushPlugin.java  |   216 -
 .../src/me/mdob/android/androidpush.java        |    36 -
 .../samples/push/ios/CordovaLib/Classes/CDV.h   |    57 -
 .../ios/CordovaLib/Classes/CDVAccelerometer.h   |    39 -
 .../ios/CordovaLib/Classes/CDVAccelerometer.m   |   128 -
 .../ios/CordovaLib/Classes/CDVAvailability.h    |    87 -
 .../push/ios/CordovaLib/Classes/CDVBattery.h    |    40 -
 .../push/ios/CordovaLib/Classes/CDVBattery.m    |   152 -
 .../push/ios/CordovaLib/Classes/CDVCamera.h     |    92 -
 .../push/ios/CordovaLib/Classes/CDVCamera.m     |   570 -
 .../push/ios/CordovaLib/Classes/CDVCapture.h    |   118 -
 .../push/ios/CordovaLib/Classes/CDVCapture.m    |   847 -
 .../ios/CordovaLib/Classes/CDVCommandDelegate.h |    54 -
 .../CordovaLib/Classes/CDVCommandDelegateImpl.h |    33 -
 .../CordovaLib/Classes/CDVCommandDelegateImpl.m |   145 -
 .../ios/CordovaLib/Classes/CDVCommandQueue.h    |    40 -
 .../ios/CordovaLib/Classes/CDVCommandQueue.m    |   169 -
 .../ios/CordovaLib/Classes/CDVConfigParser.h    |    28 -
 .../ios/CordovaLib/Classes/CDVConfigParser.m    |    70 -
 .../push/ios/CordovaLib/Classes/CDVConnection.h |    34 -
 .../push/ios/CordovaLib/Classes/CDVConnection.m |   132 -
 .../push/ios/CordovaLib/Classes/CDVContact.h    |   136 -
 .../push/ios/CordovaLib/Classes/CDVContact.m    |  1752 -
 .../push/ios/CordovaLib/Classes/CDVContacts.h   |   151 -
 .../push/ios/CordovaLib/Classes/CDVContacts.m   |   593 -
 .../push/ios/CordovaLib/Classes/CDVDebug.h      |    25 -
 .../ios/CordovaLib/Classes/CDVDebugConsole.h    |    28 -
 .../ios/CordovaLib/Classes/CDVDebugConsole.m    |    37 -
 .../push/ios/CordovaLib/Classes/CDVDevice.h     |    30 -
 .../push/ios/CordovaLib/Classes/CDVDevice.m     |    90 -
 .../push/ios/CordovaLib/Classes/CDVEcho.h       |    23 -
 .../push/ios/CordovaLib/Classes/CDVEcho.m       |    61 -
 .../push/ios/CordovaLib/Classes/CDVExif.h       |    43 -
 .../push/ios/CordovaLib/Classes/CDVFile.h       |   106 -
 .../push/ios/CordovaLib/Classes/CDVFile.m       |  1409 -
 .../ios/CordovaLib/Classes/CDVFileTransfer.h    |    74 -
 .../ios/CordovaLib/Classes/CDVFileTransfer.m    |   625 -
 .../ios/CordovaLib/Classes/CDVGlobalization.h   |   150 -
 .../ios/CordovaLib/Classes/CDVGlobalization.m   |   790 -
 .../ios/CordovaLib/Classes/CDVInAppBrowser.h    |    88 -
 .../ios/CordovaLib/Classes/CDVInAppBrowser.m    |   581 -
 .../CordovaLib/Classes/CDVInvokedUrlCommand.h   |    57 -
 .../CordovaLib/Classes/CDVInvokedUrlCommand.m   |   140 -
 .../push/ios/CordovaLib/Classes/CDVJSON.h       |    30 -
 .../push/ios/CordovaLib/Classes/CDVJSON.m       |    77 -
 .../CordovaLib/Classes/CDVJpegHeaderWriter.h    |    62 -
 .../CordovaLib/Classes/CDVJpegHeaderWriter.m    |   522 -
 .../ios/CordovaLib/Classes/CDVLocalStorage.h    |    50 -
 .../ios/CordovaLib/Classes/CDVLocalStorage.m    |   485 -
 .../push/ios/CordovaLib/Classes/CDVLocation.h   |   104 -
 .../push/ios/CordovaLib/Classes/CDVLocation.m   |   623 -
 .../push/ios/CordovaLib/Classes/CDVLogger.h     |    26 -
 .../push/ios/CordovaLib/Classes/CDVLogger.m     |    38 -
 .../ios/CordovaLib/Classes/CDVNotification.h    |    37 -
 .../ios/CordovaLib/Classes/CDVNotification.m    |   126 -
 .../push/ios/CordovaLib/Classes/CDVPlugin.h     |    64 -
 .../push/ios/CordovaLib/Classes/CDVPlugin.m     |   152 -
 .../ios/CordovaLib/Classes/CDVPluginResult.h    |    68 -
 .../ios/CordovaLib/Classes/CDVPluginResult.m    |   224 -
 .../ios/CordovaLib/Classes/CDVReachability.h    |    85 -
 .../ios/CordovaLib/Classes/CDVReachability.m    |   260 -
 .../Classes/CDVScreenOrientationDelegate.h      |    28 -
 .../push/ios/CordovaLib/Classes/CDVSound.h      |   116 -
 .../push/ios/CordovaLib/Classes/CDVSound.m      |   699 -
 .../ios/CordovaLib/Classes/CDVSplashScreen.h    |    33 -
 .../ios/CordovaLib/Classes/CDVSplashScreen.m    |   225 -
 .../ios/CordovaLib/Classes/CDVURLProtocol.h     |    29 -
 .../ios/CordovaLib/Classes/CDVURLProtocol.m     |   230 -
 .../ios/CordovaLib/Classes/CDVUserAgentUtil.h   |    27 -
 .../ios/CordovaLib/Classes/CDVUserAgentUtil.m   |   120 -
 .../ios/CordovaLib/Classes/CDVViewController.h  |    73 -
 .../ios/CordovaLib/Classes/CDVViewController.m  |   931 -
 .../ios/CordovaLib/Classes/CDVWebViewDelegate.h |    37 -
 .../ios/CordovaLib/Classes/CDVWebViewDelegate.m |   171 -
 .../push/ios/CordovaLib/Classes/CDVWhitelist.h  |    36 -
 .../push/ios/CordovaLib/Classes/CDVWhitelist.m  |   192 -
 .../CordovaLib/Classes/NSArray+Comparisons.h    |    26 -
 .../CordovaLib/Classes/NSArray+Comparisons.m    |    41 -
 .../push/ios/CordovaLib/Classes/NSData+Base64.h |    33 -
 .../push/ios/CordovaLib/Classes/NSData+Base64.m |   281 -
 .../Classes/NSDictionary+Extensions.h           |    35 -
 .../Classes/NSDictionary+Extensions.m           |   159 -
 .../Classes/NSMutableArray+QueueAdditions.h     |    29 -
 .../Classes/NSMutableArray+QueueAdditions.m     |    58 -
 .../CordovaLib/Classes/UIDevice+Extensions.h    |    31 -
 .../CordovaLib/Classes/UIDevice+Extensions.m    |    47 -
 .../Classes/compatibility/0.9.6/CDV.h           |    30 -
 .../Classes/compatibility/0.9.6/CDVPlugin.h     |    46 -
 .../Classes/compatibility/0.9.6/CDVPlugin.m     |    29 -
 .../Classes/compatibility/1.5.0/CDV.h           |    32 -
 .../Classes/compatibility/1.5.0/CDVPlugin.h     |    23 -
 .../CordovaLib/Classes/compatibility/README.txt |    23 -
 .../CordovaLib.xcodeproj/project.pbxproj        |   667 -
 .../push/ios/CordovaLib/CordovaLib_Prefix.pch   |    22 -
 .../samples/push/ios/CordovaLib/VERSION         |     1 -
 .../apigee-sdk/samples/push/ios/cordova/build   |    51 -
 .../apigee-sdk/samples/push/ios/cordova/emulate |    55 -
 .../apigee-sdk/samples/push/ios/cordova/log     |    23 -
 .../apigee-sdk/samples/push/ios/cordova/release |    51 -
 .../apigee-sdk/samples/push/ios/cordova/run     |    58 -
 .../push/ios/iospush.xcodeproj/project.pbxproj  |   623 -
 .../push/ios/iospush/Classes/AppDelegate.h      |    42 -
 .../push/ios/iospush/Classes/AppDelegate.m      |   122 -
 .../ios/iospush/Classes/MainViewController.h    |    40 -
 .../ios/iospush/Classes/MainViewController.m    |   174 -
 .../ios/iospush/Classes/MainViewController.xib  |   138 -
 .../iospush/Plugins/AppDelegate+notification.h  |    20 -
 .../iospush/Plugins/AppDelegate+notification.m  |   119 -
 .../push/ios/iospush/Plugins/PushPlugin.h       |    54 -
 .../push/ios/iospush/Plugins/PushPlugin.m       |   248 -
 .../samples/push/ios/iospush/Plugins/README     |    20 -
 .../Resources/Capture.bundle/controls_bg.png    |   Bin 955 -> 0 bytes
 .../Resources/Capture.bundle/controls_bg@2x.png |   Bin 971 -> 0 bytes
 .../Capture.bundle/controls_bg@2x~ipad.png      |   Bin 2858 -> 0 bytes
 .../Capture.bundle/controls_bg~ipad.png         |   Bin 969 -> 0 bytes
 .../microphone-568h@2x~iphone.png               |   Bin 531673 -> 0 bytes
 .../Resources/Capture.bundle/microphone.png     |   Bin 72226 -> 0 bytes
 .../Resources/Capture.bundle/microphone@2x.png  |   Bin 282409 -> 0 bytes
 .../Capture.bundle/microphone@2x~ipad.png       |   Bin 911582 -> 0 bytes
 .../Capture.bundle/microphone~ipad.png          |   Bin 393975 -> 0 bytes
 .../Resources/Capture.bundle/record_button.png  |   Bin 5852 -> 0 bytes
 .../Capture.bundle/record_button@2x.png         |   Bin 13875 -> 0 bytes
 .../Capture.bundle/record_button@2x~ipad.png    |   Bin 15822 -> 0 bytes
 .../Capture.bundle/record_button~ipad.png       |   Bin 7547 -> 0 bytes
 .../Resources/Capture.bundle/recording_bg.png   |   Bin 973 -> 0 bytes
 .../Capture.bundle/recording_bg@2x.png          |   Bin 990 -> 0 bytes
 .../Capture.bundle/recording_bg@2x~ipad.png     |   Bin 1026 -> 0 bytes
 .../Capture.bundle/recording_bg~ipad.png        |   Bin 996 -> 0 bytes
 .../Resources/Capture.bundle/stop_button.png    |   Bin 5514 -> 0 bytes
 .../Resources/Capture.bundle/stop_button@2x.png |   Bin 12965 -> 0 bytes
 .../Capture.bundle/stop_button@2x~ipad.png      |   Bin 14474 -> 0 bytes
 .../Capture.bundle/stop_button~ipad.png         |   Bin 7119 -> 0 bytes
 .../Resources/de.lproj/Localizable.strings      |    26 -
 .../Resources/en.lproj/Localizable.strings      |    25 -
 .../Resources/es.lproj/Localizable.strings      |    25 -
 .../ios/iospush/Resources/icons/icon-72.png     |   Bin 4944 -> 0 bytes
 .../ios/iospush/Resources/icons/icon-72@2x.png  |   Bin 11706 -> 0 bytes
 .../push/ios/iospush/Resources/icons/icon.png   |   Bin 3902 -> 0 bytes
 .../ios/iospush/Resources/icons/icon@2x.png     |   Bin 7869 -> 0 bytes
 .../Resources/se.lproj/Localizable.strings      |    26 -
 .../Resources/splash/Default-568h@2x~iphone.png |   Bin 34225 -> 0 bytes
 .../splash/Default-Landscape@2x~ipad.png        |   Bin 77300 -> 0 bytes
 .../Resources/splash/Default-Landscape~ipad.png |   Bin 34935 -> 0 bytes
 .../splash/Default-Portrait@2x~ipad.png         |   Bin 76546 -> 0 bytes
 .../Resources/splash/Default-Portrait~ipad.png  |   Bin 34278 -> 0 bytes
 .../Resources/splash/Default@2x~iphone.png      |   Bin 29475 -> 0 bytes
 .../iospush/Resources/splash/Default~iphone.png |   Bin 10394 -> 0 bytes
 .../samples/push/ios/iospush/config.xml         |    65 -
 .../samples/push/ios/iospush/iospush-Info.plist |    78 -
 .../samples/push/ios/iospush/iospush-Prefix.pch |    26 -
 .../apigee-sdk/samples/push/ios/iospush/main.m  |    35 -
 .../samples/push/ios/www/PushNotification.js    |    65 -
 .../samples/push/ios/www/cordova-2.6.0.js       |  6433 ----
 .../samples/push/ios/www/css/index.css          |   115 -
 .../samples/push/ios/www/img/logo.png           |   Bin 21814 -> 0 bytes
 .../apigee-sdk/samples/push/ios/www/index.html  |    48 -
 .../apigee-sdk/samples/push/ios/www/js/index.js |   217 -
 .../res/screen/ios/screen-ipad-landscape-2x.png |   Bin 1534088 -> 0 bytes
 .../res/screen/ios/screen-ipad-landscape.png    |   Bin 407370 -> 0 bytes
 .../res/screen/ios/screen-ipad-portrait-2x.png  |   Bin 1610434 -> 0 bytes
 .../www/res/screen/ios/screen-ipad-portrait.png |   Bin 422441 -> 0 bytes
 .../screen/ios/screen-iphone-landscape-2x.png   |   Bin 339639 -> 0 bytes
 .../res/screen/ios/screen-iphone-landscape.png  |   Bin 92301 -> 0 bytes
 .../screen/ios/screen-iphone-portrait-2x.png    |   Bin 350593 -> 0 bytes
 .../res/screen/ios/screen-iphone-portrait.png   |   Bin 93897 -> 0 bytes
 .../apigee-sdk/samples/push/ios/www/spec.html   |    68 -
 .../samples/push/ios/www/spec/helper.js         |    33 -
 .../samples/push/ios/www/spec/index.js          |    67 -
 .../ios/www/spec/lib/jasmine-1.2.0/MIT.LICENSE  |    20 -
 .../www/spec/lib/jasmine-1.2.0/jasmine-html.js  |   616 -
 .../ios/www/spec/lib/jasmine-1.2.0/jasmine.css  |    81 -
 .../ios/www/spec/lib/jasmine-1.2.0/jasmine.js   |  2529 --
 .../apigee-sdk/samples/readmeSample/index.html  |    64 -
 .../samples/usersAndGroups/README.txt           |    22 -
 .../usersAndGroups/css/codiqa.ext.min.css       |     1 -
 .../usersAndGroups/css/images/ajax-loader.gif   |   Bin 7825 -> 0 bytes
 .../css/images/icons-18-black.png               |   Bin 1968 -> 0 bytes
 .../css/images/icons-18-white.png               |   Bin 1988 -> 0 bytes
 .../css/images/icons-36-black.png               |   Bin 3859 -> 0 bytes
 .../css/images/icons-36-white.png               |   Bin 3861 -> 0 bytes
 .../css/jquery.mobile-1.3.1.min.css             |     3 -
 .../samples/usersAndGroups/index.html           |   159 -
 .../samples/usersAndGroups/js/codiqa.ext.min.js |     6 -
 .../samples/usersAndGroups/js/index.js          |   345 -
 .../usersAndGroups/js/jquery-1.9.1.min.js       |     5 -
 .../js/jquery.mobile-1.3.1.min.js               |     7 -
 .../bower_components/intro.js/BUILD/BUILD.js    |    43 -
 .../bower_components/intro.js/Makefile          |     6 -
 .../bower_components/intro.js/README.md         |   487 -
 .../bower_components/intro.js/bower.json        |     9 -
 .../bower_components/intro.js/component.json    |    13 -
 .../intro.js/example/RTL/index.html             |    81 -
 .../assets/css/bootstrap-responsive.min.css     |     9 -
 .../example/assets/css/bootstrap.min.css        |     9 -
 .../intro.js/example/assets/css/demo.css        |    36 -
 .../assets/img/glyphicons-halflings-white.png   |   Bin 8777 -> 0 bytes
 .../example/assets/img/glyphicons-halflings.png |   Bin 12799 -> 0 bytes
 .../intro.js/example/custom-class/index.html    |    84 -
 .../intro.js/example/hello-world/index.html     |    72 -
 .../example/hello-world/withoutBullets.html     |    72 -
 .../example/hello-world/withoutButtons.html     |    72 -
 .../intro.js/example/html-tooltip/index.html    |   108 -
 .../intro.js/example/index.html                 |    35 -
 .../intro.js/example/multi-page/index.html      |    73 -
 .../intro.js/example/multi-page/second.html     |    75 -
 .../intro.js/example/programmatic/index.html    |   107 -
 .../bower_components/intro.js/intro.js          |   940 -
 .../bower_components/intro.js/introjs-rtl.css   |    22 -
 .../bower_components/intro.js/introjs.css       |   248 -
 .../intro.js/minified/intro.min.js              |    24 -
 .../intro.js/minified/introjs-rtl.min.css       |     1 -
 .../intro.js/minified/introjs.min.css           |     1 -
 .../bower_components/intro.js/package.json      |    17 -
 .../jquery-waypoints/CHANGELOG.md               |   102 -
 .../jquery-waypoints/README.markdown            |    47 -
 .../jquery-waypoints/bower.json                 |    19 -
 .../jquery-waypoints/licenses.txt               |    23 -
 .../jquery-waypoints/package.json               |    19 -
 .../infinite-scroll/waypoints-infinite.js       |    70 -
 .../infinite-scroll/waypoints-infinite.min.js   |     8 -
 .../sticky-elements/waypoints-sticky.js         |    65 -
 .../sticky-elements/waypoints-sticky.min.js     |     8 -
 .../jquery-waypoints/waypoints.js               |   517 -
 .../jquery-waypoints/waypoints.min.js           |     8 -
 .../bower_components/jquery/MIT-LICENSE.txt     |    21 -
 .../bower_components/jquery/bower.json          |    27 -
 .../bower_components/jquery/dist/jquery.js      |  9190 -----
 .../bower_components/jquery/dist/jquery.min.js  |     5 -
 .../bower_components/jquery/dist/jquery.min.map |     1 -
 .../bower_components/jquery/src/ajax.js         |   806 -
 .../bower_components/jquery/src/ajax/jsonp.js   |    89 -
 .../bower_components/jquery/src/ajax/load.js    |    75 -
 .../jquery/src/ajax/parseJSON.js                |    13 -
 .../jquery/src/ajax/parseXML.js                 |    28 -
 .../bower_components/jquery/src/ajax/script.js  |    64 -
 .../jquery/src/ajax/var/nonce.js                |     5 -
 .../jquery/src/ajax/var/rquery.js               |     3 -
 .../bower_components/jquery/src/ajax/xhr.js     |   135 -
 .../bower_components/jquery/src/attributes.js   |    11 -
 .../jquery/src/attributes/attr.js               |   143 -
 .../jquery/src/attributes/classes.js            |   158 -
 .../jquery/src/attributes/prop.js               |    96 -
 .../jquery/src/attributes/support.js            |    35 -
 .../jquery/src/attributes/val.js                |   163 -
 .../bower_components/jquery/src/callbacks.js    |   205 -
 .../bower_components/jquery/src/core.js         |   498 -
 .../bower_components/jquery/src/core/access.js  |    60 -
 .../bower_components/jquery/src/core/init.js    |   123 -
 .../jquery/src/core/parseHTML.js                |    39 -
 .../bower_components/jquery/src/core/ready.js   |    97 -
 .../jquery/src/core/var/rsingleTag.js           |     4 -
 .../bower_components/jquery/src/css.js          |   451 -
 .../jquery/src/css/addGetHookIf.js              |    24 -
 .../bower_components/jquery/src/css/curCSS.js   |    57 -
 .../jquery/src/css/defaultDisplay.js            |    70 -
 .../jquery/src/css/hiddenVisibleSelectors.js    |    15 -
 .../bower_components/jquery/src/css/support.js  |    91 -
 .../bower_components/jquery/src/css/swap.js     |    28 -
 .../jquery/src/css/var/cssExpand.js             |     3 -
 .../jquery/src/css/var/getStyles.js             |     5 -
 .../jquery/src/css/var/isHidden.js              |    13 -
 .../jquery/src/css/var/rmargin.js               |     3 -
 .../jquery/src/css/var/rnumnonpx.js             |     5 -
 .../bower_components/jquery/src/data.js         |   179 -
 .../bower_components/jquery/src/data/Data.js    |   181 -
 .../bower_components/jquery/src/data/accepts.js |    20 -
 .../jquery/src/data/var/data_priv.js            |     5 -
 .../jquery/src/data/var/data_user.js            |     5 -
 .../bower_components/jquery/src/deferred.js     |   149 -
 .../bower_components/jquery/src/deprecated.js   |    13 -
 .../bower_components/jquery/src/dimensions.js   |    50 -
 .../bower_components/jquery/src/effects.js      |   649 -
 .../jquery/src/effects/Tween.js                 |   114 -
 .../jquery/src/effects/animatedSelector.js      |    13 -
 .../bower_components/jquery/src/event.js        |   868 -
 .../bower_components/jquery/src/event/alias.js  |    39 -
 .../jquery/src/event/support.js                 |     9 -
 .../bower_components/jquery/src/exports/amd.js  |    24 -
 .../jquery/src/exports/global.js                |    32 -
 .../bower_components/jquery/src/intro.js        |    44 -
 .../bower_components/jquery/src/jquery.js       |    36 -
 .../bower_components/jquery/src/manipulation.js |   582 -
 .../jquery/src/manipulation/_evalUrl.js         |    18 -
 .../jquery/src/manipulation/support.js          |    31 -
 .../src/manipulation/var/rcheckableType.js      |     3 -
 .../bower_components/jquery/src/offset.js       |   204 -
 .../bower_components/jquery/src/outro.js        |     1 -
 .../bower_components/jquery/src/queue.js        |   142 -
 .../bower_components/jquery/src/queue/delay.js  |    22 -
 .../jquery/src/selector-native.js               |   172 -
 .../jquery/src/selector-sizzle.js               |    14 -
 .../bower_components/jquery/src/selector.js     |     1 -
 .../bower_components/jquery/src/serialize.js    |   111 -
 .../jquery/src/sizzle/dist/sizzle.js            |  2044 --
 .../jquery/src/sizzle/dist/sizzle.min.js        |     3 -
 .../jquery/src/sizzle/dist/sizzle.min.map       |     1 -
 .../bower_components/jquery/src/traversing.js   |   200 -
 .../jquery/src/traversing/findFilter.js         |   100 -
 .../jquery/src/traversing/var/rneedsContext.js  |     6 -
 .../bower_components/jquery/src/var/arr.js      |     3 -
 .../jquery/src/var/class2type.js                |     4 -
 .../bower_components/jquery/src/var/concat.js   |     5 -
 .../bower_components/jquery/src/var/hasOwn.js   |     5 -
 .../bower_components/jquery/src/var/indexOf.js  |     5 -
 .../bower_components/jquery/src/var/pnum.js     |     3 -
 .../bower_components/jquery/src/var/push.js     |     5 -
 .../jquery/src/var/rnotwhite.js                 |     3 -
 .../bower_components/jquery/src/var/slice.js    |     5 -
 .../jquery/src/var/strundefined.js              |     3 -
 .../bower_components/jquery/src/var/support.js  |     4 -
 .../bower_components/jquery/src/var/toString.js |     5 -
 .../bower_components/jquery/src/wrap.js         |    78 -
 .../bower_components/sizzle/dist/sizzle.js      |  2015 -
 .../bower_components/sizzle/dist/sizzle.min.js  |     3 -
 .../bower_components/sizzle/dist/sizzle.min.map |     1 -
 .../bower_components/sizzle/tasks/commit.js     |    10 -
 .../bower_components/sizzle/tasks/compile.js    |    34 -
 .../bower_components/sizzle/tasks/dist.js       |    35 -
 .../bower_components/sizzle/tasks/release.js    |    43 -
 .../bower_components/sizzle/tasks/tag.js        |     9 -
 .../bower_components/sizzle/tasks/version.js    |    35 -
 .../bower_components/sizzle/test/data/empty.js  |     0
 .../sizzle/test/data/mixed_sort.html            |    22 -
 .../sizzle/test/data/testinit.js                |   136 -
 .../bower_components/sizzle/test/index.html     |   242 -
 .../bower_components/sizzle/test/jquery.js      |  9597 -----
 .../sizzle/test/libs/qunit/qunit.css            |   244 -
 .../sizzle/test/libs/qunit/qunit.js             |  2212 --
 .../sizzle/test/unit/extending.js               |    95 -
 .../sizzle/test/unit/selector.js                |  1138 -
 .../sizzle/test/unit/utilities.js               |   169 -
 portal/dist/usergrid-portal/config.js           |    72 -
 .../css/apigeeGlobalNavigation.css              |   291 -
 .../css/arsmarquette/ARSMaquettePro-Light.otf   |   Bin 184600 -> 0 bytes
 .../css/arsmarquette/ARSMaquettePro-Medium.otf  |   Bin 188020 -> 0 bytes
 .../css/arsmarquette/ARSMaquettePro-Regular.otf |   Bin 188096 -> 0 bytes
 portal/dist/usergrid-portal/css/dash.min.css    |     1 -
 .../dist/usergrid-portal/css/entypo/entypo.eot  |   Bin 35540 -> 0 bytes
 .../dist/usergrid-portal/css/entypo/entypo.svg  |    13 -
 .../dist/usergrid-portal/css/entypo/entypo.ttf  |   Bin 35392 -> 0 bytes
 .../dist/usergrid-portal/css/entypo/entypo.woff |   Bin 21916 -> 0 bytes
 portal/dist/usergrid-portal/css/main.css        |  1998 -
 portal/dist/usergrid-portal/favicon.ico         |   Bin 1150 -> 0 bytes
 .../img/appswitcher/apiPlatform_lg.png          |   Bin 2397 -> 0 bytes
 .../img/appswitcher/appServices_lg.png          |   Bin 2295 -> 0 bytes
 .../img/appswitcher/console_lg.png              |   Bin 1453 -> 0 bytes
 .../usergrid-portal/img/appswitcher/home_lg.png |   Bin 1522 -> 0 bytes
 .../img/appswitcher/logo_color.png              |   Bin 3459 -> 0 bytes
 .../usergrid-portal/img/appswitcher/max_lg.png  |   Bin 1970 -> 0 bytes
 .../img/appswitcher/triangleMenuItem_right.png  |   Bin 1158 -> 0 bytes
 .../triangleMenuItem_right_hover.png            |   Bin 1169 -> 0 bytes
 portal/dist/usergrid-portal/img/blue-bars.png   |   Bin 3635 -> 0 bytes
 portal/dist/usergrid-portal/img/blue-bolt.png   |   Bin 3942 -> 0 bytes
 portal/dist/usergrid-portal/img/blue-carat.png  |   Bin 1006 -> 0 bytes
 portal/dist/usergrid-portal/img/green_dot.png   |   Bin 3472 -> 0 bytes
 .../img/introjs_arrow_step_next.png             |   Bin 219 -> 0 bytes
 .../img/introjs_arrow_step_next_disabled.png    |   Bin 220 -> 0 bytes
 .../img/introjs_arrow_step_prev.png             |   Bin 217 -> 0 bytes
 .../img/introjs_arrow_step_prev_disabled.png    |   Bin 218 -> 0 bytes
 .../dist/usergrid-portal/img/introjs_close.png  |   Bin 274 -> 0 bytes
 portal/dist/usergrid-portal/img/logo.gif        |   Bin 2279 -> 0 bytes
 portal/dist/usergrid-portal/img/nav-device.gif  |   Bin 2184 -> 0 bytes
 portal/dist/usergrid-portal/img/nav-sprites.png |   Bin 7953 -> 0 bytes
 portal/dist/usergrid-portal/img/no-data1.png    |   Bin 45300 -> 0 bytes
 portal/dist/usergrid-portal/img/phone-small.gif |   Bin 1300 -> 0 bytes
 .../img/push/APNS_cert_upload.png               |   Bin 33956 -> 0 bytes
 .../img/push/APNS_certification.png             |   Bin 16855 -> 0 bytes
 .../img/push/android-notification.png           |   Bin 41629 -> 0 bytes
 .../usergrid-portal/img/push/google_api_key.png |   Bin 98118 -> 0 bytes
 .../usergrid-portal/img/push/iphone_message.png |   Bin 90307 -> 0 bytes
 portal/dist/usergrid-portal/img/push/step_1.png |   Bin 1953 -> 0 bytes
 portal/dist/usergrid-portal/img/push/step_2.png |   Bin 2117 -> 0 bytes
 portal/dist/usergrid-portal/img/push/step_3.png |   Bin 2162 -> 0 bytes
 portal/dist/usergrid-portal/img/red_dot.png     |   Bin 3482 -> 0 bytes
 .../usergrid-portal/img/sdk-sprites-large.png   |   Bin 14642 -> 0 bytes
 portal/dist/usergrid-portal/img/sdk-sprites.png |   Bin 5027 -> 0 bytes
 .../dist/usergrid-portal/img/tablet-small.gif   |   Bin 1390 -> 0 bytes
 portal/dist/usergrid-portal/img/user-photo.png  |   Bin 3849 -> 0 bytes
 .../dist/usergrid-portal/img/user_profile.png   |   Bin 3775 -> 0 bytes
 portal/dist/usergrid-portal/img/verify.png      |   Bin 22934 -> 0 bytes
 portal/dist/usergrid-portal/img/yellow_dot.png  |   Bin 3475 -> 0 bytes
 portal/dist/usergrid-portal/index-debug.html    |   168 -
 portal/dist/usergrid-portal/index-template.html |   173 -
 portal/dist/usergrid-portal/index.html          |   168 -
 .../usergrid-portal/js/charts/highcharts.json   |   329 -
 .../js/libs/Highcharts-2.3.5/index.htm          |    79 -
 .../js/adapters/mootools-adapter.js             |    13 -
 .../js/adapters/mootools-adapter.src.js         |   328 -
 .../js/adapters/prototype-adapter.js            |    16 -
 .../js/adapters/prototype-adapter.src.js        |   385 -
 .../libs/Highcharts-2.3.5/js/highcharts-more.js |    35 -
 .../Highcharts-2.3.5/js/highcharts-more.src.js  |  1581 -
 .../js/libs/Highcharts-2.3.5/js/highcharts.js   |   250 -
 .../libs/Highcharts-2.3.5/js/highcharts.src.js  | 15281 --------
 .../Highcharts-2.3.5/js/modules/canvas-tools.js |   133 -
 .../js/modules/canvas-tools.src.js              |  3113 --
 .../js/libs/Highcharts-2.3.5/js/modules/data.js |    14 -
 .../Highcharts-2.3.5/js/modules/data.src.js     |   512 -
 .../Highcharts-2.3.5/js/modules/exporting.js    |    23 -
 .../js/modules/exporting.src.js                 |   752 -
 .../Highcharts-2.3.5/js/themes/dark-blue.js     |   263 -
 .../Highcharts-2.3.5/js/themes/dark-green.js    |   263 -
 .../js/libs/Highcharts-2.3.5/js/themes/gray.js  |   262 -
 .../js/libs/Highcharts-2.3.5/js/themes/grid.js  |    95 -
 .../js/libs/Highcharts-2.3.5/js/themes/skies.js |    89 -
 portal/dist/usergrid-portal/js/libs/MD5.min.js  |     1 -
 .../js/libs/angular-1.0.5/angular-cookies.js    |   183 -
 .../libs/angular-1.0.5/angular-cookies.min.js   |     7 -
 .../js/libs/angular-1.0.5/angular-loader.js     |   276 -
 .../js/libs/angular-1.0.5/angular-loader.min.js |     7 -
 .../js/libs/angular-1.0.5/angular-mocks.js      |  1886 -
 .../js/libs/angular-1.0.5/angular-resource.js   |   445 -
 .../libs/angular-1.0.5/angular-resource.min.js  |    10 -
 .../js/libs/angular-1.0.5/angular-sanitize.js   |   535 -
 .../libs/angular-1.0.5/angular-sanitize.min.js  |    13 -
 .../js/libs/angular-1.0.5/angular.js            | 14733 --------
 .../js/libs/angular-1.0.5/angular.min.js        |   161 -
 .../js/libs/angular-1.0.5/version.txt           |     1 -
 .../js/libs/angular-1.1.5/angular-1.1.5.js      | 16876 ---------
 .../js/libs/angular-1.1.5/angular-merge.min.js  |     8 -
 .../angular-1.1.5/angular-resource-1.1.5.js     |   537 -
 .../js/libs/angular-1.2.5/angular-animate.js    |  1323 -
 .../libs/angular-1.2.5/angular-animate.min.js   |    23 -
 .../angular-1.2.5/angular-animate.min.js.map    |     8 -
 .../js/libs/angular-1.2.5/angular-cookies.js    |   202 -
 .../libs/angular-1.2.5/angular-cookies.min.js   |     8 -
 .../angular-1.2.5/angular-cookies.min.js.map    |     8 -
 .../js/libs/angular-1.2.5/angular-csp.css       |    24 -
 .../js/libs/angular-1.2.5/angular-loader.js     |   410 -
 .../js/libs/angular-1.2.5/angular-loader.min.js |     9 -
 .../angular-1.2.5/angular-loader.min.js.map     |     8 -
 .../js/libs/angular-1.2.5/angular-mocks.js      |  2116 --
 .../js/libs/angular-1.2.5/angular-resource.js   |   565 -
 .../libs/angular-1.2.5/angular-resource.min.js  |    13 -
 .../angular-1.2.5/angular-resource.min.js.map   |     8 -
 .../js/libs/angular-1.2.5/angular-route.js      |   911 -
 .../js/libs/angular-1.2.5/angular-route.min.js  |    14 -
 .../libs/angular-1.2.5/angular-route.min.js.map |     8 -
 .../js/libs/angular-1.2.5/angular-sanitize.js   |   622 -
 .../libs/angular-1.2.5/angular-sanitize.min.js  |    14 -
 .../angular-1.2.5/angular-sanitize.min.js.map   |     8 -
 .../js/libs/angular-1.2.5/angular-scenario.js   | 32374 -----------------
 .../js/libs/angular-1.2.5/angular-touch.js      |   563 -
 .../js/libs/angular-1.2.5/angular-touch.min.js  |    13 -
 .../libs/angular-1.2.5/angular-touch.min.js.map |     8 -
 .../js/libs/angular-1.2.5/angular.js            | 20369 -----------
 .../js/libs/angular-1.2.5/angular.min.js        |   201 -
 .../js/libs/angular-1.2.5/angular.min.js.map    |     8 -
 .../js/libs/angular-1.2.5/errors.json           |     1 -
 .../js/libs/angular-1.2.5/version.json          |     1 -
 .../js/libs/angular-1.2.5/version.txt           |     1 -
 .../angularitics-0.8.5-google-analytics.js      |     7 -
 .../js/libs/angularitics/angularitics-0.8.5.js  |     6 -
 .../libs/bootstrap/css/bootstrap-responsive.css |  1345 -
 .../bootstrap/css/bootstrap-responsive.min.css  |  1245 -
 .../js/libs/bootstrap/css/bootstrap.css         |  6169 ----
 .../js/libs/bootstrap/css/bootstrap.min.css     |  5469 ---
 .../js/libs/bootstrap/custom/css/bootstrap.css  |  6316 ----
 .../libs/bootstrap/custom/css/bootstrap.min.css |     9 -
 .../custom/img/glyphicons-halflings-white.png   |   Bin 8777 -> 0 bytes
 .../custom/img/glyphicons-halflings.png         |   Bin 12799 -> 0 bytes
 .../js/libs/bootstrap/custom/js/bootstrap.js    |  2291 --
 .../libs/bootstrap/custom/js/bootstrap.min.js   |     7 -
 .../img/glyphicons-halflings-white.png          |   Bin 8777 -> 0 bytes
 .../libs/bootstrap/img/glyphicons-halflings.png |   Bin 12799 -> 0 bytes
 .../js/libs/bootstrap/js/bootstrap.js           |  2117 --
 .../js/libs/bootstrap/js/bootstrap.min.js       |   644 -
 .../usergrid-portal/js/libs/google-viz-api.js   |    49 -
 .../js/libs/jquery/jquery-1.9.1.min.js          |     5 -
 .../js/libs/jquery/jquery-migrate-1.1.1.min.js  |     3 -
 .../js/libs/jquery/jquery.sparkline.min.js      |     5 -
 .../js/libs/jqueryui/date.min.js                |     2 -
 .../ui-bg_diagonals-thick_90_eeeeee_40x40.png   |   Bin 251 -> 0 bytes
 .../images/ui-bg_flat_100_deedf7_40x100.png     |   Bin 182 -> 0 bytes
 .../images/ui-bg_flat_100_e4f1fb_40x100.png     |   Bin 213 -> 0 bytes
 .../images/ui-bg_flat_100_f2f5f7_40x100.png     |   Bin 212 -> 0 bytes
 .../images/ui-bg_flat_15_cd0a0a_40x100.png      |   Bin 181 -> 0 bytes
 .../images/ui-bg_flat_50_3baae3_40x100.png      |   Bin 182 -> 0 bytes
 .../images/ui-bg_flat_80_d7ebf9_40x100.png      |   Bin 183 -> 0 bytes
 .../ui-bg_highlight-hard_70_000000_1x100.png    |   Bin 118 -> 0 bytes
 .../ui-bg_highlight-soft_25_ffef8f_1x100.png    |   Bin 153 -> 0 bytes
 .../jqueryui/images/ui-icons_000000_256x240.png |   Bin 4369 -> 0 bytes
 .../jqueryui/images/ui-icons_2694e8_256x240.png |   Bin 4369 -> 0 bytes
 .../jqueryui/images/ui-icons_2e83ff_256x240.png |   Bin 4369 -> 0 bytes
 .../jqueryui/images/ui-icons_3d80b3_256x240.png |   Bin 4369 -> 0 bytes
 .../jqueryui/images/ui-icons_72a7cf_256x240.png |   Bin 4369 -> 0 bytes
 .../jqueryui/images/ui-icons_ffffff_256x240.png |   Bin 4369 -> 0 bytes
 .../js/libs/jqueryui/jquery-ui-1.8.18.min.js    |    15 -
 .../js/libs/jqueryui/jquery-ui-1.8.9.custom.css |     1 -
 .../js/libs/jqueryui/jquery-ui-timepicker.css   |     1 -
 .../libs/jqueryui/jquery.ui.timepicker.min.js   |     1 -
 .../ui-bootstrap-custom-0.3.0.min.js            |     1 -
 .../ui-bootstrap-custom-tpls-0.3.0.min.js       |     1 -
 .../js/libs/usergrid-libs.min.js                |    41 -
 .../usergrid-portal/js/libs/usergrid.sdk.js     |  2490 --
 .../dist/usergrid-portal/js/usergrid-dev.min.js |  5048 ---
 portal/dist/usergrid-portal/js/usergrid.min.js  |    25 -
 .../dist/usergrid-portal/sdk/usergrid.0.10.4.js |  1402 -
 .../dist/usergrid-portal/sdk/usergrid.0.10.5.js |  1755 -
 .../dist/usergrid-portal/sdk/usergrid.0.10.7.js |  2265 --
 portal/favicon.ico                              |   Bin 1150 -> 3989 bytes
 portal/helpJson.json                            |    47 +
 portal/img/green_dot.png                        |   Bin 3472 -> 0 bytes
 portal/img/logo.gif                             |   Bin 2279 -> 0 bytes
 portal/img/logo.png                             |   Bin 0 -> 7758 bytes
 portal/img/push/APNS_cert_upload.png            |   Bin 33956 -> 0 bytes
 portal/img/push/APNS_certification.png          |   Bin 16855 -> 0 bytes
 portal/img/push/android-notification.png        |   Bin 41629 -> 0 bytes
 portal/img/push/google_api_key.png              |   Bin 98118 -> 0 bytes
 portal/img/push/iphone_message.png              |   Bin 90307 -> 0 bytes
 portal/img/push/step_1.png                      |   Bin 1953 -> 0 bytes
 portal/img/push/step_2.png                      |   Bin 2117 -> 0 bytes
 portal/img/push/step_3.png                      |   Bin 2162 -> 0 bytes
 portal/img/red_dot.png                          |   Bin 3482 -> 0 bytes
 portal/img/yellow_dot.png                       |   Bin 3475 -> 0 bytes
 portal/index-template.html                      |    44 +-
 .../js/app-overview/app-overview-controller.js  |    61 +-
 portal/js/app-overview/app-overview.html        |     6 -
 .../app-overview/getting-started-controller.js  |   107 -
 portal/js/app-overview/getting-started.html     |   119 -
 portal/js/app.js                                |    21 +-
 portal/js/charts/chart-controller.js            |     6 -
 portal/js/charts/chart-directives.js            |   141 -
 portal/js/charts/chart-service.js               |   494 -
 portal/js/charts/highcharts.json                |   329 -
 portal/js/charts/sparklines.js                  |     2 -
 portal/js/global/app-switcher-directive.js      |    53 -
 portal/js/global/appswitcher-template.html      |    34 -
 portal/js/global/help-service.js                |    22 +-
 portal/js/global/page-controller.js             |    17 +-
 portal/js/global/ug-service.js                  |    32 +-
 portal/js/libs/Highcharts-2.3.5/index.htm       |    79 -
 .../js/adapters/mootools-adapter.js             |    13 -
 .../js/adapters/mootools-adapter.src.js         |   328 -
 .../js/adapters/prototype-adapter.js            |    16 -
 .../js/adapters/prototype-adapter.src.js        |   385 -
 .../libs/Highcharts-2.3.5/js/highcharts-more.js |    35 -
 .../Highcharts-2.3.5/js/highcharts-more.src.js  |  1581 -
 .../js/libs/Highcharts-2.3.5/js/highcharts.js   |   250 -
 .../libs/Highcharts-2.3.5/js/highcharts.src.js  | 15281 --------
 .../Highcharts-2.3.5/js/modules/canvas-tools.js |   133 -
 .../js/modules/canvas-tools.src.js              |  3113 --
 .../js/libs/Highcharts-2.3.5/js/modules/data.js |    14 -
 .../Highcharts-2.3.5/js/modules/data.src.js     |   512 -
 .../Highcharts-2.3.5/js/modules/exporting.js    |    23 -
 .../js/modules/exporting.src.js                 |   752 -
 .../Highcharts-2.3.5/js/themes/dark-blue.js     |   263 -
 .../Highcharts-2.3.5/js/themes/dark-green.js    |   263 -
 .../js/libs/Highcharts-2.3.5/js/themes/gray.js  |   262 -
 .../js/libs/Highcharts-2.3.5/js/themes/grid.js  |    95 -
 .../js/libs/Highcharts-2.3.5/js/themes/skies.js |    89 -
 .../angularitics-0.8.5-google-analytics.js      |     7 -
 .../js/libs/angularitics/angularitics-0.8.5.js  |     6 -
 portal/package.json                             |     5 +-
 portal/sdk/usergrid.0.10.4.js                   |  1402 -
 portal/sdk/usergrid.0.10.5.js                   |  1755 -
 portal/sdk/usergrid.0.10.7.js                   |  2265 --
 portal/tests/karma.conf.js                      |     4 +-
 sdks/ios/UGAPI/v2/UGConnection.h                |    16 +
 sdks/ios/UGAPI/v2/UGConnection.m                |    18 +-
 sdks/ios/UGAPI/v2/UGHTTPClient.h                |    16 +
 sdks/ios/UGAPI/v2/UGHTTPClient.m                |    16 +
 sdks/ios/UGAPI/v2/UGHTTPHelpers.h               |    19 +-
 sdks/ios/UGAPI/v2/UGHTTPHelpers.m               |    17 +-
 sdks/ios/UGAPI/v2/UGHTTPResult.h                |    16 +
 sdks/ios/UGAPI/v2/UGHTTPResult.m                |    16 +
 1018 files changed, 307 insertions(+), 431538 deletions(-)
----------------------------------------------------------------------



[36/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/lib/date.min.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/lib/date.min.js b/deleted/archive/js/lib/date.min.js
deleted file mode 100644
index 261327a..0000000
--- a/deleted/archive/js/lib/date.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-Date.CultureInfo={name:"en-US",englishName:"English (United States)",nativeName:"English (United States)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"mdy",formatPatterns:{shortDate:"M/d/yyyy",longDate:"dddd, MMMM dd, yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, MMMM dd, yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"
 },regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\+|aft(er)?|from|hence)/i,subtract:/^(\-|bef(ore)?|ago)/i,yesterday:/^yes(terday)?/i,today:/^t(od(ay)?)?/i,tomorrow:/^tom(orrow)?/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^mn|min(ute)?s?/i,hour:/^h(our)?s?/i,week:/^w(eek)?s?/i,month:/^m(onth)?s?/i,day:/^d(ay)?s?/i,year:/^y(ear)?s?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\.?m?\.?|p\.?m?\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\s*(\+|\-)\s*\d\d\d\d?)|gmt|utc)/i,ordinalSuffix:/^\s*(st|nd|rd|th)/i,timeContext:/^\s*(\:|a(?!u|p)|p
 )/i},timezones:[{name:"UTC",offset:"-000"},{name:"GMT",offset:"-000"},{name:"EST",offset:"-0500"},{name:"EDT",offset:"-0400"},{name:"CST",offset:"-0600"},{name:"CDT",offset:"-0500"},{name:"MST",offset:"-0700"},{name:"MDT",offset:"-0600"},{name:"PST",offset:"-0800"},{name:"PDT",offset:"-0700"}]};(function(){var a=Date,b=a.prototype,c=a.CultureInfo,d=function(a,b){if(!b){b=2}return("000"+a).slice(b*-1)};b.clearTime=function(){this.setHours(0);this.setMinutes(0);this.setSeconds(0);this.setMilliseconds(0);return this};b.setTimeToNow=function(){var a=new Date;this.setHours(a.getHours());this.setMinutes(a.getMinutes());this.setSeconds(a.getSeconds());this.setMilliseconds(a.getMilliseconds());return this};a.today=function(){return(new Date).clearTime()};a.compare=function(a,b){if(isNaN(a)||isNaN(b)){throw new Error(a+" - "+b)}else if(a instanceof Date&&b instanceof Date){return a<b?-1:a>b?1:0}else{throw new TypeError(a+" - "+b)}};a.equals=function(a,b){return a.compareTo(b)===0};a.getDayNu
 mberFromName=function(a){var b=c.dayNames,d=c.abbreviatedDayNames,e=c.shortestDayNames,f=a.toLowerCase();for(var g=0;g<b.length;g++){if(b[g].toLowerCase()==f||d[g].toLowerCase()==f||e[g].toLowerCase()==f){return g}}return-1};a.getMonthNumberFromName=function(a){var b=c.monthNames,d=c.abbreviatedMonthNames,e=a.toLowerCase();for(var f=0;f<b.length;f++){if(b[f].toLowerCase()==e||d[f].toLowerCase()==e){return f}}return-1};a.isLeapYear=function(a){return a%4===0&&a%100!==0||a%400===0};a.getDaysInMonth=function(b,c){return[31,a.isLeapYear(b)?29:28,31,30,31,30,31,31,30,31,30,31][c]};a.getTimezoneAbbreviation=function(a){var b=c.timezones,d;for(var e=0;e<b.length;e++){if(b[e].offset===a){return b[e].name}}return null};a.getTimezoneOffset=function(a){var b=c.timezones,d;for(var e=0;e<b.length;e++){if(b[e].name===a.toUpperCase()){return b[e].offset}}return null};b.clone=function(){return new Date(this.getTime())};b.compareTo=function(a){return Date.compare(this,a)};b.equals=function(a){return
  Date.equals(this,a||new Date)};b.between=function(a,b){return this.getTime()>=a.getTime()&&this.getTime()<=b.getTime()};b.isAfter=function(a){return this.compareTo(a||new Date)===1};b.isBefore=function(a){return this.compareTo(a||new Date)===-1};b.isToday=function(){return this.isSameDay(new Date)};b.isSameDay=function(a){return this.clone().clearTime().equals(a.clone().clearTime())};b.addMilliseconds=function(a){this.setMilliseconds(this.getMilliseconds()+a);return this};b.addSeconds=function(a){return this.addMilliseconds(a*1e3)};b.addMinutes=function(a){return this.addMilliseconds(a*6e4)};b.addHours=function(a){return this.addMilliseconds(a*36e5)};b.addDays=function(a){this.setDate(this.getDate()+a);return this};b.addWeeks=function(a){return this.addDays(a*7)};b.addMonths=function(b){var c=this.getDate();this.setDate(1);this.setMonth(this.getMonth()+b);this.setDate(Math.min(c,a.getDaysInMonth(this.getFullYear(),this.getMonth())));return this};b.addYears=function(a){return this.a
 ddMonths(a*12)};b.add=function(a){if(typeof a=="number"){this._orient=a;return this}var b=a;if(b.milliseconds){this.addMilliseconds(b.milliseconds)}if(b.seconds){this.addSeconds(b.seconds)}if(b.minutes){this.addMinutes(b.minutes)}if(b.hours){this.addHours(b.hours)}if(b.weeks){this.addWeeks(b.weeks)}if(b.months){this.addMonths(b.months)}if(b.years){this.addYears(b.years)}if(b.days){this.addDays(b.days)}return this};var e,f,g;b.getWeek=function(){var a,b,c,d,h,i,j,k,l,m;e=!e?this.getFullYear():e;f=!f?this.getMonth()+1:f;g=!g?this.getDate():g;if(f<=2){a=e-1;b=(a/4|0)-(a/100|0)+(a/400|0);c=((a-1)/4|0)-((a-1)/100|0)+((a-1)/400|0);l=b-c;h=0;i=g-1+31*(f-1)}else{a=e;b=(a/4|0)-(a/100|0)+(a/400|0);c=((a-1)/4|0)-((a-1)/100|0)+((a-1)/400|0);l=b-c;h=l+1;i=g+(153*(f-3)+2)/5+58+l}j=(a+b)%7;d=(i+j-h)%7;k=i+3-d|0;if(k<0){m=53-((j-l)/5|0)}else if(k>364+l){m=1}else{m=(k/7|0)+1}e=f=g=null;return m};b.getISOWeek=function(){e=this.getUTCFullYear();f=this.getUTCMonth()+1;g=this.getUTCDate();return d(this.
 getWeek())};b.setWeek=function(a){return this.moveToDayOfWeek(1).addWeeks(a-this.getWeek())};a._validate=function(a,b,c,d){if(typeof a=="undefined"){return false}else if(typeof a!="number"){throw new TypeError(a+" is not a Number.")}else if(a<b||a>c){throw new RangeError(a+" is not a valid value for "+d+".")}return true};a.validateMillisecond=function(b){return a._validate(b,0,999,"millisecond")};a.validateSecond=function(b){return a._validate(b,0,59,"second")};a.validateMinute=function(b){return a._validate(b,0,59,"minute")};a.validateHour=function(b){return a._validate(b,0,23,"hour")};a.validateDay=function(b,c,d){return a._validate(b,1,a.getDaysInMonth(c,d),"day")};a.validateMonth=function(b){return a._validate(b,0,11,"month")};a.validateYear=function(b){return a._validate(b,0,9999,"year")};b.set=function(b){if(a.validateMillisecond(b.millisecond)){this.addMilliseconds(b.millisecond-this.getMilliseconds())}if(a.validateSecond(b.second)){this.addSeconds(b.second-this.getSeconds())
 }if(a.validateMinute(b.minute)){this.addMinutes(b.minute-this.getMinutes())}if(a.validateHour(b.hour)){this.addHours(b.hour-this.getHours())}if(a.validateMonth(b.month)){this.addMonths(b.month-this.getMonth())}if(a.validateYear(b.year)){this.addYears(b.year-this.getFullYear())}if(a.validateDay(b.day,this.getFullYear(),this.getMonth())){this.addDays(b.day-this.getDate())}if(b.timezone){this.setTimezone(b.timezone)}if(b.timezoneOffset){this.setTimezoneOffset(b.timezoneOffset)}if(b.week&&a._validate(b.week,0,53,"week")){this.setWeek(b.week)}return this};b.moveToFirstDayOfMonth=function(){return this.set({day:1})};b.moveToLastDayOfMonth=function(){return this.set({day:a.getDaysInMonth(this.getFullYear(),this.getMonth())})};b.moveToNthOccurrence=function(a,b){var c=0;if(b>0){c=b-1}else if(b===-1){this.moveToLastDayOfMonth();if(this.getDay()!==a){this.moveToDayOfWeek(a,-1)}return this}return this.moveToFirstDayOfMonth().addDays(-1).moveToDayOfWeek(a,+1).addWeeks(c)};b.moveToDayOfWeek=func
 tion(a,b){var c=(a-this.getDay()+7*(b||+1))%7;return this.addDays(c===0?c+=7*(b||+1):c)};b.moveToMonth=function(a,b){var c=(a-this.getMonth()+12*(b||+1))%12;return this.addMonths(c===0?c+=12*(b||+1):c)};b.getOrdinalNumber=function(){return Math.ceil((this.clone().clearTime()-new Date(this.getFullYear(),0,1))/864e5)+1};b.getTimezone=function(){return a.getTimezoneAbbreviation(this.getUTCOffset())};b.setTimezoneOffset=function(a){var b=this.getTimezoneOffset(),c=Number(a)*-6/10;return this.addMinutes(c-b)};b.setTimezone=function(b){return this.setTimezoneOffset(a.getTimezoneOffset(b))};b.hasDaylightSavingTime=function(){return Date.today().set({month:0,day:1}).getTimezoneOffset()!==Date.today().set({month:6,day:1}).getTimezoneOffset()};b.isDaylightSavingTime=function(){return this.hasDaylightSavingTime()&&(new Date).getTimezoneOffset()===Date.today().set({month:6,day:1}).getTimezoneOffset()};b.getUTCOffset=function(){var a=this.getTimezoneOffset()*-10/6,b;if(a<0){b=(a-1e4).toString();
 return b.charAt(0)+b.substr(2)}else{b=(a+1e4).toString();return"+"+b.substr(1)}};b.getElapsed=function(a){return(a||new Date)-this};if(!b.toISOString){b.toISOString=function(){function a(a){return a<10?"0"+a:a}return'"'+this.getUTCFullYear()+"-"+a(this.getUTCMonth()+1)+"-"+a(this.getUTCDate())+"T"+a(this.getUTCHours())+":"+a(this.getUTCMinutes())+":"+a(this.getUTCSeconds())+'Z"'}}b._toString=b.toString;b.toString=function(a){var b=this;if(a&&a.length==1){var e=c.formatPatterns;b.t=b.toString;switch(a){case"d":return b.t(e.shortDate);case"D":return b.t(e.longDate);case"F":return b.t(e.fullDateTime);case"m":return b.t(e.monthDay);case"r":return b.t(e.rfc1123);case"s":return b.t(e.sortableDateTime);case"t":return b.t(e.shortTime);case"T":return b.t(e.longTime);case"u":return b.t(e.universalSortableDateTime);case"y":return b.t(e.yearMonth)}}var f=function(a){switch(a*1){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th"}};return a?a.
 replace(/(\\)?(dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|S)/g,function(a){if(a.charAt(0)==="\\"){return a.replace("\\","")}b.h=b.getHours;switch(a){case"hh":return d(b.h()<13?b.h()===0?12:b.h():b.h()-12);case"h":return b.h()<13?b.h()===0?12:b.h():b.h()-12;case"HH":return d(b.h());case"H":return b.h();case"mm":return d(b.getMinutes());case"m":return b.getMinutes();case"ss":return d(b.getSeconds());case"s":return b.getSeconds();case"yyyy":return d(b.getFullYear(),4);case"yy":return d(b.getFullYear());case"dddd":return c.dayNames[b.getDay()];case"ddd":return c.abbreviatedDayNames[b.getDay()];case"dd":return d(b.getDate());case"d":return b.getDate();case"MMMM":return c.monthNames[b.getMonth()];case"MMM":return c.abbreviatedMonthNames[b.getMonth()];case"MM":return d(b.getMonth()+1);case"M":return b.getMonth()+1;case"t":return b.h()<12?c.amDesignator.substring(0,1):c.pmDesignator.substring(0,1);case"tt":return b.h()<12?c.amDesignator:c.pmDesignator;case"S":return f(b.getDate());default:
 return a}}):this._toString()}})();(function(){var a=Date,b=a.prototype,c=a.CultureInfo,d=Number.prototype;b._orient=+1;b._nth=null;b._is=false;b._same=false;b._isSecond=false;d._dateElement="day";b.next=function(){this._orient=+1;return this};a.next=function(){return a.today().next()};b.last=b.prev=b.previous=function(){this._orient=-1;return this};a.last=a.prev=a.previous=function(){return a.today().last()};b.is=function(){this._is=true;return this};b.same=function(){this._same=true;this._isSecond=false;return this};b.today=function(){return this.same().day()};b.weekday=function(){if(this._is){this._is=false;return!this.is().sat()&&!this.is().sun()}return false};b.at=function(b){return typeof b==="string"?a.parse(this.toString("d")+" "+b):this.set(b)};d.fromNow=d.after=function(a){var b={};b[this._dateElement]=this;return(!a?new Date:a.clone()).add(b)};d.ago=d.before=function(a){var b={};b[this._dateElement]=this*-1;return(!a?new Date:a.clone()).add(b)};var e="sunday monday tuesday
  wednesday thursday friday saturday".split(/\s/),f="january february march april may june july august september october november december".split(/\s/),g="Millisecond Second Minute Hour Day Week Month Year".split(/\s/),h="Milliseconds Seconds Minutes Hours Date Week Month FullYear".split(/\s/),i="final first second third fourth fifth".split(/\s/),j;b.toObject=function(){var a={};for(var b=0;b<g.length;b++){a[g[b].toLowerCase()]=this["get"+h[b]]()}return a};a.fromObject=function(a){a.week=null;return Date.today().set(a)};var k=function(b){return function(){if(this._is){this._is=false;return this.getDay()==b}if(this._nth!==null){if(this._isSecond){this.addSeconds(this._orient*-1)}this._isSecond=false;var c=this._nth;this._nth=null;var d=this.clone().moveToLastDayOfMonth();this.moveToNthOccurrence(b,c);if(this>d){throw new RangeError(a.getDayName(b)+" does not occur "+c+" times in the month of "+a.getMonthName(d.getMonth())+" "+d.getFullYear()+".")}return this}return this.moveToDayOfWee
 k(b,this._orient)}};var l=function(b){return function(){var d=a.today(),e=b-d.getDay();if(b===0&&c.firstDayOfWeek===1&&d.getDay()!==0){e=e+7}return d.addDays(e)}};for(var m=0;m<e.length;m++){a[e[m].toUpperCase()]=a[e[m].toUpperCase().substring(0,3)]=m;a[e[m]]=a[e[m].substring(0,3)]=l(m);b[e[m]]=b[e[m].substring(0,3)]=k(m)}var n=function(a){return function(){if(this._is){this._is=false;return this.getMonth()===a}return this.moveToMonth(a,this._orient)}};var o=function(b){return function(){return a.today().set({month:b,day:1})}};for(var p=0;p<f.length;p++){a[f[p].toUpperCase()]=a[f[p].toUpperCase().substring(0,3)]=p;a[f[p]]=a[f[p].substring(0,3)]=o(p);b[f[p]]=b[f[p].substring(0,3)]=n(p)}var q=function(a){return function(){if(this._isSecond){this._isSecond=false;return this}if(this._same){this._same=this._is=false;var b=this.toObject(),c=(arguments[0]||new Date).toObject(),d="",e=a.toLowerCase();for(var f=g.length-1;f>-1;f--){d=g[f].toLowerCase();if(b[d]!=c[d]){return false}if(e==d){br
 eak}}return true}if(a.substring(a.length-1)!="s"){a+="s"}return this["add"+a](this._orient)}};var r=function(a){return function(){this._dateElement=a;return this}};for(var s=0;s<g.length;s++){j=g[s].toLowerCase();b[j]=b[j+"s"]=q(g[s]);d[j]=d[j+"s"]=r(j)}b._ss=q("Second");var t=function(a){return function(b){if(this._same){return this._ss(arguments[0])}if(b||b===0){return this.moveToNthOccurrence(b,a)}this._nth=a;if(a===2&&(b===undefined||b===null)){this._isSecond=true;return this.addSeconds(this._orient)}return this}};for(var u=0;u<i.length;u++){b[i[u]]=u===0?t(-1):t(u)}})();(function(){Date.Parsing={Exception:function(a){this.message="Parse error at '"+a.substring(0,10)+" ...'"}};var a=Date.Parsing;var b=a.Operators={rtoken:function(b){return function(c){var d=c.match(b);if(d){return[d[0],c.substring(d[0].length)]}else{throw new a.Exception(c)}}},token:function(a){return function(a){return b.rtoken(new RegExp("^s*"+a+"s*"))(a)}},stoken:function(a){return b.rtoken(new RegExp("^"+a))
 },until:function(a){return function(b){var c=[],d=null;while(b.length){try{d=a.call(this,b)}catch(e){c.push(d[0]);b=d[1];continue}break}return[c,b]}},many:function(a){return function(b){var c=[],d=null;while(b.length){try{d=a.call(this,b)}catch(e){return[c,b]}c.push(d[0]);b=d[1]}return[c,b]}},optional:function(a){return function(b){var c=null;try{c=a.call(this,b)}catch(d){return[null,b]}return[c[0],c[1]]}},not:function(b){return function(c){try{b.call(this,c)}catch(d){return[null,c]}throw new a.Exception(c)}},ignore:function(a){return a?function(b){var c=null;c=a.call(this,b);return[null,c[1]]}:null},product:function(){var a=arguments[0],c=Array.prototype.slice.call(arguments,1),d=[];for(var e=0;e<a.length;e++){d.push(b.each(a[e],c))}return d},cache:function(b){var c={},d=null;return function(e){try{d=c[e]=c[e]||b.call(this,e)}catch(f){d=c[e]=f}if(d instanceof a.Exception){throw d}else{return d}}},any:function(){var b=arguments;return function(c){var d=null;for(var e=0;e<b.length;e+
 +){if(b[e]==null){continue}try{d=b[e].call(this,c)}catch(f){d=null}if(d){return d}}throw new a.Exception(c)}},each:function(){var b=arguments;return function(c){var d=[],e=null;for(var f=0;f<b.length;f++){if(b[f]==null){continue}try{e=b[f].call(this,c)}catch(g){throw new a.Exception(c)}d.push(e[0]);c=e[1]}return[d,c]}},all:function(){var a=arguments,b=b;return b.each(b.optional(a))},sequence:function(c,d,e){d=d||b.rtoken(/^\s*/);e=e||null;if(c.length==1){return c[0]}return function(b){var f=null,g=null;var h=[];for(var i=0;i<c.length;i++){try{f=c[i].call(this,b)}catch(j){break}h.push(f[0]);try{g=d.call(this,f[1])}catch(k){g=null;break}b=g[1]}if(!f){throw new a.Exception(b)}if(g){throw new a.Exception(g[1])}if(e){try{f=e.call(this,f[1])}catch(l){throw new a.Exception(f[1])}}return[h,f?f[1]:b]}},between:function(a,c,d){d=d||a;var e=b.each(b.ignore(a),c,b.ignore(d));return function(a){var b=e.call(this,a);return[[b[0][0],r[0][2]],b[1]]}},list:function(a,c,d){c=c||b.rtoken(/^\s*/);d=d||
 null;return a instanceof Array?b.each(b.product(a.slice(0,-1),b.ignore(c)),a.slice(-1),b.ignore(d)):b.each(b.many(b.each(a,b.ignore(c))),px,b.ignore(d))},set:function(c,d,e){d=d||b.rtoken(/^\s*/);e=e||null;return function(f){var g=null,h=null,i=null,j=null,k=[[],f],l=false;for(var m=0;m<c.length;m++){i=null;h=null;g=null;l=c.length==1;try{g=c[m].call(this,f)}catch(n){continue}j=[[g[0]],g[1]];if(g[1].length>0&&!l){try{i=d.call(this,g[1])}catch(o){l=true}}else{l=true}if(!l&&i[1].length===0){l=true}if(!l){var p=[];for(var q=0;q<c.length;q++){if(m!=q){p.push(c[q])}}h=b.set(p,d).call(this,i[1]);if(h[0].length>0){j[0]=j[0].concat(h[0]);j[1]=h[1]}}if(j[1].length<k[1].length){k=j}if(k[1].length===0){break}}if(k[0].length===0){return k}if(e){try{i=e.call(this,k[1])}catch(r){throw new a.Exception(k[1])}k[1]=i[1]}return k}},forward:function(a,b){return function(c){return a[b].call(this,c)}},replace:function(a,b){return function(c){var d=a.call(this,c);return[b,d[1]]}},process:function(a,b){ret
 urn function(c){var d=a.call(this,c);return[b.call(this,d[0]),d[1]]}},min:function(b,c){return function(d){var e=c.call(this,d);if(e[0].length<b){throw new a.Exception(d)}return e}}};var c=function(a){return function(){var b=null,c=[];if(arguments.length>1){b=Array.prototype.slice.call(arguments)}else if(arguments[0]instanceof Array){b=arguments[0]}if(b){for(var d=0,e=b.shift();d<e.length;d++){b.unshift(e[d]);c.push(a.apply(null,b));b.shift();return c}}else{return a.apply(null,arguments)}}};var d="optional not ignore cache".split(/\s/);for(var e=0;e<d.length;e++){b[d[e]]=c(b[d[e]])}var f=function(a){return function(){if(arguments[0]instanceof Array){return a.apply(null,arguments[0])}else{return a.apply(null,arguments)}}};var g="each any all".split(/\s/);for(var h=0;h<g.length;h++){b[g[h]]=f(b[g[h]])}})();(function(){var a=Date,b=a.prototype,c=a.CultureInfo;var d=function(a){var b=[];for(var c=0;c<a.length;c++){if(a[c]instanceof Array){b=b.concat(d(a[c]))}else{if(a[c]){b.push(a[c])}}
 }return b};a.Grammar={};a.Translator={hour:function(a){return function(){this.hour=Number(a)}},minute:function(a){return function(){this.minute=Number(a)}},second:function(a){return function(){this.second=Number(a)}},meridian:function(a){return function(){this.meridian=a.slice(0,1).toLowerCase()}},timezone:function(a){return function(){var b=a.replace(/[^\d\+\-]/g,"");if(b.length){this.timezoneOffset=Number(b)}else{this.timezone=a.toLowerCase()}}},day:function(a){var b=a[0];return function(){this.day=Number(b.match(/\d+/)[0])}},month:function(a){return function(){this.month=a.length==3?"jan feb mar apr may jun jul aug sep oct nov dec".indexOf(a)/4:Number(a)-1}},year:function(a){return function(){var b=Number(a);this.year=a.length>2?b:b+(b+2e3<c.twoDigitYearMax?2e3:1900)}},rday:function(a){return function(){switch(a){case"yesterday":this.days=-1;break;case"tomorrow":this.days=1;break;case"today":this.days=0;break;case"now":this.days=0;this.now=true;break}}},finishExact:function(b){b=
 b instanceof Array?b:[b];for(var c=0;c<b.length;c++){if(b[c]){b[c].call(this)}}var d=new Date;if((this.hour||this.minute)&&!this.month&&!this.year&&!this.day){this.day=d.getDate()}if(!this.year){this.year=d.getFullYear()}if(!this.month&&this.month!==0){this.month=d.getMonth()}if(!this.day){this.day=1}if(!this.hour){this.hour=0}if(!this.minute){this.minute=0}if(!this.second){this.second=0}if(this.meridian&&this.hour){if(this.meridian=="p"&&this.hour<12){this.hour=this.hour+12}else if(this.meridian=="a"&&this.hour==12){this.hour=0}}if(this.day>a.getDaysInMonth(this.year,this.month)){throw new RangeError(this.day+" is not a valid value for days.")}var e=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second);if(this.timezone){e.set({timezone:this.timezone})}else if(this.timezoneOffset){e.set({timezoneOffset:this.timezoneOffset})}return e},finish:function(b){b=b instanceof Array?d(b):[b];if(b.length===0){return null}for(var c=0;c<b.length;c++){if(typeof b[c]=="function
 "){b[c].call(this)}}var e=a.today();if(this.now&&!this.unit&&!this.operator){return new Date}else if(this.now){e=new Date}var f=!!(this.days&&this.days!==null||this.orient||this.operator);var g,h,i;i=this.orient=="past"||this.operator=="subtract"?-1:1;if(!this.now&&"hour minute second".indexOf(this.unit)!=-1){e.setTimeToNow()}if(this.month||this.month===0){if("year day hour minute second".indexOf(this.unit)!=-1){this.value=this.month+1;this.month=null;f=true}}if(!f&&this.weekday&&!this.day&&!this.days){var j=Date[this.weekday]();this.day=j.getDate();if(!this.month){this.month=j.getMonth()}this.year=j.getFullYear()}if(f&&this.weekday&&this.unit!="month"){this.unit="day";g=a.getDayNumberFromName(this.weekday)-e.getDay();h=7;this.days=g?(g+i*h)%h:i*h}if(this.month&&this.unit=="day"&&this.operator){this.value=this.month+1;this.month=null}if(this.value!=null&&this.month!=null&&this.year!=null){this.day=this.value*1}if(this.month&&!this.day&&this.value){e.set({day:this.value*1});if(!f){th
 is.day=this.value*1}}if(!this.month&&this.value&&this.unit=="month"&&!this.now){this.month=this.value;f=true}if(f&&(this.month||this.month===0)&&this.unit!="year"){this.unit="month";g=this.month-e.getMonth();h=12;this.months=g?(g+i*h)%h:i*h;this.month=null}if(!this.unit){this.unit="day"}if(!this.value&&this.operator&&this.operator!==null&&this[this.unit+"s"]&&this[this.unit+"s"]!==null){this[this.unit+"s"]=this[this.unit+"s"]+(this.operator=="add"?1:-1)+(this.value||0)*i}else if(this[this.unit+"s"]==null||this.operator!=null){if(!this.value){this.value=1}this[this.unit+"s"]=this.value*i}if(this.meridian&&this.hour){if(this.meridian=="p"&&this.hour<12){this.hour=this.hour+12}else if(this.meridian=="a"&&this.hour==12){this.hour=0}}if(this.weekday&&!this.day&&!this.days){var j=Date[this.weekday]();this.day=j.getDate();if(j.getMonth()!==e.getMonth()){this.month=j.getMonth()}}if((this.month||this.month===0)&&!this.day){this.day=1}if(!this.orient&&!this.operator&&this.unit=="week"&&this.v
 alue&&!this.day&&!this.month){return Date.today().setWeek(this.value)}if(f&&this.timezone&&this.day&&this.days){this.day=this.days}return f?e.add(this):e.set(this)}};var e=a.Parsing.Operators,f=a.Grammar,g=a.Translator,h;f.datePartDelimiter=e.rtoken(/^([\s\-\.\,\/\x27]+)/);f.timePartDelimiter=e.stoken(":");f.whiteSpace=e.rtoken(/^\s*/);f.generalDelimiter=e.rtoken(/^(([\s\,]|at|@|on)+)/);var i={};f.ctoken=function(a){var b=i[a];if(!b){var d=c.regexPatterns;var f=a.split(/\s+/),g=[];for(var h=0;h<f.length;h++){g.push(e.replace(e.rtoken(d[f[h]]),f[h]))}b=i[a]=e.any.apply(null,g)}return b};f.ctoken2=function(a){return e.rtoken(c.regexPatterns[a])};f.h=e.cache(e.process(e.rtoken(/^(0[0-9]|1[0-2]|[1-9])/),g.hour));f.hh=e.cache(e.process(e.rtoken(/^(0[0-9]|1[0-2])/),g.hour));f.H=e.cache(e.process(e.rtoken(/^([0-1][0-9]|2[0-3]|[0-9])/),g.hour));f.HH=e.cache(e.process(e.rtoken(/^([0-1][0-9]|2[0-3])/),g.hour));f.m=e.cache(e.process(e.rtoken(/^([0-5][0-9]|[0-9])/),g.minute));f.mm=e.cache(e.pro
 cess(e.rtoken(/^[0-5][0-9]/),g.minute));f.s=e.cache(e.process(e.rtoken(/^([0-5][0-9]|[0-9])/),g.second));f.ss=e.cache(e.process(e.rtoken(/^[0-5][0-9]/),g.second));f.hms=e.cache(e.sequence([f.H,f.m,f.s],f.timePartDelimiter));f.t=e.cache(e.process(f.ctoken2("shortMeridian"),g.meridian));f.tt=e.cache(e.process(f.ctoken2("longMeridian"),g.meridian));f.z=e.cache(e.process(e.rtoken(/^((\+|\-)\s*\d\d\d\d)|((\+|\-)\d\d\:?\d\d)/),g.timezone));f.zz=e.cache(e.process(e.rtoken(/^((\+|\-)\s*\d\d\d\d)|((\+|\-)\d\d\:?\d\d)/),g.timezone));f.zzz=e.cache(e.process(f.ctoken2("timezone"),g.timezone));f.timeSuffix=e.each(e.ignore(f.whiteSpace),e.set([f.tt,f.zzz]));f.time=e.each(e.optional(e.ignore(e.stoken("T"))),f.hms,f.timeSuffix);f.d=e.cache(e.process(e.each(e.rtoken(/^([0-2]\d|3[0-1]|\d)/),e.optional(f.ctoken2("ordinalSuffix"))),g.day));f.dd=e.cache(e.process(e.each(e.rtoken(/^([0-2]\d|3[0-1])/),e.optional(f.ctoken2("ordinalSuffix"))),g.day));f.ddd=f.dddd=e.cache(e.process(f.ctoken("sun mon tue wed 
 thu fri sat"),function(a){return function(){this.weekday=a}}));f.M=e.cache(e.process(e.rtoken(/^(1[0-2]|0\d|\d)/),g.month));f.MM=e.cache(e.process(e.rtoken(/^(1[0-2]|0\d)/),g.month));f.MMM=f.MMMM=e.cache(e.process(f.ctoken("jan feb mar apr may jun jul aug sep oct nov dec"),g.month));f.y=e.cache(e.process(e.rtoken(/^(\d\d?)/),g.year));f.yy=e.cache(e.process(e.rtoken(/^(\d\d)/),g.year));f.yyy=e.cache(e.process(e.rtoken(/^(\d\d?\d?\d?)/),g.year));f.yyyy=e.cache(e.process(e.rtoken(/^(\d\d\d\d)/),g.year));h=function(){return e.each(e.any.apply(null,arguments),e.not(f.ctoken2("timeContext")))};f.day=h(f.d,f.dd);f.month=h(f.M,f.MMM);f.year=h(f.yyyy,f.yy);f.orientation=e.process(f.ctoken("past future"),function(a){return function(){this.orient=a}});f.operator=e.process(f.ctoken("add subtract"),function(a){return function(){this.operator=a}});f.rday=e.process(f.ctoken("yesterday tomorrow today now"),g.rday);f.unit=e.process(f.ctoken("second minute hour day week month year"),function(a){retur
 n function(){this.unit=a}});f.value=e.process(e.rtoken(/^\d\d?(st|nd|rd|th)?/),function(a){return function(){this.value=a.replace(/\D/g,"")}});f.expression=e.set([f.rday,f.operator,f.value,f.unit,f.orientation,f.ddd,f.MMM]);h=function(){return e.set(arguments,f.datePartDelimiter)};f.mdy=h(f.ddd,f.month,f.day,f.year);f.ymd=h(f.ddd,f.year,f.month,f.day);f.dmy=h(f.ddd,f.day,f.month,f.year);f.date=function(a){return(f[c.dateElementOrder]||f.mdy).call(this,a)};f.format=e.process(e.many(e.any(e.process(e.rtoken(/^(dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|zz?z?)/),function(b){if(f[b]){return f[b]}else{throw a.Parsing.Exception(b)}}),e.process(e.rtoken(/^[^dMyhHmstz]+/),function(a){return e.ignore(e.stoken(a))}))),function(a){return e.process(e.each.apply(null,a),g.finishExact)});var j={};var k=function(a){return j[a]=j[a]||f.format(a)[0]};f.formats=function(a){if(a instanceof Array){var b=[];for(var c=0;c<a.length;c++){b.push(k(a[c]))}return e.any.apply(null,b)}else{return k(a)}};f._for
 mats=f.formats(['"yyyy-MM-ddTHH:mm:ssZ"',"yyyy-MM-ddTHH:mm:ssZ","yyyy-MM-ddTHH:mm:ssz","yyyy-MM-ddTHH:mm:ss","yyyy-MM-ddTHH:mmZ","yyyy-MM-ddTHH:mmz","yyyy-MM-ddTHH:mm","ddd, MMM dd, yyyy H:mm:ss tt","ddd MMM d yyyy HH:mm:ss zzz","MMddyyyy","ddMMyyyy","Mddyyyy","ddMyyyy","Mdyyyy","dMyyyy","yyyy","Mdyy","dMyy","d"]);f._start=e.process(e.set([f.date,f.time,f.expression],f.generalDelimiter,f.whiteSpace),g.finish);f.start=function(a){try{var b=f._formats.call({},a);if(b[1].length===0){return b}}catch(c){}return f._start.call({},a)};a._parse=a.parse;a.parse=function(b){var c=null;if(!b){return null}if(b instanceof Date){return b}try{c=a.Grammar.start.call({},b.replace(/^\s*(\S*(\s+\S+)*)\s*$/,"$1"))}catch(d){return null}return c[1].length===0?c[0]:null};a.getParseFunction=function(b){var c=a.Grammar.formats(b);return function(a){var b=null;try{b=c.call({},a)}catch(d){return null}return b[1].length===0?b[0]:null}};a.parseExact=function(b,c){return a.getParseFunction(c)(b)}})()
-


[35/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/lib/jquery-1.7.2.min.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/lib/jquery-1.7.2.min.js b/deleted/archive/js/lib/jquery-1.7.2.min.js
deleted file mode 100644
index 16ad06c..0000000
--- a/deleted/archive/js/lib/jquery-1.7.2.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! jQuery v1.7.2 jquery.com | jquery.org/license */
-(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;
 g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);e
 lse d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return l}function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0){if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="margin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d
 =parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+"px"}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?c==="option"?b.selected=a.defaul
 tSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typ
 eof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c
 =a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;r
 eturn this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==nu
 ll?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),t
 ypeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready
 );var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:functio
 n(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[
 ];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f
 .concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date 
 RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?n(g):h==="function"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],
 e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);re
 turn this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f
 .isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.va
 lue==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecke
 d=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="<div "+n+"display:block;'><div style='"+t+"0;display:block;overflow:hidden;'></div></div>"+"<table "+n+"' cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><td style='"+t+"0;display:none'></td><td>t</td></tr></table>",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="no
 ne",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style='width:5px;'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position=
 "relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[
 n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&&!f._data(
 j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return m}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f
 ._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=th
 is,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof
  a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeCla
 ss"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a
 .attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);r
 eturn}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowsp
 an:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b}
 ,set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["r
 adio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(
-a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.gui
 d,selector:g,quick:g&&G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remov
 e.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=
 f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.na
 mespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);return c.result}},props:"attrChange attr
 Name relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.prop
 s?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.
 type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.
 type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("ch
 ange",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e=
 =null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:funct
 ion(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.tes
 t(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,
 l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[
 t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFi
 lter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9||d===11){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]
 |\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode=
 ==b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG
 :function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.
 parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a)
 {var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nod
 eType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p
 =o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,
 e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElemen
 t("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]
 );if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}
 }(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.select
 ors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.c
 ontext).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({p
 arent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P
 .call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")[\\s/>]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^
 \s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChi
 ld;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f
-.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;
 if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(functi
 on(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({type:"GET",global:!1,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h))
 ,e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.
 createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;
 i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\([^)]*\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\-+]?(?:\d*\.)?\d+$/i,bt=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,bu=/^([\-+])=([\-+.\de]+)/,bv=/^margin/,bw={position:"absolute",vi
 sibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f
 .cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f
 ===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.su
 pport.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:f
 unction(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.e
 ach("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},
 ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if
 (!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.
 toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d
 .async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.json
 p!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||
 /loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{i
 f(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),(e===""&&f.
 css(d,"display")==="none"||!f.contains(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(ct("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark
 (this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"
 ),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("toggle",1),fadeIn:{
 opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=nul
 l&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.options.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fxshow"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),

<TRUNCATED>

[30/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/unit-tests/qunit.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/unit-tests/qunit.js b/deleted/archive/js/unit-tests/qunit.js
deleted file mode 100644
index 6bec9d8..0000000
--- a/deleted/archive/js/unit-tests/qunit.js
+++ /dev/null
@@ -1,1934 +0,0 @@
-/**
- * QUnit v1.10.0pre - A JavaScript Unit Testing Framework
- *
- * http://qunitjs.com
- *
- * Copyright 2012 jQuery Foundation and other contributors
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- */
-
-(function( window ) {
-
-var QUnit,
-	config,
-	onErrorFnPrev,
-	testId = 0,
-	fileName = (sourceFromStacktrace( 0 ) || "" ).replace(/(:\d+)+\)?/, "").replace(/.+\//, ""),
-	toString = Object.prototype.toString,
-	hasOwn = Object.prototype.hasOwnProperty,
-	// Keep a local reference to Date (GH-283)
-	Date = window.Date,
-	defined = {
-	setTimeout: typeof window.setTimeout !== "undefined",
-	sessionStorage: (function() {
-		var x = "qunit-test-string";
-		try {
-			sessionStorage.setItem( x, x );
-			sessionStorage.removeItem( x );
-			return true;
-		} catch( e ) {
-			return false;
-		}
-	}())
-};
-
-function Test( settings ) {
-	extend( this, settings );
-	this.assertions = [];
-	this.testNumber = ++Test.count;
-}
-
-Test.count = 0;
-
-Test.prototype = {
-	init: function() {
-		var a, b, li,
-        tests = id( "qunit-tests" );
-
-		if ( tests ) {
-			b = document.createElement( "strong" );
-			b.innerHTML = this.name;
-
-			// `a` initialized at top of scope
-			a = document.createElement( "a" );
-			a.innerHTML = "Rerun";
-			a.href = QUnit.url({ testNumber: this.testNumber });
-
-			li = document.createElement( "li" );
-			li.appendChild( b );
-			li.appendChild( a );
-			li.className = "running";
-			li.id = this.id = "qunit-test-output" + testId++;
-
-			tests.appendChild( li );
-		}
-	},
-	setup: function() {
-		if ( this.module !== config.previousModule ) {
-			if ( config.previousModule ) {
-				runLoggingCallbacks( "moduleDone", QUnit, {
-					name: config.previousModule,
-					failed: config.moduleStats.bad,
-					passed: config.moduleStats.all - config.moduleStats.bad,
-					total: config.moduleStats.all
-				});
-			}
-			config.previousModule = this.module;
-			config.moduleStats = { all: 0, bad: 0 };
-			runLoggingCallbacks( "moduleStart", QUnit, {
-				name: this.module
-			});
-		} else if ( config.autorun ) {
-			runLoggingCallbacks( "moduleStart", QUnit, {
-				name: this.module
-			});
-		}
-
-		config.current = this;
-
-		this.testEnvironment = extend({
-			setup: function() {},
-			teardown: function() {}
-		}, this.moduleTestEnvironment );
-
-		runLoggingCallbacks( "testStart", QUnit, {
-			name: this.testName,
-			module: this.module
-		});
-
-		// allow utility functions to access the current test environment
-		// TODO why??
-		QUnit.current_testEnvironment = this.testEnvironment;
-
-		if ( !config.pollution ) {
-			saveGlobal();
-		}
-		if ( config.notrycatch ) {
-			this.testEnvironment.setup.call( this.testEnvironment );
-			return;
-		}
-		try {
-			this.testEnvironment.setup.call( this.testEnvironment );
-		} catch( e ) {
-			QUnit.pushFailure( "Setup failed on " + this.testName + ": " + e.message, extractStacktrace( e, 1 ) );
-		}
-	},
-	run: function() {
-		config.current = this;
-
-		var running = id( "qunit-testresult" );
-
-		if ( running ) {
-			running.innerHTML = "Running: <br/>" + this.name;
-		}
-
-		if ( this.async ) {
-			QUnit.stop();
-		}
-
-		if ( config.notrycatch ) {
-			this.callback.call( this.testEnvironment, QUnit.assert );
-			return;
-		}
-
-		try {
-			this.callback.call( this.testEnvironment, QUnit.assert );
-		} catch( e ) {
-			QUnit.pushFailure( "Died on test #" + (this.assertions.length + 1) + " " + this.stack + ": " + e.message, extractStacktrace( e, 0 ) );
-			// else next test will carry the responsibility
-			saveGlobal();
-
-			// Restart the tests if they're blocking
-			if ( config.blocking ) {
-				QUnit.start();
-			}
-		}
-	},
-	teardown: function() {
-		config.current = this;
-		if ( config.notrycatch ) {
-			this.testEnvironment.teardown.call( this.testEnvironment );
-			return;
-		} else {
-			try {
-				this.testEnvironment.teardown.call( this.testEnvironment );
-			} catch( e ) {
-				QUnit.pushFailure( "Teardown failed on " + this.testName + ": " + e.message, extractStacktrace( e, 1 ) );
-			}
-		}
-		checkPollution();
-	},
-	finish: function() {
-		config.current = this;
-		if ( config.requireExpects && this.expected == null ) {
-			QUnit.pushFailure( "Expected number of assertions to be defined, but expect() was not called.", this.stack );
-		} else if ( this.expected != null && this.expected != this.assertions.length ) {
-			QUnit.pushFailure( "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run", this.stack );
-		} else if ( this.expected == null && !this.assertions.length ) {
-			QUnit.pushFailure( "Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.", this.stack );
-		}
-
-		var assertion, a, b, i, li, ol,
-			test = this,
-			good = 0,
-			bad = 0,
-			tests = id( "qunit-tests" );
-
-		config.stats.all += this.assertions.length;
-		config.moduleStats.all += this.assertions.length;
-
-		if ( tests ) {
-			ol = document.createElement( "ol" );
-
-			for ( i = 0; i < this.assertions.length; i++ ) {
-				assertion = this.assertions[i];
-
-				li = document.createElement( "li" );
-				li.className = assertion.result ? "pass" : "fail";
-				li.innerHTML = assertion.message || ( assertion.result ? "okay" : "failed" );
-				ol.appendChild( li );
-
-				if ( assertion.result ) {
-					good++;
-				} else {
-					bad++;
-					config.stats.bad++;
-					config.moduleStats.bad++;
-				}
-			}
-
-			// store result when possible
-			if ( QUnit.config.reorder && defined.sessionStorage ) {
-				if ( bad ) {
-					sessionStorage.setItem( "qunit-test-" + this.module + "-" + this.testName, bad );
-				} else {
-					sessionStorage.removeItem( "qunit-test-" + this.module + "-" + this.testName );
-				}
-			}
-
-			if ( bad === 0 ) {
-				ol.style.display = "none";
-			}
-
-			// `b` initialized at top of scope
-			b = document.createElement( "strong" );
-			b.innerHTML = this.name + " <b class='counts'>(<b class='failed'>" + bad + "</b>, <b class='passed'>" + good + "</b>, " + this.assertions.length + ")</b>";
-
-			addEvent(b, "click", function() {
-				var next = b.nextSibling.nextSibling,
-					display = next.style.display;
-				next.style.display = display === "none" ? "block" : "none";
-			});
-
-			addEvent(b, "dblclick", function( e ) {
-				var target = e && e.target ? e.target : window.event.srcElement;
-				if ( target.nodeName.toLowerCase() == "span" || target.nodeName.toLowerCase() == "b" ) {
-					target = target.parentNode;
-				}
-				if ( window.location && target.nodeName.toLowerCase() === "strong" ) {
-					window.location = QUnit.url({ testNumber: test.testNumber });
-				}
-			});
-
-			// `li` initialized at top of scope
-			li = id( this.id );
-			li.className = bad ? "fail" : "pass";
-			li.removeChild( li.firstChild );
-			a = li.firstChild;
-			li.appendChild( b );
-			li.appendChild ( a );
-			li.appendChild( ol );
-
-		} else {
-			for ( i = 0; i < this.assertions.length; i++ ) {
-				if ( !this.assertions[i].result ) {
-					bad++;
-					config.stats.bad++;
-					config.moduleStats.bad++;
-				}
-			}
-		}
-
-		runLoggingCallbacks( "testDone", QUnit, {
-			name: this.testName,
-			module: this.module,
-			failed: bad,
-			passed: this.assertions.length - bad,
-			total: this.assertions.length
-		});
-
-		QUnit.reset();
-
-		config.current = undefined;
-	},
-
-	queue: function() {
-		var bad,
-			test = this;
-
-		synchronize(function() {
-			test.init();
-		});
-		function run() {
-			// each of these can by async
-			synchronize(function() {
-				test.setup();
-			});
-			synchronize(function() {
-				test.run();
-			});
-			synchronize(function() {
-				test.teardown();
-			});
-			synchronize(function() {
-				test.finish();
-			});
-		}
-
-		// `bad` initialized at top of scope
-		// defer when previous test run passed, if storage is available
-		bad = QUnit.config.reorder && defined.sessionStorage &&
-						+sessionStorage.getItem( "qunit-test-" + this.module + "-" + this.testName );
-
-		if ( bad ) {
-			run();
-		} else {
-			synchronize( run, true );
-		}
-	}
-};
-
-// Root QUnit object.
-// `QUnit` initialized at top of scope
-QUnit = {
-
-	// call on start of module test to prepend name to all tests
-	module: function( name, testEnvironment ) {
-		config.currentModule = name;
-		config.currentModuleTestEnviroment = testEnvironment;
-	},
-
-	asyncTest: function( testName, expected, callback ) {
-		if ( arguments.length === 2 ) {
-			callback = expected;
-			expected = null;
-		}
-
-		QUnit.test( testName, expected, callback, true );
-	},
-
-	test: function( testName, expected, callback, async ) {
-		var test,
-			name = "<span class='test-name'>" + escapeInnerText( testName ) + "</span>";
-
-		if ( arguments.length === 2 ) {
-			callback = expected;
-			expected = null;
-		}
-
-		if ( config.currentModule ) {
-			name = "<span class='module-name'>" + config.currentModule + "</span>: " + name;
-		}
-
-		test = new Test({
-			name: name,
-			testName: testName,
-			expected: expected,
-			async: async,
-			callback: callback,
-			module: config.currentModule,
-			moduleTestEnvironment: config.currentModuleTestEnviroment,
-			stack: sourceFromStacktrace( 2 )
-		});
-
-		if ( !validTest( test ) ) {
-			return;
-		}
-
-		test.queue();
-	},
-
-	// Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
-	expect: function( asserts ) {
-		config.current.expected = asserts;
-	},
-
-	start: function( count ) {
-		config.semaphore -= count || 1;
-		// don't start until equal number of stop-calls
-		if ( config.semaphore > 0 ) {
-			return;
-		}
-		// ignore if start is called more often then stop
-		if ( config.semaphore < 0 ) {
-			config.semaphore = 0;
-		}
-		// A slight delay, to avoid any current callbacks
-		if ( defined.setTimeout ) {
-			window.setTimeout(function() {
-				if ( config.semaphore > 0 ) {
-					return;
-				}
-				if ( config.timeout ) {
-					clearTimeout( config.timeout );
-				}
-
-				config.blocking = false;
-				process( true );
-			}, 13);
-		} else {
-			config.blocking = false;
-			process( true );
-		}
-	},
-
-	stop: function( count ) {
-		config.semaphore += count || 1;
-		config.blocking = true;
-
-		if ( config.testTimeout && defined.setTimeout ) {
-			clearTimeout( config.timeout );
-			config.timeout = window.setTimeout(function() {
-				QUnit.ok( false, "Test timed out" );
-				config.semaphore = 1;
-				QUnit.start();
-			}, config.testTimeout );
-		}
-	}
-};
-
-// Asssert helpers
-// All of these must call either QUnit.push() or manually do:
-// - runLoggingCallbacks( "log", .. );
-// - config.current.assertions.push({ .. });
-QUnit.assert = {
-	/**
-	 * Asserts rough true-ish result.
-	 * @name ok
-	 * @function
-	 * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
-	 */
-	ok: function( result, msg ) {
-		if ( !config.current ) {
-			throw new Error( "ok() assertion outside test context, was " + sourceFromStacktrace(2) );
-		}
-		result = !!result;
-
-		var source,
-			details = {
-				result: result,
-				message: msg
-			};
-
-		msg = escapeInnerText( msg || (result ? "okay" : "failed" ) );
-		msg = "<span class='test-message'>" + msg + "</span>";
-
-		if ( !result ) {
-			source = sourceFromStacktrace( 2 );
-			if ( source ) {
-				details.source = source;
-				msg += "<table><tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr></table>";
-			}
-		}
-		runLoggingCallbacks( "log", QUnit, details );
-		config.current.assertions.push({
-			result: result,
-			message: msg
-		});
-	},
-
-	/**
-	 * Assert that the first two arguments are equal, with an optional message.
-	 * Prints out both actual and expected values.
-	 * @name equal
-	 * @function
-	 * @example equal( format( "Received {0} bytes.", 2), "Received 2 bytes.", "format() replaces {0} with next argument" );
-	 */
-	equal: function( actual, expected, message ) {
-		QUnit.push( expected == actual, actual, expected, message );
-	},
-
-	/**
-	 * @name notEqual
-	 * @function
-	 */
-	notEqual: function( actual, expected, message ) {
-		QUnit.push( expected != actual, actual, expected, message );
-	},
-
-	/**
-	 * @name deepEqual
-	 * @function
-	 */
-	deepEqual: function( actual, expected, message ) {
-		QUnit.push( QUnit.equiv(actual, expected), actual, expected, message );
-	},
-
-	/**
-	 * @name notDeepEqual
-	 * @function
-	 */
-	notDeepEqual: function( actual, expected, message ) {
-		QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message );
-	},
-
-	/**
-	 * @name strictEqual
-	 * @function
-	 */
-	strictEqual: function( actual, expected, message ) {
-		QUnit.push( expected === actual, actual, expected, message );
-	},
-
-	/**
-	 * @name notStrictEqual
-	 * @function
-	 */
-	notStrictEqual: function( actual, expected, message ) {
-		QUnit.push( expected !== actual, actual, expected, message );
-	},
-
-	throws: function( block, expected, message ) {
-		var actual,
-			ok = false;
-
-		// 'expected' is optional
-		if ( typeof expected === "string" ) {
-			message = expected;
-			expected = null;
-		}
-
-		config.current.ignoreGlobalErrors = true;
-		try {
-			block.call( config.current.testEnvironment );
-		} catch (e) {
-			actual = e;
-		}
-		config.current.ignoreGlobalErrors = false;
-
-		if ( actual ) {
-			// we don't want to validate thrown error
-			if ( !expected ) {
-				ok = true;
-			// expected is a regexp
-			} else if ( QUnit.objectType( expected ) === "regexp" ) {
-				ok = expected.test( actual );
-			// expected is a constructor
-			} else if ( actual instanceof expected ) {
-				ok = true;
-			// expected is a validation function which returns true is validation passed
-			} else if ( expected.call( {}, actual ) === true ) {
-				ok = true;
-			}
-
-			QUnit.push( ok, actual, null, message );
-		} else {
-			QUnit.pushFailure( message, null, 'No exception was thrown.' );
-		}
-	}
-};
-
-/**
- * @deprecate since 1.8.0
- * Kept assertion helpers in root for backwards compatibility
- */
-extend( QUnit, QUnit.assert );
-
-/**
- * @deprecated since 1.9.0
- * Kept global "raises()" for backwards compatibility
- */
-QUnit.raises = QUnit.assert.throws;
-
-/**
- * @deprecated since 1.0.0, replaced with error pushes since 1.3.0
- * Kept to avoid TypeErrors for undefined methods.
- */
-QUnit.equals = function() {
-	QUnit.push( false, false, false, "QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead" );
-};
-QUnit.same = function() {
-	QUnit.push( false, false, false, "QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead" );
-};
-
-// We want access to the constructor's prototype
-(function() {
-	function F() {}
-	F.prototype = QUnit;
-	QUnit = new F();
-	// Make F QUnit's constructor so that we can add to the prototype later
-	QUnit.constructor = F;
-}());
-
-/**
- * Config object: Maintain internal state
- * Later exposed as QUnit.config
- * `config` initialized at top of scope
- */
-config = {
-	// The queue of tests to run
-	queue: [],
-
-	// block until document ready
-	blocking: true,
-
-	// when enabled, show only failing tests
-	// gets persisted through sessionStorage and can be changed in UI via checkbox
-	hidepassed: false,
-
-	// by default, run previously failed tests first
-	// very useful in combination with "Hide passed tests" checked
-	reorder: true,
-
-	// by default, modify document.title when suite is done
-	altertitle: true,
-
-	// when enabled, all tests must call expect()
-	requireExpects: false,
-
-	// add checkboxes that are persisted in the query-string
-	// when enabled, the id is set to `true` as a `QUnit.config` property
-	urlConfig: [
-		{
-			id: "noglobals",
-			label: "Check for Globals",
-			tooltip: "Enabling this will test if any test introduces new properties on the `window` object. Stored as query-strings."
-		},
-		{
-			id: "notrycatch",
-			label: "No try-catch",
-			tooltip: "Enabling this will run tests outside of a try-catch block. Makes debugging exceptions in IE reasonable. Stored as query-strings."
-		}
-	],
-
-	// logging callback queues
-	begin: [],
-	done: [],
-	log: [],
-	testStart: [],
-	testDone: [],
-	moduleStart: [],
-	moduleDone: []
-};
-
-// Initialize more QUnit.config and QUnit.urlParams
-(function() {
-	var i,
-		location = window.location || { search: "", protocol: "file:" },
-		params = location.search.slice( 1 ).split( "&" ),
-		length = params.length,
-		urlParams = {},
-		current;
-
-	if ( params[ 0 ] ) {
-		for ( i = 0; i < length; i++ ) {
-			current = params[ i ].split( "=" );
-			current[ 0 ] = decodeURIComponent( current[ 0 ] );
-			// allow just a key to turn on a flag, e.g., test.html?noglobals
-			current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;
-			urlParams[ current[ 0 ] ] = current[ 1 ];
-		}
-	}
-
-	QUnit.urlParams = urlParams;
-
-	// String search anywhere in moduleName+testName
-	config.filter = urlParams.filter;
-
-	// Exact match of the module name
-	config.module = urlParams.module;
-
-	config.testNumber = parseInt( urlParams.testNumber, 10 ) || null;
-
-	// Figure out if we're running the tests from a server or not
-	QUnit.isLocal = location.protocol === "file:";
-}());
-
-// Export global variables, unless an 'exports' object exists,
-// in that case we assume we're in CommonJS (dealt with on the bottom of the script)
-if ( typeof exports === "undefined" ) {
-	extend( window, QUnit );
-
-	// Expose QUnit object
-	window.QUnit = QUnit;
-}
-
-// Extend QUnit object,
-// these after set here because they should not be exposed as global functions
-extend( QUnit, {
-	config: config,
-
-	// Initialize the configuration options
-	init: function() {
-		extend( config, {
-			stats: { all: 0, bad: 0 },
-			moduleStats: { all: 0, bad: 0 },
-			started: +new Date(),
-			updateRate: 1000,
-			blocking: false,
-			autostart: true,
-			autorun: false,
-			filter: "",
-			queue: [],
-			semaphore: 0
-		});
-
-		var tests, banner, result,
-			qunit = id( "qunit" );
-
-		if ( qunit ) {
-			qunit.innerHTML =
-				"<h1 id='qunit-header'>" + escapeInnerText( document.title ) + "</h1>" +
-				"<h2 id='qunit-banner'></h2>" +
-				"<div id='qunit-testrunner-toolbar'></div>" +
-				"<h2 id='qunit-userAgent'></h2>" +
-				"<ol id='qunit-tests'></ol>";
-		}
-
-		tests = id( "qunit-tests" );
-		banner = id( "qunit-banner" );
-		result = id( "qunit-testresult" );
-
-		if ( tests ) {
-			tests.innerHTML = "";
-		}
-
-		if ( banner ) {
-			banner.className = "";
-		}
-
-		if ( result ) {
-			result.parentNode.removeChild( result );
-		}
-
-		if ( tests ) {
-			result = document.createElement( "p" );
-			result.id = "qunit-testresult";
-			result.className = "result";
-			tests.parentNode.insertBefore( result, tests );
-			result.innerHTML = "Running...<br/>&nbsp;";
-		}
-	},
-
-	// Resets the test setup. Useful for tests that modify the DOM.
-	// If jQuery is available, uses jQuery's html(), otherwise just innerHTML.
-	reset: function() {
-		var fixture;
-
-		if ( window.jQuery ) {
-			jQuery( "#qunit-fixture" ).html( config.fixture );
-		} else {
-			fixture = id( "qunit-fixture" );
-			if ( fixture ) {
-				fixture.innerHTML = config.fixture;
-			}
-		}
-	},
-
-	// Trigger an event on an element.
-	// @example triggerEvent( document.body, "click" );
-	triggerEvent: function( elem, type, event ) {
-		if ( document.createEvent ) {
-			event = document.createEvent( "MouseEvents" );
-			event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
-				0, 0, 0, 0, 0, false, false, false, false, 0, null);
-
-			elem.dispatchEvent( event );
-		} else if ( elem.fireEvent ) {
-			elem.fireEvent( "on" + type );
-		}
-	},
-
-	// Safe object type checking
-	is: function( type, obj ) {
-		return QUnit.objectType( obj ) == type;
-	},
-
-	objectType: function( obj ) {
-		if ( typeof obj === "undefined" ) {
-				return "undefined";
-		// consider: typeof null === object
-		}
-		if ( obj === null ) {
-				return "null";
-		}
-
-		var type = toString.call( obj ).match(/^\[object\s(.*)\]$/)[1] || "";
-
-		switch ( type ) {
-			case "Number":
-				if ( isNaN(obj) ) {
-					return "nan";
-				}
-				return "number";
-			case "String":
-			case "Boolean":
-			case "Array":
-			case "Date":
-			case "RegExp":
-			case "Function":
-				return type.toLowerCase();
-		}
-		if ( typeof obj === "object" ) {
-			return "object";
-		}
-		return undefined;
-	},
-
-	push: function( result, actual, expected, message ) {
-		if ( !config.current ) {
-			throw new Error( "assertion outside test context, was " + sourceFromStacktrace() );
-		}
-
-		var output, source,
-			details = {
-				result: result,
-				message: message,
-				actual: actual,
-				expected: expected
-			};
-
-		message = escapeInnerText( message ) || ( result ? "okay" : "failed" );
-		message = "<span class='test-message'>" + message + "</span>";
-		output = message;
-
-		if ( !result ) {
-			expected = escapeInnerText( QUnit.jsDump.parse(expected) );
-			actual = escapeInnerText( QUnit.jsDump.parse(actual) );
-			output += "<table><tr class='test-expected'><th>Expected: </th><td><pre>" + expected + "</pre></td></tr>";
-
-			if ( actual != expected ) {
-				output += "<tr class='test-actual'><th>Result: </th><td><pre>" + actual + "</pre></td></tr>";
-				output += "<tr class='test-diff'><th>Diff: </th><td><pre>" + QUnit.diff( expected, actual ) + "</pre></td></tr>";
-			}
-
-			source = sourceFromStacktrace();
-
-			if ( source ) {
-				details.source = source;
-				output += "<tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr>";
-			}
-
-			output += "</table>";
-		}
-
-		runLoggingCallbacks( "log", QUnit, details );
-
-		config.current.assertions.push({
-			result: !!result,
-			message: output
-		});
-	},
-
-	pushFailure: function( message, source, actual ) {
-		if ( !config.current ) {
-			throw new Error( "pushFailure() assertion outside test context, was " + sourceFromStacktrace(2) );
-		}
-
-		var output,
-			details = {
-				result: false,
-				message: message
-			};
-
-		message = escapeInnerText( message ) || "error";
-		message = "<span class='test-message'>" + message + "</span>";
-		output = message;
-
-		output += "<table>";
-
-		if ( actual ) {
-			output += "<tr class='test-actual'><th>Result: </th><td><pre>" + escapeInnerText( actual ) + "</pre></td></tr>";
-		}
-
-		if ( source ) {
-			details.source = source;
-			output += "<tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr>";
-		}
-
-		output += "</table>";
-
-		runLoggingCallbacks( "log", QUnit, details );
-
-		config.current.assertions.push({
-			result: false,
-			message: output
-		});
-	},
-
-	url: function( params ) {
-		params = extend( extend( {}, QUnit.urlParams ), params );
-		var key,
-			querystring = "?";
-
-		for ( key in params ) {
-			if ( !hasOwn.call( params, key ) ) {
-				continue;
-			}
-			querystring += encodeURIComponent( key ) + "=" +
-				encodeURIComponent( params[ key ] ) + "&";
-		}
-		return window.location.pathname + querystring.slice( 0, -1 );
-	},
-
-	extend: extend,
-	id: id,
-	addEvent: addEvent
-	// load, equiv, jsDump, diff: Attached later
-});
-
-/**
- * @deprecated: Created for backwards compatibility with test runner that set the hook function
- * into QUnit.{hook}, instead of invoking it and passing the hook function.
- * QUnit.constructor is set to the empty F() above so that we can add to it's prototype here.
- * Doing this allows us to tell if the following methods have been overwritten on the actual
- * QUnit object.
- */
-extend( QUnit.constructor.prototype, {
-
-	// Logging callbacks; all receive a single argument with the listed properties
-	// run test/logs.html for any related changes
-	begin: registerLoggingCallback( "begin" ),
-
-	// done: { failed, passed, total, runtime }
-	done: registerLoggingCallback( "done" ),
-
-	// log: { result, actual, expected, message }
-	log: registerLoggingCallback( "log" ),
-
-	// testStart: { name }
-	testStart: registerLoggingCallback( "testStart" ),
-
-	// testDone: { name, failed, passed, total }
-	testDone: registerLoggingCallback( "testDone" ),
-
-	// moduleStart: { name }
-	moduleStart: registerLoggingCallback( "moduleStart" ),
-
-	// moduleDone: { name, failed, passed, total }
-	moduleDone: registerLoggingCallback( "moduleDone" )
-});
-
-if ( typeof document === "undefined" || document.readyState === "complete" ) {
-	config.autorun = true;
-}
-
-QUnit.load = function() {
-	runLoggingCallbacks( "begin", QUnit, {} );
-
-	// Initialize the config, saving the execution queue
-	var banner, filter, i, label, len, main, ol, toolbar, userAgent, val, urlConfigCheckboxes,
-		urlConfigHtml = "",
-		oldconfig = extend( {}, config );
-
-	QUnit.init();
-	extend(config, oldconfig);
-
-	config.blocking = false;
-
-	len = config.urlConfig.length;
-
-	for ( i = 0; i < len; i++ ) {
-		val = config.urlConfig[i];
-		if ( typeof val === "string" ) {
-			val = {
-				id: val,
-				label: val,
-				tooltip: "[no tooltip available]"
-			};
-		}
-		config[ val.id ] = QUnit.urlParams[ val.id ];
-		urlConfigHtml += "<input id='qunit-urlconfig-" + val.id + "' name='" + val.id + "' type='checkbox'" + ( config[ val.id ] ? " checked='checked'" : "" ) + " title='" + val.tooltip + "'><label for='qunit-urlconfig-" + val.id + "' title='" + val.tooltip + "'>" + val.label + "</label>";
-	}
-
-	// `userAgent` initialized at top of scope
-	userAgent = id( "qunit-userAgent" );
-	if ( userAgent ) {
-		userAgent.innerHTML = navigator.userAgent;
-	}
-
-	// `banner` initialized at top of scope
-	banner = id( "qunit-header" );
-	if ( banner ) {
-		banner.innerHTML = "<a href='" + QUnit.url({ filter: undefined, module: undefined, testNumber: undefined }) + "'>" + banner.innerHTML + "</a> ";
-	}
-
-	// `toolbar` initialized at top of scope
-	toolbar = id( "qunit-testrunner-toolbar" );
-	if ( toolbar ) {
-		// `filter` initialized at top of scope
-		filter = document.createElement( "input" );
-		filter.type = "checkbox";
-		filter.id = "qunit-filter-pass";
-
-		addEvent( filter, "click", function() {
-			var tmp,
-				ol = document.getElementById( "qunit-tests" );
-
-			if ( filter.checked ) {
-				ol.className = ol.className + " hidepass";
-			} else {
-				tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " ";
-				ol.className = tmp.replace( / hidepass /, " " );
-			}
-			if ( defined.sessionStorage ) {
-				if (filter.checked) {
-					sessionStorage.setItem( "qunit-filter-passed-tests", "true" );
-				} else {
-					sessionStorage.removeItem( "qunit-filter-passed-tests" );
-				}
-			}
-		});
-
-		if ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem( "qunit-filter-passed-tests" ) ) {
-			filter.checked = true;
-			// `ol` initialized at top of scope
-			ol = document.getElementById( "qunit-tests" );
-			ol.className = ol.className + " hidepass";
-		}
-		toolbar.appendChild( filter );
-
-		// `label` initialized at top of scope
-		label = document.createElement( "label" );
-		label.setAttribute( "for", "qunit-filter-pass" );
-		label.setAttribute( "title", "Only show tests and assertons that fail. Stored in sessionStorage." );
-		label.innerHTML = "Hide passed tests";
-		toolbar.appendChild( label );
-
-		urlConfigCheckboxes = document.createElement( 'span' );
-		urlConfigCheckboxes.innerHTML = urlConfigHtml;
-		addEvent( urlConfigCheckboxes, "change", function( event ) {
-			var params = {};
-			params[ event.target.name ] = event.target.checked ? true : undefined;
-			window.location = QUnit.url( params );
-		});
-		toolbar.appendChild( urlConfigCheckboxes );
-	}
-
-	// `main` initialized at top of scope
-	main = id( "qunit-fixture" );
-	if ( main ) {
-		config.fixture = main.innerHTML;
-	}
-
-	if ( config.autostart ) {
-		QUnit.start();
-	}
-};
-
-addEvent( window, "load", QUnit.load );
-
-// `onErrorFnPrev` initialized at top of scope
-// Preserve other handlers
-onErrorFnPrev = window.onerror;
-
-// Cover uncaught exceptions
-// Returning true will surpress the default browser handler,
-// returning false will let it run.
-window.onerror = function ( error, filePath, linerNr ) {
-	var ret = false;
-	if ( onErrorFnPrev ) {
-		ret = onErrorFnPrev( error, filePath, linerNr );
-	}
-
-	// Treat return value as window.onerror itself does,
-	// Only do our handling if not surpressed.
-	if ( ret !== true ) {
-		if ( QUnit.config.current ) {
-			if ( QUnit.config.current.ignoreGlobalErrors ) {
-				return true;
-			}
-			QUnit.pushFailure( error, filePath + ":" + linerNr );
-		} else {
-			QUnit.test( "global failure", function() {
-				QUnit.pushFailure( error, filePath + ":" + linerNr );
-			});
-		}
-		return false;
-	}
-
-	return ret;
-};
-
-function done() {
-	config.autorun = true;
-
-	// Log the last module results
-	if ( config.currentModule ) {
-		runLoggingCallbacks( "moduleDone", QUnit, {
-			name: config.currentModule,
-			failed: config.moduleStats.bad,
-			passed: config.moduleStats.all - config.moduleStats.bad,
-			total: config.moduleStats.all
-		});
-	}
-
-	var i, key,
-		banner = id( "qunit-banner" ),
-		tests = id( "qunit-tests" ),
-		runtime = +new Date() - config.started,
-		passed = config.stats.all - config.stats.bad,
-		html = [
-			"Tests completed in ",
-			runtime,
-			" milliseconds.<br/>",
-			"<span class='passed'>",
-			passed,
-			"</span> tests of <span class='total'>",
-			config.stats.all,
-			"</span> passed, <span class='failed'>",
-			config.stats.bad,
-			"</span> failed."
-		].join( "" );
-
-	if ( banner ) {
-		banner.className = ( config.stats.bad ? "qunit-fail" : "qunit-pass" );
-	}
-
-	if ( tests ) {
-		id( "qunit-testresult" ).innerHTML = html;
-	}
-
-	if ( config.altertitle && typeof document !== "undefined" && document.title ) {
-		// show ✖ for good, ✔ for bad suite result in title
-		// use escape sequences in case file gets loaded with non-utf-8-charset
-		document.title = [
-			( config.stats.bad ? "\u2716" : "\u2714" ),
-			document.title.replace( /^[\u2714\u2716] /i, "" )
-		].join( " " );
-	}
-
-	// clear own sessionStorage items if all tests passed
-	if ( config.reorder && defined.sessionStorage && config.stats.bad === 0 ) {
-		// `key` & `i` initialized at top of scope
-		for ( i = 0; i < sessionStorage.length; i++ ) {
-			key = sessionStorage.key( i++ );
-			if ( key.indexOf( "qunit-test-" ) === 0 ) {
-				sessionStorage.removeItem( key );
-			}
-		}
-	}
-
-	runLoggingCallbacks( "done", QUnit, {
-		failed: config.stats.bad,
-		passed: passed,
-		total: config.stats.all,
-		runtime: runtime
-	});
-}
-
-/** @return Boolean: true if this test should be ran */
-function validTest( test ) {
-	var include,
-		filter = config.filter && config.filter.toLowerCase(),
-		module = config.module && config.module.toLowerCase(),
-		fullName = (test.module + ": " + test.testName).toLowerCase();
-
-	if ( config.testNumber ) {
-		return test.testNumber === config.testNumber;
-	}
-
-	if ( module && ( !test.module || test.module.toLowerCase() !== module ) ) {
-		return false;
-	}
-
-	if ( !filter ) {
-		return true;
-	}
-
-	include = filter.charAt( 0 ) !== "!";
-	if ( !include ) {
-		filter = filter.slice( 1 );
-	}
-
-	// If the filter matches, we need to honour include
-	if ( fullName.indexOf( filter ) !== -1 ) {
-		return include;
-	}
-
-	// Otherwise, do the opposite
-	return !include;
-}
-
-// so far supports only Firefox, Chrome and Opera (buggy), Safari (for real exceptions)
-// Later Safari and IE10 are supposed to support error.stack as well
-// See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack
-function extractStacktrace( e, offset ) {
-	offset = offset === undefined ? 3 : offset;
-
-	var stack, include, i, regex;
-
-	if ( e.stacktrace ) {
-		// Opera
-		return e.stacktrace.split( "\n" )[ offset + 3 ];
-	} else if ( e.stack ) {
-		// Firefox, Chrome
-		stack = e.stack.split( "\n" );
-		if (/^error$/i.test( stack[0] ) ) {
-			stack.shift();
-		}
-		if ( fileName ) {
-			include = [];
-			for ( i = offset; i < stack.length; i++ ) {
-				if ( stack[ i ].indexOf( fileName ) != -1 ) {
-					break;
-				}
-				include.push( stack[ i ] );
-			}
-			if ( include.length ) {
-				return include.join( "\n" );
-			}
-		}
-		return stack[ offset ];
-	} else if ( e.sourceURL ) {
-		// Safari, PhantomJS
-		// hopefully one day Safari provides actual stacktraces
-		// exclude useless self-reference for generated Error objects
-		if ( /qunit.js$/.test( e.sourceURL ) ) {
-			return;
-		}
-		// for actual exceptions, this is useful
-		return e.sourceURL + ":" + e.line;
-	}
-}
-function sourceFromStacktrace( offset ) {
-	try {
-		throw new Error();
-	} catch ( e ) {
-		return extractStacktrace( e, offset );
-	}
-}
-
-function escapeInnerText( s ) {
-	if ( !s ) {
-		return "";
-	}
-	s = s + "";
-	return s.replace( /[\&<>]/g, function( s ) {
-		switch( s ) {
-			case "&": return "&amp;";
-			case "<": return "&lt;";
-			case ">": return "&gt;";
-			default: return s;
-		}
-	});
-}
-
-function synchronize( callback, last ) {
-	config.queue.push( callback );
-
-	if ( config.autorun && !config.blocking ) {
-		process( last );
-	}
-}
-
-function process( last ) {
-	function next() {
-		process( last );
-	}
-	var start = new Date().getTime();
-	config.depth = config.depth ? config.depth + 1 : 1;
-
-	while ( config.queue.length && !config.blocking ) {
-		if ( !defined.setTimeout || config.updateRate <= 0 || ( ( new Date().getTime() - start ) < config.updateRate ) ) {
-			config.queue.shift()();
-		} else {
-			window.setTimeout( next, 13 );
-			break;
-		}
-	}
-	config.depth--;
-	if ( last && !config.blocking && !config.queue.length && config.depth === 0 ) {
-		done();
-	}
-}
-
-function saveGlobal() {
-	config.pollution = [];
-
-	if ( config.noglobals ) {
-		for ( var key in window ) {
-			// in Opera sometimes DOM element ids show up here, ignore them
-			if ( !hasOwn.call( window, key ) || /^qunit-test-output/.test( key ) ) {
-				continue;
-			}
-			config.pollution.push( key );
-		}
-	}
-}
-
-function checkPollution( name ) {
-	var newGlobals,
-		deletedGlobals,
-		old = config.pollution;
-
-	saveGlobal();
-
-	newGlobals = diff( config.pollution, old );
-	if ( newGlobals.length > 0 ) {
-		QUnit.pushFailure( "Introduced global variable(s): " + newGlobals.join(", ") );
-	}
-
-	deletedGlobals = diff( old, config.pollution );
-	if ( deletedGlobals.length > 0 ) {
-		QUnit.pushFailure( "Deleted global variable(s): " + deletedGlobals.join(", ") );
-	}
-}
-
-// returns a new Array with the elements that are in a but not in b
-function diff( a, b ) {
-	var i, j,
-		result = a.slice();
-
-	for ( i = 0; i < result.length; i++ ) {
-		for ( j = 0; j < b.length; j++ ) {
-			if ( result[i] === b[j] ) {
-				result.splice( i, 1 );
-				i--;
-				break;
-			}
-		}
-	}
-	return result;
-}
-
-function extend( a, b ) {
-	for ( var prop in b ) {
-		if ( b[ prop ] === undefined ) {
-			delete a[ prop ];
-
-		// Avoid "Member not found" error in IE8 caused by setting window.constructor
-		} else if ( prop !== "constructor" || a !== window ) {
-			a[ prop ] = b[ prop ];
-		}
-	}
-
-	return a;
-}
-
-function addEvent( elem, type, fn ) {
-	if ( elem.addEventListener ) {
-		elem.addEventListener( type, fn, false );
-	} else if ( elem.attachEvent ) {
-		elem.attachEvent( "on" + type, fn );
-	} else {
-		fn();
-	}
-}
-
-function id( name ) {
-	return !!( typeof document !== "undefined" && document && document.getElementById ) &&
-		document.getElementById( name );
-}
-
-function registerLoggingCallback( key ) {
-	return function( callback ) {
-		config[key].push( callback );
-	};
-}
-
-// Supports deprecated method of completely overwriting logging callbacks
-function runLoggingCallbacks( key, scope, args ) {
-	//debugger;
-	var i, callbacks;
-	if ( QUnit.hasOwnProperty( key ) ) {
-		QUnit[ key ].call(scope, args );
-	} else {
-		callbacks = config[ key ];
-		for ( i = 0; i < callbacks.length; i++ ) {
-			callbacks[ i ].call( scope, args );
-		}
-	}
-}
-
-// Test for equality any JavaScript type.
-// Author: Philippe Rathé <pr...@gmail.com>
-QUnit.equiv = (function() {
-
-	// Call the o related callback with the given arguments.
-	function bindCallbacks( o, callbacks, args ) {
-		var prop = QUnit.objectType( o );
-		if ( prop ) {
-			if ( QUnit.objectType( callbacks[ prop ] ) === "function" ) {
-				return callbacks[ prop ].apply( callbacks, args );
-			} else {
-				return callbacks[ prop ]; // or undefined
-			}
-		}
-	}
-
-	// the real equiv function
-	var innerEquiv,
-		// stack to decide between skip/abort functions
-		callers = [],
-		// stack to avoiding loops from circular referencing
-		parents = [],
-
-		getProto = Object.getPrototypeOf || function ( obj ) {
-			return obj.__proto__;
-		},
-		callbacks = (function () {
-
-			// for string, boolean, number and null
-			function useStrictEquality( b, a ) {
-				if ( b instanceof a.constructor || a instanceof b.constructor ) {
-					// to catch short annotaion VS 'new' annotation of a
-					// declaration
-					// e.g. var i = 1;
-					// var j = new Number(1);
-					return a == b;
-				} else {
-					return a === b;
-				}
-			}
-
-			return {
-				"string": useStrictEquality,
-				"boolean": useStrictEquality,
-				"number": useStrictEquality,
-				"null": useStrictEquality,
-				"undefined": useStrictEquality,
-
-				"nan": function( b ) {
-					return isNaN( b );
-				},
-
-				"date": function( b, a ) {
-					return QUnit.objectType( b ) === "date" && a.valueOf() === b.valueOf();
-				},
-
-				"regexp": function( b, a ) {
-					return QUnit.objectType( b ) === "regexp" &&
-						// the regex itself
-						a.source === b.source &&
-						// and its modifers
-						a.global === b.global &&
-						// (gmi) ...
-						a.ignoreCase === b.ignoreCase &&
-						a.multiline === b.multiline;
-				},
-
-				// - skip when the property is a method of an instance (OOP)
-				// - abort otherwise,
-				// initial === would have catch identical references anyway
-				"function": function() {
-					var caller = callers[callers.length - 1];
-					return caller !== Object && typeof caller !== "undefined";
-				},
-
-				"array": function( b, a ) {
-					var i, j, len, loop;
-
-					// b could be an object literal here
-					if ( QUnit.objectType( b ) !== "array" ) {
-						return false;
-					}
-
-					len = a.length;
-					if ( len !== b.length ) {
-						// safe and faster
-						return false;
-					}
-
-					// track reference to avoid circular references
-					parents.push( a );
-					for ( i = 0; i < len; i++ ) {
-						loop = false;
-						for ( j = 0; j < parents.length; j++ ) {
-							if ( parents[j] === a[i] ) {
-								loop = true;// dont rewalk array
-							}
-						}
-						if ( !loop && !innerEquiv(a[i], b[i]) ) {
-							parents.pop();
-							return false;
-						}
-					}
-					parents.pop();
-					return true;
-				},
-
-				"object": function( b, a ) {
-					var i, j, loop,
-						// Default to true
-						eq = true,
-						aProperties = [],
-						bProperties = [];
-
-					// comparing constructors is more strict than using
-					// instanceof
-					if ( a.constructor !== b.constructor ) {
-						// Allow objects with no prototype to be equivalent to
-						// objects with Object as their constructor.
-						if ( !(( getProto(a) === null && getProto(b) === Object.prototype ) ||
-							( getProto(b) === null && getProto(a) === Object.prototype ) ) ) {
-								return false;
-						}
-					}
-
-					// stack constructor before traversing properties
-					callers.push( a.constructor );
-					// track reference to avoid circular references
-					parents.push( a );
-
-					for ( i in a ) { // be strict: don't ensures hasOwnProperty
-									// and go deep
-						loop = false;
-						for ( j = 0; j < parents.length; j++ ) {
-							if ( parents[j] === a[i] ) {
-								// don't go down the same path twice
-								loop = true;
-							}
-						}
-						aProperties.push(i); // collect a's properties
-
-						if (!loop && !innerEquiv( a[i], b[i] ) ) {
-							eq = false;
-							break;
-						}
-					}
-
-					callers.pop(); // unstack, we are done
-					parents.pop();
-
-					for ( i in b ) {
-						bProperties.push( i ); // collect b's properties
-					}
-
-					// Ensures identical properties name
-					return eq && innerEquiv( aProperties.sort(), bProperties.sort() );
-				}
-			};
-		}());
-
-	innerEquiv = function() { // can take multiple arguments
-		var args = [].slice.apply( arguments );
-		if ( args.length < 2 ) {
-			return true; // end transition
-		}
-
-		return (function( a, b ) {
-			if ( a === b ) {
-				return true; // catch the most you can
-			} else if ( a === null || b === null || typeof a === "undefined" ||
-					typeof b === "undefined" ||
-					QUnit.objectType(a) !== QUnit.objectType(b) ) {
-				return false; // don't lose time with error prone cases
-			} else {
-				return bindCallbacks(a, callbacks, [ b, a ]);
-			}
-
-			// apply transition with (1..n) arguments
-		}( args[0], args[1] ) && arguments.callee.apply( this, args.splice(1, args.length - 1 )) );
-	};
-
-	return innerEquiv;
-}());
-
-/**
- * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com |
- * http://flesler.blogspot.com Licensed under BSD
- * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008
- *
- * @projectDescription Advanced and extensible data dumping for Javascript.
- * @version 1.0.0
- * @author Ariel Flesler
- * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}
- */
-QUnit.jsDump = (function() {
-	function quote( str ) {
-		return '"' + str.toString().replace( /"/g, '\\"' ) + '"';
-	}
-	function literal( o ) {
-		return o + "";
-	}
-	function join( pre, arr, post ) {
-		var s = jsDump.separator(),
-			base = jsDump.indent(),
-			inner = jsDump.indent(1);
-		if ( arr.join ) {
-			arr = arr.join( "," + s + inner );
-		}
-		if ( !arr ) {
-			return pre + post;
-		}
-		return [ pre, inner + arr, base + post ].join(s);
-	}
-	function array( arr, stack ) {
-		var i = arr.length, ret = new Array(i);
-		this.up();
-		while ( i-- ) {
-			ret[i] = this.parse( arr[i] , undefined , stack);
-		}
-		this.down();
-		return join( "[", ret, "]" );
-	}
-
-	var reName = /^function (\w+)/,
-		jsDump = {
-			parse: function( obj, type, stack ) { //type is used mostly internally, you can fix a (custom)type in advance
-				stack = stack || [ ];
-				var inStack, res,
-					parser = this.parsers[ type || this.typeOf(obj) ];
-
-				type = typeof parser;
-				inStack = inArray( obj, stack );
-
-				if ( inStack != -1 ) {
-					return "recursion(" + (inStack - stack.length) + ")";
-				}
-				//else
-				if ( type == "function" )  {
-					stack.push( obj );
-					res = parser.call( this, obj, stack );
-					stack.pop();
-					return res;
-				}
-				// else
-				return ( type == "string" ) ? parser : this.parsers.error;
-			},
-			typeOf: function( obj ) {
-				var type;
-				if ( obj === null ) {
-					type = "null";
-				} else if ( typeof obj === "undefined" ) {
-					type = "undefined";
-				} else if ( QUnit.is( "regexp", obj) ) {
-					type = "regexp";
-				} else if ( QUnit.is( "date", obj) ) {
-					type = "date";
-				} else if ( QUnit.is( "function", obj) ) {
-					type = "function";
-				} else if ( typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined" ) {
-					type = "window";
-				} else if ( obj.nodeType === 9 ) {
-					type = "document";
-				} else if ( obj.nodeType ) {
-					type = "node";
-				} else if (
-					// native arrays
-					toString.call( obj ) === "[object Array]" ||
-					// NodeList objects
-					( typeof obj.length === "number" && typeof obj.item !== "undefined" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === "undefined" ) ) )
-				) {
-					type = "array";
-				} else {
-					type = typeof obj;
-				}
-				return type;
-			},
-			separator: function() {
-				return this.multiline ?	this.HTML ? "<br />" : "\n" : this.HTML ? "&nbsp;" : " ";
-			},
-			indent: function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing
-				if ( !this.multiline ) {
-					return "";
-				}
-				var chr = this.indentChar;
-				if ( this.HTML ) {
-					chr = chr.replace( /\t/g, "   " ).replace( / /g, "&nbsp;" );
-				}
-				return new Array( this._depth_ + (extra||0) ).join(chr);
-			},
-			up: function( a ) {
-				this._depth_ += a || 1;
-			},
-			down: function( a ) {
-				this._depth_ -= a || 1;
-			},
-			setParser: function( name, parser ) {
-				this.parsers[name] = parser;
-			},
-			// The next 3 are exposed so you can use them
-			quote: quote,
-			literal: literal,
-			join: join,
-			//
-			_depth_: 1,
-			// This is the list of parsers, to modify them, use jsDump.setParser
-			parsers: {
-				window: "[Window]",
-				document: "[Document]",
-				error: "[ERROR]", //when no parser is found, shouldn"t happen
-				unknown: "[Unknown]",
-				"null": "null",
-				"undefined": "undefined",
-				"function": function( fn ) {
-					var ret = "function",
-						name = "name" in fn ? fn.name : (reName.exec(fn) || [])[1];//functions never have name in IE
-
-					if ( name ) {
-						ret += " " + name;
-					}
-					ret += "( ";
-
-					ret = [ ret, QUnit.jsDump.parse( fn, "functionArgs" ), "){" ].join( "" );
-					return join( ret, QUnit.jsDump.parse(fn,"functionCode" ), "}" );
-				},
-				array: array,
-				nodelist: array,
-				"arguments": array,
-				object: function( map, stack ) {
-					var ret = [ ], keys, key, val, i;
-					QUnit.jsDump.up();
-					if ( Object.keys ) {
-						keys = Object.keys( map );
-					} else {
-						keys = [];
-						for ( key in map ) {
-							keys.push( key );
-						}
-					}
-					keys.sort();
-					for ( i = 0; i < keys.length; i++ ) {
-						key = keys[ i ];
-						val = map[ key ];
-						ret.push( QUnit.jsDump.parse( key, "key" ) + ": " + QUnit.jsDump.parse( val, undefined, stack ) );
-					}
-					QUnit.jsDump.down();
-					return join( "{", ret, "}" );
-				},
-				node: function( node ) {
-					var a, val,
-						open = QUnit.jsDump.HTML ? "&lt;" : "<",
-						close = QUnit.jsDump.HTML ? "&gt;" : ">",
-						tag = node.nodeName.toLowerCase(),
-						ret = open + tag;
-
-					for ( a in QUnit.jsDump.DOMAttrs ) {
-						val = node[ QUnit.jsDump.DOMAttrs[a] ];
-						if ( val ) {
-							ret += " " + a + "=" + QUnit.jsDump.parse( val, "attribute" );
-						}
-					}
-					return ret + close + open + "/" + tag + close;
-				},
-				functionArgs: function( fn ) {//function calls it internally, it's the arguments part of the function
-					var args,
-						l = fn.length;
-
-					if ( !l ) {
-						return "";
-					}
-
-					args = new Array(l);
-					while ( l-- ) {
-						args[l] = String.fromCharCode(97+l);//97 is 'a'
-					}
-					return " " + args.join( ", " ) + " ";
-				},
-				key: quote, //object calls it internally, the key part of an item in a map
-				functionCode: "[code]", //function calls it internally, it's the content of the function
-				attribute: quote, //node calls it internally, it's an html attribute value
-				string: quote,
-				date: quote,
-				regexp: literal, //regex
-				number: literal,
-				"boolean": literal
-			},
-			DOMAttrs: {
-				//attributes to dump from nodes, name=>realName
-				id: "id",
-				name: "name",
-				"class": "className"
-			},
-			HTML: false,//if true, entities are escaped ( <, >, \t, space and \n )
-			indentChar: "  ",//indentation unit
-			multiline: true //if true, items in a collection, are separated by a \n, else just a space.
-		};
-
-	return jsDump;
-}());
-
-// from Sizzle.js
-function getText( elems ) {
-	var i, elem,
-		ret = "";
-
-	for ( i = 0; elems[i]; i++ ) {
-		elem = elems[i];
-
-		// Get the text from text nodes and CDATA nodes
-		if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
-			ret += elem.nodeValue;
-
-		// Traverse everything else, except comment nodes
-		} else if ( elem.nodeType !== 8 ) {
-			ret += getText( elem.childNodes );
-		}
-	}
-
-	return ret;
-}
-
-// from jquery.js
-function inArray( elem, array ) {
-	if ( array.indexOf ) {
-		return array.indexOf( elem );
-	}
-
-	for ( var i = 0, length = array.length; i < length; i++ ) {
-		if ( array[ i ] === elem ) {
-			return i;
-		}
-	}
-
-	return -1;
-}
-
-/*
- * Javascript Diff Algorithm
- *  By John Resig (http://ejohn.org/)
- *  Modified by Chu Alan "sprite"
- *
- * Released under the MIT license.
- *
- * More Info:
- *  http://ejohn.org/projects/javascript-diff-algorithm/
- *
- * Usage: QUnit.diff(expected, actual)
- *
- * QUnit.diff( "the quick brown fox jumped over", "the quick fox jumps over" ) == "the  quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over"
- */
-QUnit.diff = (function() {
-	function diff( o, n ) {
-		var i,
-			ns = {},
-			os = {};
-
-		for ( i = 0; i < n.length; i++ ) {
-			if ( ns[ n[i] ] == null ) {
-				ns[ n[i] ] = {
-					rows: [],
-					o: null
-				};
-			}
-			ns[ n[i] ].rows.push( i );
-		}
-
-		for ( i = 0; i < o.length; i++ ) {
-			if ( os[ o[i] ] == null ) {
-				os[ o[i] ] = {
-					rows: [],
-					n: null
-				};
-			}
-			os[ o[i] ].rows.push( i );
-		}
-
-		for ( i in ns ) {
-			if ( !hasOwn.call( ns, i ) ) {
-				continue;
-			}
-			if ( ns[i].rows.length == 1 && typeof os[i] != "undefined" && os[i].rows.length == 1 ) {
-				n[ ns[i].rows[0] ] = {
-					text: n[ ns[i].rows[0] ],
-					row: os[i].rows[0]
-				};
-				o[ os[i].rows[0] ] = {
-					text: o[ os[i].rows[0] ],
-					row: ns[i].rows[0]
-				};
-			}
-		}
-
-		for ( i = 0; i < n.length - 1; i++ ) {
-			if ( n[i].text != null && n[ i + 1 ].text == null && n[i].row + 1 < o.length && o[ n[i].row + 1 ].text == null &&
-						n[ i + 1 ] == o[ n[i].row + 1 ] ) {
-
-				n[ i + 1 ] = {
-					text: n[ i + 1 ],
-					row: n[i].row + 1
-				};
-				o[ n[i].row + 1 ] = {
-					text: o[ n[i].row + 1 ],
-					row: i + 1
-				};
-			}
-		}
-
-		for ( i = n.length - 1; i > 0; i-- ) {
-			if ( n[i].text != null && n[ i - 1 ].text == null && n[i].row > 0 && o[ n[i].row - 1 ].text == null &&
-						n[ i - 1 ] == o[ n[i].row - 1 ]) {
-
-				n[ i - 1 ] = {
-					text: n[ i - 1 ],
-					row: n[i].row - 1
-				};
-				o[ n[i].row - 1 ] = {
-					text: o[ n[i].row - 1 ],
-					row: i - 1
-				};
-			}
-		}
-
-		return {
-			o: o,
-			n: n
-		};
-	}
-
-	return function( o, n ) {
-		o = o.replace( /\s+$/, "" );
-		n = n.replace( /\s+$/, "" );
-
-		var i, pre,
-			str = "",
-			out = diff( o === "" ? [] : o.split(/\s+/), n === "" ? [] : n.split(/\s+/) ),
-			oSpace = o.match(/\s+/g),
-			nSpace = n.match(/\s+/g);
-
-		if ( oSpace == null ) {
-			oSpace = [ " " ];
-		}
-		else {
-			oSpace.push( " " );
-		}
-
-		if ( nSpace == null ) {
-			nSpace = [ " " ];
-		}
-		else {
-			nSpace.push( " " );
-		}
-
-		if ( out.n.length === 0 ) {
-			for ( i = 0; i < out.o.length; i++ ) {
-				str += "<del>" + out.o[i] + oSpace[i] + "</del>";
-			}
-		}
-		else {
-			if ( out.n[0].text == null ) {
-				for ( n = 0; n < out.o.length && out.o[n].text == null; n++ ) {
-					str += "<del>" + out.o[n] + oSpace[n] + "</del>";
-				}
-			}
-
-			for ( i = 0; i < out.n.length; i++ ) {
-				if (out.n[i].text == null) {
-					str += "<ins>" + out.n[i] + nSpace[i] + "</ins>";
-				}
-				else {
-					// `pre` initialized at top of scope
-					pre = "";
-
-					for ( n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++ ) {
-						pre += "<del>" + out.o[n] + oSpace[n] + "</del>";
-					}
-					str += " " + out.n[i].text + nSpace[i] + pre;
-				}
-			}
-		}
-
-		return str;
-	};
-}());
-
-// for CommonJS enviroments, export everything
-if ( typeof exports !== "undefined" ) {
-	extend(exports, QUnit);
-}
-
-// get at whatever the global object is, like window in browsers
-}( (function() {return this;}.call()) ));
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/loading.html
----------------------------------------------------------------------
diff --git a/deleted/archive/loading.html b/deleted/archive/loading.html
deleted file mode 100644
index 6d407e4..0000000
--- a/deleted/archive/loading.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-  <head>
-    <title></title>
-  </head>
-  <body>
-    aloading...
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/max/index.html
----------------------------------------------------------------------
diff --git a/deleted/archive/max/index.html b/deleted/archive/max/index.html
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/planned_outage.html
----------------------------------------------------------------------
diff --git a/deleted/archive/planned_outage.html b/deleted/archive/planned_outage.html
deleted file mode 100644
index d72dec0..0000000
--- a/deleted/archive/planned_outage.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-  <title>App Services Admin Portal</title>
-  <link rel="stylesheet" type="text/css" href="css/usergrid.css"/>
-</head>
-
-<style type="text/css">
-  #fullContainer { background-image: url('/images/grid.png'); text-align: center;}
-  #coming_soon { position: absolute; left: 50%; margin-left: -500px; top: 20%; width: 1000px; }
-  .huge { color: black; font-size: 80px; padding: 30px; }
-  .bigbig { color: black; font-size: 30px; }
-  .big { color: #575560; font-size: 20px; padding-top: 50px;}
-  .big a { color: #FF4300 }
-</style>
-
-<body>
-<div id="fullContainer">
-  <div class="navbar navbar-fixed-top">
-    <h1 class="apigee"><a href="https://apigee.com" target="_blank"><img src="images/apigee-logo.png">apigee</a></h1>
-    <h2 id="ActualPage1">App Services Admin Portal</h2>
-    <ul id="loginMenu" class="nav secondary-nav">
-      <li><a id="login-link" href="#"><i class="icon-user"></i> Login</a></li>
-      <li><a id="signup-link" href="#">Sign Up</a></li>
-      <li><a id="forgot-password-link" href="#"><i class="icon-lock"></i> Forgot Password</a></li>
-    </ul>
-  </div>
-  <div id="coming_soon">
-    <div class="huge">
-      Planned outage
-    </div>
-    <br />
-    <div class="bigbig">
-      App Services  is temporarily down for routine maintence.  We will be back soon!
-    </div>
-    <div class="big">
-      Find out more about App Services <a href="http://apigee.com/docs"><strong>here</strong></a>
-    </div>
-  </div>
-  <footer>
-    <div class="container-fluid">
-      <span id="copyright" class="pull-right">&copy; 2012 Apigee Corp. All rights reserved.</span>
-    </div>
-  </footer>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/push/index.html
----------------------------------------------------------------------
diff --git a/deleted/archive/push/index.html b/deleted/archive/push/index.html
deleted file mode 100644
index c75e036..0000000
--- a/deleted/archive/push/index.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html"
-      xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html">
-<html>
-<head>
-  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
-  <title>Apigee App Services Admin Portal </title>
-  <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
-  <script type="text/javascript">
-    localStorage.setItem('getStarted', 'yes');
-
-    var path = window.location.pathname;
-    path = path.replace(/^\/|\/$/g, '');
-    var pathArr = path.split('/');
-    var length = pathArr.length;
-    if (pathArr[length-1] === 'push') {
-      pathArr.pop(length-1);
-    }
-    path = pathArr.join("");
-    var protocol = window.location.protocol;
-    var host = window.location.host;
-    path = protocol+'//'+host+'/'+path;
-    var queryString = location.search.substring(1);
-    if (queryString) {
-      path = path + "?" + queryString;
-    }
-    window.location = path;
-
-  </script>
-</head>
-<body>
-  Loading...
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/service_down.html
----------------------------------------------------------------------
diff --git a/deleted/archive/service_down.html b/deleted/archive/service_down.html
deleted file mode 100644
index 432d1e1..0000000
--- a/deleted/archive/service_down.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-  <title>App Services Admin Portal</title>
-  <link rel="stylesheet" type="text/css" href="css/usergrid.css"/>
-</head>
-
-<style type="text/css">
-  #fullContainer { background-image: url('/images/grid.png'); text-align: center;}
-  #coming_soon { position: absolute; left: 50%; margin-left: -500px; top: 20%; width: 1000px; }
-  .huge { color: black; font-size: 80px; padding: 30px; }
-  .bigbig { color: black; font-size: 30px; }
-  .big { color: #575560; font-size: 20px; padding-top: 50px;}
-  .big a { color: #FF4300 }
-</style>
-
-<body>
-<div id="fullContainer">
-  <div class="navbar navbar-fixed-top">
-    <h1 class="apigee"><a href="https://apigee.com" target="_blank"><img src="images/apigee-logo.png">apigee</a></h1>
-    <h2 id="ActualPage1">App Services Admin Portal</h2>
-    <ul id="loginMenu" class="nav secondary-nav">
-      <li><a id="login-link" href="#"><i class="icon-user"></i> Login</a></li>
-      <li><a id="signup-link" href="#">Sign Up</a></li>
-      <li><a id="forgot-password-link" href="#"><i class="icon-lock"></i> Forgot Password</a></li>
-    </ul>
-  </div>
-  <div id="coming_soon">
-    <div class="huge">
-      Temporarily Unavailable
-    </div>
-    <br />
-    <div class="bigbig">
-      Thanks for checking us out, we'll be back real soon!
-    </div>
-    <div class="big">
-      Find out more about App Services <a href="http://apigee.com/docs"><strong>here</strong></a>
-    </div>
-  </div>
-  <footer>
-    <div class="container-fluid">
-      <span id="copyright" class="pull-right">&copy; 2012 Apigee Corp. All rights reserved.</span>
-    </div>
-  </footer>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.activities.table_rows.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.activities.table_rows.html b/deleted/archive/templates/apigee.ui.activities.table_rows.html
deleted file mode 100644
index 36afbdf..0000000
--- a/deleted/archive/templates/apigee.ui.activities.table_rows.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<tr class="zebraRows">
-  <td>
-    <a href="#" class="toggleableSP">${dateToString(created)}</a>
-    <a href="#" class="toggleableSP hide">${created}</a>
-  </td>
-  <td class="gravatar20">
-    <img src="${actor.picture}"/>
-  </td>
-  <td>
-    ${actor.displayName}
-  </td>
-  <td>{{if content}}${content}{{else}} {{/if}}</td>
-  <td>${verb}</td>
-</tr>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.admins.table_rows.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.admins.table_rows.html b/deleted/archive/templates/apigee.ui.admins.table_rows.html
deleted file mode 100644
index 3b34e75..0000000
--- a/deleted/archive/templates/apigee.ui.admins.table_rows.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<tr class="zebraRows">
-  <td class="gravatar20">
-    <img src="${gravatar}"/>
-  </td>
-  <td>
-    <a href="mailto:${email}">${name} (${email})</a>
-  </td>
-</tr>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.applications.table_rows.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.applications.table_rows.html b/deleted/archive/templates/apigee.ui.applications.table_rows.html
deleted file mode 100644
index 88be0be..0000000
--- a/deleted/archive/templates/apigee.ui.applications.table_rows.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<tr class="zebraRows">
-  <td><a>${name}</a></td>
-  <td><span class="monospace">${uuid}</span></td>
-</tr>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.collection.table_rows.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.collection.table_rows.html b/deleted/archive/templates/apigee.ui.collection.table_rows.html
deleted file mode 100644
index 31f295f..0000000
--- a/deleted/archive/templates/apigee.ui.collection.table_rows.html
+++ /dev/null
@@ -1,67 +0,0 @@
-
-<tr class="zebraRows users-row">
-  <td class="checkboxo">
-    <input class="listItem" type="checkbox" name="${r.metadata.path}" value="${r.uuid}" />
-  </td>
-  {{if r.type == 'user'}}
-  <td class="gravatar50-td">
-    <img src="${r.picture}" class="gravatar50"/>
-  </td>
-  <td class="details">
-      <a onclick="Usergrid.console.getCollection('GET', '${path}/'+'${r.uuid}'); $('#data-explorer').show(); return false;" class="view-details">${r.username}</a>
-  </td>
-  <td class="details">
-     ${r.name}
-  </td>
-  {{else r.type == 'group'}}
-  <td class="details">
-     <a href="" onclick="Usergrid.console.getCollection('GET', '${path}/'+'${r.uuid}'); $('#data-explorer').show(); return false;" class="view-details">${r.path}</a>
-  </td>
-  <td class="details">
-     ${r.title}
-  </td>
-  {{else r.type == 'role'}}
-  <td class="details">
-    <a href="" onclick="Usergrid.console.getCollection('GET', '${path}/'+'${r.uuid}'); $('#data-explorer').show(); return false;" class="view-details">${r.title}</a>
-  </td>
-  <td class="details">
-     ${r.name}
-  </td>
-  {{else}}
-  <td class="details">
-    <a href="" onclick="Usergrid.console.getCollection('GET', '/${path}/'+'${r.uuid}'); $('#data-explorer').show(); return false;" class="view-details">${r.name}</a>
-  </td>
-  {{/if}}
-
-  <td class="details">
-    ${r.uuid}
-  </td>
-  <td class="view-details">
-    <a href="" onclick="$('#query-row-${r.uuid}').toggle(); $('#data-explorer').show(); return false;" class="view-details">Details</a>
-  </td>
-</tr>
-
-<tr id="query-row-${r.uuid}" style="display:none">
-  {{if r.type == 'user'}}
-  <td colspan="5">
-  {{else r.type == 'group'}}
-  <td colspan="4">
-  {{else r.type == 'role'}}
-  <td colspan="4">
-  {{else}}
-  <td colspan="3">
-  {{/if}}
-    <div>
-        <div style="padding-bottom: 10px;">
-          <button type="button" class="btn btn-small query-button active" id="button-query-show-row-JSON" onclick="Usergrid.console.activateQueryRowJSONButton(); $('#query-row-JSON-${r.uuid}').show(); $('#query-row-content-${r.uuid}').hide(); return false;">JSON</button>
-          <button type="button" class="btn btn-small query-button disabled" id="button-query-show-row-content" onclick="Usergrid.console.activateQueryRowContentButton();$('#query-row-content-${r.uuid}').show(); $('#query-row-JSON-${r.uuid}').hide(); return false;">Content</button>
-        </div>
-        <div id="query-row-JSON-${r.uuid}">
-          <pre>${json}</pre>
-        </div>
-         <div id="query-row-content-${r.uuid}" style="display:none">
-          {{html content}}
-        </div>
-    </div>
-  </td>
-</tr>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.collections.query.indexes.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.collections.query.indexes.html b/deleted/archive/templates/apigee.ui.collections.query.indexes.html
deleted file mode 100644
index ed33990..0000000
--- a/deleted/archive/templates/apigee.ui.collections.query.indexes.html
+++ /dev/null
@@ -1,5 +0,0 @@
-{{each data}}
-<li>
-  <a href="#" onclick="Usergrid.console.appendToCollectionsQuery('${$value}'); return false;">${$value}</a>
-</li>
-{{/each}}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.collections.table_rows.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.collections.table_rows.html b/deleted/archive/templates/apigee.ui.collections.table_rows.html
deleted file mode 100644
index b36b6b5..0000000
--- a/deleted/archive/templates/apigee.ui.collections.table_rows.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<tr class="zebraRows">
-
-  <td class="collection-column">
-    <a href="#" onclick="Usergrid.console.pageOpenQueryExplorer('/${name}'); return false;">/${name}</a>
-  </td>
-  <td>
-    (${count} entities)
-  </td>
-</tr>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.collections.user.header.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.collections.user.header.html b/deleted/archive/templates/apigee.ui.collections.user.header.html
deleted file mode 100644
index 11d0f29..0000000
--- a/deleted/archive/templates/apigee.ui.collections.user.header.html
+++ /dev/null
@@ -1,21 +0,0 @@
-
-<td class="checkboxo">
-  <input class="queryResultItem" type="checkbox" name="entity" value="${uuid}" />
-</td>
-<td class="gravatar50-td">
-  <img class="gravatar50" src="{{if picture}}${picture}{{else}}images/user-photo.png{{/if}}" />
-</td>
-<td class="details">
-  {{if path}}
-  <a href="" onclick="Usergrid.console.pageOpenQueryExplorer('${path}'); return false;">
-    ${username}
-  </a>
-  {{/if}}
-</td>
-<td class="details">
-  ${name}
-</td>
-<td class="view-details">
-  <button class="query-result-header-toggle-json btn">JSON</button>
-</td>
-

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.curl.detail.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.curl.detail.html b/deleted/archive/templates/apigee.ui.curl.detail.html
deleted file mode 100644
index 91d0298..0000000
--- a/deleted/archive/templates/apigee.ui.curl.detail.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<div class="curl-info">
-  Want to get the data above programmatically? You can retrieve it with <a style="color: #007CDC;" href="http://curl.haxx.se/" target="_blank">curl</a>. Copy-paste the command in a terminal window and you should see the same data come back as JSON.
-</div>
-<div class="input-append2">
-  <div id="${sectionName}-curl" class="alert alert-info curl-data">
-    ${curlData}
-  </div>
-</div>
-<div id="${sectionName}-curl-token" class="curl-token">
-  Not sure what "Authorization: Bearer” is, or how to get a token? We have a  <a style="color: #007CDC;" href="http://apigee.com/docs/usergrid/content/authentication-and-access-usergrid">documentation article about that</a>
-</div>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.feed.table_rows.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.feed.table_rows.html b/deleted/archive/templates/apigee.ui.feed.table_rows.html
deleted file mode 100644
index 4946514..0000000
--- a/deleted/archive/templates/apigee.ui.feed.table_rows.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<tr class="zebraRows">
-  <td>
-    <a href="#" class="toggleableSP">${dateToString(created)}</a>
-    <a href="#" class="toggleableSP hide">${created}</a>
-  </td>
-  <td class="gravatar20">
-    <img src="${actor.gravatar}"/>
-  </td>
-  <td>
-    <a href="mailto:${actor.email}"> ${actor.displayName} (${actor.email})</a>
-  </td>
-  <td>
-    ${title}
-  </td>
-</tr>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.groups.table_rows.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.groups.table_rows.html b/deleted/archive/templates/apigee.ui.groups.table_rows.html
deleted file mode 100644
index 05ac965..0000000
--- a/deleted/archive/templates/apigee.ui.groups.table_rows.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<tr class="zebraRows groups-row">
-  <td class="checkboxo">
-    <input class="listItem" type="checkbox" value="${uuid}" />
-  </td>
-  <td class="details">
-      <a href="" class="list-link" onclick="Usergrid.console.pageOpenGroupProfile('${path}'); return false;">${path}</a>
-  </td>
-  <td class="details">
-     <a href="" class="list-link" onclick="Usergrid.console.pageOpenGroupProfile('${path}'); return false;">${title}</a>
-  </td>
-  <td class="view-details">
-    <a href="" onclick="Usergrid.console.pageOpenGroupProfile('${path}'); return false;" class="view-details">View Details</a>
-  </td>
-</tr>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.panels.group.activities.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.panels.group.activities.html b/deleted/archive/templates/apigee.ui.panels.group.activities.html
deleted file mode 100644
index 098e270..0000000
--- a/deleted/archive/templates/apigee.ui.panels.group.activities.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<div class="console-section">
-  <div class="well thingy">
-    {{if path}}<span class="title" href="" onclick="Usergrid.console.pageOpenQueryExplorer('${path}'); return false;">{{/if}}
-      ${name}
-    {{if path}}</span>{{/if}}
-  </div>
-  {{if activities}}
-  {{each activities}}
-  <table>
-    <tr>
-      <td>
-        ${$index + 1}: ${$value.actor.displayName} (${$value.actor.email})
-      </td>
-      <td>
-        ${$value.content}
-      </td>
-      <td>
-        ${$value.verb}:
-      </td>
-    </tr>
-  </table>
-  {{/each}}
-  {{else}}
-  <div class="panel-section-message">No Group Activities</div>
-  {{/if}}
-</div>
-<div id="group-panel-activities-curl-container" class="curl-container">
-</div>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.panels.group.details.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.panels.group.details.html b/deleted/archive/templates/apigee.ui.panels.group.details.html
deleted file mode 100644
index aa62ae6..0000000
--- a/deleted/archive/templates/apigee.ui.panels.group.details.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<div class="alert messages" style="display: none;"></div>
-<div id="group-messages" class="alert" style="display: none;"></div>
-<div class="console-section">
-  <div class="well thingy">
-    {{if path}}<span class="title" href="" onclick="Usergrid.console.pageOpenQueryExplorer('${path}'); return false;">{{/if}}
-      ${name}
-    {{if path}}</span>{{/if}}
-    <div class="bar">
-      <a class="btn btn-primary" onclick="Usergrid.console.saveGroupProfile('${uuid}'); return false;"> Save Group </a>
-    </div>
-  </div>
-  <h3>Edit</h3>
-  <div class="query-result-form"></div>
-  <div class="content-container">
-    <h3>Contents</h3>
-    <table class="table">
-      <tbody>
-        <tr class="zebraRows">
-          <td>UUID</td>
-          <td>${entity.uuid}</td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Type</td>
-          <td>${entity.type}</td>
-        </tr>
-        <tr class="zebraRows">
-          <td>
-            Created
-          </td>
-          <td>
-            <a href="#" class="toggleableSP">${dateToString(entity.created)}</a>
-            <a href="#" class="toggleableSP hide">${entity.created}</a>
-          </td>
-        </tr>
-        <tr class="zebraRows">
-          <td>
-            Modified
-          </td>
-          <td>
-            <a href="#" class="toggleableSP">${dateToString(entity.modified)}</a>
-            <a href="#" class="toggleableSP hide">${entity.modified}</a>
-          </td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Title</td>
-          <td>${entity.title}</td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Path</td>
-          <td>${name}</td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Sets</td>
-          <td>
-            <table class="table table-striped">
-              <tbody>
-                {{each metadata.sets}}
-                <tr>
-                  <td>
-                    ${$index}
-                  </td>
-                  <td>
-                    <a href="#" onclick="Usergrid.console.pageOpenQueryExplorer('${$value}'); return false;">${$value}</a>
-                  </td>
-                </tr>
-                {{/each}}
-              <tbody>
-            </table>
-          </td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Collections</td>
-          <td>
-            <table class="table table-striped">
-              <tbody>
-                {{each metadata.collections}}
-                <tr>
-                  <td>
-                    ${$index}
-                  </td>
-                  <td>
-                    <a href="#" onclick="Usergrid.console.pageOpenQueryExplorer('${$value}'); return false;">${$value}</a>
-                  </td>
-                </tr>
-                {{/each}}
-              <tbody>
-            </table>
-          </td>
-        </tr>
-      </tbody>
-    </table>
-    <h3>JSON</h3>
-    <pre class="query-result-json-inner">${JSON.stringify(entity, null, "  ")}</pre>
-  </div>
-</div>
-<div id="group-panel-details-curl-container" class="curl-container">
-</div>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.panels.group.memberships.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.panels.group.memberships.html b/deleted/archive/templates/apigee.ui.panels.group.memberships.html
deleted file mode 100644
index 5790c1e..0000000
--- a/deleted/archive/templates/apigee.ui.panels.group.memberships.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<div class="console-section">
-  <div class="well thingy">
-    {{if path}}<span class="title" href="" onclick="Usergrid.console.pageOpenQueryExplorer('${path}'); return false;">{{/if}}
-      ${name}
-    {{if path}}</span>{{/if}}
-
-    <div class="bar">
-      <a class="btn " data-toggle="modal" onclick="Usergrid.console.removeGroupFromUser('${uuid}'); return false;">Remove</a>
-      <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-add-user-to-group">Add user</a>
-      <input type="hidden" value="${uuid}" id="search-user-groupid" name="search-user-groupid">
-    </div>
-  </div>
-
-  {{if memberships}}
-  <table class="table" style="margin-top: 30px">
-    <tbody>
-      <tr class="zebraRows users-row">
-        <td class="checkboxo">
-          <input type="checkbox" onclick="Usergrid.console.selectAllEntities(this);" />
-        </td>
-        <td class="user-details bold-header">
-          User Name
-        </td>
-      </tr>
-      {{each memberships}}
-      <tr class="zebraRows users-row">
-        <td class="checkboxo"><input type="checkbox" name="${name}" class="listItem" value="${$value.uuid}" /></td>
-        <td class="details">
-          <a href="#" onclick="Usergrid.console.pageOpenUserProfile('${username}'); return false;">${username}:${name}</a>
-        </td>
-      </tr>
-      {{/each}}
-    </tbody>
-  </table>
-  {{else}}
-  <div class="panel-section-message">No Group Memberships</div>
-  {{/if}}
-</div>
-<div id="group-panel-memberships-curl-container" class="curl-container">
-</div>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.panels.group.permissions.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.panels.group.permissions.html b/deleted/archive/templates/apigee.ui.panels.group.permissions.html
deleted file mode 100644
index 12c2f21..0000000
--- a/deleted/archive/templates/apigee.ui.panels.group.permissions.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<div class="console-section">
-  <div class="well thingy">
-    <span class="title">${name}</span>
-    <div class="bar">
-      <a class="btn" data-toggle="modal" href="#" onclick="Usergrid.console.deleteRolesFromGroup(''); return false;"> Remove </a>
-      <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-add-role-to-group"> Add role </a>
-    </div>
-  </div>
-  <div class="console-section-contents">
-    <div class="user-panel-section">
-      <div class="user-roles-title">Roles </div>
-      {{if roles}}
-      {{if roles.length > 0}}
-      <table class="table table-bordered groups-permissions-response-table">
-        <tbody>
-          <tr class="zebraRows users-row">
-            <td class="checkboxo">
-              <input type="checkbox" onclick="Usergrid.console.selectAllEntities(this);" />
-            </td>
-            <td class="user-details bold-header">
-              Group Name
-            </td>
-          </tr>
-          {{each roles}}
-          <tr class="zebraRows users-row">
-            <td class="checkboxo"><input type="checkbox" name="${name}" class="listItem" value="${name}" /></td>
-            <td class="details">
-              {{if path}}<a href="" onclick="Usergrid.console.pageOpenRole('${name}'); return false;">{{/if}}
-                ${title}
-                (${name})
-              {{if path}}</a>{{/if}}
-            </td>
-          </tr>
-          {{/each}}
-        </tbody>
-      </table>
-      {{else}}
-      <div class="panel-section-message">No Roles</div>
-      {{/if}}
-      {{/if}}
-      <div id="group-panel-roles-curl-container" class="curl-container">
-    </div>
-      <br/>
-      <div class="user-roles-title">Permissions </div>
-      <h4>Add Permission Rule</h4>
-      <form id="role-permissions-form" action="" onsubmit="Usergrid.console.addGroupPermission('${name}'); return false;" class="well form-inline" autocomplete="off">
-        Path: <input id="group-permission-path-entry-input" type="text" name="path" value="/" />
-        <label class="checkbox">
-          <input id="group-permission-op-get-checkbox" type="checkbox" name="get" value="get"/>
-          get </label>
-        <label class="checkbox">
-          <input id="group-permission-op-post-checkbox" type="checkbox" name="post" value="post"/>
-          post </label>
-        <label class="checkbox">
-          <input id="group-permission-op-put-checkbox" type="checkbox" name="put" value="put"/>
-          put </label>
-        <label class="checkbox">
-          <input id="group-permission-op-delete-checkbox" type="checkbox" name="delete" value="delete"/>
-          delete </label>
-        <button type="submit" class="btn btn-primary"><i class="icon-plus-sign icon-white"></i> Add</button >
-      </form>
-      <br/>
-      <h4>Permission Rules</h4>
-      {{if permissions}}
-      <table id="role-permissions-table" data-permission="${$index}" class="table table-striped table-bordered table-condensed">
-        <thead>
-          <tr>
-            <th>Path</th>
-            <th class="role-permission-op">Get</th>
-            <th class="role-permission-op">Post</th>
-            <th class="role-permission-op">Put</th>
-            <th class="role-permission-op">Delete</th>
-            <th></th>
-          </tr>
-        </thead>
-        <tbody>
-          {{each permissions}}
-          <tr>
-            <td class="role-permission-path">${$value.path}</td>
-            <td class="role-permission-op">{{if $value.ops.get}}<i class="icon-ok"></i>{{/if}}</td>
-            <td class="role-permission-op">{{if $value.ops.post}}<i class="icon-ok"></i>{{/if}}</td>
-            <td class="role-permission-op">{{if $value.ops.put}}<i class="icon-ok"></i>{{/if}}</td>
-            <td class="role-permission-op">{{if $value.ops.delete}}<i class="icon-ok"></i>{{/if}}</td>
-            <td class="role-permission-delete">
-              <a onclick="Usergrid.console.deleteGroupPermission('${name}', '${$value.perm}'); return false;" href="#" class="btn btn-danger"><i class="icon-trash icon-white"></i> Remove</a>
-            </td>
-          </tr>
-          {{/each}}
-        </tbody>
-      </table>
-      {{else}}
-      <div class="alert">No Permissions</div>
-      {{/if}}
-      <div id="group-panel-permissions-curl-container" class="curl-container">
-    </div>
-    </div>
-  </div>
-</div>
-<input type="hidden" name="role-form-groupname" id="role-form-groupname" value="${name}"/>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.panels.notifications.configure.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.panels.notifications.configure.html b/deleted/archive/templates/apigee.ui.panels.notifications.configure.html
deleted file mode 100644
index ae2b840..0000000
--- a/deleted/archive/templates/apigee.ui.panels.notifications.configure.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<tr class="zebraRows users-row">
-  <td class="checkboxo">
-    <input class="listItem" type="checkbox" name="${metadata.path}" value="${uuid}"/>
-  </td>
-  <td class="details">
-    ${provider}
-  </td>
-  <td class="details">
-    ${name}
-  </td>
-  <td class="details">
-    ${created_date}
-  </td>
-</tr>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.panels.role.permissions.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.panels.role.permissions.html b/deleted/archive/templates/apigee.ui.panels.role.permissions.html
deleted file mode 100644
index 69abcdd..0000000
--- a/deleted/archive/templates/apigee.ui.panels.role.permissions.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<h4>Inactivity</h4>
-<form id="role-inactivity-form" class="well form-inline" action="" onsubmit="Usergrid.console.editRoleInactivity(); return false;">
-  Seconds: <input type="text" name="role-inactivity" id="role-inactivity-input" /> &nbsp; Integer only. 0 (zero) means no expiration.
-  <button type="submit" id="role-inactivity-submit" class="btn btn-primary">Set</button>
-</form>
-<div class="alert alert-error" id="inactivity-integer-message" style="display: none;">
-  Only integers greater than 0 are accepted.
-</div>
-<br />
-<h4>Add Permission Rule</h4>
-<form id="role-permissions-form" action="" onsubmit="Usergrid.console.addRolePermission('${role}'); return false;" class="well form-inline" autocomplete="off">
-  Path: <input id="role-permission-path-entry-input" type="text" name="path" value="/" />
-  <label class="checkbox">
-    <input id="role-permission-op-get-checkbox" type="checkbox" name="get" value="get"/>
-    get </label>
-  <label class="checkbox">
-    <input id="role-permission-op-post-checkbox" type="checkbox" name="post" value="post"/>
-    post </label>
-  <label class="checkbox">
-    <input id="role-permission-op-put-checkbox" type="checkbox" name="put" value="put"/>
-    put </label>
-  <label class="checkbox">
-    <input id="role-permission-op-delete-checkbox" type="checkbox" name="delete" value="delete"/>
-    delete </label>
-  <button type="submit" class="btn btn-primary"><i class="icon-plus-sign icon-white"></i> Add</button>
-</form>
-<br/>
-<h4>Permission Rules</h4>
-{{if permissions}}
-<table id="role-permissions-table" data-permission="${$index}" class="table table-striped table-bordered table-condensed">
-  <thead>
-    <tr>
-      <th>Path</th>
-      <th class="role-permission-op">Get</th>
-      <th class="role-permission-op">Post</th>
-      <th class="role-permission-op">Put</th>
-      <th class="role-permission-op">Delete</th>
-      <th></th>
-    </tr>
-  </thead>
-  <tbody>
-    {{each permissions}}
-    <tr>
-      <td class="role-permission-path">${$value.path}</td>
-      <td class="role-permission-op">{{if $value.ops.get}}<i class="icon-ok"></i>{{/if}}</td>
-      <td class="role-permission-op">{{if $value.ops.post}}<i class="icon-ok"></i>{{/if}}</td>
-      <td class="role-permission-op">{{if $value.ops.put}}<i class="icon-ok"></i>{{/if}}</td>
-      <td class="role-permission-op">{{if $value.ops.delete}}<i class="icon-ok"></i>{{/if}}</td>
-      <td class="role-permission-delete">
-        <a onclick="Usergrid.console.deleteRolePermission('${role}', '${$value.perm}'); return false;" href="#" class="btn btn-danger"><i class="icon-trash icon-white"></i> Remove</a>
-      </td>
-    </tr>
-    {{/each}}
-  </tbody>
-</table>
-{{else}}
-<div class="alert">No Permissions</div>
-{{/if}}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.panels.role.users.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.panels.role.users.html b/deleted/archive/templates/apigee.ui.panels.role.users.html
deleted file mode 100644
index 8c21416..0000000
--- a/deleted/archive/templates/apigee.ui.panels.role.users.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<div class="well thingy">
-  <span id="role-section-title" class="title">Users</span>
-  <div class="bar">
-    <a class="btn" data-toggle="modal" href="#" onclick="Usergrid.console.deleteRoleFromUser('${data.roleName}', '${data.roleTitle}'); return false;"> Remove </a>
-    <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-add-role-to-user"> Add </a>
-  </div>
-</div>
-{{if data.users.length > 0}}
-<table class="table" style="margin-top: 30px;">
-  <tbody>
-    <tr class="zebraRows users-row">
-      <td class="checkboxo">
-        <input type="checkbox" onclick="Usergrid.console.selectAllEntities(this);" />
-      </td>
-      <td class="user-details bold-header"></td>
-      <td class="user-details bold-header">
-        Username
-      </td>
-      <td class="user-details bold-header">
-        Name
-      </td>
-    </tr>
-    {{each data.users}}
-    <tr class="zebraRows users-row">
-      <td class="checkboxo"><input type="checkbox" name="${name}" class="listItem" value="${uuid}" /></td>
-      <td class="gravatar50-td"><img src="{{if picture}}${picture}{{else}}http://${window.location.host + window.location.pathname}images/user-photo.png{{/if}}" class="gravatar50" /></td>
-      <td class="details">
-        <a href="" onclick="Usergrid.console.pageOpenUserProfile('${username}'); return false;">${username}</a>
-      </td>
-      <td class="details">{{if name}}${name}{{/if}}</td>
-    </tr>
-    {{/each}}
-  </tbody>
-</table>
-{{else}}
-<div class="panel-section-message">No Users have this Role</div>
-{{/if}}
-

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.panels.user.activities.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.panels.user.activities.html b/deleted/archive/templates/apigee.ui.panels.user.activities.html
deleted file mode 100644
index cc309aa..0000000
--- a/deleted/archive/templates/apigee.ui.panels.user.activities.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<div class="console-section">
-  <div class="well thingy">
-    {{if picture}}<img src="${picture}" class="user-profile-picture" />{{/if}}
-    <div class="title">
-      {{if path}}<a href="" onclick="Usergrid.console.pageOpenQueryExplorer('${path}'); return false;">{{/if}}
-        ${name}
-        {{if path}}</a>{{/if}}
-    </div>
-  </div>
-  {{if activities}}
-  <table class="activities-table table">
-    {{each activities}}
-    <tr class="">
-      <td>
-        <a href="#" class="toggleableSP">${dateToString($value.created)}</a>
-        <a href="#" class="toggleableSP hide">${$value.created}</a>
-      </td>
-      <td>
-        ${$value.content}
-      </td>
-      <td>
-        {{if $value.actor.username}}
-        <a href="#"
-           onclick="Usergrid.console.pageOpenUserProfile('${$value.actor.username}'); return false;">${$value.actor.displayName} {{if $value.actor.email}} (${$value.actor.email}) {{/if}}</a>
-        {{else}}
-        ${$value.actor.displayName} {{if $value.actor.email}} (${$value.actor.email}) {{/if}}
-        {{/if}}
-      </td>
-      <td>
-        ${$value.verb}
-      </td>
-    </tr>
-    {{/each}}
-  </table>
-  {{else}}
-  <div class="panel-section-message">No User Activities</div>
-  {{/if}}
-</div>
-<div id="user-panel-activities-curl-container" class="curl-container">
-</div>


[16/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/app/usergrid.appSDK.orig.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/app/usergrid.appSDK.orig.js b/deleted/dist-cov/usergrid-portal/archive/js/app/usergrid.appSDK.orig.js
deleted file mode 100644
index 4e80c64..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/app/usergrid.appSDK.orig.js
+++ /dev/null
@@ -1,2070 +0,0 @@
-/**
- *  App SDK is a collection of classes designed to make working with
- *  the Appigee App Services API as easy as possible.
- *  Learn more at http://apigee.com/docs
- *
- *   Copyright 2012 Apigee Corporation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-//define the console.log for IE
-window.console = window.console || {};
-window.console.log = window.console.log || function() {};
-
-//Usergrid namespace encapsulates this SDK
-window.Usergrid = window.Usergrid || {};
-Usergrid = Usergrid || {};
-Usergrid.SDK_VERSION = '0.9.9';
-
-/**
- *  Usergrid.Query is a class for holding all query information and paging state
- *
- *  @class Query
- *  @author Rod Simpson (rod@apigee.com)
- */
-
-(function () {
-
-  /**
-   *  @constructor
-   *  @param {string} method
-   *  @param {string} path
-   *  @param {object} jsonObj
-   *  @param {object} paramsObj
-   *  @param {function} successCallback
-   *  @param {function} failureCallback
-   */
-  Usergrid.Query = function(method, resource, jsonObj, paramsObj, successCallback, failureCallback) {
-    //query vars
-    this._method = method;
-    this._resource = resource;
-    this._jsonObj = jsonObj;
-    this._paramsObj = paramsObj;
-    this._successCallback = successCallback;
-    this._failureCallback = failureCallback;
-
-    //curl command - will be populated by runQuery function
-    this._curl = '';
-    this._token = false;
-
-    //paging vars
-    this._cursor = null;
-    this._next = null;
-    this._previous = [];
-    this._start = 0;
-    this._end = 0;
-  };
-
-  Usergrid.Query.prototype = {
-     setQueryStartTime: function() {
-       this._start = new Date().getTime();
-     },
-
-     setQueryEndTime: function() {
-       this._end = new Date().getTime();
-     },
-
-     getQueryTotalTime: function() {
-       var seconds = 0;
-       var time = this._end - this._start;
-       try {
-          seconds = ((time/10) / 60).toFixed(2);
-       } catch(e){ return 0; }
-       return this.getMethod() + " " + this.getResource() + " - " + seconds + " seconds";
-     },
-    /**
-     *  A method to set all settable parameters of the Query at one time
-     *
-     *  @public
-     *  @method validateUsername
-     *  @param {string} method
-     *  @param {string} path
-     *  @param {object} jsonObj
-     *  @param {object} paramsObj
-     *  @param {function} successCallback
-     *  @param {function} failureCallback
-     *  @return none
-     */
-    setAllQueryParams: function(method, resource, jsonObj, paramsObj, successCallback, failureCallback) {
-      this._method = method;
-      this._resource = resource;
-      this._jsonObj = jsonObj;
-      this._paramsObj = paramsObj;
-      this._successCallback = successCallback;
-      this._failureCallback = failureCallback;
-    },
-
-    /**
-     *  A method to reset all the parameters in one call
-     *
-     *  @public
-     *  @return none
-     */
-    clearAll: function() {
-      this._method = null;
-      this._resource = null;
-      this._jsonObj = {};
-      this._paramsObj = {};
-      this._successCallback = null;
-      this._failureCallback = null;
-    },
-    /**
-    * Returns the method
-    *
-    * @public
-    * @method getMethod
-    * @return {string} Returns method
-    */
-    getMethod: function() {
-      return this._method;
-    },
-
-    /**
-    * sets the method (POST, PUT, DELETE, GET)
-    *
-    * @public
-    * @method setMethod
-    * @return none
-    */
-    setMethod: function(method) {
-      this._method = method;
-    },
-
-    /**
-    * Returns the resource
-    *
-    * @public
-    * @method getResource
-    * @return {string} the resource
-    */
-    getResource: function() {
-      return this._resource;
-    },
-
-    /**
-    * sets the resource
-    *
-    * @public
-    * @method setResource
-    * @return none
-    */
-    setResource: function(resource) {
-      this._resource = resource;
-    },
-
-    /**
-    * Returns the json Object
-    *
-    * @public
-    * @method getJsonObj
-    * @return {object} Returns the json Object
-    */
-    getJsonObj: function() {
-      return this._jsonObj;
-    },
-
-    /**
-    * sets the json object
-    *
-    * @public
-    * @method setJsonObj
-    * @return none
-    */
-    setJsonObj: function(jsonObj) {
-      this._jsonObj = jsonObj;
-    },
-    /**
-    * Returns the Query Parameters object
-    *
-    * @public
-    * @method getQueryParams
-    * @return {object} Returns Query Parameters object
-    */
-    getQueryParams: function() {
-      return this._paramsObj;
-    },
-
-    /**
-    * sets the query parameter object
-    *
-    * @public
-    * @method setQueryParams
-    * @return none
-    */
-    setQueryParams: function(paramsObj) {
-      this._paramsObj = paramsObj;
-    },
-
-    /**
-    * Returns the success callback function
-    *
-    * @public
-    * @method getSuccessCallback
-    * @return {function} Returns the successCallback
-    */
-    getSuccessCallback: function() {
-      return this._successCallback;
-    },
-
-    /**
-    * sets the success callback function
-    *
-    * @public
-    * @method setSuccessCallback
-    * @return none
-    */
-    setSuccessCallback: function(successCallback) {
-      this._successCallback = successCallback;
-    },
-
-    /**
-    * Calls the success callback function
-    *
-    * @public
-    * @method callSuccessCallback
-    * @return {boolean} Returns true or false based on if there was a callback to call
-    */
-    callSuccessCallback: function(response) {
-      if (this._successCallback && typeof(this._successCallback ) === "function") {
-        this._successCallback(response);
-        return true;
-      } else {
-        return false;
-      }
-    },
-
-    /**
-    * Returns the failure callback function
-    *
-    * @public
-    * @method getFailureCallback
-    * @return {function} Returns the failureCallback
-    */
-    getFailureCallback: function() {
-      return this._failureCallback;
-    },
-
-    /**
-    * sets the failure callback function
-    *
-    * @public
-    * @method setFailureCallback
-    * @return none
-    */
-    setFailureCallback: function(failureCallback) {
-      this._failureCallback = failureCallback;
-    },
-
-    /**
-    * Calls the failure callback function
-    *
-    * @public
-    * @method callFailureCallback
-    * @return {boolean} Returns true or false based on if there was a callback to call
-    */
-    callFailureCallback: function(response) {
-      if (this._failureCallback && typeof(this._failureCallback) === "function") {
-        this._failureCallback(response);
-        return true;
-      } else {
-        return false;
-      }
-    },
-
-    /**
-    * Returns the curl call
-    *
-    * @public
-    * @method getCurl
-    * @return {function} Returns the curl call
-    */
-    getCurl: function() {
-      return this._curl;
-    },
-
-    /**
-    * sets the curl call
-    *
-    * @public
-    * @method setCurl
-    * @return none
-    */
-    setCurl: function(curl) {
-      this._curl = curl;
-    },
-
-    /**
-    * Returns the Token
-    *
-    * @public
-    * @method getToken
-    * @return {function} Returns the Token
-    */
-    getToken: function() {
-      return this._token;
-    },
-
-    /**
-    * Method to set
-    *
-    * @public
-    * @method setToken
-    * @return none
-    */
-    setToken: function(token) {
-      this._token = token;
-    },
-
-    /**
-    * Resets the paging pointer (back to original page)
-    *
-    * @public
-    * @method resetPaging
-    * @return none
-    */
-    resetPaging: function() {
-      this._previous = [];
-      this._next = null;
-      this._cursor = null;
-    },
-
-    /**
-    * Method to determine if there is a previous page of data
-    *
-    * @public
-    * @method hasPrevious
-    * @return {boolean} true or false based on if there is a previous page
-    */
-    hasPrevious: function() {
-      return (this._previous.length > 0);
-    },
-
-    /**
-    * Method to set the paging object to get the previous page of data
-    *
-    * @public
-    * @method getPrevious
-    * @return none
-    */
-    getPrevious: function() {
-      this._next=null; //clear out next so the comparison will find the next item
-      this._cursor = this._previous.pop();
-    },
-
-    /**
-    * Method to determine if there is a next page of data
-    *
-    * @public
-    * @method hasNext
-    * @return {boolean} true or false based on if there is a next page
-    */
-    hasNext: function(){
-      return (this._next);
-    },
-
-    /**
-    * Method to set the paging object to get the next page of data
-    *
-    * @public
-    * @method getNext
-    * @return none
-    */
-    getNext: function() {
-      this._previous.push(this._cursor);
-      this._cursor = this._next;
-    },
-
-    /**
-    * Method to save off the cursor just returned by the last API call
-    *
-    * @public
-    * @method saveCursor
-    * @return none
-    */
-    saveCursor: function(cursor) {
-      //if current cursor is different, grab it for next cursor
-      if (this._next !== cursor) {
-        this._next = cursor;
-      }
-    },
-
-    /**
-    * Method to determine if there is a next page of data
-    *
-    * @public
-    * @method getCursor
-    * @return {string} the current cursor
-    */
-    getCursor: function() {
-      return this._cursor;
-    }
-  };
-})(Usergrid);
-
-
-/**
- *  A class to Model a Usergrid Entity.
- *
- *  @class Entity
- *  @author Rod Simpson (rod@apigee.com)
- */
-(function () {
-  /**
-   *  Constructor for initializing an entity
-   *
-   *  @constructor
-   *  @param {string} collectionType - the type of collection to model
-   *  @param {uuid} uuid - (optional), the UUID of the collection if it is known
-   */
-  Usergrid.Entity = function(collectionType, uuid) {
-    this._collectionType = collectionType;
-    this._data = {};
-    this._uuid = uuid;
-  };
-
-  //inherit prototype from Query
-  Usergrid.Entity.prototype = new Usergrid.Query();
-
-  /**
-   *  gets the current Entity type
-   *
-   *  @method getCollectionType
-   *  @return {string} collection type
-   */
-  Usergrid.Entity.prototype.getCollectionType = function (){
-    return this._collectionType;
-  }
-
-  /**
-   *  sets the current Entity type
-   *
-   *  @method setCollectionType
-   *  @param {string} collectionType
-   *  @return none
-   */
-  Usergrid.Entity.prototype.setCollectionType = function (collectionType){
-    this._collectionType = collectionType;
-  }
-
-  /**
-   *  gets a specific field or the entire data object. If null or no argument
-   *  passed, will return all data, else, will return a specific field
-   *
-   *  @method get
-   *  @param {string} field
-   *  @return {string} || {object} data
-   */
-  Usergrid.Entity.prototype.get = function (field){
-    if (field) {
-      return this._data[field];
-    } else {
-      return this._data;
-    }
-  },
-
-  /**
-   *  adds a specific field or object to the Entity's data
-   *
-   *  @method set
-   *  @param {string} item || {object}
-   *  @param {string} value
-   *  @return none
-   */
-  Usergrid.Entity.prototype.set = function (item, value){
-    if (typeof item === 'object') {
-      for(field in item) {
-        this._data[field] = item[field];
-      }
-    } else if (typeof item === 'string') {
-      this._data[item] = value;
-    } else {
-      this._data = null;
-    }
-  }
-
-  /**
-   *  Saves the entity back to the database
-   *
-   *  @method save
-   *  @public
-   *  @param {function} successCallback
-   *  @param {function} errorCallback
-   *  @return none
-   */
-  Usergrid.Entity.prototype.save = function (successCallback, errorCallback){
-    var path = this.getCollectionType();
-    //TODO:  API will be changed soon to accomodate PUTs via name which create new entities
-    //       This function should be changed to PUT only at that time, and updated to use
-    //       either uuid or name
-    var method = 'POST';
-    if (this.get('uuid')) {
-      method = 'PUT';
-      if (Usergrid.validation.isUUID(this.get('uuid'))) {
-        path += "/" + this.get('uuid');
-      }
-    }
-
-    //if this is a user, update the password if it has been specified
-    var data = {};
-    if (path == 'users') {
-      data = this.get();
-      var pwdata = {};
-      //Note: we have a ticket in to change PUT calls to /users to accept the password change
-      //      once that is done, we will remove this call and merge it all into one
-      if (data.oldpassword && data.newpassword) {
-        pwdata.oldpassword = data.oldpassword;
-        pwdata.newpassword = data.newpassword;
-        this.runAppQuery(new Usergrid.Query('PUT', 'users/'+uuid+'/password', pwdata, null,
-          function (response) {
-            //not calling any callbacks - this section will be merged as soon as API supports
-            //   updating passwords in general PUT call
-          },
-          function (response) {
-
-          }
-        ));
-      }
-      //remove old and new password fields so they don't end up as part of the entity object
-      delete data.oldpassword;
-      delete data.newpassword;
-    }
-
-    //update the entity
-    var self = this;
-
-    data = {};
-    var entityData = this.get();
-    //remove system specific properties
-    for (var item in entityData) {
-      if (item == 'metadata' || item == 'created' || item == 'modified' ||
-          item == 'type' || item == 'activatted' ) { continue; }
-      data[item] = entityData[item];
-    }
-
-    this.setAllQueryParams(method, path, data, null,
-      function(response) {
-        try {
-          var entity = response.entities[0];
-          self.set(entity);
-          if (typeof(successCallback) === "function"){
-            successCallback(response);
-          }
-        } catch (e) {
-          if (typeof(errorCallback) === "function"){
-            errorCallback(response);
-          }
-        }
-      },
-      function(response) {
-        if (typeof(errorCallback) === "function"){
-          errorCallback(response);
-        }
-      }
-    );
-    Usergrid.ApiClient.runAppQuery(this);
-  }
-
-  /**
-   *  refreshes the entity by making a GET call back to the database
-   *
-   *  @method fetch
-   *  @public
-   *  @param {function} successCallback
-   *  @param {function} errorCallback
-   *  @return none
-   */
-  Usergrid.Entity.prototype.fetch = function (successCallback, errorCallback){
-    var path = this.getCollectionType();
-    //if a uuid is available, use that, otherwise, use the name
-    if (this.get('uuid')) {
-      path += "/" + this.get('uuid');
-    } else {
-      if (path == "users") {
-        if (this.get("username")) {
-          path += "/" + this.get("username");
-        } else {
-          console.log('no username specified');
-          if (typeof(errorCallback) === "function"){
-            console.log('no username specified');
-          }
-        }
-      } else {
-        if (this.get()) {
-          path += "/" + this.get();
-        } else {
-          console.log('no entity identifier specified');
-          if (typeof(errorCallback) === "function"){
-            console.log('no entity identifier specified');
-          }
-        }
-      }
-    }
-    var self = this;
-    this.setAllQueryParams('GET', path, null, null,
-      function(response) {
-        try {
-          if (response.user) {
-            self.set(response.user);
-          }
-          var entity = response.entities[0];
-          self.set(entity);
-          if (typeof(successCallback) === "function"){
-            successCallback(response);
-          }
-        } catch (e) {
-          if (typeof(errorCallback) === "function"){
-            errorCallback(response);
-          }
-        }
-      },
-      function(response) {
-        if (typeof(errorCallback) === "function"){
-            errorCallback(response);
-        }
-      }
-    );
-    Usergrid.ApiClient.runAppQuery(this);
-  }
-
-  /**
-   *  deletes the entity from the database - will only delete
-   *  if the object has a valid uuid
-   *
-   *  @method destroy
-   *  @public
-   *  @param {function} successCallback
-   *  @param {function} errorCallback
-   *  @return none
-   *
-   */
-  Usergrid.Entity.prototype.destroy = function (successCallback, errorCallback){
-    var path = this.getCollectionType();
-    if (this.get('uuid')) {
-      path += "/" + this.get('uuid');
-    } else {
-      console.log('Error trying to delete object - no uuid specified.');
-      if (typeof(errorCallback) === "function"){
-        errorCallback('Error trying to delete object - no uuid specified.');
-      }
-    }
-    var self = this;
-    this.setAllQueryParams('DELETE', path, null, null,
-      function(response) {
-        //clear out this object
-        self.set(null);
-        if (typeof(successCallback) === "function"){
-          successCallback(response);
-        }
-      },
-      function(response) {
-        if (typeof(errorCallback) === "function"){
-            errorCallback(response);
-        }
-      }
-    );
-    Usergrid.ApiClient.runAppQuery(this);
-  }
-
-})(Usergrid);
-
-
-/**
- *  The Collection class models Usergrid Collections.  It essentially
- *  acts as a container for holding Entity objects, while providing
- *  additional funcitonality such as paging, and saving
- *
- *  @class Collection
- *  @author Rod Simpson (rod@apigee.com)
- */
-(function () {
-  /**
-   *  Collection is a container class for holding entities
-   *
-   *  @constructor
-   *  @param {string} collectionPath - the type of collection to model
-   *  @param {uuid} uuid - (optional), the UUID of the collection if it is known
-   */
-  Usergrid.Collection = function(path, uuid) {
-    this._path = path;
-    this._uuid = uuid;
-    this._list = [];
-    this._Query = new Usergrid.Query();
-    this._iterator = -1; //first thing we do is increment, so set to -1
-  };
-
-  Usergrid.Collection.prototype = new Usergrid.Query();
-
-  /**
-   *  gets the current Collection path
-   *
-   *  @method getPath
-   *  @return {string} path
-   */
-  Usergrid.Collection.prototype.getPath = function (){
-    return this._path;
-  }
-
-  /**
-   *  sets the Collection path
-   *
-   *  @method setPath
-   *  @param {string} path
-   *  @return none
-   */
-  Usergrid.Collection.prototype.setPath = function (path){
-    this._path = path;
-  }
-
-  /**
-   *  gets the current Collection UUID
-   *
-   *  @method getUUID
-   *  @return {string} the uuid
-   */
-  Usergrid.Collection.prototype.getUUID = function (){
-    return this._uuid;
-  }
-
-  /**
-   *  sets the current Collection UUID
-   *  @method setUUID
-   *  @param {string} uuid
-   *  @return none
-   */
-  Usergrid.Collection.prototype.setUUID = function (uuid){
-    this._uuid = uuid;
-  }
-
-  /**
-   *  Adds an Entity to the collection (adds to the local object)
-   *
-   *  @method addEntity
-   *  @param {object} entity
-   *  @param {function} successCallback
-   *  @param {function} errorCallback
-   *  @return none
-   */
-  Usergrid.Collection.prototype.addEntity = function (entity){
-    //then add it to the list
-    var count = this._list.length;
-    this._list[count] = entity;
-  }
-
-  /**
-   *  Adds a new Entity to the collection (saves, then adds to the local object)
-   *
-   *  @method addNewEntity
-   *  @param {object} entity
-   *  @return none
-   */
-  Usergrid.Collection.prototype.addNewEntity = function (entity,successCallback, errorCallback) {
-    //add the entity to the list
-    this.addEntity(entity);
-    //then save the entity
-    entity.save(successCallback, errorCallback);
-  }
-
-  Usergrid.Collection.prototype.destroyEntity = function (entity) {
-    //first get the entities uuid
-    var uuid = entity.get('uuid');
-    //if the entity has a uuid, delete it
-    if (Usergrid.validation.isUUID(uuid)) {
-      //then remove it from the list
-      var count = this._list.length;
-      var i=0;
-      var reorder = false;
-      for (i=0; i<count; i++) {
-        if(reorder) {
-          this._list[i-1] = this._list[i];
-          this._list[i] = null;
-        }
-        if (this._list[i].get('uuid') == uuid) {
-          this._list[i] = null;
-          reorder=true;
-        }
-      }
-    }
-    //first destroy the entity on the server
-    entity.destroy();
-  }
-
-  /**
-   *  Looks up an Entity by a specific field - will return the first Entity that
-   *  has a matching field
-   *
-   *  @method getEntityByField
-   *  @param {string} field
-   *  @param {string} value
-   *  @return {object} returns an entity object, or null if it is not found
-   */
-  Usergrid.Collection.prototype.getEntityByField = function (field, value){
-    var count = this._list.length;
-    var i=0;
-    for (i=0; i<count; i++) {
-      if (this._list[i].getField(field) == value) {
-        return this._list[i];
-      }
-    }
-    return null;
-  }
-
-  /**
-   *  Looks up an Entity by UUID
-   *
-   *  @method getEntityByUUID
-   *  @param {string} UUID
-   *  @return {object} returns an entity object, or null if it is not found
-   */
-  Usergrid.Collection.prototype.getEntityByUUID = function (UUID){
-    var count = this._list.length;
-    var i=0;
-    for (i=0; i<count; i++) {
-      if (this._list[i].get('uuid') == UUID) {
-        return this._list[i];
-      }
-    }
-    return null;
-  }
-
-  /**
-   *  Returns the first Entity of the Entity list - does not affect the iterator
-   *
-   *  @method getFirstEntity
-   *  @return {object} returns an entity object
-   */
-  Usergrid.Collection.prototype.getFirstEntity = function (){
-    var count = this._list.length;
-      if (count > 0) {
-        return this._list[0];
-      }
-      return null;
-  }
-
-  /**
-   *  Returns the last Entity of the Entity list - does not affect the iterator
-   *
-   *  @method getLastEntity
-   *  @return {object} returns an entity object
-   */
-  Usergrid.Collection.prototype.getLastEntity = function (){
-    var count = this._list.length;
-      if (count > 0) {
-        return this._list[count-1];
-      }
-      return null;
-  }
-
-  /**
-   *  Entity iteration -Checks to see if there is a "next" entity
-   *  in the list.  The first time this method is called on an entity
-   *  list, or after the resetEntityPointer method is called, it will
-   *  return true referencing the first entity in the list
-   *
-   *  @method hasNextEntity
-   *  @return {boolean} true if there is a next entity, false if not
-   */
-  Usergrid.Collection.prototype.hasNextEntity = function (){
-    var next = this._iterator + 1;
-      if(next >=0 && next < this._list.length) {
-        return true;
-      }
-      return false;
-  }
-
-  /**
-   *  Entity iteration - Gets the "next" entity in the list.  The first
-   *  time this method is called on an entity list, or after the method
-   *  resetEntityPointer is called, it will return the,
-   *  first entity in the list
-   *
-   *  @method hasNextEntity
-   *  @return {object} entity
-   */
-  Usergrid.Collection.prototype.getNextEntity = function (){
-    this._iterator++;
-      if(this._iterator >= 0 && this._iterator <= this._list.length) {
-        return this._list[this._iterator];
-      }
-      return false;
-  }
-
-  /**
-   *  Entity iteration - Checks to see if there is a "previous"
-   *  entity in the list.
-   *
-   *  @method hasPreviousEntity
-   *  @return {boolean} true if there is a previous entity, false if not
-   */
-  Usergrid.Collection.prototype.hasPreviousEntity = function (){
-    var previous = this._iterator - 1;
-      if(previous >=0 && previous < this._list.length) {
-        return true;
-      }
-      return false;
-  }
-
-  /**
-   *  Entity iteration - Gets the "previous" entity in the list.
-   *
-   *  @method getPreviousEntity
-   *  @return {object} entity
-   */
-  Usergrid.Collection.prototype.getPreviousEntity = function (){
-     this._iterator--;
-      if(this._iterator >= 0 && this._iterator <= this._list.length) {
-        return this.list[this._iterator];
-      }
-      return false;
-  }
-
-  /**
-   *  Entity iteration - Resets the iterator back to the beginning
-   *  of the list
-   *
-   *  @method resetEntityPointer
-   *  @return none
-   */
-  Usergrid.Collection.prototype.resetEntityPointer = function (){
-     this._iterator  = -1;
-  }
-
-  /**
-   *  gets and array of all entities currently in the colleciton object
-   *
-   *  @method getEntityList
-   *  @return {array} returns an array of entity objects
-   */
-  Usergrid.Collection.prototype.getEntityList = function (){
-     return this._list;
-  }
-
-  /**
-   *  sets the entity list
-   *
-   *  @method setEntityList
-   *  @param {array} list - an array of Entity objects
-   *  @return none
-   */
-  Usergrid.Collection.prototype.setEntityList = function (list){
-    this._list = list;
-  }
-
-  /**
-   *  Paging -  checks to see if there is a next page od data
-   *
-   *  @method hasNextPage
-   *  @return {boolean} returns true if there is a next page of data, false otherwise
-   */
-  Usergrid.Collection.prototype.hasNextPage = function (){
-    return this.hasNext();
-  }
-
-  /**
-   *  Paging - advances the cursor and gets the next
-   *  page of data from the API.  Stores returned entities
-   *  in the Entity list.
-   *
-   *  @method getNextPage
-   *  @return none
-   */
-  Usergrid.Collection.prototype.getNextPage = function (){
-    if (this.hasNext()) {
-        //set the cursor to the next page of data
-        this.getNext();
-        //empty the list
-        this.setEntityList([]);
-        Usergrid.ApiClient.runAppQuery(this);
-      }
-  }
-
-  /**
-   *  Paging -  checks to see if there is a previous page od data
-   *
-   *  @method hasPreviousPage
-   *  @return {boolean} returns true if there is a previous page of data, false otherwise
-   */
-  Usergrid.Collection.prototype.hasPreviousPage = function (){
-    return this.hasPrevious();
-  }
-
-  /**
-   *  Paging - reverts the cursor and gets the previous
-   *  page of data from the API.  Stores returned entities
-   *  in the Entity list.
-   *
-   *  @method getPreviousPage
-   *  @return none
-   */
-  Usergrid.Collection.prototype.getPreviousPage = function (){
-    if (this.hasPrevious()) {
-        this.getPrevious();
-        //empty the list
-        this.setEntityList([]);
-        Usergrid.ApiClient.runAppQuery(this);
-      }
-  }
-
-  /**
-   *  clears the query parameters object
-   *
-   *  @method clearQuery
-   *  @return none
-   */
-  Usergrid.Collection.prototype.clearQuery = function (){
-    this.clearAll();
-  }
-
-  //The get() function is deprecated.  Including here for backwards compatibility
-  //with previous versions of the SDK
-  Usergrid.Collection.prototype.get = function (successCallback, errorCallback){
-    Usergrid.Collection.fetch(successCallback, errorCallback);
-  }
-
-  /**
-   *  A method to get all items in the collection, as dictated by the
-   *  cursor and the query.  By default, the API returns 10 items in
-   *  a given call.  This can be overriden so that more or fewer items
-   *  are returned.  The entities returned are all stored in the colleciton
-   *  object's entity list, and can be retrieved by calling getEntityList()
-   *
-   *  @method get
-   *  @param {function} successCallback
-   *  @param {function} errorCallback
-   *  @return none
-   */
-  Usergrid.Collection.prototype.fetch = function (successCallback, errorCallback){
-    var self = this;
-    var queryParams = this.getQueryParams();
-    //empty the list
-    this.setEntityList([]);
-    this.setAllQueryParams('GET', this.getPath(), null, queryParams,
-      function(response) {
-        if (response.entities) {
-          this.resetEntityPointer();
-          var count = response.entities.length;
-          for (var i=0;i<count;i++) {
-            var uuid = response.entities[i].uuid;
-            if (uuid) {
-              var entity = new Usergrid.Entity(self.getPath(), uuid);
-              //store the data in the entity
-              var data = response.entities[i] || {};
-              delete data.uuid; //remove uuid from the object
-              entity.set(data);
-              //store the new entity in this collection
-              self.addEntity(entity);
-            }
-          }
-          if (typeof(successCallback) === "function"){
-            successCallback(response);
-          }
-        } else {
-          if (typeof(errorCallback) === "function"){
-              errorCallback(response);
-          }
-        }
-      },
-      function(response) {
-        if (typeof(errorCallback) === "function"){
-            errorCallback(response);
-        }
-      }
-    );
-    Usergrid.ApiClient.runAppQuery(this);
-  }
-
-  /**
-   *  A method to save all items currently stored in the collection object
-   *  caveat with this method: we can't update anything except the items
-   *  currently stored in the collection.
-   *
-   *  @method save
-   *  @param {function} successCallback
-   *  @param {function} errorCallback
-   *  @return none
-   */
-  Usergrid.Collection.prototype.save = function (successCallback, errorCallback){
-    //loop across all entities and save each one
-    var entities = this.getEntityList();
-    var count = entities.length;
-    var jsonObj = [];
-    for (var i=0;i<count;i++) {
-      entity = entities[i];
-      data = entity.get();
-      if (entity.get('uuid')) {
-        data.uuid = entity.get('uuid');
-        jsonObj.push(data);
-      }
-      entity.save();
-    }
-    this.setAllQueryParams('PUT', this.getPath(), jsonObj, null,successCallback, errorCallback);
-    Usergrid.ApiClient.runAppQuery(this);
-  }
-})(Usergrid);
-
-
-/*
- *  Usergrid.ApiClient
- *
- *  A Singleton that is the main client for making calls to the API. Maintains
- *  state between calls for the following items:
- *
- *  Token
- *  User (username, email, name, uuid)
- *
- *  Main methods for making calls to the API are:
- *
- *  runAppQuery (Query)
- *  runManagementQuery(Query)
- *
- *  Create a new Usergrid.Query object and then pass it to either of these
- *  two methods for making calls directly to the API.
- *
- *  A method for logging in an app user (to get a OAuth token) also exists:
- *
- *  logInAppUser (username, password, successCallback, failureCallback)
- *
- *  @class Usergrid.ApiClient
- *  @author Rod Simpson (rod@apigee.com)
- *
- */
-Usergrid.M = 'ManagementQuery';
-Usergrid.A = 'ApplicationQuery';
-Usergrid.ApiClient = (function () {
-  //API endpoint
-  var _apiUrl = "https://api.usergrid.com/";
-  var _orgName = null;
-  var _appName = null;
-  var _token = null;
-  var _callTimeout = 30000;
-  var _queryType = null;
-  var _loggedInUser = null;
-  var _logoutCallback = null;
-  var _callTimeoutCallback = null;
-
-  /*
-   *  A method to set up the ApiClient with orgname and appname
-   *
-   *  @method init
-   *  @public
-   *  @param {string} orgName
-   *  @param {string} appName
-   *  @return none
-   *
-   */
-  function init(orgName, appName){
-    this.setOrganizationName(orgName);
-    this.setApplicationName(appName);
-  }
-
-  /*
-  *  Public method to run calls against the app endpoint
-  *
-  *  @method runAppQuery
-  *  @public
-  *  @params {object} Usergrid.Query - {method, path, jsonObj, params, successCallback, failureCallback}
-  *  @return none
-  */
-  function runAppQuery (Query) {
-    var endpoint = "/" + this.getOrganizationName() + "/" + this.getApplicationName() + "/";
-    setQueryType(Usergrid.A);
-    run(Query, endpoint);
-  }
-
-  /*
-  *  Public method to run calls against the management endpoint
-  *
-  *  @method runManagementQuery
-  *  @public
-  *  @params {object} Usergrid.Query - {method, path, jsonObj, params, successCallback, failureCallback}
-  *  @return none
-  */
-  function runManagementQuery (Query) {
-    var endpoint = "/management/";
-    setQueryType(Usergrid.M);
-    run(Query, endpoint)
-  }
-
-  /*
-    *  A public method to get the organization name to be used by the client
-    *
-    *  @method getOrganizationName
-    *  @public
-    *  @return {string} the organization name
-    */
-  function getOrganizationName() {
-    return _orgName;
-  }
-
-  /*
-    *  A public method to set the organization name to be used by the client
-    *
-    *  @method setOrganizationName
-    *  @param orgName - the organization name
-    *  @return none
-    */
-  function setOrganizationName(orgName) {
-    _orgName = orgName;
-  }
-
-  /*
-  *  A public method to get the application name to be used by the client
-  *
-  *  @method getApplicationName
-  *  @public
-  *  @return {string} the application name
-  */
-  function getApplicationName() {
-    return _appName;
-  }
-
-  /*
-  *  A public method to set the application name to be used by the client
-  *
-  *  @method setApplicationName
-  *  @public
-  *  @param appName - the application name
-  *  @return none
-  */
-  function setApplicationName(appName) {
-    _appName = appName;
-  }
-
-  /*
-  *  A public method to get current OAuth token
-  *
-  *  @method getToken
-  *  @public
-  *  @return {string} the current token
-  */
-  function getToken() {
-    return _token;
-  }
-
-  /*
-  *  A public method to set the current Oauth token
-  *
-  *  @method setToken
-  *  @public
-  *  @param token - the bearer token
-  *  @return none
-  */
-  function setToken(token) {
-    _token = token;
-  }
-
-  /*
-   *  A public method to return the API URL
-   *
-   *  @method getApiUrl
-   *  @public
-   *  @return {string} the API url
-   */
-  function getApiUrl() {
-    return _apiUrl;
-  }
-
-  /*
-   *  A public method to overide the API url
-   *
-   *  @method setApiUrl
-   *  @public
-   *  @return none
-   */
-  function setApiUrl(apiUrl) {
-    _apiUrl = apiUrl;
-  }
-
-  /*
-   *  A public method to return the call timeout amount
-   *
-   *  @method getCallTimeout
-   *  @public
-   *  @return {string} the timeout value (an integer) 30000 = 30 seconds
-   */
-  function getCallTimeout() {
-    return _callTimeout;
-  }
-
-  /*
-   *  A public method to override the call timeout amount
-   *
-   *  @method setCallTimeout
-   *  @public
-   *  @return none
-   */
-  function setCallTimeout(callTimeout) {
-    _callTimeout = callTimeout;
-  }
-
-  /*
-   * Returns the call timeout callback function
-   *
-   * @public
-   * @method setCallTimeoutCallback
-   * @return none
-   */
-  function setCallTimeoutCallback(callback) {
-    _callTimeoutCallback = callback;
-  }
-
-  /*
-   * Returns the call timeout callback function
-   *
-   * @public
-   * @method getCallTimeoutCallback
-   * @return {function} Returns the callTimeoutCallback
-   */
-  function getCallTimeoutCallback() {
-    return _callTimeoutCallback;
-  }
-
-  /*
-   * Calls the call timeout callback function
-   *
-   * @public
-   * @method callTimeoutCallback
-   * @return {boolean} Returns true or false based on if there was a callback to call
-   */
-  function callTimeoutCallback(response) {
-    if (_callTimeoutCallback && typeof(_callTimeoutCallback) === "function") {
-      _callTimeoutCallback(response);
-      return true;
-    } else {
-      return false;
-    }
-  }
-
-  /*
-   *  A public method to get the api url of the reset pasword endpoint
-   *
-   *  @method getResetPasswordUrl
-   *  @public
-   *  @return {string} the api rul of the reset password endpoint
-   */
-  function getResetPasswordUrl() {
-    return getApiUrl() + "/management/users/resetpw"
-  }
-
-  /*
-   *  A public method to get an Entity object for the current logged in user
-   *
-   *  @method getLoggedInUser
-   *  @public
-   *  @return {object} user - Entity object of type user
-   */
-  function getLoggedInUser() {
-    return this._loggedInUser;
-  }
-
-  /*
-   *  A public method to set an Entity object for the current logged in user
-   *
-   *  @method setLoggedInUser
-   *  @public
-   *  @param {object} user - Entity object of type user
-   *  @return none
-   */
-  function setLoggedInUser(user) {
-    this._loggedInUser = user;
-  }
-
-  /*
-  *  A public method to log in an app user - stores the token for later use
-  *
-  *  @method logInAppUser
-  *  @public
-  *  @params {string} username
-  *  @params {string} password
-  *  @params {function} successCallback
-  *  @params {function} failureCallback
-  *  @return {response} callback functions return API response object
-  */
-  function logInAppUser (username, password, successCallback, failureCallback) {
-    var self = this;
-    var data = {"username": username, "password": password, "grant_type": "password"};
-    this.runAppQuery(new Usergrid.Query('GET', 'token', null, data,
-      function (response) {
-        var user = new Usergrid.Entity('users');
-        user.set('username', response.user.username);
-        user.set('name', response.user.name);
-        user.set('email', response.user.email);
-        user.set('uuid', response.user.uuid);
-        self.setLoggedInUser(user);
-        self.setToken(response.access_token);
-        if (successCallback && typeof(successCallback) === "function") {
-          successCallback(response);
-        }
-      },
-      function (response) {
-        if (failureCallback && typeof(failureCallback) === "function") {
-          failureCallback(response);
-        }
-      }
-     ));
-  }
-
-  /*
-   *  TODO:  NOT IMPLEMENTED YET - A method to renew an app user's token
-   *  Note: waiting for API implementation
-   *  @method renewAppUserToken
-   *  @public
-   *  @return none
-   */
-  function renewAppUserToken() {
-
-  }
-
-  /**
-   *  A public method to log out an app user - clears all user fields from client
-   *
-   *  @method logoutAppUser
-   *  @public
-   *  @return none
-   */
-  function logoutAppUser() {
-    this.setLoggedInUser(null);
-    this.setToken(null);
-  }
-
-  /**
-   *  A public method to test if a user is logged in - does not guarantee that the token is still valid,
-   *  but rather that one exists, and that there is a valid UUID
-   *
-   *  @method isLoggedInAppUser
-   *  @public
-   *  @params {object} Usergrid.Query - {method, path, jsonObj, params, successCallback, failureCallback}
-   *  @return {boolean} Returns true the user is logged in (has token and uuid), false if not
-   */
-  function isLoggedInAppUser() {
-    var user = this.getLoggedInUser();
-    return (this.getToken() && Usergrid.validation.isUUID(user.get('uuid')));
-  }
-
-   /*
-   *  A public method to get the logout callback, which is called
-   *
-   *  when the token is found to be invalid
-   *  @method getLogoutCallback
-   *  @public
-   *  @return {string} the api rul of the reset password endpoint
-   */
-  function getLogoutCallback() {
-    return _logoutCallback;
-  }
-
-  /*
-   *  A public method to set the logout callback, which is called
-   *
-   *  when the token is found to be invalid
-   *  @method setLogoutCallback
-   *  @public
-   *  @param {function} logoutCallback
-   *  @return none
-   */
-  function setLogoutCallback(logoutCallback) {
-    _logoutCallback = logoutCallback;
-  }
-
-  /*
-   *  A public method to call the logout callback, which is called
-   *
-   *  when the token is found to be invalid
-   *  @method callLogoutCallback
-   *  @public
-   *  @return none
-   */
-  function callLogoutCallback() {
-    if (_logoutCallback && typeof(_logoutCallback ) === "function") {
-      _logoutCallback();
-      return true;
-    } else {
-      return false;
-    }
-  }
-
-  /**
-   *  Private helper method to encode the query string parameters
-   *
-   *  @method encodeParams
-   *  @public
-   *  @params {object} params - an object of name value pairs that will be urlencoded
-   *  @return {string} Returns the encoded string
-   */
-  function encodeParams (params) {
-    tail = [];
-    var item = [];
-    if (params instanceof Array) {
-      for (i in params) {
-        item = params[i];
-        if ((item instanceof Array) && (item.length > 1)) {
-          tail.push(item[0] + "=" + encodeURIComponent(item[1]));
-        }
-      }
-    } else {
-      for (var key in params) {
-        if (params.hasOwnProperty(key)) {
-          var value = params[key];
-          if (value instanceof Array) {
-            for (i in value) {
-              item = value[i];
-              tail.push(key + "=" + encodeURIComponent(item));
-            }
-          } else {
-            tail.push(key + "=" + encodeURIComponent(value));
-          }
-        }
-      }
-    }
-    return tail.join("&");
-  }
-
-  /*
-   *  A private method to get the type of the current api call - (Management or Application)
-   *
-   *  @method getQueryType
-   *  @private
-   *  @return {string} the call type
-   */
-  function getQueryType() {
-    return _queryType;
-  }
-  /*
-   *  A private method to set the type of the current api call - (Management or Application)
-   *
-   *  @method setQueryType
-   *  @private
-   *  @param {string} call type
-   *  @return none
-   */
-  function setQueryType(type) {
-    _queryType = type;
-  }
-
-  /**
-   *  A private method to validate, prepare,, and make the calls to the API
-   *  Use runAppQuery or runManagementQuery to make your calls!
-   *
-   *  @method run
-   *  @private
-   *  @params {object} Usergrid.Query - {method, path, jsonObj, params, successCallback, failureCallback}
-   *  @params {string} endpoint - used to differentiate between management and app queries
-   *  @return {response} callback functions return API response object
-   */
-  function run (Query, endpoint) {
-    var curl = "curl";
-    //validate parameters
-    try {
-      //verify that the query object is valid
-      if(!(Query instanceof Usergrid.Query)) {
-        throw(new Error('Query is not a valid object.'));
-      }
-      //for timing, call start
-      Query.setQueryStartTime();
-      //peel the data out of the query object
-      var method = Query.getMethod().toUpperCase();
-      var path = Query.getResource();
-      var jsonObj = Query.getJsonObj() || {};
-      var params = Query.getQueryParams() || {};
-
-      //method - should be GET, POST, PUT, or DELETE only
-      if (method != 'GET' && method != 'POST' && method != 'PUT' && method != 'DELETE') {
-        throw(new Error('Invalid method - should be GET, POST, PUT, or DELETE.'));
-      }
-      //curl - add the method to the command (no need to add anything for GET)
-      if (method == "POST") {curl += " -X POST"; }
-      else if (method == "PUT") { curl += " -X PUT"; }
-      else if (method == "DELETE") { curl += " -X DELETE"; }
-      else { curl += " -X GET"; }
-
-      //curl - append the bearer token if this is not the sandbox app
-      var application_name = Usergrid.ApiClient.getApplicationName();
-      if (application_name) {
-        application_name = application_name.toUpperCase();
-      }
-      //if (application_name != 'SANDBOX' && Usergrid.ApiClient.getToken()) {
-      if ( (application_name != 'SANDBOX' && Usergrid.ApiClient.getToken()) || (getQueryType() == Usergrid.M && Usergrid.ApiClient.getToken())) {
-        curl += ' -i -H "Authorization: Bearer ' + Usergrid.ApiClient.getToken() + '"';
-        Query.setToken(true);
-      }
-
-      //params - make sure we have a valid json object
-      _params = JSON.stringify(params);
-      if (!JSON.parse(_params)) {
-        throw(new Error('Params object is not valid.'));
-      }
-
-      //add in the cursor if one is available
-      if (Query.getCursor()) {
-        params.cursor = Query.getCursor();
-      } else {
-        delete params.cursor;
-      }
-
-      //strip off the leading slash of the endpoint if there is one
-      endpoint = endpoint.indexOf('/') == 0 ? endpoint.substring(1) : endpoint;
-
-      //add the endpoint to the path
-      path = endpoint + path;
-
-      //make sure path never has more than one / together
-      if (path) {
-        //regex to strip multiple slashes
-        while(path.indexOf('//') != -1){
-          path = path.replace('//', '/');
-        }
-      }
-
-      //add the http:// bit on the front
-      path = Usergrid.ApiClient.getApiUrl() + path;
-
-      //curl - append the path
-      curl += ' "' + path;
-
-      //curl - append params to the path for curl prior to adding the timestamp
-      var curl_encoded_params = encodeParams(params);
-      if (curl_encoded_params) {
-        curl += "?" + curl_encoded_params;
-      }
-      curl += '"';
-
-      //add in a timestamp for gets and deletes - to avoid caching by the browser
-      if ((method == "GET") || (method == "DELETE")) {
-        params['_'] = new Date().getTime();
-      }
-
-      //append params to the path
-      var encoded_params = encodeParams(params);
-      if (encoded_params) {
-        path += "?" + encoded_params;
-      }
-
-      //jsonObj - make sure we have a valid json object
-      jsonObj = JSON.stringify(jsonObj)
-      if (!JSON.parse(jsonObj)) {
-        throw(new Error('JSON object is not valid.'));
-      }
-      if (jsonObj == '{}') {
-        jsonObj = null;
-      } else {
-        //curl - add in the json obj
-        curl += " -d '" + jsonObj + "'";
-      }
-
-    } catch (e) {
-      //parameter was invalid
-      console.log('error occured running query -' + e.message);
-      return false;
-    }
-    //log the curl command to the console
-    console.log(curl);
-    //store the curl command back in the object
-    Query.setCurl(curl);
-
-    //so far so good, so run the query
-    var xD = window.XDomainRequest ? true : false;
-    var xhr = getXHR(method, path, jsonObj);
-
-    // Handle response.
-    /*
-    xhr.onerror = function() {
-      //for timing, call end
-      Query.setQueryEndTime();
-      //for timing, log the total call time
-      console.log(Query.getQueryTotalTime());
-      //network error
-      clearTimeout(timeout);
-      console.log('API call failed at the network level.');
-      //send back an error (best we can do with what ie gives back)
-      Query.callFailureCallback(response.innerText);
-    };*/
-    xhr.xdomainOnload = function (response) {
-      //for timing, call end
-      Query.setQueryEndTime();
-      //for timing, log the total call time
-      console.log('Call timing: ' + Query.getQueryTotalTime());
-      //call completed
-      clearTimeout(timeout);
-      //decode the response
-      response = JSON.parse(xhr.responseText);
-      //if a cursor was present, grab it
-      try {
-        var cursor = response.cursor || null;
-        Query.saveCursor(cursor);
-      }catch(e) {}
-      Query.callSuccessCallback(response);
-    };
-    xhr.onload = function(response) {
-      //for timing, call end
-      Query.setQueryEndTime();
-      //for timing, log the total call time
-      console.log('Call timing: ' + Query.getQueryTotalTime());
-      //call completed
-      clearTimeout(timeout);
-      //decode the response
-      response = JSON.parse(xhr.responseText);
-      if (xhr.status != 200 && !xD)   {
-        //there was an api error
-        try {
-          var error = response.error;
-          console.log('API call failed: (status: '+xhr.status+').' + error.type);
-          if ( (error == "auth_expired_session_token") ||
-               (error == "unauthorized")   ||
-               (error == "auth_missing_credentials")   ||
-               (error == "auth_invalid")) {
-            //this error type means the user is not authorized. If a logout function is defined, call it
-            callLogoutCallback();
-        }} catch(e){}
-        //otherwise, just call the failure callback
-        Query.callFailureCallback(response.error_description);
-        return;
-      } else {
-        //query completed succesfully, so store cursor
-        var cursor = response.cursor || null;
-        Query.saveCursor(cursor);
-        //then call the original callback
-        Query.callSuccessCallback(response);
-     }
-    };
-
-    var timeout = setTimeout(
-      function() {
-        xhr.abort();
-        if ( typeof(Usergrid.ApiClient.getCallTimeoutCallback()) === 'function') {
-          Usergrid.ApiClient.callTimeoutCallback('API CALL TIMEOUT');
-        } else if (typeof(Query.getFailureCallback()) === 'function'){
-          Query.callFailureCallback('API CALL TIMEOUT');
-        }
-      },
-      Usergrid.ApiClient.getCallTimeout()); //set for 30 seconds
-
-    xhr.send(jsonObj);
-  }
-
-   /**
-   *  A private method to return the XHR object
-   *
-   *  @method getXHR
-   *  @private
-   *  @params {string} method (GET,POST,PUT,DELETE)
-   *  @params {string} path - api endpoint to call
-   *  @return {object} jsonObj - the json object if there is one
-   */
-  function getXHR(method, path, jsonObj) {
-    var xhr;
-    if(window.XDomainRequest)
-    {
-      xhr = new window.XDomainRequest();
-      if (Usergrid.ApiClient.getToken()) {
-        if (path.indexOf("?")) {
-          path += '&access_token='+Usergrid.ApiClient.getToken();
-        } else {
-          path = '?access_token='+Usergrid.ApiClient.getToken();
-        }
-      }
-      xhr.open(method, path, true);
-    }
-    else
-    {
-      xhr = new XMLHttpRequest();
-      xhr.open(method, path, true);
-      //add content type = json if there is a json payload
-      if (jsonObj) {
-        xhr.setRequestHeader("Content-Type", "application/json");
-      }
-      if (Usergrid.ApiClient.getToken()) {
-        xhr.setRequestHeader("Authorization", "Bearer " + Usergrid.ApiClient.getToken());
-        xhr.withCredentials = true;
-      }
-    }
-    return xhr;
-  }
-
-  return {
-    init:init,
-    runAppQuery:runAppQuery,
-    runManagementQuery:runManagementQuery,
-    getOrganizationName:getOrganizationName,
-    setOrganizationName:setOrganizationName,
-    getApplicationName:getApplicationName,
-    setApplicationName:setApplicationName,
-    getToken:getToken,
-    setToken:setToken,
-    getCallTimeout:getCallTimeout,
-    setCallTimeout:setCallTimeout,
-    getCallTimeoutCallback:getCallTimeoutCallback,
-    setCallTimeoutCallback:setCallTimeoutCallback,
-    callTimeoutCallback:callTimeoutCallback,
-    getApiUrl:getApiUrl,
-    setApiUrl:setApiUrl,
-    getResetPasswordUrl:getResetPasswordUrl,
-    getLoggedInUser:getLoggedInUser,
-    setLoggedInUser:setLoggedInUser,
-    logInAppUser:logInAppUser,
-    renewAppUserToken:renewAppUserToken,
-    logoutAppUser:logoutAppUser,
-    isLoggedInAppUser:isLoggedInAppUser,
-    getLogoutCallback:getLogoutCallback,
-    setLogoutCallback:setLogoutCallback,
-    callLogoutCallback:callLogoutCallback
-  }
-})();
-
-/**
- * validation is a Singleton that provides methods for validating common field types
- *
- * @class Usergrid.validation
- * @author Rod Simpson (rod@apigee.com)
-**/
-Usergrid.validation = (function () {
-
-  var usernameRegex = new RegExp("^([0-9a-zA-Z\.\-])+$");
-  var nameRegex     = new RegExp("^([0-9a-zA-Z@#$%^&!?;:.,'\"~*-=+_\[\\](){}/\\ |])+$");
-  var emailRegex    = new RegExp("^(([0-9a-zA-Z]+[_\+.-]?)+@[0-9a-zA-Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+$");
-  var passwordRegex = new RegExp("^([0-9a-zA-Z@#$%^&!?<>;:.,'\"~*-=+_\[\\](){}/\\ |])+$");
-  var pathRegex     = new RegExp("^([0-9a-z./-])+$");
-  var titleRegex    = new RegExp("^([0-9a-zA-Z.!-?/])+$");
-
-  /**
-    * Tests the string against the allowed chars regex
-    *
-    * @public
-    * @method validateUsername
-    * @param {string} username - The string to test
-    * @param {function} failureCallback - (optional), the function to call on a failure
-    * @return {boolean} Returns true if string passes regex, false if not
-    */
-  function validateUsername(username, failureCallback) {
-    if (usernameRegex.test(username) && checkLength(username, 4, 80)) {
-      return true;
-    } else {
-      if (failureCallback && typeof(failureCallback) === "function") {
-        failureCallback(this.getUsernameAllowedChars());
-      }
-      return false;
-    }
-  }
-
-  /**
-    * Returns the regex of allowed chars
-    *
-    * @public
-    * @method getUsernameAllowedChars
-    * @return {string} Returns a string with the allowed chars
-    */
-  function getUsernameAllowedChars(){
-    return 'Length: min 4, max 80. Allowed: A-Z, a-z, 0-9, dot, and dash';
-  }
-
-  /**
-    * Tests the string against the allowed chars regex
-    *
-    * @public
-    * @method validateName
-    * @param {string} name - The string to test
-    * @param {function} failureCallback - (optional), the function to call on a failure
-    * @return {boolean} Returns true if string passes regex, false if not
-    */
-  function validateName(name, failureCallback) {
-    if (nameRegex.test(name) && checkLength(name, 4, 16)) {
-      return true;
-    } else {
-      if (failureCallback && typeof(failureCallback) === "function") {
-        failureCallback(this.getNameAllowedChars());
-      }
-      return false;
-    }
-  }
-
-  /**
-    * Returns the regex of allowed chars
-    *
-    * @public
-    * @method getNameAllowedChars
-    * @return {string} Returns a string with the allowed chars
-    */
-  function getNameAllowedChars(){
-    return 'Length: min 4, max 80. Allowed: A-Z, a-z, 0-9, ~ @ # % ^ & * ( ) - _ = + [ ] { } \\ | ; : \' " , . / ? !';
-  }
-
-  /**
-    * Tests the string against the allowed chars regex
-    *
-    * @public
-    * @method validatePassword
-    * @param {string} password - The string to test
-    * @param {function} failureCallback - (optional), the function to call on a failure
-    * @return {boolean} Returns true if string passes regex, false if not
-    */
-  function validatePassword(password, failureCallback) {
-    if (passwordRegex.test(password) && checkLength(password, 5, 16)) {
-      return true;
-    } else {
-      if (failureCallback && typeof(failureCallback) === "function") {
-        failureCallback(this.getPasswordAllowedChars());
-      }
-      return false;
-    }
-  }
-
-  /**
-    * Returns the regex of allowed chars
-    *
-    * @public
-    * @method getPasswordAllowedChars
-    * @return {string} Returns a string with the allowed chars
-    */
-  function getPasswordAllowedChars(){
-    return 'Length: min 5, max 16. Allowed: A-Z, a-z, 0-9, ~ @ # % ^ & * ( ) - _ = + [ ] { } \\ | ; : \' " , . < > / ? !';
-  }
-
-  /**
-    * Tests the string against the allowed chars regex
-    *
-    * @public
-    * @method validateEmail
-    * @param {string} email - The string to test
-    * @param {function} failureCallback - (optional), the function to call on a failure
-    * @return {boolean} Returns true if string passes regex, false if not
-    */
-  function validateEmail(email, failureCallback) {
-    if (emailRegex.test(email) && checkLength(email, 4, 80)) {
-      return true;
-    } else {
-      if (failureCallback && typeof(failureCallback) === "function") {
-        failureCallback(this.getEmailAllowedChars());
-      }
-      return false;
-    }
-  }
-
-  /**
-    * Returns the regex of allowed chars
-    *
-    * @public
-    * @method getEmailAllowedChars
-    * @return {string} Returns a string with the allowed chars
-    */
-  function getEmailAllowedChars(){
-    return 'Email must be in standard form: e.g. example@Usergrid.com';
-  }
-
-  /**
-    * Tests the string against the allowed chars regex
-    *
-    * @public
-    * @method validatePath
-    * @param {string} path - The string to test
-    * @param {function} failureCallback - (optional), the function to call on a failure
-    * @return {boolean} Returns true if string passes regex, false if not
-    */
-  function validatePath(path, failureCallback) {
-    if (pathRegex.test(path) && checkLength(path, 4, 80)) {
-      return true;
-    } else {
-      if (failureCallback && typeof(failureCallback) === "function") {
-        failureCallback(this.getPathAllowedChars());
-      }
-      return false;
-    }
-  }
-
-  /**
-    * Returns the regex of allowed chars
-    *
-    * @public
-    * @method getPathAllowedChars
-    * @return {string} Returns a string with the allowed chars
-    */
-  function getPathAllowedChars(){
-    return 'Length: min 4, max 80. Allowed: /, a-z, 0-9, dot, and dash';
-  }
-
-  /**
-    * Tests the string against the allowed chars regex
-    *
-    * @public
-    * @method validateTitle
-    * @param {string} title - The string to test
-    * @param {function} failureCallback - (optional), the function to call on a failure
-    * @return {boolean} Returns true if string passes regex, false if not
-    */
-  function validateTitle(title, failureCallback) {
-    if (titleRegex.test(title) && checkLength(title, 4, 80)) {
-      return true;
-    } else {
-      if (failureCallback && typeof(failureCallback) === "function") {
-        failureCallback(this.getTitleAllowedChars());
-      }
-      return false;
-    }
-  }
-
-  /**
-    * Returns the regex of allowed chars
-    *
-    * @public
-    * @method getTitleAllowedChars
-    * @return {string} Returns a string with the allowed chars
-    */
-  function getTitleAllowedChars(){
-    return 'Length: min 4, max 80. Allowed: space, A-Z, a-z, 0-9, dot, dash, /, !, and ?';
-  }
-
-  /**
-    * Tests if the string is the correct length
-    *
-    * @public
-    * @method checkLength
-    * @param {string} string - The string to test
-    * @param {integer} min - the lower bound
-    * @param {integer} max - the upper bound
-    * @return {boolean} Returns true if string is correct length, false if not
-    */
-  function checkLength(string, min, max) {
-    if (string.length > max || string.length < min) {
-      return false;
-    }
-    return true;
-  }
-
-  /**
-    * Tests if the string is a uuid
-    *
-    * @public
-    * @method isUUID
-    * @param {string} uuid The string to test
-    * @returns {Boolean} true if string is uuid
-    */
-  function isUUID (uuid) {
-    var uuidValueRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;
-    if (!uuid) return false;
-    return uuidValueRegex.test(uuid);
-  }
-
-  return {
-    validateUsername:validateUsername,
-    getUsernameAllowedChars:getUsernameAllowedChars,
-    validateName:validateName,
-    getNameAllowedChars:getNameAllowedChars,
-    validatePassword:validatePassword,
-    getPasswordAllowedChars:getPasswordAllowedChars,
-    validateEmail:validateEmail,
-    getEmailAllowedChars:getEmailAllowedChars,
-    validatePath:validatePath,
-    getPathAllowedChars:getPathAllowedChars,
-    validateTitle:validateTitle,
-    getTitleAllowedChars:getTitleAllowedChars,
-    isUUID:isUUID
-  }
-})();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/lib/MD5.min.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/lib/MD5.min.js b/deleted/dist-cov/usergrid-portal/archive/js/lib/MD5.min.js
deleted file mode 100644
index 0bfc085..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/lib/MD5.min.js
+++ /dev/null
@@ -1 +0,0 @@
-var MD5=function(a){function n(a){a=a.replace(/\r\n/g,"\n");var b="";for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);if(d<128){b+=String.fromCharCode(d)}else if(d>127&&d<2048){b+=String.fromCharCode(d>>6|192);b+=String.fromCharCode(d&63|128)}else{b+=String.fromCharCode(d>>12|224);b+=String.fromCharCode(d>>6&63|128);b+=String.fromCharCode(d&63|128)}}return b}function m(a){var b="",c="",d,e;for(e=0;e<=3;e++){d=a>>>e*8&255;c="0"+d.toString(16);b=b+c.substr(c.length-2,2)}return b}function l(a){var b;var c=a.length;var d=c+8;var e=(d-d%64)/64;var f=(e+1)*16;var g=Array(f-1);var h=0;var i=0;while(i<c){b=(i-i%4)/4;h=i%4*8;g[b]=g[b]|a.charCodeAt(i)<<h;i++}b=(i-i%4)/4;h=i%4*8;g[b]=g[b]|128<<h;g[f-2]=c<<3;g[f-1]=c>>>29;return g}function k(a,d,e,f,h,i,j){a=c(a,c(c(g(d,e,f),h),j));return c(b(a,i),d)}function j(a,d,e,g,h,i,j){a=c(a,c(c(f(d,e,g),h),j));return c(b(a,i),d)}function i(a,d,f,g,h,i,j){a=c(a,c(c(e(d,f,g),h),j));return c(b(a,i),d)}function h(a,e,f,g,h,i,j){a=c(a,c(c(d(e,f,g),h),j));re
 turn c(b(a,i),e)}function g(a,b,c){return b^(a|~c)}function f(a,b,c){return a^b^c}function e(a,b,c){return a&c|b&~c}function d(a,b,c){return a&b|~a&c}function c(a,b){var c,d,e,f,g;e=a&2147483648;f=b&2147483648;c=a&1073741824;d=b&1073741824;g=(a&1073741823)+(b&1073741823);if(c&d){return g^2147483648^e^f}if(c|d){if(g&1073741824){return g^3221225472^e^f}else{return g^1073741824^e^f}}else{return g^e^f}}function b(a,b){return a<<b|a>>>32-b}var o=Array();var p,q,r,s,t,u,v,w,x;var y=7,z=12,A=17,B=22;var C=5,D=9,E=14,F=20;var G=4,H=11,I=16,J=23;var K=6,L=10,M=15,N=21;a=n(a);o=l(a);u=1732584193;v=4023233417;w=2562383102;x=271733878;for(p=0;p<o.length;p+=16){q=u;r=v;s=w;t=x;u=h(u,v,w,x,o[p+0],y,3614090360);x=h(x,u,v,w,o[p+1],z,3905402710);w=h(w,x,u,v,o[p+2],A,606105819);v=h(v,w,x,u,o[p+3],B,3250441966);u=h(u,v,w,x,o[p+4],y,4118548399);x=h(x,u,v,w,o[p+5],z,1200080426);w=h(w,x,u,v,o[p+6],A,2821735955);v=h(v,w,x,u,o[p+7],B,4249261313);u=h(u,v,w,x,o[p+8],y,1770035416);x=h(x,u,v,w,o[p+9],z,2336552
 879);w=h(w,x,u,v,o[p+10],A,4294925233);v=h(v,w,x,u,o[p+11],B,2304563134);u=h(u,v,w,x,o[p+12],y,1804603682);x=h(x,u,v,w,o[p+13],z,4254626195);w=h(w,x,u,v,o[p+14],A,2792965006);v=h(v,w,x,u,o[p+15],B,1236535329);u=i(u,v,w,x,o[p+1],C,4129170786);x=i(x,u,v,w,o[p+6],D,3225465664);w=i(w,x,u,v,o[p+11],E,643717713);v=i(v,w,x,u,o[p+0],F,3921069994);u=i(u,v,w,x,o[p+5],C,3593408605);x=i(x,u,v,w,o[p+10],D,38016083);w=i(w,x,u,v,o[p+15],E,3634488961);v=i(v,w,x,u,o[p+4],F,3889429448);u=i(u,v,w,x,o[p+9],C,568446438);x=i(x,u,v,w,o[p+14],D,3275163606);w=i(w,x,u,v,o[p+3],E,4107603335);v=i(v,w,x,u,o[p+8],F,1163531501);u=i(u,v,w,x,o[p+13],C,2850285829);x=i(x,u,v,w,o[p+2],D,4243563512);w=i(w,x,u,v,o[p+7],E,1735328473);v=i(v,w,x,u,o[p+12],F,2368359562);u=j(u,v,w,x,o[p+5],G,4294588738);x=j(x,u,v,w,o[p+8],H,2272392833);w=j(w,x,u,v,o[p+11],I,1839030562);v=j(v,w,x,u,o[p+14],J,4259657740);u=j(u,v,w,x,o[p+1],G,2763975236);x=j(x,u,v,w,o[p+4],H,1272893353);w=j(w,x,u,v,o[p+7],I,4139469664);v=j(v,w,x,u,o[p+10],J,320
 0236656);u=j(u,v,w,x,o[p+13],G,681279174);x=j(x,u,v,w,o[p+0],H,3936430074);w=j(w,x,u,v,o[p+3],I,3572445317);v=j(v,w,x,u,o[p+6],J,76029189);u=j(u,v,w,x,o[p+9],G,3654602809);x=j(x,u,v,w,o[p+12],H,3873151461);w=j(w,x,u,v,o[p+15],I,530742520);v=j(v,w,x,u,o[p+2],J,3299628645);u=k(u,v,w,x,o[p+0],K,4096336452);x=k(x,u,v,w,o[p+7],L,1126891415);w=k(w,x,u,v,o[p+14],M,2878612391);v=k(v,w,x,u,o[p+5],N,4237533241);u=k(u,v,w,x,o[p+12],K,1700485571);x=k(x,u,v,w,o[p+3],L,2399980690);w=k(w,x,u,v,o[p+10],M,4293915773);v=k(v,w,x,u,o[p+1],N,2240044497);u=k(u,v,w,x,o[p+8],K,1873313359);x=k(x,u,v,w,o[p+15],L,4264355552);w=k(w,x,u,v,o[p+6],M,2734768916);v=k(v,w,x,u,o[p+13],N,1309151649);u=k(u,v,w,x,o[p+4],K,4149444226);x=k(x,u,v,w,o[p+11],L,3174756917);w=k(w,x,u,v,o[p+2],M,718787259);v=k(v,w,x,u,o[p+9],N,3951481745);u=c(u,q);v=c(v,r);w=c(w,s);x=c(x,t)}var O=m(u)+m(v)+m(w)+m(x);return O.toLowerCase()}
\ No newline at end of file


[27/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/css/usergrid-stripped.css
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/css/usergrid-stripped.css b/deleted/dist-cov/usergrid-portal/archive/css/usergrid-stripped.css
deleted file mode 100644
index d93058c..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/css/usergrid-stripped.css
+++ /dev/null
@@ -1,5199 +0,0 @@
-/*!
- * Bootstrap v2.0.0
- *
- * Copyright 2012 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
- */
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-nav,
-section {
-  display: block;
-}
-audio,
-canvas,
-video {
-  display: inline-block;
-  *display: inline;
-  *zoom: 1;
-}
-audio:not([controls]) {
-  display: none;
-}
-html {
-  font-size: 100%;
-  -webkit-text-size-adjust: 100%;
-  -ms-text-size-adjust: 100%;
-}
-a:focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-a:hover,
-a:active {
-  outline: 0;
-}
-sub,
-sup {
-  position: relative;
-  font-size: 75%;
-  line-height: 0;
-  vertical-align: baseline;
-}
-sup {
-  top: -0.5em;
-}
-sub {
-  bottom: -0.25em;
-}
-img {
-  max-width: 100%;
-  height: auto;
-  border: 0;
-  -ms-interpolation-mode: bicubic;
-}
-button,
-input,
-select,
-textarea {
-  margin: 0;
-  font-size: 100%;
-  vertical-align: middle;
-}
-button,
-input {
-  *overflow: visible;
-  line-height: normal;
-}
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-button,
-input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  cursor: pointer;
-  -webkit-appearance: button;
-}
-input[type="search"] {
-  -webkit-appearance: textfield;
-  -webkit-box-sizing: content-box;
-  -moz-box-sizing: content-box;
-  box-sizing: content-box;
-}
-input[type="search"]::-webkit-search-decoration,
-input[type="search"]::-webkit-search-cancel-button {
-  -webkit-appearance: none;
-}
-textarea {
-  overflow: auto;
-  vertical-align: top;
-}
-body {
-  margin: 0;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  line-height: 18px;
-  color: #333333;
-  background-color: #ffffff;
-}
-a {
-  color: #1b97d1;
-  text-decoration: none;
-}
-a:hover {
-  color: #12668d;
-  text-decoration: underline;
-}
-.row {
-  margin-left: -20px;
-  *zoom: 1;
-}
-.row:before,
-.row:after {
-  display: table;
-  content: "";
-}
-.row:after {
-  clear: both;
-}
-[class*="span"] {
-  float: left;
-  margin-left: 20px;
-}
-.span1 {
-  width: 60px;
-}
-.span2 {
-  width: 140px;
-}
-.span3 {
-  width: 220px;
-}
-.span4 {
-  width: 300px;
-}
-.span5 {
-  width: 380px;
-}
-.span6 {
-  width: 460px;
-}
-.span7 {
-  width: 540px;
-}
-.span8 {
-  width: 620px;
-}
-.span9 {
-  width: 700px;
-}
-.span10 {
-  width: 780px;
-}
-.span11 {
-  width: 860px;
-}
-.span12,
-.container {
-  width: 940px;
-}
-.offset1 {
-  margin-left: 100px;
-}
-.offset2 {
-  margin-left: 180px;
-}
-.offset3 {
-  margin-left: 260px;
-}
-.offset4 {
-  margin-left: 340px;
-}
-.offset5 {
-  margin-left: 420px;
-}
-.offset6 {
-  margin-left: 500px;
-}
-.offset7 {
-  margin-left: 580px;
-}
-.offset8 {
-  margin-left: 660px;
-}
-.offset9 {
-  margin-left: 740px;
-}
-.offset10 {
-  margin-left: 820px;
-}
-.offset11 {
-  margin-left: 900px;
-}
-.row-fluid {
-  width: 100%;
-  *zoom: 1;
-}
-.row-fluid:before,
-.row-fluid:after {
-  display: table;
-  content: "";
-}
-.row-fluid:after {
-  clear: both;
-}
-.row-fluid > [class*="span"] {
-  float: left;
-  margin-left: 2.127659574%;
-}
-.row-fluid > [class*="span"]:first-child {
-  margin-left: 0;
-}
-.row-fluid .span1 {
-  width: 6.382978723%;
-}
-.row-fluid .span2 {
-  width: 14.89361702%;
-}
-.row-fluid .span3 {
-  width: 23.404255317%;
-}
-.row-fluid .span4 {
-  width: 31.914893614%;
-}
-.row-fluid .span5 {
-  width: 40.425531911%;
-}
-.row-fluid .span6 {
-  width: 48.93617020799999%;
-}
-.row-fluid .span7 {
-  width: 57.446808505%;
-}
-.row-fluid .span8 {
-  width: 65.95744680199999%;
-}
-.row-fluid .span9 {
-  width: 74.468085099%;
-}
-.row-fluid .span10 {
-  width: 82.97872339599999%;
-}
-.row-fluid .span11 {
-  width: 91.489361693%;
-}
-.row-fluid .span12 {
-  width: 99.99999998999999%;
-}
-.container {
-  width: 940px;
-  margin-left: auto;
-  margin-right: auto;
-  *zoom: 1;
-}
-.container:before,
-.container:after {
-  display: table;
-  content: "";
-}
-.container:after {
-  clear: both;
-}
-.container-fluid {
-  padding-left: 20px;
-  padding-right: 20px;
-  *zoom: 1;
-}
-.container-fluid:before,
-.container-fluid:after {
-  display: table;
-  content: "";
-}
-.container-fluid:after {
-  clear: both;
-}
-p {
-  margin: 0 0 9px;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  line-height: 18px;
-}
-p small {
-  font-size: 11px;
-  color: #999999;
-}
-.lead {
-  margin-bottom: 18px;
-  font-size: 20px;
-  font-weight: 200;
-  line-height: 27px;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  margin: 0;
-  font-weight: bold;
-  color: #333333;
-  text-rendering: optimizelegibility;
-}
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small {
-  font-weight: normal;
-  color: #999999;
-}
-h1 {
-  font-size: 30px;
-  line-height: 36px;
-}
-h1 small {
-  font-size: 18px;
-}
-h2 {
-  font-size: 24px;
-  line-height: 36px;
-}
-h2 small {
-  font-size: 18px;
-}
-h3 {
-  line-height: 27px;
-  font-size: 18px;
-}
-h3 small {
-  font-size: 14px;
-}
-h4,
-h5,
-h6 {
-  line-height: 18px;
-}
-h4 {
-  font-size: 14px;
-}
-h4 small {
-  font-size: 12px;
-}
-h5 {
-  font-size: 12px;
-}
-h6 {
-  font-size: 11px;
-  color: #999999;
-  text-transform: uppercase;
-}
-.page-header {
-  padding-bottom: 17px;
-  margin: 18px 0;
-  border-bottom: 1px solid #eeeeee;
-}
-.page-header h1 {
-  line-height: 1;
-}
-ul,
-ol {
-  padding: 0;
-  margin: 0;
-}
-ul ul,
-ul ol,
-ol ol,
-ol ul {
-  margin-bottom: 0;
-}
-ul {
-  list-style: disc;
-}
-ol {
-  list-style: decimal;
-}
-li {
-  line-height: 18px;
-}
-ul.unstyled {
-  margin-left: 0;
-  list-style: none;
-}
-dl {
-  margin-bottom: 18px;
-}
-dt,
-dd {
-  line-height: 18px;
-}
-dt {
-  font-weight: bold;
-}
-dd {
-  margin-left: 9px;
-}
-hr {
-  margin: 18px 0;
-  border: 0;
-  border-top: 1px solid #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-strong {
-  font-weight: bold;
-}
-em {
-  font-style: italic;
-}
-.muted {
-  color: #999999;
-}
-abbr {
-  font-size: 90%;
-  text-transform: uppercase;
-  border-bottom: 1px dotted #ddd;
-  cursor: help;
-}
-blockquote {
-  padding: 0 0 0 15px;
-  margin: 0 0 18px;
-  border-left: 5px solid #eeeeee;
-}
-blockquote p {
-  margin-bottom: 0;
-  font-size: 16px;
-  font-weight: 300;
-  line-height: 22.5px;
-}
-blockquote small {
-  display: block;
-  line-height: 18px;
-  color: #999999;
-}
-blockquote small:before {
-  content: '\2014 \00A0';
-}
-blockquote.pull-right {
-  float: right;
-  padding-left: 0;
-  padding-right: 15px;
-  border-left: 0;
-  border-right: 5px solid #eeeeee;
-}
-blockquote.pull-right p,
-blockquote.pull-right small {
-  text-align: right;
-}
-q:before,
-q:after,
-blockquote:before,
-blockquote:after {
-  content: "";
-}
-address {
-  display: block;
-  margin-bottom: 18px;
-  line-height: 18px;
-  font-style: normal;
-}
-small {
-  font-size: 100%;
-}
-cite {
-  font-style: normal;
-}
-code,
-pre {
-  padding: 0 3px 2px;
-  font-family: Menlo, Monaco, "Courier New", monospace;
-  font-size: 12px;
-  color: #333333;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-code {
-  padding: 3px 4px;
-  color: #d14;
-  background-color: #f7f7f9;
-  border: 1px solid #e1e1e8;
-}
-pre {
-  display: block;
-  padding: 8.5px;
-  margin: 0 0 9px;
-  font-size: 12px;
-  line-height: 18px;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.15);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  white-space: pre;
-  white-space: pre-wrap;
-  word-break: break-all;
-}
-pre.prettyprint {
-  margin-bottom: 18px;
-}
-pre code {
-  padding: 0;
-  background-color: transparent;
-}
-form {
-  margin: 0 0 18px;
-}
-fieldset {
-  padding: 0;
-  margin: 0;
-  border: 0;
-}
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: 27px;
-  font-size: 19.5px;
-  line-height: 36px;
-  color: #333333;
-  border: 0;
-  border-bottom: 1px solid #eee;
-}
-label,
-input,
-button,
-select,
-textarea {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 18px;
-}
-label {
-  display: block;
-  margin-bottom: 5px;
-  color: #333333;
-}
-input,
-textarea,
-select,
-.uneditable-input {
-  display: inline-block;
-  width: 210px;
-  height: 18px;
-  padding: 4px;
-  margin-bottom: 9px;
-  font-size: 13px;
-  line-height: 18px;
-  color: #555555;
-  border: 1px solid #ccc;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.uneditable-textarea {
-  width: auto;
-  height: auto;
-}
-label input,
-label textarea,
-label select {
-  display: block;
-}
-input[type="image"],
-input[type="checkbox"],
-input[type="radio"] {
-  width: auto;
-  height: auto;
-  padding: 0;
-  margin: 3px 0;
-  *margin-top: 0;
-  /* IE7 */
-
-  line-height: normal;
-  border: 0;
-  cursor: pointer;
-  border-radius: 0 \0/;
-}
-input[type="file"] {
-  padding: initial;
-  line-height: initial;
-  border: initial;
-  background-color: #ffffff;
-  background-color: initial;
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  width: auto;
-  height: auto;
-}
-select,
-input[type="file"] {
-  height: 28px;
-  /* In IE7, the height of the select element cannot be changed by height, only font-size */
-
-  *margin-top: 4px;
-  /* For IE7, add top margin to align select with labels */
-
-  line-height: 28px;
-}
-select {
-  width: 220px;
-  background-color: #ffffff;
-}
-select[multiple],
-select[size] {
-  height: auto;
-}
-input[type="image"] {
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-textarea {
-  height: auto;
-}
-input[type="hidden"] {
-  display: none;
-}
-.radio,
-.checkbox {
-  padding-left: 18px;
-}
-.radio input[type="radio"],
-.checkbox input[type="checkbox"] {
-  float: left;
-  margin-left: -18px;
-}
-.controls > .radio:first-child,
-.controls > .checkbox:first-child {
-  padding-top: 5px;
-}
-.radio.inline,
-.checkbox.inline {
-  display: inline-block;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.radio.inline + .radio.inline,
-.checkbox.inline + .checkbox.inline {
-  margin-left: 10px;
-}
-.controls > .radio.inline:first-child,
-.controls > .checkbox.inline:first-child {
-  padding-top: 0;
-}
-input,
-textarea {
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
-  -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
-  -ms-transition: border linear 0.2s, box-shadow linear 0.2s;
-  -o-transition: border linear 0.2s, box-shadow linear 0.2s;
-  transition: border linear 0.2s, box-shadow linear 0.2s;
-}
-input:focus,
-textarea:focus {
-  border-color: rgba(82, 168, 236, 0.8);
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-  outline: 0;
-  outline: thin dotted \9;
-  /* IE6-8 */
-
-}
-input[type="file"]:focus,
-input[type="checkbox"]:focus,
-select:focus {
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.input-mini {
-  width: 60px;
-}
-.input-small {
-  width: 90px;
-}
-.input-medium {
-  width: 150px;
-}
-.input-large {
-  width: 210px;
-}
-.input-xlarge {
-  width: 270px;
-}
-.input-xxlarge {
-  width: 530px;
-}
-input[class*="span"],
-select[class*="span"],
-textarea[class*="span"],
-.uneditable-input {
-  float: none;
-  margin-left: 0;
-}
-input.span1,
-textarea.span1,
-.uneditable-input.span1 {
-  width: 50px;
-}
-input.span2,
-textarea.span2,
-.uneditable-input.span2 {
-  width: 130px;
-}
-input.span3,
-textarea.span3,
-.uneditable-input.span3 {
-  width: 210px;
-}
-input.span4,
-textarea.span4,
-.uneditable-input.span4 {
-  width: 290px;
-}
-input.span5,
-textarea.span5,
-.uneditable-input.span5 {
-  width: 370px;
-}
-input.span6,
-textarea.span6,
-.uneditable-input.span6 {
-  width: 450px;
-}
-input.span7,
-textarea.span7,
-.uneditable-input.span7 {
-  width: 530px;
-}
-input.span8,
-textarea.span8,
-.uneditable-input.span8 {
-  width: 610px;
-}
-input.span9,
-textarea.span9,
-.uneditable-input.span9 {
-  width: 690px;
-}
-input.span10,
-textarea.span10,
-.uneditable-input.span10 {
-  width: 770px;
-}
-input.span11,
-textarea.span11,
-.uneditable-input.span11 {
-  width: 850px;
-}
-input.span12,
-textarea.span12,
-.uneditable-input.span12 {
-  width: 930px;
-}
-input[disabled],
-select[disabled],
-textarea[disabled],
-input[readonly],
-select[readonly],
-textarea[readonly] {
-  background-color: #f5f5f5;
-  border-color: #ddd;
-  cursor: not-allowed;
-}
-.control-group.warning > label,
-.control-group.warning .help-block,
-.control-group.warning .help-inline {
-  color: #c09853;
-}
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  color: #c09853;
-  border-color: #c09853;
-}
-.control-group.warning input:focus,
-.control-group.warning select:focus,
-.control-group.warning textarea:focus {
-  border-color: #a47e3c;
-  -webkit-box-shadow: 0 0 6px #dbc59e;
-  -moz-box-shadow: 0 0 6px #dbc59e;
-  box-shadow: 0 0 6px #dbc59e;
-}
-.control-group.warning .input-prepend .add-on,
-.control-group.warning .input-append .add-on {
-  color: #c09853;
-  background-color: #fcf8e3;
-  border-color: #c09853;
-}
-.control-group.error > label,
-.control-group.error .help-block,
-.control-group.error .help-inline {
-  color: #b94a48;
-}
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  color: #b94a48;
-  border-color: #b94a48;
-}
-.control-group.error input:focus,
-.control-group.error select:focus,
-.control-group.error textarea:focus {
-  border-color: #953b39;
-  -webkit-box-shadow: 0 0 6px #d59392;
-  -moz-box-shadow: 0 0 6px #d59392;
-  box-shadow: 0 0 6px #d59392;
-}
-.control-group.error .input-prepend .add-on,
-.control-group.error .input-append .add-on {
-  color: #b94a48;
-  background-color: #f2dede;
-  border-color: #b94a48;
-}
-.control-group.success > label,
-.control-group.success .help-block,
-.control-group.success .help-inline {
-  color: #468847;
-}
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  color: #468847;
-  border-color: #468847;
-}
-.control-group.success input:focus,
-.control-group.success select:focus,
-.control-group.success textarea:focus {
-  border-color: #356635;
-  -webkit-box-shadow: 0 0 6px #7aba7b;
-  -moz-box-shadow: 0 0 6px #7aba7b;
-  box-shadow: 0 0 6px #7aba7b;
-}
-.control-group.success .input-prepend .add-on,
-.control-group.success .input-append .add-on {
-  color: #468847;
-  background-color: #dff0d8;
-  border-color: #468847;
-}
-input:focus:required:invalid,
-textarea:focus:required:invalid,
-select:focus:required:invalid {
-  color: #b94a48;
-  border-color: #ee5f5b;
-}
-input:focus:required:invalid:focus,
-textarea:focus:required:invalid:focus,
-select:focus:required:invalid:focus {
-  border-color: #e9322d;
-  -webkit-box-shadow: 0 0 6px #f8b9b7;
-  -moz-box-shadow: 0 0 6px #f8b9b7;
-  box-shadow: 0 0 6px #f8b9b7;
-}
-.form-actions {
-  padding: 17px 20px 18px;
-  margin-top: 18px;
-  margin-bottom: 18px;
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-}
-.uneditable-input {
-  display: block;
-  background-color: #ffffff;
-  border-color: #eee;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  cursor: not-allowed;
-}
-:-moz-placeholder {
-  color: #999999;
-}
-::-webkit-input-placeholder {
-  color: #999999;
-}
-.help-block {
-  margin-top: 5px;
-  margin-bottom: 0;
-  color: #999999;
-}
-.help-inline {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  margin-bottom: 9px;
-  vertical-align: middle;
-  padding-left: 5px;
-}
-.input-prepend,
-.input-append {
-  margin-bottom: 5px;
-  *zoom: 1;
-}
-.input-prepend:before,
-.input-append:before,
-.input-prepend:after,
-.input-append:after {
-  display: table;
-  content: "";
-}
-.input-prepend:after,
-.input-append:after {
-  clear: both;
-}
-.input-prepend input,
-.input-append input,
-.input-prepend .uneditable-input,
-.input-append .uneditable-input {
-  -webkit-border-radius: 0 3px 3px 0;
-  -moz-border-radius: 0 3px 3px 0;
-  border-radius: 0 3px 3px 0;
-}
-.input-prepend input:focus,
-.input-append input:focus,
-.input-prepend .uneditable-input:focus,
-.input-append .uneditable-input:focus {
-  position: relative;
-  z-index: 2;
-}
-.input-prepend .uneditable-input,
-.input-append .uneditable-input {
-  border-left-color: #ccc;
-}
-.input-prepend .add-on,
-.input-append .add-on {
-  float: left;
-  display: block;
-  width: auto;
-  min-width: 16px;
-  height: 18px;
-  margin-right: -1px;
-  padding: 4px 5px;
-  font-weight: normal;
-  line-height: 18px;
-  color: #999999;
-  text-align: center;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  -webkit-border-radius: 3px 0 0 3px;
-  -moz-border-radius: 3px 0 0 3px;
-  border-radius: 3px 0 0 3px;
-}
-.input-prepend .active,
-.input-append .active {
-  background-color: #a9dba9;
-  border-color: #46a546;
-}
-.input-prepend .add-on {
-  *margin-top: 1px;
-  /* IE6-7 */
-
-}
-.input-append input,
-.input-append .uneditable-input {
-  float: left;
-  -webkit-border-radius: 3px 0 0 3px;
-  -moz-border-radius: 3px 0 0 3px;
-  border-radius: 3px 0 0 3px;
-}
-.input-append .uneditable-input {
-  border-right-color: #ccc;
-}
-.input-append .add-on {
-  margin-right: 0;
-  margin-left: -1px;
-  -webkit-border-radius: 0 3px 3px 0;
-  -moz-border-radius: 0 3px 3px 0;
-  border-radius: 0 3px 3px 0;
-}
-.input-append input:first-child {
-  *margin-left: -160px;
-}
-.input-append input:first-child + .add-on {
-  *margin-left: -21px;
-}
-.search-query {
-  padding-left: 14px;
-  padding-right: 14px;
-  margin-bottom: 0;
-  -webkit-border-radius: 14px;
-  -moz-border-radius: 14px;
-  border-radius: 14px;
-}
-.form-search input,
-.form-inline input,
-.form-horizontal input,
-.form-search textarea,
-.form-inline textarea,
-.form-horizontal textarea,
-.form-search select,
-.form-inline select,
-.form-horizontal select,
-.form-search .help-inline,
-.form-inline .help-inline,
-.form-horizontal .help-inline,
-.form-search .uneditable-input,
-.form-inline .uneditable-input,
-.form-horizontal .uneditable-input {
-  display: inline-block;
-  margin-bottom: 0;
-}
-.form-search label,
-.form-inline label,
-.form-search .input-append,
-.form-inline .input-append,
-.form-search .input-prepend,
-.form-inline .input-prepend {
-  display: inline-block;
-}
-.form-search .input-append .add-on,
-.form-inline .input-prepend .add-on,
-.form-search .input-append .add-on,
-.form-inline .input-prepend .add-on {
-  vertical-align: middle;
-}
-.control-group {
-  margin-bottom: 9px;
-}
-.form-horizontal legend + .control-group {
-  margin-top: 18px;
-  -webkit-margin-top-collapse: separate;
-}
-.form-horizontal .control-group {
-  margin-bottom: 18px;
-  *zoom: 1;
-}
-.form-horizontal .control-group:before,
-.form-horizontal .control-group:after {
-  display: table;
-  content: "";
-}
-.form-horizontal .control-group:after {
-  clear: both;
-}
-.form-horizontal .control-group > label {
-  float: left;
-  width: 140px;
-  padding-top: 5px;
-  text-align: right;
-}
-.form-horizontal .controls {
-  margin-left: 160px;
-}
-.form-horizontal .form-actions {
-  padding-left: 160px;
-}
-table {
-  max-width: 100%;
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-.table {
-  width: 100%;
-  margin-bottom: 18px;
-}
-.table th,
-.table td {
-  padding: 8px;
-  line-height: 18px;
-  text-align: left;
-  border-top: 1px solid #ddd;
-}
-.table th {
-  font-weight: bold;
-  vertical-align: bottom;
-}
-.table td {
-  vertical-align: top;
-}
-.table thead:first-child tr th,
-.table thead:first-child tr td {
-  border-top: 0;
-}
-.table tbody + tbody {
-  border-top: 2px solid #ddd;
-}
-.table-condensed th,
-.table-condensed td {
-  padding: 4px 5px;
-}
-.table-bordered {
-  border: 1px solid #ddd;
-  border-collapse: separate;
-  *border-collapse: collapsed;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.table-bordered th + th,
-.table-bordered td + td,
-.table-bordered th + td,
-.table-bordered td + th {
-  border-left: 1px solid #ddd;
-}
-.table-bordered thead:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child td {
-  border-top: 0;
-}
-.table-bordered thead:first-child tr:first-child th:first-child,
-.table-bordered tbody:first-child tr:first-child td:first-child {
-  -webkit-border-radius: 4px 0 0 0;
-  -moz-border-radius: 4px 0 0 0;
-  border-radius: 4px 0 0 0;
-}
-.table-bordered thead:first-child tr:first-child th:last-child,
-.table-bordered tbody:first-child tr:first-child td:last-child {
-  -webkit-border-radius: 0 4px 0 0;
-  -moz-border-radius: 0 4px 0 0;
-  border-radius: 0 4px 0 0;
-}
-.table-bordered thead:last-child tr:last-child th:first-child,
-.table-bordered tbody:last-child tr:last-child td:first-child {
-  -webkit-border-radius: 0 0 0 4px;
-  -moz-border-radius: 0 0 0 4px;
-  border-radius: 0 0 0 4px;
-}
-.table-bordered thead:last-child tr:last-child th:last-child,
-.table-bordered tbody:last-child tr:last-child td:last-child {
-  -webkit-border-radius: 0 0 4px 0;
-  -moz-border-radius: 0 0 4px 0;
-  border-radius: 0 0 4px 0;
-}
-.table-striped tbody tr:nth-child(odd) td,
-.table-striped tbody tr:nth-child(odd) th {
-  background-color: #f9f9f9;
-}
-table .span1 {
-  float: none;
-  width: 44px;
-  margin-left: 0;
-}
-table .span2 {
-  float: none;
-  width: 124px;
-  margin-left: 0;
-}
-table .span3 {
-  float: none;
-  width: 204px;
-  margin-left: 0;
-}
-table .span4 {
-  float: none;
-  width: 284px;
-  margin-left: 0;
-}
-table .span5 {
-  float: none;
-  width: 364px;
-  margin-left: 0;
-}
-table .span6 {
-  float: none;
-  width: 444px;
-  margin-left: 0;
-}
-table .span7 {
-  float: none;
-  width: 524px;
-  margin-left: 0;
-}
-table .span8 {
-  float: none;
-  width: 604px;
-  margin-left: 0;
-}
-table .span9 {
-  float: none;
-  width: 684px;
-  margin-left: 0;
-}
-table .span10 {
-  float: none;
-  width: 764px;
-  margin-left: 0;
-}
-table .span11 {
-  float: none;
-  width: 844px;
-  margin-left: 0;
-}
-table .span12 {
-  float: none;
-  width: 924px;
-  margin-left: 0;
-}
-[class^="icon-"] {
-  display: inline-block;
-  width: 14px;
-  height: 14px;
-  vertical-align: text-top;
-  background-image: url(../images/glyphicons-halflings.png);
-  background-position: 14px 14px;
-  background-repeat: no-repeat;
-  *margin-right: .3em;
-}
-[class^="icon-"]:last-child {
-  *margin-left: 0;
-}
-.icon-white {
-  background-image: url(../images/glyphicons-halflings-white.png);
-}
-.icon-glass {
-  background-position: 0      0;
-}
-.icon-music {
-  background-position: -24px 0;
-}
-.icon-search {
-  background-position: -48px 0;
-}
-.icon-envelope {
-  background-position: -72px 0;
-}
-.icon-heart {
-  background-position: -96px 0;
-}
-.icon-star {
-  background-position: -120px 0;
-}
-.icon-star-empty {
-  background-position: -144px 0;
-}
-.icon-user {
-  background-position: -168px 0;
-}
-.icon-film {
-  background-position: -192px 0;
-}
-.icon-th-large {
-  background-position: -216px 0;
-}
-.icon-th {
-  background-position: -240px 0;
-}
-.icon-th-list {
-  background-position: -264px 0;
-}
-.icon-ok {
-  background-position: -288px 0;
-}
-.icon-remove {
-  background-position: -312px 0;
-}
-.icon-zoom-in {
-  background-position: -336px 0;
-}
-.icon-zoom-out {
-  background-position: -360px 0;
-}
-.icon-off {
-  background-position: -384px 0;
-}
-.icon-signal {
-  background-position: -408px 0;
-}
-.icon-cog {
-  background-position: -432px 0;
-}
-.icon-trash {
-  background-position: -456px 0;
-}
-.icon-home {
-  background-position: 0 -24px;
-}
-.icon-file {
-  background-position: -24px -24px;
-}
-.icon-time {
-  background-position: -48px -24px;
-}
-.icon-road {
-  background-position: -72px -24px;
-}
-.icon-download-alt {
-  background-position: -96px -24px;
-}
-.icon-download {
-  background-position: -120px -24px;
-}
-.icon-upload {
-  background-position: -144px -24px;
-}
-.icon-inbox {
-  background-position: -168px -24px;
-}
-.icon-play-circle {
-  background-position: -192px -24px;
-}
-.icon-repeat {
-  background-position: -216px -24px;
-}
-.icon-refresh {
-  background-position: -240px -24px;
-}
-.icon-list-alt {
-  background-position: -264px -24px;
-}
-.icon-lock {
-  background-position: -287px -24px;
-}
-.icon-flag {
-  background-position: -312px -24px;
-}
-.icon-headphones {
-  background-position: -336px -24px;
-}
-.icon-volume-off {
-  background-position: -360px -24px;
-}
-.icon-volume-down {
-  background-position: -384px -24px;
-}
-.icon-volume-up {
-  background-position: -408px -24px;
-}
-.icon-qrcode {
-  background-position: -432px -24px;
-}
-.icon-barcode {
-  background-position: -456px -24px;
-}
-.icon-tag {
-  background-position: 0 -48px;
-}
-.icon-tags {
-  background-position: -25px -48px;
-}
-.icon-book {
-  background-position: -48px -48px;
-}
-.icon-bookmark {
-  background-position: -72px -48px;
-}
-.icon-print {
-  background-position: -96px -48px;
-}
-.icon-camera {
-  background-position: -120px -48px;
-}
-.icon-font {
-  background-position: -144px -48px;
-}
-.icon-bold {
-  background-position: -167px -48px;
-}
-.icon-italic {
-  background-position: -192px -48px;
-}
-.icon-text-height {
-  background-position: -216px -48px;
-}
-.icon-text-width {
-  background-position: -240px -48px;
-}
-.icon-align-left {
-  background-position: -264px -48px;
-}
-.icon-align-center {
-  background-position: -288px -48px;
-}
-.icon-align-right {
-  background-position: -312px -48px;
-}
-.icon-align-justify {
-  background-position: -336px -48px;
-}
-.icon-list {
-  background-position: -360px -48px;
-}
-.icon-indent-left {
-  background-position: -384px -48px;
-}
-.icon-indent-right {
-  background-position: -408px -48px;
-}
-.icon-facetime-video {
-  background-position: -432px -48px;
-}
-.icon-picture {
-  background-position: -456px -48px;
-}
-.icon-pencil {
-  background-position: 0 -72px;
-}
-.icon-map-marker {
-  background-position: -24px -72px;
-}
-.icon-adjust {
-  background-position: -48px -72px;
-}
-.icon-tint {
-  background-position: -72px -72px;
-}
-.icon-edit {
-  background-position: -96px -72px;
-}
-.icon-share {
-  background-position: -120px -72px;
-}
-.icon-check {
-  background-position: -144px -72px;
-}
-.icon-move {
-  background-position: -168px -72px;
-}
-.icon-step-backward {
-  background-position: -192px -72px;
-}
-.icon-fast-backward {
-  background-position: -216px -72px;
-}
-.icon-backward {
-  background-position: -240px -72px;
-}
-.icon-play {
-  background-position: -264px -72px;
-}
-.icon-pause {
-  background-position: -288px -72px;
-}
-.icon-stop {
-  background-position: -312px -72px;
-}
-.icon-forward {
-  background-position: -336px -72px;
-}
-.icon-fast-forward {
-  background-position: -360px -72px;
-}
-.icon-step-forward {
-  background-position: -384px -72px;
-}
-.icon-eject {
-  background-position: -408px -72px;
-}
-.icon-chevron-left {
-  background-position: -432px -72px;
-}
-.icon-chevron-right {
-  background-position: -456px -72px;
-}
-.icon-plus-sign {
-  background-position: 0 -96px;
-}
-.icon-minus-sign {
-  background-position: -24px -96px;
-}
-.icon-remove-sign {
-  background-position: -48px -96px;
-}
-.icon-ok-sign {
-  background-position: -72px -96px;
-}
-.icon-question-sign {
-  background-position: -96px -96px;
-}
-.icon-info-sign {
-  background-position: -120px -96px;
-}
-.icon-screenshot {
-  background-position: -144px -96px;
-}
-.icon-remove-circle {
-  background-position: -168px -96px;
-}
-.icon-ok-circle {
-  background-position: -192px -96px;
-}
-.icon-ban-circle {
-  background-position: -216px -96px;
-}
-.icon-arrow-left {
-  background-position: -240px -96px;
-}
-.icon-arrow-right {
-  background-position: -264px -96px;
-}
-.icon-arrow-up {
-  background-position: -289px -96px;
-}
-.icon-arrow-down {
-  background-position: -312px -96px;
-}
-.icon-share-alt {
-  background-position: -336px -96px;
-}
-.icon-resize-full {
-  background-position: -360px -96px;
-}
-.icon-resize-small {
-  background-position: -384px -96px;
-}
-.icon-plus {
-  background-position: -408px -96px;
-}
-.icon-minus {
-  background-position: -433px -96px;
-}
-.icon-asterisk {
-  background-position: -456px -96px;
-}
-.icon-exclamation-sign {
-  background-position: 0 -120px;
-}
-.icon-gift {
-  background-position: -24px -120px;
-}
-.icon-leaf {
-  background-position: -48px -120px;
-}
-.icon-fire {
-  background-position: -72px -120px;
-}
-.icon-eye-open {
-  background-position: -96px -120px;
-}
-.icon-eye-close {
-  background-position: -120px -120px;
-}
-.icon-warning-sign {
-  background-position: -144px -120px;
-}
-.icon-plane {
-  background-position: -168px -120px;
-}
-.icon-calendar {
-  background-position: -192px -120px;
-}
-.icon-notifications {
-  background-position: -192px -120px;
-}
-.icon-random {
-  background-position: -216px -120px;
-}
-.icon-comment {
-  background-position: -240px -120px;
-}
-.icon-magnet {
-  background-position: -264px -120px;
-}
-.icon-chevron-up {
-  background-position: -288px -120px;
-}
-.icon-chevron-down {
-  background-position: -313px -119px;
-}
-.icon-retweet {
-  background-position: -336px -120px;
-}
-.icon-shopping-cart {
-  background-position: -360px -120px;
-}
-.icon-folder-close {
-  background-position: -384px -120px;
-}
-.icon-folder-open {
-  background-position: -408px -120px;
-}
-.icon-resize-vertical {
-  background-position: -432px -119px;
-}
-.icon-resize-horizontal {
-  background-position: -456px -118px;
-}
-.dropdown {
-  position: relative;
-}
-.dropdown-toggle {
-  *margin-bottom: -3px;
-}
-.dropdown-toggle:active,
-.open .dropdown-toggle {
-  outline: 0;
-}
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  text-indent: -99999px;
-  *text-indent: 0;
-  vertical-align: top;
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-top: 4px solid #000000;
-  opacity: 0.3;
-  filter: alpha(opacity=30);
-  content: "\2193";
-}
-.dropdown .caret {
-  margin-top: 8px;
-  margin-left: 2px;
-}
-.dropdown:hover .caret,
-.open.dropdown .caret {
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  float: left;
-  display: none;
-  min-width: 160px;
-  max-width: 220px;
-  _width: 160px;
-  padding: 4px 0;
-  margin: 0;
-  list-style: none;
-  background-color: #ffffff;
-  border-color: #ccc;
-  border-color: rgba(0, 0, 0, 0.2);
-  border-style: solid;
-  border-width: 1px;
-  -webkit-border-radius: 0 0 5px 5px;
-  -moz-border-radius: 0 0 5px 5px;
-  border-radius: 0 0 5px 5px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding;
-  background-clip: padding-box;
-  *border-right-width: 2px;
-  *border-bottom-width: 2px;
-}
-.dropdown-menu.bottom-up {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 2px;
-}
-.dropdown-menu .divider {
-  height: 1px;
-  margin: 5px 1px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-  *width: 100%;
-  *margin: -5px 0 5px;
-}
-.dropdown-menu a {
-  display: block;
-  padding: 3px 15px;
-  clear: both;
-  font-weight: normal;
-  line-height: 18px;
-  color: #555555;
-  white-space: nowrap;
-}
-.dropdown-menu li > a:hover,
-.dropdown-menu .active > a,
-.dropdown-menu .active > a:hover {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #1b97d1;
-}
-.dropdown.open {
-  *z-index: 1000;
-}
-.dropdown.open .dropdown-toggle {
-  color: #ffffff;
-  background: #ccc;
-  background: rgba(0, 0, 0, 0.3);
-}
-.dropdown.open .dropdown-menu {
-  display: block;
-}
-.typeahead {
-  margin-top: 2px;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.well {
-  min-height: 20px;
-  padding: 19px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border: 1px solid #eee;
-  border: 1px solid rgba(0, 0, 0, 0.05);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-.well blockquote {
-  border-color: #ddd;
-  border-color: rgba(0, 0, 0, 0.15);
-}
-.fade {
-  -webkit-transition: opacity 0.15s linear;
-  -moz-transition: opacity 0.15s linear;
-  -ms-transition: opacity 0.15s linear;
-  -o-transition: opacity 0.15s linear;
-  transition: opacity 0.15s linear;
-  opacity: 0;
-}
-.fade.in {
-  opacity: 1;
-}
-.collapse {
-  -webkit-transition: height 0.35s ease;
-  -moz-transition: height 0.35s ease;
-  -ms-transition: height 0.35s ease;
-  -o-transition: height 0.35s ease;
-  transition: height 0.35s ease;
-  position: relative;
-  overflow: hidden;
-  height: 0;
-}
-.collapse.in {
-  height: auto;
-}
-.close {
-  float: right;
-  font-size: 20px;
-  font-weight: bold;
-  line-height: 18px;
-  color: #000000;
-  text-shadow: 0 1px 0 #ffffff;
-  opacity: 0.2;
-  filter: alpha(opacity=20);
-}
-.close:hover {
-  color: #000000;
-  text-decoration: none;
-  opacity: 0.4;
-  filter: alpha(opacity=40);
-  cursor: pointer;
-}
-.btn {
-  display: inline-block;
-  padding: 4px 10px 4px;
-  font-size: 13px;
-  line-height: 18px;
-  color: #333333;
-  text-align: center;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
-  background-color: #fafafa;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6));
-  background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6);
-  background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-repeat: no-repeat;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);
-  border: 1px solid #ccc;
-  border-bottom-color: #bbb;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  cursor: pointer;
-  *margin-left: .3em;
-}
-.btn:first-child {
-  *margin-left: 0;
-}
-.btn:hover {
-  color: #333333;
-  text-decoration: none;
-  background-color: #e6e6e6;
-  background-position: 0 -15px;
-  -webkit-transition: background-position 0.1s linear;
-  -moz-transition: background-position 0.1s linear;
-  -ms-transition: background-position 0.1s linear;
-  -o-transition: background-position 0.1s linear;
-  transition: background-position 0.1s linear;
-}
-.btn:focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.btn.active,
-.btn:active {
-  background-image: none;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  background-color: #e6e6e6;
-  background-color: #d9d9d9 \9;
-  color: rgba(0, 0, 0, 0.5);
-  outline: 0;
-}
-.btn.disabled,
-.btn[disabled] {
-  cursor: default;
-  background-image: none;
-  background-color: #e6e6e6;
-  opacity: 0.65;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-.btn-large {
-  padding: 9px 14px;
-  font-size: 15px;
-  line-height: normal;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.btn-large .icon {
-  margin-top: 1px;
-}
-.btn-small {
-  padding: 5px 9px;
-  font-size: 11px;
-  line-height: 16px;
-}
-.btn-small .icon {
-  margin-top: -1px;
-}
-.btn-primary,
-.btn-primary:hover,
-.btn-warning,
-.btn-warning:hover,
-.btn-danger,
-.btn-danger:hover,
-.btn-success,
-.btn-success:hover,
-.btn-info,
-.btn-info:hover {
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  color: #ffffff;
-}
-.btn-primary.active,
-.btn-warning.active,
-.btn-danger.active,
-.btn-success.active,
-.btn-info.active {
-  color: rgba(255, 255, 255, 0.75);
-}
-.btn-primary {
-  background-color: #1b7fd1;
-  background-image: -moz-linear-gradient(top, #1b97d1, #1b5ad1);
-  background-image: -ms-linear-gradient(top, #1b97d1, #1b5ad1);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#1b97d1), to(#1b5ad1));
-  background-image: -webkit-linear-gradient(top, #1b97d1, #1b5ad1);
-  background-image: -o-linear-gradient(top, #1b97d1, #1b5ad1);
-  background-image: linear-gradient(top, #1b97d1, #1b5ad1);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1b97d1', endColorstr='#1b5ad1', GradientType=0);
-  border-color: #1b5ad1 #1b5ad1 #123d8d;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-primary:hover,
-.btn-primary:active,
-.btn-primary.active,
-.btn-primary.disabled,
-.btn-primary[disabled] {
-  background-color: #1b5ad1;
-}
-.btn-primary:active,
-.btn-primary.active {
-  background-color: #1547a4 \9;
-}
-.btn-warning {
-  background-color: #faa732;
-  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
-  background-image: -ms-linear-gradient(top, #fbb450, #f89406);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
-  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
-  background-image: -o-linear-gradient(top, #fbb450, #f89406);
-  background-image: linear-gradient(top, #fbb450, #f89406);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);
-  border-color: #f89406 #f89406 #ad6704;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-warning:hover,
-.btn-warning:active,
-.btn-warning.active,
-.btn-warning.disabled,
-.btn-warning[disabled] {
-  background-color: #f89406;
-}
-.btn-warning:active,
-.btn-warning.active {
-  background-color: #c67605 \9;
-}
-.btn-danger {
-  background-color: #da4f49;
-  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: linear-gradient(top, #ee5f5b, #bd362f);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);
-  border-color: #bd362f #bd362f #802420;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-danger:hover,
-.btn-danger:active,
-.btn-danger.active,
-.btn-danger.disabled,
-.btn-danger[disabled] {
-  background-color: #bd362f;
-}
-.btn-danger:active,
-.btn-danger.active {
-  background-color: #942a25 \9;
-}
-.btn-success {
-  background-color: #5bb75b;
-  background-image: -moz-linear-gradient(top, #62c462, #51a351);
-  background-image: -ms-linear-gradient(top, #62c462, #51a351);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
-  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
-  background-image: -o-linear-gradient(top, #62c462, #51a351);
-  background-image: linear-gradient(top, #62c462, #51a351);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);
-  border-color: #51a351 #51a351 #387038;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-success:hover,
-.btn-success:active,
-.btn-success.active,
-.btn-success.disabled,
-.btn-success[disabled] {
-  background-color: #51a351;
-}
-.btn-success:active,
-.btn-success.active {
-  background-color: #408140 \9;
-}
-.btn-info {
-  background-color: #49afcd;
-  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: linear-gradient(top, #5bc0de, #2f96b4);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);
-  border-color: #2f96b4 #2f96b4 #1f6377;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-info:hover,
-.btn-info:active,
-.btn-info.active,
-.btn-info.disabled,
-.btn-info[disabled] {
-  background-color: #2f96b4;
-}
-.btn-info:active,
-.btn-info.active {
-  background-color: #24748c \9;
-}
-button.btn,
-input[type="submit"].btn {
-  *padding-top: 2px;
-  *padding-bottom: 2px;
-}
-button.btn::-moz-focus-inner,
-input[type="submit"].btn::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-button.btn.large,
-input[type="submit"].btn.large {
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-button.btn.small,
-input[type="submit"].btn.small {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-.btn-group {
-  position: relative;
-  *zoom: 1;
-  *margin-left: .3em;
-}
-.btn-group:before,
-.btn-group:after {
-  display: table;
-  content: "";
-}
-.btn-group:after {
-  clear: both;
-}
-.btn-group:first-child {
-  *margin-left: 0;
-}
-.btn-group + .btn-group {
-  margin-left: 5px;
-}
-.btn-toolbar {
-  margin-top: 9px;
-  margin-bottom: 9px;
-}
-.btn-toolbar .btn-group {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-}
-.btn-group .btn {
-  position: relative;
-  float: left;
-  margin-left: -1px;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-group .btn:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-  -webkit-border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  border-bottom-left-radius: 4px;
-}
-.btn-group .btn:last-child,
-.btn-group .dropdown-toggle {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-  -webkit-border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  border-bottom-right-radius: 4px;
-}
-.btn-group .btn.large:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 6px;
-  -moz-border-radius-topleft: 6px;
-  border-top-left-radius: 6px;
-  -webkit-border-bottom-left-radius: 6px;
-  -moz-border-radius-bottomleft: 6px;
-  border-bottom-left-radius: 6px;
-}
-.btn-group .btn.large:last-child,
-.btn-group .large.dropdown-toggle {
-  -webkit-border-top-right-radius: 6px;
-  -moz-border-radius-topright: 6px;
-  border-top-right-radius: 6px;
-  -webkit-border-bottom-right-radius: 6px;
-  -moz-border-radius-bottomright: 6px;
-  border-bottom-right-radius: 6px;
-}
-.btn-group .btn:hover,
-.btn-group .btn:focus,
-.btn-group .btn:active,
-.btn-group .btn.active {
-  z-index: 2;
-}
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-.btn-group .dropdown-toggle {
-  padding-left: 8px;
-  padding-right: 8px;
-  -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  *padding-top: 5px;
-  *padding-bottom: 5px;
-}
-.btn-group.open {
-  *z-index: 1000;
-}
-.btn-group.open .dropdown-menu {
-  display: block;
-  margin-top: 1px;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.btn-group.open .dropdown-toggle {
-  background-image: none;
-  -webkit-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-.btn .caret {
-  margin-top: 7px;
-  margin-left: 0;
-}
-.btn:hover .caret,
-.open.btn-group .caret {
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.btn-primary .caret,
-.btn-danger .caret,
-.btn-info .caret,
-.btn-success .caret {
-  border-top-color: #ffffff;
-  opacity: 0.75;
-  filter: alpha(opacity=75);
-}
-.btn-small .caret {
-  margin-top: 4px;
-}
-.alert {
-  padding: 8px 35px 8px 14px;
-  margin-bottom: 18px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  background-color: #fcf8e3;
-  border: 1px solid #fbeed5;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.alert,
-.alert-heading {
-  color: #c09853;
-}
-.alert .close {
-  position: relative;
-  top: -2px;
-  right: -21px;
-  line-height: 18px;
-}
-.alert-success {
-  background-color: #dff0d8;
-  border-color: #d6e9c6;
-}
-.alert-success,
-.alert-success .alert-heading {
-  color: #468847;
-}
-.alert-danger,
-.alert-error {
-  background-color: #f2dede;
-  border-color: #eed3d7;
-}
-.alert-danger,
-.alert-error,
-.alert-danger .alert-heading,
-.alert-error .alert-heading {
-  color: #b94a48;
-}
-.alert-info {
-  background-color: #d9edf7;
-  border-color: #bce8f1;
-}
-.alert-info,
-.alert-info .alert-heading {
-  color: #3a87ad;
-}
-.alert-block {
-  padding-top: 14px;
-  padding-bottom: 14px;
-}
-.alert-block > p,
-.alert-block > ul {
-  margin-bottom: 0;
-}
-.alert-block p + p {
-  margin-top: 5px;
-}
-.nav {
-  margin-left: 0;
-  margin-bottom: 18px;
-  list-style: none;
-}
-.nav > li > a {
-  display: block;
-}
-.nav > li > a:hover {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-.nav-list {
-  padding-left: 14px;
-  padding-right: 14px;
-  margin-bottom: 0;
-}
-.nav-list > li > a,
-.nav-list .nav-header {
-  display: block;
-  padding: 3px 15px;
-  margin-left: -15px;
-  margin-right: -15px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-}
-.nav-list .nav-header {
-  font-size: 11px;
-  font-weight: bold;
-  line-height: 18px;
-  color: #999999;
-  text-transform: uppercase;
-}
-.nav-list > li + .nav-header {
-  margin-top: 9px;
-}
-.nav-list .active > a {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
-  background-color: #1b97d1;
-}
-.nav-list .icon {
-  margin-right: 2px;
-}
-
-.nav-tabs,
-.nav-pills {
-  *zoom: 1;
-}
-.nav-tabs:before,
-.nav-pills:before,
-.nav-tabs:after,
-.nav-pills:after {
-  display: table;
-  content: "";
-}
-.nav-tabs:after,
-.nav-pills:after {
-  clear: both;
-}
-.nav-tabs > li,
-.nav-pills > li {
-  float: left;
-}
-.nav-tabs > li > a,
-.nav-pills > li > a {
-  padding-right: 12px;
-  padding-left: 12px;
-  margin-right: 2px;
-  line-height: 14px;
-}
-.nav-tabs {
-  border-bottom: 1px solid #ddd;
-}
-.nav-tabs > li {
-  margin-bottom: -1px;
-}
-.nav-tabs > li > a {
-  padding-top: 9px;
-  padding-bottom: 9px;
-  border: 1px solid transparent;
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.nav-tabs > li > a:hover {
-  border-color: #eeeeee #eeeeee #dddddd;
-}
-.nav-tabs > .active > a,
-.nav-tabs > .active > a:hover {
-  color: #555555;
-  background-color: #ffffff;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-  cursor: default;
-}
-.nav-pills > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  margin-top: 2px;
-  margin-bottom: 2px;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.nav-pills .active > a,
-.nav-pills .active > a:hover {
-  color: #ffffff;
-  background-color: #1b97d1;
-}
-.nav-stacked > li {
-  float: none;
-}
-.nav-stacked > li > a {
-  margin-right: 0;
-}
-.nav-tabs.nav-stacked {
-  border-bottom: 0;
-}
-.nav-tabs.nav-stacked > li > a {
-  border: 1px solid #ddd;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.nav-tabs.nav-stacked > li:first-child > a {
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.nav-tabs.nav-stacked > li:last-child > a {
-  -webkit-border-radius: 0 0 4px 4px;
-  -moz-border-radius: 0 0 4px 4px;
-  border-radius: 0 0 4px 4px;
-}
-.nav-tabs.nav-stacked > li > a:hover {
-  border-color: #ddd;
-  z-index: 2;
-}
-.nav-pills.nav-stacked > li > a {
-  margin-bottom: 3px;
-}
-.nav-pills.nav-stacked > li:last-child > a {
-  margin-bottom: 1px;
-}
-.nav-tabs .dropdown-menu,
-.nav-pills .dropdown-menu {
-  margin-top: 1px;
-  border-width: 1px;
-}
-.nav-pills .dropdown-menu {
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.nav-tabs .dropdown-toggle .caret,
-.nav-pills .dropdown-toggle .caret {
-  border-top-color: #1b97d1;
-  margin-top: 6px;
-}
-.nav-tabs .dropdown-toggle:hover .caret,
-.nav-pills .dropdown-toggle:hover .caret {
-  border-top-color: #12668d;
-}
-.nav-tabs .active .dropdown-toggle .caret,
-.nav-pills .active .dropdown-toggle .caret {
-  border-top-color: #333333;
-}
-.nav > .dropdown.active > a:hover {
-  color: #000000;
-  cursor: pointer;
-}
-.nav-tabs .open .dropdown-toggle,
-.nav-pills .open .dropdown-toggle,
-.nav > .open.active > a:hover {
-  color: #ffffff;
-  background-color: #999999;
-  border-color: #999999;
-}
-.nav .open .caret,
-.nav .open.active .caret,
-.nav .open a:hover .caret {
-  border-top-color: #ffffff;
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.tabs-stacked .open > a:hover {
-  border-color: #999999;
-}
-.tabbable {
-  *zoom: 1;
-}
-.tabbable:before,
-.tabbable:after {
-  display: table;
-  content: "";
-}
-.tabbable:after {
-  clear: both;
-}
-.tabs-below .nav-tabs,
-.tabs-right .nav-tabs,
-.tabs-left .nav-tabs {
-  border-bottom: 0;
-}
-.tab-content > .tab-pane,
-.pill-content > .pill-pane {
-  display: none;
-}
-.tab-content > .active,
-.pill-content > .active {
-  display: block;
-}
-.tabs-below .nav-tabs {
-  border-top: 1px solid #ddd;
-}
-.tabs-below .nav-tabs > li {
-  margin-top: -1px;
-  margin-bottom: 0;
-}
-.tabs-below .nav-tabs > li > a {
-  -webkit-border-radius: 0 0 4px 4px;
-  -moz-border-radius: 0 0 4px 4px;
-  border-radius: 0 0 4px 4px;
-}
-.tabs-below .nav-tabs > li > a:hover {
-  border-bottom-color: transparent;
-  border-top-color: #ddd;
-}
-.tabs-below .nav-tabs .active > a,
-.tabs-below .nav-tabs .active > a:hover {
-  border-color: transparent #ddd #ddd #ddd;
-}
-.tabs-left .nav-tabs > li,
-.tabs-right .nav-tabs > li {
-  float: none;
-}
-.tabs-left .nav-tabs > li > a,
-.tabs-right .nav-tabs > li > a {
-  min-width: 74px;
-  margin-right: 0;
-  margin-bottom: 3px;
-}
-.tabs-left .nav-tabs {
-  float: left;
-  margin-right: 19px;
-  border-right: 1px solid #ddd;
-}
-.tabs-left .nav-tabs > li > a {
-  margin-right: -1px;
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.tabs-left .nav-tabs > li > a:hover {
-  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
-}
-.tabs-left .nav-tabs .active > a,
-.tabs-left .nav-tabs .active > a:hover {
-  border-color: #ddd transparent #ddd #ddd;
-  *border-right-color: #ffffff;
-}
-.tabs-right .nav-tabs {
-  float: right;
-  margin-left: 19px;
-  border-left: 1px solid #ddd;
-}
-.tabs-right .nav-tabs > li > a {
-  margin-left: -1px;
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.tabs-right .nav-tabs > li > a:hover {
-  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
-}
-.tabs-right .nav-tabs .active > a,
-.tabs-right .nav-tabs .active > a:hover {
-  border-color: #ddd #ddd #ddd transparent;
-  *border-left-color: #ffffff;
-}
-.navbar {
-  overflow: visible;
-  margin-bottom: 18px;
-}
-.navbar-inner {
-  padding-left: 20px;
-  padding-right: 20px;
-  background-color: #f8f8f8;
-  background-image: -moz-linear-gradient(top, #ffffff, #ededed);
-  background-image: -ms-linear-gradient(top, #ffffff, #ededed);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#ededed));
-  background-image: -webkit-linear-gradient(top, #ffffff, #ededed);
-  background-image: -o-linear-gradient(top, #ffffff, #ededed);
-  background-image: linear-gradient(top, #ffffff, #ededed);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#ededed', GradientType=0);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
-  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
-  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
-}
-.btn-navbar {
-  display: none;
-  float: right;
-  padding: 7px 10px;
-  margin-left: 5px;
-  margin-right: 5px;
-  background-color: #f8f8f8;
-  background-image: -moz-linear-gradient(top, #ffffff, #ededed);
-  background-image: -ms-linear-gradient(top, #ffffff, #ededed);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#ededed));
-  background-image: -webkit-linear-gradient(top, #ffffff, #ededed);
-  background-image: -o-linear-gradient(top, #ffffff, #ededed);
-  background-image: linear-gradient(top, #ffffff, #ededed);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#ededed', GradientType=0);
-  border-color: #ededed #ededed #c7c7c7;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-  -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-}
-.btn-navbar:hover,
-.btn-navbar:active,
-.btn-navbar.active,
-.btn-navbar.disabled,
-.btn-navbar[disabled] {
-  background-color: #ededed;
-}
-.btn-navbar:active,
-.btn-navbar.active {
-  background-color: #d4d4d4 \9;
-}
-.btn-navbar .icon-bar {
-  display: block;
-  width: 18px;
-  height: 2px;
-  background-color: #f5f5f5;
-  -webkit-border-radius: 1px;
-  -moz-border-radius: 1px;
-  border-radius: 1px;
-  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-}
-.btn-navbar .icon-bar + .icon-bar {
-  margin-top: 3px;
-}
-.nav-collapse.collapse {
-  height: auto;
-}
-.navbar .brand:hover {
-  text-decoration: none;
-}
-.navbar .brand {
-  float: left;
-  display: block;
-  padding: 8px 20px 12px;
-  margin-left: -20px;
-  font-size: 20px;
-  font-weight: 200;
-  line-height: 1;
-  color: #ffffff;
-}
-.navbar .navbar-text {
-  margin-bottom: 0;
-  line-height: 40px;
-  color: #999999;
-}
-.navbar .navbar-text a:hover {
-  color: #ffffff;
-  background-color: transparent;
-}
-.navbar .btn,
-.navbar .btn-group {
-  margin-top: 5px;
-}
-.navbar .btn-group .btn {
-  margin-top: 0;
-}
-.navbar-form {
-  margin-bottom: 0;
-  *zoom: 1;
-}
-.navbar-form:before,
-.navbar-form:after {
-  display: table;
-  content: "";
-}
-.navbar-form:after {
-  clear: both;
-}
-.navbar-form input,
-.navbar-form select {
-  display: inline-block;
-  margin-top: 5px;
-  margin-bottom: 0;
-}
-.navbar-form .radio,
-.navbar-form .checkbox {
-  margin-top: 5px;
-}
-.navbar-form input[type="image"],
-.navbar-form input[type="checkbox"],
-.navbar-form input[type="radio"] {
-  margin-top: 3px;
-}
-.navbar-search {
-  position: relative;
-  float: left;
-  margin-top: 6px;
-  margin-bottom: 0;
-}
-.navbar-search .search-query {
-  padding: 4px 9px;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 1;
-  color: #ffffff;
-  color: rgba(255, 255, 255, 0.75);
-  background: #666;
-  background: rgba(255, 255, 255, 0.3);
-  border: 1px solid #111;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
-  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
-  -webkit-transition: none;
-  -moz-transition: none;
-  -ms-transition: none;
-  -o-transition: none;
-  transition: none;
-}
-.navbar-search .search-query :-moz-placeholder {
-  color: #eeeeee;
-}
-.navbar-search .search-query ::-webkit-input-placeholder {
-  color: #eeeeee;
-}
-.navbar-search .search-query:hover {
-  color: #ffffff;
-  background-color: #999999;
-  background-color: rgba(255, 255, 255, 0.5);
-}
-.navbar-search .search-query:focus,
-.navbar-search .search-query.focused {
-  padding: 5px 10px;
-  color: #333333;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #ffffff;
-  border: 0;
-  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  outline: 0;
-}
-.navbar-fixed-top {
-  position: fixed;
-  top: 0;
-  right: 0;
-  left: 0;
-  z-index: 1030;
-}
-.navbar-fixed-top .navbar-inner {
-  padding-left: 0;
-  padding-right: 0;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.navbar .nav {
-  position: relative;
-  left: 0;
-  display: block;
-  float: left;
-  margin: 0 10px 0 0;
-}
-.navbar .nav.pull-right {
-  float: right;
-}
-.navbar .nav > li {
-  display: block;
-  float: left;
-}
-.navbar .nav > li > a {
-  float: none;
-  padding: 10px 10px 11px;
-  line-height: 19px;
-  color: #999999;
-  text-decoration: none;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.navbar .nav > li > a:hover {
-  background-color: transparent;
-  color: #ffffff;
-  text-decoration: none;
-}
-.navbar .nav .active > a,
-.navbar .nav .active > a:hover {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #ededed;
-  background-color: rgba(0, 0, 0, 0.5);
-}
-.navbar .divider-vertical {
-  height: 40px;
-  width: 1px;
-  margin: 0 9px;
-  overflow: hidden;
-  background-color: #ededed;
-  border-right: 1px solid #ffffff;
-}
-.navbar .nav.pull-right {
-  margin-left: 10px;
-  margin-right: 0;
-}
-.navbar .dropdown-menu {
-  margin-top: 1px;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.navbar .dropdown-menu:before {
-  content: '';
-  display: inline-block;
-  border-left: 7px solid transparent;
-  border-right: 7px solid transparent;
-  border-bottom: 7px solid #ccc;
-  border-bottom-color: rgba(0, 0, 0, 0.2);
-  position: absolute;
-  top: -7px;
-  left: 9px;
-}
-.navbar .dropdown-menu:after {
-  content: '';
-  display: inline-block;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-bottom: 6px solid #ffffff;
-  position: absolute;
-  top: -6px;
-  left: 10px;
-}
-.navbar .nav .dropdown-toggle .caret,
-.navbar .nav .open.dropdown .caret {
-  border-top-color: #ffffff;
-}
-.navbar .nav .active .caret {
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.navbar .nav .open > .dropdown-toggle,
-.navbar .nav .active > .dropdown-toggle,
-.navbar .nav .open.active > .dropdown-toggle {
-  background-color: transparent;
-}
-.navbar .nav .active > .dropdown-toggle:hover {
-  color: #ffffff;
-}
-.navbar .nav.pull-right .dropdown-menu {
-  left: auto;
-  right: 0;
-}
-.navbar .nav.pull-right .dropdown-menu:before {
-  left: auto;
-  right: 12px;
-}
-.navbar .nav.pull-right .dropdown-menu:after {
-  left: auto;
-  right: 13px;
-}
-.breadcrumb {
-  padding: 7px 14px;
-  margin: 0 0 18px;
-  background-color: #fbfbfb;
-  background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5);
-  background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5));
-  background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5);
-  background-image: -o-linear-gradient(top, #ffffff, #f5f5f5);
-  background-image: linear-gradient(top, #ffffff, #f5f5f5);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);
-  border: 1px solid #ddd;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-  -webkit-box-shadow: inset 0 1px 0 #ffffff;
-  -moz-box-shadow: inset 0 1px 0 #ffffff;
-  box-shadow: inset 0 1px 0 #ffffff;
-}
-.breadcrumb li {
-  display: inline;
-  text-shadow: 0 1px 0 #ffffff;
-}
-.breadcrumb .divider {
-  padding: 0 5px;
-  color: #999999;
-}
-.breadcrumb .active a {
-  color: #333333;
-}
-.pagination {
-  height: 36px;
-  margin: 18px 0;
-}
-.pagination ul {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  margin-left: 0;
-  margin-bottom: 0;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-.pagination li {
-  display: inline;
-}
-.pagination a {
-  float: left;
-  padding: 0 14px;
-  line-height: 34px;
-  text-decoration: none;
-  border: 1px solid #ddd;
-  border-left-width: 0;
-}
-.pagination a:hover,
-.pagination .active a {
-  background-color: #f5f5f5;
-}
-.pagination .active a {
-  color: #999999;
-  cursor: default;
-}
-.pagination .disabled a,
-.pagination .disabled a:hover {
-  color: #999999;
-  background-color: transparent;
-  cursor: default;
-}
-.pagination li:first-child a {
-  border-left-width: 1px;
-  -webkit-border-radius: 3px 0 0 3px;
-  -moz-border-radius: 3px 0 0 3px;
-  border-radius: 3px 0 0 3px;
-}
-.pagination li:last-child a {
-  -webkit-border-radius: 0 3px 3px 0;
-  -moz-border-radius: 0 3px 3px 0;
-  border-radius: 0 3px 3px 0;
-}
-.pagination-centered {
-  text-align: center;
-}
-.pagination-right {
-  text-align: right;
-}
-.pager {
-  margin-left: 0;
-  margin-bottom: 18px;
-  list-style: none;
-  text-align: center;
-  *zoom: 1;
-}
-.pager:before,
-.pager:after {
-  display: table;
-  content: "";
-}
-.pager:after {
-  clear: both;
-}
-.pager li {
-  display: inline;
-}
-.pager a {
-  display: inline-block;
-  padding: 5px 14px;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  -webkit-border-radius: 15px;
-  -moz-border-radius: 15px;
-  border-radius: 15px;
-}
-.pager a:hover {
-  text-decoration: none;
-  background-color: #f5f5f5;
-}
-.pager .next a {
-  float: right;
-}
-.pager .previous a {
-  float: left;
-}
-.modal-open .dropdown-menu {
-  z-index: 2050;
-}
-.modal-open .dropdown.open {
-  *z-index: 2050;
-}
-.modal-open .popover {
-  z-index: 2060;
-}
-.modal-open .tooltip {
-  z-index: 2070;
-}
-.modal-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 1040;
-  background-color: #000000;
-}
-.modal-backdrop.fade {
-  opacity: 0;
-}
-.modal-backdrop,
-.modal-backdrop.fade.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-.modal {
-  position: fixed;
-  top: 50%;
-  left: 50%;
-  z-index: 1050;
-  max-height: 500px;
-  overflow: auto;
-  width: 560px;
-  margin: -250px 0 0 -280px;
-  background-color: #ffffff;
-  border: 1px solid #999;
-  border: 1px solid rgba(0, 0, 0, 0.3);
-  *border: 1px solid #999;
-  /* IE6-7 */
-
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding-box;
-  background-clip: padding-box;
-}
-.modal.fade {
-  -webkit-transition: opacity .3s linear, top .3s ease-out;
-  -moz-transition: opacity .3s linear, top .3s ease-out;
-  -ms-transition: opacity .3s linear, top .3s ease-out;
-  -o-transition: opacity .3s linear, top .3s ease-out;
-  transition: opacity .3s linear, top .3s ease-out;
-  top: -25%;
-}
-.modal.fade.in {
-  top: 50%;
-}
-.modal-header {
-  padding: 9px 15px;
-  border-bottom: 1px solid #eee;
-}
-.modal-header .close {
-  margin-top: 2px;
-}
-.modal-body {
-  padding: 15px;
-}
-.modal-footer {
-  padding: 14px 15px 15px;
-  margin-bottom: 0;
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-  -webkit-box-shadow: inset 0 1px 0 #ffffff;
-  -moz-box-shadow: inset 0 1px 0 #ffffff;
-  box-shadow: inset 0 1px 0 #ffffff;
-  *zoom: 1;
-}
-.modal-footer:before,
-.modal-footer:after {
-  display: table;
-  content: "";
-}
-.modal-footer:after {
-  clear: both;
-}
-.modal-footer .btn {
-  float: left;
-  margin-left: 5px;
-  margin-bottom: 0;
-}
-.tooltip {
-  position: absolute;
-  z-index: 1020;
-  display: block;
-  visibility: visible;
-  padding: 5px;
-  font-size: 11px;
-  opacity: 0;
-  filter: alpha(opacity=0);
-}
-.tooltip.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-.tooltip.top {
-  margin-top: -2px;
-}
-.tooltip.right {
-  margin-left: 2px;
-}
-.tooltip.bottom {
-  margin-top: 2px;
-}
-.tooltip.left {
-  margin-left: -2px;
-}
-.tooltip.top .tooltip-arrow {
-  bottom: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-top: 5px solid #000000;
-}
-.tooltip.left .tooltip-arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-left: 5px solid #000000;
-}
-.tooltip.bottom .tooltip-arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-bottom: 5px solid #000000;
-}
-.tooltip.right .tooltip-arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-right: 5px solid #000000;
-}
-.tooltip-inner {
-  max-width: 200px;
-  padding: 3px 8px;
-  color: #ffffff;
-  text-align: center;
-  text-decoration: none;
-  background-color: #000000;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.tooltip-arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-}
-.popover {
-  position: absolute;
-  top: 0;
-  left: 0;
-  z-index: 1010;
-  display: none;
-  padding: 5px;
-}
-.popover.top {
-  margin-top: -5px;
-}
-.popover.right {
-  margin-left: 5px;
-}
-.popover.bottom {
-  margin-top: 5px;
-}
-.popover.left {
-  margin-left: -5px;
-}
-.popover.top .arrow {
-  bottom: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-top: 5px solid #000000;
-}
-.popover.right .arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-right: 5px solid #000000;
-}
-.popover.bottom .arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-bottom: 5px solid #000000;
-}
-.popover.left .arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-left: 5px solid #000000;
-}
-.popover .arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-}
-.popover-inner {
-  padding: 3px;
-  width: 280px;
-  overflow: hidden;
-  background: #000000;
-  background: rgba(0, 0, 0, 0.8);
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-}
-.popover-title {
-  padding: 9px 15px;
-  line-height: 1;
-  background-color: #f5f5f5;
-  border-bottom: 1px solid #eee;
-  -webkit-border-radius: 3px 3px 0 0;
-  -moz-border-radius: 3px 3px 0 0;
-  border-radius: 3px 3px 0 0;
-}
-.popover-content {
-  padding: 14px;
-  background-color: #ffffff;
-  -webkit-border-radius: 0 0 3px 3px;
-  -moz-border-radius: 0 0 3px 3px;
-  border-radius: 0 0 3px 3px;
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding-box;
-  background-clip: padding-box;
-}
-.popover-content p,
-.popover-content ul,
-.popover-content ol {
-  margin-bottom: 0;
-}
-.thumbnails {
-  margin-left: -20px;
-  list-style: none;
-  *zoom: 1;
-}
-.thumbnails:before,
-.thumbnails:after {
-  display: table;
-  content: "";
-}
-.thumbnails:after {
-  clear: both;
-}
-.thumbnails > li {
-  float: left;
-  margin: 0 0 18px 20px;
-}
-.thumbnail {
-  display: block;
-  padding: 4px;
-  line-height: 1;
-  border: 1px solid #ddd;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-a.thumbnail:hover {
-  border-color: #1b97d1;
-  -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-  -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-  box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-}
-.thumbnail > img {
-  display: block;
-  max-width: 100%;
-  margin-left: auto;
-  margin-right: auto;
-}
-.thumbnail .caption {
-  padding: 9px;
-}
-.label {
-  padding: 1px 3px 2px;
-  font-size: 9.75px;
-  font-weight: bold;
-  color: #ffffff;
-  text-transform: uppercase;
-  background-color: #999999;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.label-important {
-  background-color: #b94a48;
-}
-.label-warning {
-  background-color: #f89406;
-}
-.label-success {
-  background-color: #468847;
-}
-.label-info {
-  background-color: #3a87ad;
-}
-@-webkit-keyframes progress-bar-stripes {
-  from {
-    background-position: 0 0;
-  }
-  to {
-    background-position: 40px 0;
-  }
-}
-@-moz-keyframes progress-bar-stripes {
-  from {
-    background-position: 0 0;
-  }
-  to {
-    background-position: 40px 0;
-  }
-}
-@keyframes progress-bar-stripes {
-  from {
-    background-position: 0 0;
-  }
-  to {
-    background-position: 40px 0;
-  }
-}
-.progress {
-  overflow: hidden;
-  height: 18px;
-  margin-bottom: 18px;
-  background-color: #f7f7f7;
-  background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
-  background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.progress .bar {
-  width: 0%;
-  height: 18px;
-  color: #ffffff;
-  font-size: 12px;
-  text-align: center;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #0e90d2;
-  background-image: -moz-linear-gradient(top, #149bdf, #0480be);
-  background-image: -ms-linear-gradient(top, #149bdf, #0480be);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
-  background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
-  background-image: -o-linear-gradient(top, #149bdf, #0480be);
-  background-image: linear-gradient(top, #149bdf, #0480be);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);
-  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-  -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-  -webkit-transition: width 0.6s ease;
-  -moz-transition: width 0.6s ease;
-  -ms-transition: width 0.6s ease;
-  -o-transition: width 0.6s ease;
-  transition: width 0.6s ease;
-}
-.progress-striped .bar {
-  background-color: #62c462;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  -webkit-background-size: 40px 40px;
-  -moz-background-size: 40px 40px;
-  -o-background-size: 40px 40px;
-  background-size: 40px 40px;
-}
-.progress.active .bar {
-  -webkit-animation: progress-bar-stripes 2s linear infinite;
-  -moz-animation: progress-bar-stripes 2s linear infinite;
-  animation: progress-bar-stripes 2s linear infinite;
-}
-.progress-danger .bar {
-  background-color: #dd514c;
-  background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: linear-gradient(top, #ee5f5b, #c43c35);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
-}
-.progress-danger.progress-striped .bar {
-  background-color: #ee5f5b;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.progress-success .bar {
-  background-color: #5eb95e;
-  background-image: -moz-linear-gradient(top, #62c462, #57a957);
-  background-image: -ms-linear-gradient(top, #62c462, #57a957);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
-  background-image: -webkit-linear-gradient(top, #62c462, #57a957);
-  background-image: -o-linear-gradient(top, #62c462, #57a957);
-  background-image: linear-gradient(top, #62c462, #57a957);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
-}
-.progress-success.progress-striped .bar {
-  background-color: #62c462;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.progress-info .bar {
-  background-color: #4bb1cf;
-  background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: linear-gradient(top, #5bc0de, #339bb9);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);
-}
-.progress-info.progress-striped .bar {
-  background-color: #5bc0de;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.accordion {
-  margin-bottom: 18px;
-}
-.accordion-group {
-  margin-bottom: 2px;
-  border: 1px solid #e5e5e5;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.accordion-heading {
-  border-bottom: 0;
-}
-.accordion-heading .accordion-toggle {
-  display: block;
-  padding: 8px 15px;
-}
-.accordion-inner {
-  padding: 9px 15px;
-  border-top: 1px solid #e5e5e5;
-}
-.carousel {
-  position: relative;
-  margin-bottom: 18px;
-  line-height: 1;
-}
-.carousel-inner {
-  overflow: hidden;
-  width: 100%;
-  position: relative;
-}
-.carousel .item {
-  display: none;
-  position: relative;
-  -webkit-transition: 0.6s ease-in-out left;
-  -moz-transition: 0.6s ease-in-out left;
-  -ms-transition: 0.6s ease-in-out left;
-  -o-transition: 0.6s ease-in-out left;
-  transition: 0.6s ease-in-out left;
-}
-.carousel .item > img {
-  display: block;
-  line-height: 1;
-}
-.carousel .active,
-.carousel .next,
-.carousel .prev {
-  display: block;
-}
-.carousel .active {
-  left: 0;
-}
-.carousel .next,
-.carousel .prev {
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-.carousel .next {
-  left: 100%;
-}
-.carousel .prev {
-  left: -100%;
-}
-.carousel .next.left,
-.carousel .prev.right {
-  left: 0;
-}
-.carousel .active.left {
-  left: -100%;
-}
-.carousel .active.right {
-  left: 100%;
-}
-.carousel-control {
-  position: absolute;
-  top: 40%;
-  left: 15px;
-  width: 40px;
-  height: 40px;
-  margin-top: -20px;
-  font-size: 60px;
-  font-weight: 100;
-  line-height: 30px;
-  color: #ffffff;
-  text-align: center;
-  background: #222222;
-  border: 3px solid #ffffff;
-  -webkit-border-radius: 23px;
-  -moz-border-radius: 23px;
-  border-radius: 23px;
-  opacity: 0.5;
-  filter: alpha(opacity=50);
-}
-.carousel-control.right {
-  left: auto;
-  right: 15px;
-}
-.carousel-control:hover {
-  color: #ffffff;
-  text-decoration: none;
-  opacity: 0.9;
-  filter: alpha(opacity=90);
-}
-.carousel-caption {
-  position: absolute;
-  left: 0;
-  right: 0;
-  bottom: 0;
-  padding: 10px 15px 5px;
-  background: #333333;
-  background: rgba(0, 0, 0, 0.75);
-}
-.carousel-caption h4,
-.carousel-caption p {
-  color: #ffffff;
-}
-.hero-unit {
-  padding: 60px;
-  margin-bottom: 30px;
-  background-color: #f5f5f5;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.hero-unit h1 {
-  margin-bottom: 0;
-  font-size: 60px;
-  line-height: 1;
-  letter-spacing: -1px;
-}
-.hero-unit p {
-  font-size: 18px;
-  font-weight: 200;
-  line-height: 27px;
-}
-.pull-right {
-  float: right;
-}
-.pull-left {
-  float: left;
-}
-.hide {
-  display: none;
-}
-.show {
-  display: block;
-}
-.invisible {
-  visibility: hidden;
-}
-a {
-  color: #000000;
-}
-html,
-body {
-  height: 100%;
-  min-width: 640px;
-}
-.title {
-  font-size: 17px;
-}
-.thingy {
-  margin-bottom: 0px !important;
-  padding: 10px 10px 10px 0!important;
-  border-radius: 0px;
-  min-width: 440px;
-}
-.thingy .gravatar50 {
-  position: relative;
-  float: left;
-  margin-top: -15px;
-  right: 5px;
-}
-.thingy .app_title {
-  padding-right: 20px;
-}
-.thingy .bar a {
-  float: right;
-}
-.thingy .button {
-  margin-top: -5px;
-  min-width: 150px;
-}
-.thingy .btn-primary {
-  color: #ffffff;
-}
-.monospace {
-  font-family: monospace !important;
-}
-#selectedApp {
-  font-size: 16px;
-  cursor: pointer;
-  overflow: hidden;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-}
-#fullContainer {
-  position: relative;
-  /* needed for footer positioning*/
-
-  height: auto !important;
-  /* real browsers */
-
-  min-height: 100%;
-  /* real browsers */
-
-  height: 100%;
-  /* IE6: treaded as min-height*/
-
-  min-width: 640px;
-  max-width: 1280px;
-}
-.header-menus {
-  margin: 0 auto;
-}
-#pages {
-  padding: 0;
-}
-#pages > div {
-  display: none;
-}
-#pages .alert-error {
-  display: none;
-}
-#right a {
-  color: #1b97d1;
-  font-weight: 400;
-}
-#right a:visited {
-  color: #1b97d1;
-  font-weight: 400;
-}
-#copyright {
-  padding: 5px;
-}
-a {
-  cursor: pointer;
-}
-a:link {
-  color: #111;
-  text-decoration: none;
-}
-a:visited {
-  color: #000;
-  text-decoration: none;
-}
-a:hover {
-  color: #ff4300;
-  text-decoration: none;
-}
-a:active {
-  color: #000;
-  text-decoration: none;
-}
-.clear {
-  clear: both;
-}
-.marginless {
-  margin: 0 !important;
-}
-.navbar.navbar-fixed-top:before {
-  content: " ";
-  display: block;
-  background: #F93F00;
-  overflow: hidden;
-  width: 100%;
-  height: 8px;
-  margin-bottom: -8px;
-  position: absolute;
-  background-image: -moz-linear-gradient(top, #ff4300, #f03800);
-  background-image: -ms-linear-gradient(top, #ff4300, #f03800);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ff4300), to(#f03800));
-  background-image: -webkit-linear-gradient(top, #ff4300, #f03800);
-  background-repeat: repeat-x;
-  bottom: 8px;
-  left: 0px;
-}
-.navbar {
-  height: 48px;
-  min-width: 660px;
-  background-color: #ff4300;
-  margin: 0px 1px 20px 1px;
-}
-.navbar .navbar-inner {
-  display: none;
-}
-.navbar .navbar-inner b.caret {
-  position: relative;
-  display: inline-block;
-  float: left;
-  top: 48px;
-  left: -83px;
-  border-top: 8px solid #f03800;
-  border-left: 8px solid transparent;
-  border-right: 8px solid transparent;
-  opacity: 1;
-}
-.navbar h1,
-.navbar h2 {
-  display: inline;
-  float: left;
-  color: #ffffff;
-  font-weight: normal;
-}
-.navbar h1 {
-  height: 32px;
-  width: 64px;
-  overflow: hidden;
-  position: relative;
-  color: transparent !important;
-  margin: 0 15px;
-  padding-top: 8px;
-}
-.navbar h2 {
-  font-size: 13px;
-  padding: 5px;
-  line-height: 35px;
-  padding-top: 8px;
-  color: #ffffff;
-}
-.navbar h2 a {
-  color: #ffffff;
-}
-.navbar .secondary-nav {
-  float: right;
-}
-.navbar .nav li a {
-  text-shadow: 0 0px 0 white;
-  padding: 13px 10px 11px;
-  font-weight: normal;
-  color: #ffffff;
-  line-height: 24px;
-}
-.navbar .nav li #console-link:hover {
-  background-color: transparent;
-}
-.navbar .nav .dropdown-toggle span {
-  margin-left: 5px;
-}
-.navbar .nav .dropdown-toggle .caret {
-  margin-top: 13px;
-}
-.navbar .nav .dropdown-menu a {
-  line-height: 18px;
-  color: #000000;
-  padding: 3px 15px;
-}
-.navbar .nav .dropdown-menu a:hover {
-  color: #ffffff;
-  background-color: #1b97d1;
-}
-.navbar .nav .active {
-  background-color: #b22714 !important;
-}
-.navbar .nav .active .go-home {
-  background-color: transparent;
-}
-.navbar .nav .active .go-home:hover {
-  background-color: transparent;
-}
-.navbar .nav .active > a {
-  color: #ffffff;
-}
-.navbar .nav .active > a .caret {
-  opacity: 0.7;
-}
-.main-nav {
-  margin: 0px;
-}
-.sub-nav {
-  position: fixed;
-  top: 42px

<TRUNCATED>

[14/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/lib/date.min.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/lib/date.min.js b/deleted/dist-cov/usergrid-portal/archive/js/lib/date.min.js
deleted file mode 100644
index 261327a..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/lib/date.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-Date.CultureInfo={name:"en-US",englishName:"English (United States)",nativeName:"English (United States)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"mdy",formatPatterns:{shortDate:"M/d/yyyy",longDate:"dddd, MMMM dd, yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, MMMM dd, yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"
 },regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\+|aft(er)?|from|hence)/i,subtract:/^(\-|bef(ore)?|ago)/i,yesterday:/^yes(terday)?/i,today:/^t(od(ay)?)?/i,tomorrow:/^tom(orrow)?/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^mn|min(ute)?s?/i,hour:/^h(our)?s?/i,week:/^w(eek)?s?/i,month:/^m(onth)?s?/i,day:/^d(ay)?s?/i,year:/^y(ear)?s?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\.?m?\.?|p\.?m?\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\s*(\+|\-)\s*\d\d\d\d?)|gmt|utc)/i,ordinalSuffix:/^\s*(st|nd|rd|th)/i,timeContext:/^\s*(\:|a(?!u|p)|p
 )/i},timezones:[{name:"UTC",offset:"-000"},{name:"GMT",offset:"-000"},{name:"EST",offset:"-0500"},{name:"EDT",offset:"-0400"},{name:"CST",offset:"-0600"},{name:"CDT",offset:"-0500"},{name:"MST",offset:"-0700"},{name:"MDT",offset:"-0600"},{name:"PST",offset:"-0800"},{name:"PDT",offset:"-0700"}]};(function(){var a=Date,b=a.prototype,c=a.CultureInfo,d=function(a,b){if(!b){b=2}return("000"+a).slice(b*-1)};b.clearTime=function(){this.setHours(0);this.setMinutes(0);this.setSeconds(0);this.setMilliseconds(0);return this};b.setTimeToNow=function(){var a=new Date;this.setHours(a.getHours());this.setMinutes(a.getMinutes());this.setSeconds(a.getSeconds());this.setMilliseconds(a.getMilliseconds());return this};a.today=function(){return(new Date).clearTime()};a.compare=function(a,b){if(isNaN(a)||isNaN(b)){throw new Error(a+" - "+b)}else if(a instanceof Date&&b instanceof Date){return a<b?-1:a>b?1:0}else{throw new TypeError(a+" - "+b)}};a.equals=function(a,b){return a.compareTo(b)===0};a.getDayNu
 mberFromName=function(a){var b=c.dayNames,d=c.abbreviatedDayNames,e=c.shortestDayNames,f=a.toLowerCase();for(var g=0;g<b.length;g++){if(b[g].toLowerCase()==f||d[g].toLowerCase()==f||e[g].toLowerCase()==f){return g}}return-1};a.getMonthNumberFromName=function(a){var b=c.monthNames,d=c.abbreviatedMonthNames,e=a.toLowerCase();for(var f=0;f<b.length;f++){if(b[f].toLowerCase()==e||d[f].toLowerCase()==e){return f}}return-1};a.isLeapYear=function(a){return a%4===0&&a%100!==0||a%400===0};a.getDaysInMonth=function(b,c){return[31,a.isLeapYear(b)?29:28,31,30,31,30,31,31,30,31,30,31][c]};a.getTimezoneAbbreviation=function(a){var b=c.timezones,d;for(var e=0;e<b.length;e++){if(b[e].offset===a){return b[e].name}}return null};a.getTimezoneOffset=function(a){var b=c.timezones,d;for(var e=0;e<b.length;e++){if(b[e].name===a.toUpperCase()){return b[e].offset}}return null};b.clone=function(){return new Date(this.getTime())};b.compareTo=function(a){return Date.compare(this,a)};b.equals=function(a){return
  Date.equals(this,a||new Date)};b.between=function(a,b){return this.getTime()>=a.getTime()&&this.getTime()<=b.getTime()};b.isAfter=function(a){return this.compareTo(a||new Date)===1};b.isBefore=function(a){return this.compareTo(a||new Date)===-1};b.isToday=function(){return this.isSameDay(new Date)};b.isSameDay=function(a){return this.clone().clearTime().equals(a.clone().clearTime())};b.addMilliseconds=function(a){this.setMilliseconds(this.getMilliseconds()+a);return this};b.addSeconds=function(a){return this.addMilliseconds(a*1e3)};b.addMinutes=function(a){return this.addMilliseconds(a*6e4)};b.addHours=function(a){return this.addMilliseconds(a*36e5)};b.addDays=function(a){this.setDate(this.getDate()+a);return this};b.addWeeks=function(a){return this.addDays(a*7)};b.addMonths=function(b){var c=this.getDate();this.setDate(1);this.setMonth(this.getMonth()+b);this.setDate(Math.min(c,a.getDaysInMonth(this.getFullYear(),this.getMonth())));return this};b.addYears=function(a){return this.a
 ddMonths(a*12)};b.add=function(a){if(typeof a=="number"){this._orient=a;return this}var b=a;if(b.milliseconds){this.addMilliseconds(b.milliseconds)}if(b.seconds){this.addSeconds(b.seconds)}if(b.minutes){this.addMinutes(b.minutes)}if(b.hours){this.addHours(b.hours)}if(b.weeks){this.addWeeks(b.weeks)}if(b.months){this.addMonths(b.months)}if(b.years){this.addYears(b.years)}if(b.days){this.addDays(b.days)}return this};var e,f,g;b.getWeek=function(){var a,b,c,d,h,i,j,k,l,m;e=!e?this.getFullYear():e;f=!f?this.getMonth()+1:f;g=!g?this.getDate():g;if(f<=2){a=e-1;b=(a/4|0)-(a/100|0)+(a/400|0);c=((a-1)/4|0)-((a-1)/100|0)+((a-1)/400|0);l=b-c;h=0;i=g-1+31*(f-1)}else{a=e;b=(a/4|0)-(a/100|0)+(a/400|0);c=((a-1)/4|0)-((a-1)/100|0)+((a-1)/400|0);l=b-c;h=l+1;i=g+(153*(f-3)+2)/5+58+l}j=(a+b)%7;d=(i+j-h)%7;k=i+3-d|0;if(k<0){m=53-((j-l)/5|0)}else if(k>364+l){m=1}else{m=(k/7|0)+1}e=f=g=null;return m};b.getISOWeek=function(){e=this.getUTCFullYear();f=this.getUTCMonth()+1;g=this.getUTCDate();return d(this.
 getWeek())};b.setWeek=function(a){return this.moveToDayOfWeek(1).addWeeks(a-this.getWeek())};a._validate=function(a,b,c,d){if(typeof a=="undefined"){return false}else if(typeof a!="number"){throw new TypeError(a+" is not a Number.")}else if(a<b||a>c){throw new RangeError(a+" is not a valid value for "+d+".")}return true};a.validateMillisecond=function(b){return a._validate(b,0,999,"millisecond")};a.validateSecond=function(b){return a._validate(b,0,59,"second")};a.validateMinute=function(b){return a._validate(b,0,59,"minute")};a.validateHour=function(b){return a._validate(b,0,23,"hour")};a.validateDay=function(b,c,d){return a._validate(b,1,a.getDaysInMonth(c,d),"day")};a.validateMonth=function(b){return a._validate(b,0,11,"month")};a.validateYear=function(b){return a._validate(b,0,9999,"year")};b.set=function(b){if(a.validateMillisecond(b.millisecond)){this.addMilliseconds(b.millisecond-this.getMilliseconds())}if(a.validateSecond(b.second)){this.addSeconds(b.second-this.getSeconds())
 }if(a.validateMinute(b.minute)){this.addMinutes(b.minute-this.getMinutes())}if(a.validateHour(b.hour)){this.addHours(b.hour-this.getHours())}if(a.validateMonth(b.month)){this.addMonths(b.month-this.getMonth())}if(a.validateYear(b.year)){this.addYears(b.year-this.getFullYear())}if(a.validateDay(b.day,this.getFullYear(),this.getMonth())){this.addDays(b.day-this.getDate())}if(b.timezone){this.setTimezone(b.timezone)}if(b.timezoneOffset){this.setTimezoneOffset(b.timezoneOffset)}if(b.week&&a._validate(b.week,0,53,"week")){this.setWeek(b.week)}return this};b.moveToFirstDayOfMonth=function(){return this.set({day:1})};b.moveToLastDayOfMonth=function(){return this.set({day:a.getDaysInMonth(this.getFullYear(),this.getMonth())})};b.moveToNthOccurrence=function(a,b){var c=0;if(b>0){c=b-1}else if(b===-1){this.moveToLastDayOfMonth();if(this.getDay()!==a){this.moveToDayOfWeek(a,-1)}return this}return this.moveToFirstDayOfMonth().addDays(-1).moveToDayOfWeek(a,+1).addWeeks(c)};b.moveToDayOfWeek=func
 tion(a,b){var c=(a-this.getDay()+7*(b||+1))%7;return this.addDays(c===0?c+=7*(b||+1):c)};b.moveToMonth=function(a,b){var c=(a-this.getMonth()+12*(b||+1))%12;return this.addMonths(c===0?c+=12*(b||+1):c)};b.getOrdinalNumber=function(){return Math.ceil((this.clone().clearTime()-new Date(this.getFullYear(),0,1))/864e5)+1};b.getTimezone=function(){return a.getTimezoneAbbreviation(this.getUTCOffset())};b.setTimezoneOffset=function(a){var b=this.getTimezoneOffset(),c=Number(a)*-6/10;return this.addMinutes(c-b)};b.setTimezone=function(b){return this.setTimezoneOffset(a.getTimezoneOffset(b))};b.hasDaylightSavingTime=function(){return Date.today().set({month:0,day:1}).getTimezoneOffset()!==Date.today().set({month:6,day:1}).getTimezoneOffset()};b.isDaylightSavingTime=function(){return this.hasDaylightSavingTime()&&(new Date).getTimezoneOffset()===Date.today().set({month:6,day:1}).getTimezoneOffset()};b.getUTCOffset=function(){var a=this.getTimezoneOffset()*-10/6,b;if(a<0){b=(a-1e4).toString();
 return b.charAt(0)+b.substr(2)}else{b=(a+1e4).toString();return"+"+b.substr(1)}};b.getElapsed=function(a){return(a||new Date)-this};if(!b.toISOString){b.toISOString=function(){function a(a){return a<10?"0"+a:a}return'"'+this.getUTCFullYear()+"-"+a(this.getUTCMonth()+1)+"-"+a(this.getUTCDate())+"T"+a(this.getUTCHours())+":"+a(this.getUTCMinutes())+":"+a(this.getUTCSeconds())+'Z"'}}b._toString=b.toString;b.toString=function(a){var b=this;if(a&&a.length==1){var e=c.formatPatterns;b.t=b.toString;switch(a){case"d":return b.t(e.shortDate);case"D":return b.t(e.longDate);case"F":return b.t(e.fullDateTime);case"m":return b.t(e.monthDay);case"r":return b.t(e.rfc1123);case"s":return b.t(e.sortableDateTime);case"t":return b.t(e.shortTime);case"T":return b.t(e.longTime);case"u":return b.t(e.universalSortableDateTime);case"y":return b.t(e.yearMonth)}}var f=function(a){switch(a*1){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th"}};return a?a.
 replace(/(\\)?(dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|S)/g,function(a){if(a.charAt(0)==="\\"){return a.replace("\\","")}b.h=b.getHours;switch(a){case"hh":return d(b.h()<13?b.h()===0?12:b.h():b.h()-12);case"h":return b.h()<13?b.h()===0?12:b.h():b.h()-12;case"HH":return d(b.h());case"H":return b.h();case"mm":return d(b.getMinutes());case"m":return b.getMinutes();case"ss":return d(b.getSeconds());case"s":return b.getSeconds();case"yyyy":return d(b.getFullYear(),4);case"yy":return d(b.getFullYear());case"dddd":return c.dayNames[b.getDay()];case"ddd":return c.abbreviatedDayNames[b.getDay()];case"dd":return d(b.getDate());case"d":return b.getDate();case"MMMM":return c.monthNames[b.getMonth()];case"MMM":return c.abbreviatedMonthNames[b.getMonth()];case"MM":return d(b.getMonth()+1);case"M":return b.getMonth()+1;case"t":return b.h()<12?c.amDesignator.substring(0,1):c.pmDesignator.substring(0,1);case"tt":return b.h()<12?c.amDesignator:c.pmDesignator;case"S":return f(b.getDate());default:
 return a}}):this._toString()}})();(function(){var a=Date,b=a.prototype,c=a.CultureInfo,d=Number.prototype;b._orient=+1;b._nth=null;b._is=false;b._same=false;b._isSecond=false;d._dateElement="day";b.next=function(){this._orient=+1;return this};a.next=function(){return a.today().next()};b.last=b.prev=b.previous=function(){this._orient=-1;return this};a.last=a.prev=a.previous=function(){return a.today().last()};b.is=function(){this._is=true;return this};b.same=function(){this._same=true;this._isSecond=false;return this};b.today=function(){return this.same().day()};b.weekday=function(){if(this._is){this._is=false;return!this.is().sat()&&!this.is().sun()}return false};b.at=function(b){return typeof b==="string"?a.parse(this.toString("d")+" "+b):this.set(b)};d.fromNow=d.after=function(a){var b={};b[this._dateElement]=this;return(!a?new Date:a.clone()).add(b)};d.ago=d.before=function(a){var b={};b[this._dateElement]=this*-1;return(!a?new Date:a.clone()).add(b)};var e="sunday monday tuesday
  wednesday thursday friday saturday".split(/\s/),f="january february march april may june july august september october november december".split(/\s/),g="Millisecond Second Minute Hour Day Week Month Year".split(/\s/),h="Milliseconds Seconds Minutes Hours Date Week Month FullYear".split(/\s/),i="final first second third fourth fifth".split(/\s/),j;b.toObject=function(){var a={};for(var b=0;b<g.length;b++){a[g[b].toLowerCase()]=this["get"+h[b]]()}return a};a.fromObject=function(a){a.week=null;return Date.today().set(a)};var k=function(b){return function(){if(this._is){this._is=false;return this.getDay()==b}if(this._nth!==null){if(this._isSecond){this.addSeconds(this._orient*-1)}this._isSecond=false;var c=this._nth;this._nth=null;var d=this.clone().moveToLastDayOfMonth();this.moveToNthOccurrence(b,c);if(this>d){throw new RangeError(a.getDayName(b)+" does not occur "+c+" times in the month of "+a.getMonthName(d.getMonth())+" "+d.getFullYear()+".")}return this}return this.moveToDayOfWee
 k(b,this._orient)}};var l=function(b){return function(){var d=a.today(),e=b-d.getDay();if(b===0&&c.firstDayOfWeek===1&&d.getDay()!==0){e=e+7}return d.addDays(e)}};for(var m=0;m<e.length;m++){a[e[m].toUpperCase()]=a[e[m].toUpperCase().substring(0,3)]=m;a[e[m]]=a[e[m].substring(0,3)]=l(m);b[e[m]]=b[e[m].substring(0,3)]=k(m)}var n=function(a){return function(){if(this._is){this._is=false;return this.getMonth()===a}return this.moveToMonth(a,this._orient)}};var o=function(b){return function(){return a.today().set({month:b,day:1})}};for(var p=0;p<f.length;p++){a[f[p].toUpperCase()]=a[f[p].toUpperCase().substring(0,3)]=p;a[f[p]]=a[f[p].substring(0,3)]=o(p);b[f[p]]=b[f[p].substring(0,3)]=n(p)}var q=function(a){return function(){if(this._isSecond){this._isSecond=false;return this}if(this._same){this._same=this._is=false;var b=this.toObject(),c=(arguments[0]||new Date).toObject(),d="",e=a.toLowerCase();for(var f=g.length-1;f>-1;f--){d=g[f].toLowerCase();if(b[d]!=c[d]){return false}if(e==d){br
 eak}}return true}if(a.substring(a.length-1)!="s"){a+="s"}return this["add"+a](this._orient)}};var r=function(a){return function(){this._dateElement=a;return this}};for(var s=0;s<g.length;s++){j=g[s].toLowerCase();b[j]=b[j+"s"]=q(g[s]);d[j]=d[j+"s"]=r(j)}b._ss=q("Second");var t=function(a){return function(b){if(this._same){return this._ss(arguments[0])}if(b||b===0){return this.moveToNthOccurrence(b,a)}this._nth=a;if(a===2&&(b===undefined||b===null)){this._isSecond=true;return this.addSeconds(this._orient)}return this}};for(var u=0;u<i.length;u++){b[i[u]]=u===0?t(-1):t(u)}})();(function(){Date.Parsing={Exception:function(a){this.message="Parse error at '"+a.substring(0,10)+" ...'"}};var a=Date.Parsing;var b=a.Operators={rtoken:function(b){return function(c){var d=c.match(b);if(d){return[d[0],c.substring(d[0].length)]}else{throw new a.Exception(c)}}},token:function(a){return function(a){return b.rtoken(new RegExp("^s*"+a+"s*"))(a)}},stoken:function(a){return b.rtoken(new RegExp("^"+a))
 },until:function(a){return function(b){var c=[],d=null;while(b.length){try{d=a.call(this,b)}catch(e){c.push(d[0]);b=d[1];continue}break}return[c,b]}},many:function(a){return function(b){var c=[],d=null;while(b.length){try{d=a.call(this,b)}catch(e){return[c,b]}c.push(d[0]);b=d[1]}return[c,b]}},optional:function(a){return function(b){var c=null;try{c=a.call(this,b)}catch(d){return[null,b]}return[c[0],c[1]]}},not:function(b){return function(c){try{b.call(this,c)}catch(d){return[null,c]}throw new a.Exception(c)}},ignore:function(a){return a?function(b){var c=null;c=a.call(this,b);return[null,c[1]]}:null},product:function(){var a=arguments[0],c=Array.prototype.slice.call(arguments,1),d=[];for(var e=0;e<a.length;e++){d.push(b.each(a[e],c))}return d},cache:function(b){var c={},d=null;return function(e){try{d=c[e]=c[e]||b.call(this,e)}catch(f){d=c[e]=f}if(d instanceof a.Exception){throw d}else{return d}}},any:function(){var b=arguments;return function(c){var d=null;for(var e=0;e<b.length;e+
 +){if(b[e]==null){continue}try{d=b[e].call(this,c)}catch(f){d=null}if(d){return d}}throw new a.Exception(c)}},each:function(){var b=arguments;return function(c){var d=[],e=null;for(var f=0;f<b.length;f++){if(b[f]==null){continue}try{e=b[f].call(this,c)}catch(g){throw new a.Exception(c)}d.push(e[0]);c=e[1]}return[d,c]}},all:function(){var a=arguments,b=b;return b.each(b.optional(a))},sequence:function(c,d,e){d=d||b.rtoken(/^\s*/);e=e||null;if(c.length==1){return c[0]}return function(b){var f=null,g=null;var h=[];for(var i=0;i<c.length;i++){try{f=c[i].call(this,b)}catch(j){break}h.push(f[0]);try{g=d.call(this,f[1])}catch(k){g=null;break}b=g[1]}if(!f){throw new a.Exception(b)}if(g){throw new a.Exception(g[1])}if(e){try{f=e.call(this,f[1])}catch(l){throw new a.Exception(f[1])}}return[h,f?f[1]:b]}},between:function(a,c,d){d=d||a;var e=b.each(b.ignore(a),c,b.ignore(d));return function(a){var b=e.call(this,a);return[[b[0][0],r[0][2]],b[1]]}},list:function(a,c,d){c=c||b.rtoken(/^\s*/);d=d||
 null;return a instanceof Array?b.each(b.product(a.slice(0,-1),b.ignore(c)),a.slice(-1),b.ignore(d)):b.each(b.many(b.each(a,b.ignore(c))),px,b.ignore(d))},set:function(c,d,e){d=d||b.rtoken(/^\s*/);e=e||null;return function(f){var g=null,h=null,i=null,j=null,k=[[],f],l=false;for(var m=0;m<c.length;m++){i=null;h=null;g=null;l=c.length==1;try{g=c[m].call(this,f)}catch(n){continue}j=[[g[0]],g[1]];if(g[1].length>0&&!l){try{i=d.call(this,g[1])}catch(o){l=true}}else{l=true}if(!l&&i[1].length===0){l=true}if(!l){var p=[];for(var q=0;q<c.length;q++){if(m!=q){p.push(c[q])}}h=b.set(p,d).call(this,i[1]);if(h[0].length>0){j[0]=j[0].concat(h[0]);j[1]=h[1]}}if(j[1].length<k[1].length){k=j}if(k[1].length===0){break}}if(k[0].length===0){return k}if(e){try{i=e.call(this,k[1])}catch(r){throw new a.Exception(k[1])}k[1]=i[1]}return k}},forward:function(a,b){return function(c){return a[b].call(this,c)}},replace:function(a,b){return function(c){var d=a.call(this,c);return[b,d[1]]}},process:function(a,b){ret
 urn function(c){var d=a.call(this,c);return[b.call(this,d[0]),d[1]]}},min:function(b,c){return function(d){var e=c.call(this,d);if(e[0].length<b){throw new a.Exception(d)}return e}}};var c=function(a){return function(){var b=null,c=[];if(arguments.length>1){b=Array.prototype.slice.call(arguments)}else if(arguments[0]instanceof Array){b=arguments[0]}if(b){for(var d=0,e=b.shift();d<e.length;d++){b.unshift(e[d]);c.push(a.apply(null,b));b.shift();return c}}else{return a.apply(null,arguments)}}};var d="optional not ignore cache".split(/\s/);for(var e=0;e<d.length;e++){b[d[e]]=c(b[d[e]])}var f=function(a){return function(){if(arguments[0]instanceof Array){return a.apply(null,arguments[0])}else{return a.apply(null,arguments)}}};var g="each any all".split(/\s/);for(var h=0;h<g.length;h++){b[g[h]]=f(b[g[h]])}})();(function(){var a=Date,b=a.prototype,c=a.CultureInfo;var d=function(a){var b=[];for(var c=0;c<a.length;c++){if(a[c]instanceof Array){b=b.concat(d(a[c]))}else{if(a[c]){b.push(a[c])}}
 }return b};a.Grammar={};a.Translator={hour:function(a){return function(){this.hour=Number(a)}},minute:function(a){return function(){this.minute=Number(a)}},second:function(a){return function(){this.second=Number(a)}},meridian:function(a){return function(){this.meridian=a.slice(0,1).toLowerCase()}},timezone:function(a){return function(){var b=a.replace(/[^\d\+\-]/g,"");if(b.length){this.timezoneOffset=Number(b)}else{this.timezone=a.toLowerCase()}}},day:function(a){var b=a[0];return function(){this.day=Number(b.match(/\d+/)[0])}},month:function(a){return function(){this.month=a.length==3?"jan feb mar apr may jun jul aug sep oct nov dec".indexOf(a)/4:Number(a)-1}},year:function(a){return function(){var b=Number(a);this.year=a.length>2?b:b+(b+2e3<c.twoDigitYearMax?2e3:1900)}},rday:function(a){return function(){switch(a){case"yesterday":this.days=-1;break;case"tomorrow":this.days=1;break;case"today":this.days=0;break;case"now":this.days=0;this.now=true;break}}},finishExact:function(b){b=
 b instanceof Array?b:[b];for(var c=0;c<b.length;c++){if(b[c]){b[c].call(this)}}var d=new Date;if((this.hour||this.minute)&&!this.month&&!this.year&&!this.day){this.day=d.getDate()}if(!this.year){this.year=d.getFullYear()}if(!this.month&&this.month!==0){this.month=d.getMonth()}if(!this.day){this.day=1}if(!this.hour){this.hour=0}if(!this.minute){this.minute=0}if(!this.second){this.second=0}if(this.meridian&&this.hour){if(this.meridian=="p"&&this.hour<12){this.hour=this.hour+12}else if(this.meridian=="a"&&this.hour==12){this.hour=0}}if(this.day>a.getDaysInMonth(this.year,this.month)){throw new RangeError(this.day+" is not a valid value for days.")}var e=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second);if(this.timezone){e.set({timezone:this.timezone})}else if(this.timezoneOffset){e.set({timezoneOffset:this.timezoneOffset})}return e},finish:function(b){b=b instanceof Array?d(b):[b];if(b.length===0){return null}for(var c=0;c<b.length;c++){if(typeof b[c]=="function
 "){b[c].call(this)}}var e=a.today();if(this.now&&!this.unit&&!this.operator){return new Date}else if(this.now){e=new Date}var f=!!(this.days&&this.days!==null||this.orient||this.operator);var g,h,i;i=this.orient=="past"||this.operator=="subtract"?-1:1;if(!this.now&&"hour minute second".indexOf(this.unit)!=-1){e.setTimeToNow()}if(this.month||this.month===0){if("year day hour minute second".indexOf(this.unit)!=-1){this.value=this.month+1;this.month=null;f=true}}if(!f&&this.weekday&&!this.day&&!this.days){var j=Date[this.weekday]();this.day=j.getDate();if(!this.month){this.month=j.getMonth()}this.year=j.getFullYear()}if(f&&this.weekday&&this.unit!="month"){this.unit="day";g=a.getDayNumberFromName(this.weekday)-e.getDay();h=7;this.days=g?(g+i*h)%h:i*h}if(this.month&&this.unit=="day"&&this.operator){this.value=this.month+1;this.month=null}if(this.value!=null&&this.month!=null&&this.year!=null){this.day=this.value*1}if(this.month&&!this.day&&this.value){e.set({day:this.value*1});if(!f){th
 is.day=this.value*1}}if(!this.month&&this.value&&this.unit=="month"&&!this.now){this.month=this.value;f=true}if(f&&(this.month||this.month===0)&&this.unit!="year"){this.unit="month";g=this.month-e.getMonth();h=12;this.months=g?(g+i*h)%h:i*h;this.month=null}if(!this.unit){this.unit="day"}if(!this.value&&this.operator&&this.operator!==null&&this[this.unit+"s"]&&this[this.unit+"s"]!==null){this[this.unit+"s"]=this[this.unit+"s"]+(this.operator=="add"?1:-1)+(this.value||0)*i}else if(this[this.unit+"s"]==null||this.operator!=null){if(!this.value){this.value=1}this[this.unit+"s"]=this.value*i}if(this.meridian&&this.hour){if(this.meridian=="p"&&this.hour<12){this.hour=this.hour+12}else if(this.meridian=="a"&&this.hour==12){this.hour=0}}if(this.weekday&&!this.day&&!this.days){var j=Date[this.weekday]();this.day=j.getDate();if(j.getMonth()!==e.getMonth()){this.month=j.getMonth()}}if((this.month||this.month===0)&&!this.day){this.day=1}if(!this.orient&&!this.operator&&this.unit=="week"&&this.v
 alue&&!this.day&&!this.month){return Date.today().setWeek(this.value)}if(f&&this.timezone&&this.day&&this.days){this.day=this.days}return f?e.add(this):e.set(this)}};var e=a.Parsing.Operators,f=a.Grammar,g=a.Translator,h;f.datePartDelimiter=e.rtoken(/^([\s\-\.\,\/\x27]+)/);f.timePartDelimiter=e.stoken(":");f.whiteSpace=e.rtoken(/^\s*/);f.generalDelimiter=e.rtoken(/^(([\s\,]|at|@|on)+)/);var i={};f.ctoken=function(a){var b=i[a];if(!b){var d=c.regexPatterns;var f=a.split(/\s+/),g=[];for(var h=0;h<f.length;h++){g.push(e.replace(e.rtoken(d[f[h]]),f[h]))}b=i[a]=e.any.apply(null,g)}return b};f.ctoken2=function(a){return e.rtoken(c.regexPatterns[a])};f.h=e.cache(e.process(e.rtoken(/^(0[0-9]|1[0-2]|[1-9])/),g.hour));f.hh=e.cache(e.process(e.rtoken(/^(0[0-9]|1[0-2])/),g.hour));f.H=e.cache(e.process(e.rtoken(/^([0-1][0-9]|2[0-3]|[0-9])/),g.hour));f.HH=e.cache(e.process(e.rtoken(/^([0-1][0-9]|2[0-3])/),g.hour));f.m=e.cache(e.process(e.rtoken(/^([0-5][0-9]|[0-9])/),g.minute));f.mm=e.cache(e.pro
 cess(e.rtoken(/^[0-5][0-9]/),g.minute));f.s=e.cache(e.process(e.rtoken(/^([0-5][0-9]|[0-9])/),g.second));f.ss=e.cache(e.process(e.rtoken(/^[0-5][0-9]/),g.second));f.hms=e.cache(e.sequence([f.H,f.m,f.s],f.timePartDelimiter));f.t=e.cache(e.process(f.ctoken2("shortMeridian"),g.meridian));f.tt=e.cache(e.process(f.ctoken2("longMeridian"),g.meridian));f.z=e.cache(e.process(e.rtoken(/^((\+|\-)\s*\d\d\d\d)|((\+|\-)\d\d\:?\d\d)/),g.timezone));f.zz=e.cache(e.process(e.rtoken(/^((\+|\-)\s*\d\d\d\d)|((\+|\-)\d\d\:?\d\d)/),g.timezone));f.zzz=e.cache(e.process(f.ctoken2("timezone"),g.timezone));f.timeSuffix=e.each(e.ignore(f.whiteSpace),e.set([f.tt,f.zzz]));f.time=e.each(e.optional(e.ignore(e.stoken("T"))),f.hms,f.timeSuffix);f.d=e.cache(e.process(e.each(e.rtoken(/^([0-2]\d|3[0-1]|\d)/),e.optional(f.ctoken2("ordinalSuffix"))),g.day));f.dd=e.cache(e.process(e.each(e.rtoken(/^([0-2]\d|3[0-1])/),e.optional(f.ctoken2("ordinalSuffix"))),g.day));f.ddd=f.dddd=e.cache(e.process(f.ctoken("sun mon tue wed 
 thu fri sat"),function(a){return function(){this.weekday=a}}));f.M=e.cache(e.process(e.rtoken(/^(1[0-2]|0\d|\d)/),g.month));f.MM=e.cache(e.process(e.rtoken(/^(1[0-2]|0\d)/),g.month));f.MMM=f.MMMM=e.cache(e.process(f.ctoken("jan feb mar apr may jun jul aug sep oct nov dec"),g.month));f.y=e.cache(e.process(e.rtoken(/^(\d\d?)/),g.year));f.yy=e.cache(e.process(e.rtoken(/^(\d\d)/),g.year));f.yyy=e.cache(e.process(e.rtoken(/^(\d\d?\d?\d?)/),g.year));f.yyyy=e.cache(e.process(e.rtoken(/^(\d\d\d\d)/),g.year));h=function(){return e.each(e.any.apply(null,arguments),e.not(f.ctoken2("timeContext")))};f.day=h(f.d,f.dd);f.month=h(f.M,f.MMM);f.year=h(f.yyyy,f.yy);f.orientation=e.process(f.ctoken("past future"),function(a){return function(){this.orient=a}});f.operator=e.process(f.ctoken("add subtract"),function(a){return function(){this.operator=a}});f.rday=e.process(f.ctoken("yesterday tomorrow today now"),g.rday);f.unit=e.process(f.ctoken("second minute hour day week month year"),function(a){retur
 n function(){this.unit=a}});f.value=e.process(e.rtoken(/^\d\d?(st|nd|rd|th)?/),function(a){return function(){this.value=a.replace(/\D/g,"")}});f.expression=e.set([f.rday,f.operator,f.value,f.unit,f.orientation,f.ddd,f.MMM]);h=function(){return e.set(arguments,f.datePartDelimiter)};f.mdy=h(f.ddd,f.month,f.day,f.year);f.ymd=h(f.ddd,f.year,f.month,f.day);f.dmy=h(f.ddd,f.day,f.month,f.year);f.date=function(a){return(f[c.dateElementOrder]||f.mdy).call(this,a)};f.format=e.process(e.many(e.any(e.process(e.rtoken(/^(dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|zz?z?)/),function(b){if(f[b]){return f[b]}else{throw a.Parsing.Exception(b)}}),e.process(e.rtoken(/^[^dMyhHmstz]+/),function(a){return e.ignore(e.stoken(a))}))),function(a){return e.process(e.each.apply(null,a),g.finishExact)});var j={};var k=function(a){return j[a]=j[a]||f.format(a)[0]};f.formats=function(a){if(a instanceof Array){var b=[];for(var c=0;c<a.length;c++){b.push(k(a[c]))}return e.any.apply(null,b)}else{return k(a)}};f._for
 mats=f.formats(['"yyyy-MM-ddTHH:mm:ssZ"',"yyyy-MM-ddTHH:mm:ssZ","yyyy-MM-ddTHH:mm:ssz","yyyy-MM-ddTHH:mm:ss","yyyy-MM-ddTHH:mmZ","yyyy-MM-ddTHH:mmz","yyyy-MM-ddTHH:mm","ddd, MMM dd, yyyy H:mm:ss tt","ddd MMM d yyyy HH:mm:ss zzz","MMddyyyy","ddMMyyyy","Mddyyyy","ddMyyyy","Mdyyyy","dMyyyy","yyyy","Mdyy","dMyy","d"]);f._start=e.process(e.set([f.date,f.time,f.expression],f.generalDelimiter,f.whiteSpace),g.finish);f.start=function(a){try{var b=f._formats.call({},a);if(b[1].length===0){return b}}catch(c){}return f._start.call({},a)};a._parse=a.parse;a.parse=function(b){var c=null;if(!b){return null}if(b instanceof Date){return b}try{c=a.Grammar.start.call({},b.replace(/^\s*(\S*(\s+\S+)*)\s*$/,"$1"))}catch(d){return null}return c[1].length===0?c[0]:null};a.getParseFunction=function(b){var c=a.Grammar.formats(b);return function(a){var b=null;try{b=c.call({},a)}catch(d){return null}return b[1].length===0?b[0]:null}};a.parseExact=function(b,c){return a.getParseFunction(c)(b)}})()
-


[04/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angular/angular.min.js.gzip
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angular/angular.min.js.gzip b/deleted/dist-cov/usergrid-portal/bower_components/angular/angular.min.js.gzip
deleted file mode 100644
index ba57627..0000000
Binary files a/deleted/dist-cov/usergrid-portal/bower_components/angular/angular.min.js.gzip and /dev/null differ


[24/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/dash/test/lib/angular/angular-scenario.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/dash/test/lib/angular/angular-scenario.js b/deleted/dist-cov/usergrid-portal/archive/dash/test/lib/angular/angular-scenario.js
deleted file mode 100644
index 538a799..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/dash/test/lib/angular/angular-scenario.js
+++ /dev/null
@@ -1,26195 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.7.2
- * http://jquery.com/
- *
- * Copyright 2011, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2011, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Wed Mar 21 12:46:34 2012 -0700
- */
-(function( window, undefined ) {
-'use strict';
-
-// Use the correct document accordingly with window argument (sandbox)
-var document = window.document,
-	navigator = window.navigator,
-	location = window.location;
-var jQuery = (function() {
-
-// Define a local copy of jQuery
-var jQuery = function( selector, context ) {
-		// The jQuery object is actually just the init constructor 'enhanced'
-		return new jQuery.fn.init( selector, context, rootjQuery );
-	},
-
-	// Map over jQuery in case of overwrite
-	_jQuery = window.jQuery,
-
-	// Map over the $ in case of overwrite
-	_$ = window.$,
-
-	// A central reference to the root jQuery(document)
-	rootjQuery,
-
-	// A simple way to check for HTML strings or ID strings
-	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
-	quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
-
-	// Check if a string has a non-whitespace character in it
-	rnotwhite = /\S/,
-
-	// Used for trimming whitespace
-	trimLeft = /^\s+/,
-	trimRight = /\s+$/,
-
-	// Match a standalone tag
-	rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
-
-	// JSON RegExp
-	rvalidchars = /^[\],:{}\s]*$/,
-	rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
-	rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
-	rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
-
-	// Useragent RegExp
-	rwebkit = /(webkit)[ \/]([\w.]+)/,
-	ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
-	rmsie = /(msie) ([\w.]+)/,
-	rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
-
-	// Matches dashed string for camelizing
-	rdashAlpha = /-([a-z]|[0-9])/ig,
-	rmsPrefix = /^-ms-/,
-
-	// Used by jQuery.camelCase as callback to replace()
-	fcamelCase = function( all, letter ) {
-		return ( letter + "" ).toUpperCase();
-	},
-
-	// Keep a UserAgent string for use with jQuery.browser
-	userAgent = navigator.userAgent,
-
-	// For matching the engine and version of the browser
-	browserMatch,
-
-	// The deferred used on DOM ready
-	readyList,
-
-	// The ready event handler
-	DOMContentLoaded,
-
-	// Save a reference to some core methods
-	toString = Object.prototype.toString,
-	hasOwn = Object.prototype.hasOwnProperty,
-	push = Array.prototype.push,
-	slice = Array.prototype.slice,
-	trim = String.prototype.trim,
-	indexOf = Array.prototype.indexOf,
-
-	// [[Class]] -> type pairs
-	class2type = {};
-
-jQuery.fn = jQuery.prototype = {
-	constructor: jQuery,
-	init: function( selector, context, rootjQuery ) {
-		var match, elem, ret, doc;
-
-		// Handle $(""), $(null), or $(undefined)
-		if ( !selector ) {
-			return this;
-		}
-
-		// Handle $(DOMElement)
-		if ( selector.nodeType ) {
-			this.context = this[0] = selector;
-			this.length = 1;
-			return this;
-		}
-
-		// The body element only exists once, optimize finding it
-		if ( selector === "body" && !context && document.body ) {
-			this.context = document;
-			this[0] = document.body;
-			this.selector = selector;
-			this.length = 1;
-			return this;
-		}
-
-		// Handle HTML strings
-		if ( typeof selector === "string" ) {
-			// Are we dealing with HTML string or an ID?
-			if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
-				// Assume that strings that start and end with <> are HTML and skip the regex check
-				match = [ null, selector, null ];
-
-			} else {
-				match = quickExpr.exec( selector );
-			}
-
-			// Verify a match, and that no context was specified for #id
-			if ( match && (match[1] || !context) ) {
-
-				// HANDLE: $(html) -> $(array)
-				if ( match[1] ) {
-					context = context instanceof jQuery ? context[0] : context;
-					doc = ( context ? context.ownerDocument || context : document );
-
-					// If a single string is passed in and it's a single tag
-					// just do a createElement and skip the rest
-					ret = rsingleTag.exec( selector );
-
-					if ( ret ) {
-						if ( jQuery.isPlainObject( context ) ) {
-							selector = [ document.createElement( ret[1] ) ];
-							jQuery.fn.attr.call( selector, context, true );
-
-						} else {
-							selector = [ doc.createElement( ret[1] ) ];
-						}
-
-					} else {
-						ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
-						selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes;
-					}
-
-					return jQuery.merge( this, selector );
-
-				// HANDLE: $("#id")
-				} else {
-					elem = document.getElementById( match[2] );
-
-					// Check parentNode to catch when Blackberry 4.6 returns
-					// nodes that are no longer in the document #6963
-					if ( elem && elem.parentNode ) {
-						// Handle the case where IE and Opera return items
-						// by name instead of ID
-						if ( elem.id !== match[2] ) {
-							return rootjQuery.find( selector );
-						}
-
-						// Otherwise, we inject the element directly into the jQuery object
-						this.length = 1;
-						this[0] = elem;
-					}
-
-					this.context = document;
-					this.selector = selector;
-					return this;
-				}
-
-			// HANDLE: $(expr, $(...))
-			} else if ( !context || context.jquery ) {
-				return ( context || rootjQuery ).find( selector );
-
-			// HANDLE: $(expr, context)
-			// (which is just equivalent to: $(context).find(expr)
-			} else {
-				return this.constructor( context ).find( selector );
-			}
-
-		// HANDLE: $(function)
-		// Shortcut for document ready
-		} else if ( jQuery.isFunction( selector ) ) {
-			return rootjQuery.ready( selector );
-		}
-
-		if ( selector.selector !== undefined ) {
-			this.selector = selector.selector;
-			this.context = selector.context;
-		}
-
-		return jQuery.makeArray( selector, this );
-	},
-
-	// Start with an empty selector
-	selector: "",
-
-	// The current version of jQuery being used
-	jquery: "1.7.2",
-
-	// The default length of a jQuery object is 0
-	length: 0,
-
-	// The number of elements contained in the matched element set
-	size: function() {
-		return this.length;
-	},
-
-	toArray: function() {
-		return slice.call( this, 0 );
-	},
-
-	// Get the Nth element in the matched element set OR
-	// Get the whole matched element set as a clean array
-	get: function( num ) {
-		return num == null ?
-
-			// Return a 'clean' array
-			this.toArray() :
-
-			// Return just the object
-			( num < 0 ? this[ this.length + num ] : this[ num ] );
-	},
-
-	// Take an array of elements and push it onto the stack
-	// (returning the new matched element set)
-	pushStack: function( elems, name, selector ) {
-		// Build a new jQuery matched element set
-		var ret = this.constructor();
-
-		if ( jQuery.isArray( elems ) ) {
-			push.apply( ret, elems );
-
-		} else {
-			jQuery.merge( ret, elems );
-		}
-
-		// Add the old object onto the stack (as a reference)
-		ret.prevObject = this;
-
-		ret.context = this.context;
-
-		if ( name === "find" ) {
-			ret.selector = this.selector + ( this.selector ? " " : "" ) + selector;
-		} else if ( name ) {
-			ret.selector = this.selector + "." + name + "(" + selector + ")";
-		}
-
-		// Return the newly-formed element set
-		return ret;
-	},
-
-	// Execute a callback for every element in the matched set.
-	// (You can seed the arguments with an array of args, but this is
-	// only used internally.)
-	each: function( callback, args ) {
-		return jQuery.each( this, callback, args );
-	},
-
-	ready: function( fn ) {
-		// Attach the listeners
-		jQuery.bindReady();
-
-		// Add the callback
-		readyList.add( fn );
-
-		return this;
-	},
-
-	eq: function( i ) {
-		i = +i;
-		return i === -1 ?
-			this.slice( i ) :
-			this.slice( i, i + 1 );
-	},
-
-	first: function() {
-		return this.eq( 0 );
-	},
-
-	last: function() {
-		return this.eq( -1 );
-	},
-
-	slice: function() {
-		return this.pushStack( slice.apply( this, arguments ),
-			"slice", slice.call(arguments).join(",") );
-	},
-
-	map: function( callback ) {
-		return this.pushStack( jQuery.map(this, function( elem, i ) {
-			return callback.call( elem, i, elem );
-		}));
-	},
-
-	end: function() {
-		return this.prevObject || this.constructor(null);
-	},
-
-	// For internal use only.
-	// Behaves like an Array's method, not like a jQuery method.
-	push: push,
-	sort: [].sort,
-	splice: [].splice
-};
-
-// Give the init function the jQuery prototype for later instantiation
-jQuery.fn.init.prototype = jQuery.fn;
-
-jQuery.extend = jQuery.fn.extend = function() {
-	var options, name, src, copy, copyIsArray, clone,
-		target = arguments[0] || {},
-		i = 1,
-		length = arguments.length,
-		deep = false;
-
-	// Handle a deep copy situation
-	if ( typeof target === "boolean" ) {
-		deep = target;
-		target = arguments[1] || {};
-		// skip the boolean and the target
-		i = 2;
-	}
-
-	// Handle case when target is a string or something (possible in deep copy)
-	if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
-		target = {};
-	}
-
-	// extend jQuery itself if only one argument is passed
-	if ( length === i ) {
-		target = this;
-		--i;
-	}
-
-	for ( ; i < length; i++ ) {
-		// Only deal with non-null/undefined values
-		if ( (options = arguments[ i ]) != null ) {
-			// Extend the base object
-			for ( name in options ) {
-				src = target[ name ];
-				copy = options[ name ];
-
-				// Prevent never-ending loop
-				if ( target === copy ) {
-					continue;
-				}
-
-				// Recurse if we're merging plain objects or arrays
-				if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
-					if ( copyIsArray ) {
-						copyIsArray = false;
-						clone = src && jQuery.isArray(src) ? src : [];
-
-					} else {
-						clone = src && jQuery.isPlainObject(src) ? src : {};
-					}
-
-					// Never move original objects, clone them
-					target[ name ] = jQuery.extend( deep, clone, copy );
-
-				// Don't bring in undefined values
-				} else if ( copy !== undefined ) {
-					target[ name ] = copy;
-				}
-			}
-		}
-	}
-
-	// Return the modified object
-	return target;
-};
-
-jQuery.extend({
-	noConflict: function( deep ) {
-		if ( window.$ === jQuery ) {
-			window.$ = _$;
-		}
-
-		if ( deep && window.jQuery === jQuery ) {
-			window.jQuery = _jQuery;
-		}
-
-		return jQuery;
-	},
-
-	// Is the DOM ready to be used? Set to true once it occurs.
-	isReady: false,
-
-	// A counter to track how many items to wait for before
-	// the ready event fires. See #6781
-	readyWait: 1,
-
-	// Hold (or release) the ready event
-	holdReady: function( hold ) {
-		if ( hold ) {
-			jQuery.readyWait++;
-		} else {
-			jQuery.ready( true );
-		}
-	},
-
-	// Handle when the DOM is ready
-	ready: function( wait ) {
-		// Either a released hold or an DOMready/load event and not yet ready
-		if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
-			// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
-			if ( !document.body ) {
-				return setTimeout( jQuery.ready, 1 );
-			}
-
-			// Remember that the DOM is ready
-			jQuery.isReady = true;
-
-			// If a normal DOM Ready event fired, decrement, and wait if need be
-			if ( wait !== true && --jQuery.readyWait > 0 ) {
-				return;
-			}
-
-			// If there are functions bound, to execute
-			readyList.fireWith( document, [ jQuery ] );
-
-			// Trigger any bound ready events
-			if ( jQuery.fn.trigger ) {
-				jQuery( document ).trigger( "ready" ).off( "ready" );
-			}
-		}
-	},
-
-	bindReady: function() {
-		if ( readyList ) {
-			return;
-		}
-
-		readyList = jQuery.Callbacks( "once memory" );
-
-		// Catch cases where $(document).ready() is called after the
-		// browser event has already occurred.
-		if ( document.readyState === "complete" ) {
-			// Handle it asynchronously to allow scripts the opportunity to delay ready
-			return setTimeout( jQuery.ready, 1 );
-		}
-
-		// Mozilla, Opera and webkit nightlies currently support this event
-		if ( document.addEventListener ) {
-			// Use the handy event callback
-			document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
-
-			// A fallback to window.onload, that will always work
-			window.addEventListener( "load", jQuery.ready, false );
-
-		// If IE event model is used
-		} else if ( document.attachEvent ) {
-			// ensure firing before onload,
-			// maybe late but safe also for iframes
-			document.attachEvent( "onreadystatechange", DOMContentLoaded );
-
-			// A fallback to window.onload, that will always work
-			window.attachEvent( "onload", jQuery.ready );
-
-			// If IE and not a frame
-			// continually check to see if the document is ready
-			var toplevel = false;
-
-			try {
-				toplevel = window.frameElement == null;
-			} catch(e) {}
-
-			if ( document.documentElement.doScroll && toplevel ) {
-				doScrollCheck();
-			}
-		}
-	},
-
-	// See test/unit/core.js for details concerning isFunction.
-	// Since version 1.3, DOM methods and functions like alert
-	// aren't supported. They return false on IE (#2968).
-	isFunction: function( obj ) {
-		return jQuery.type(obj) === "function";
-	},
-
-	isArray: Array.isArray || function( obj ) {
-		return jQuery.type(obj) === "array";
-	},
-
-	isWindow: function( obj ) {
-		return obj != null && obj == obj.window;
-	},
-
-	isNumeric: function( obj ) {
-		return !isNaN( parseFloat(obj) ) && isFinite( obj );
-	},
-
-	type: function( obj ) {
-		return obj == null ?
-			String( obj ) :
-			class2type[ toString.call(obj) ] || "object";
-	},
-
-	isPlainObject: function( obj ) {
-		// Must be an Object.
-		// Because of IE, we also have to check the presence of the constructor property.
-		// Make sure that DOM nodes and window objects don't pass through, as well
-		if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
-			return false;
-		}
-
-		try {
-			// Not own constructor property must be Object
-			if ( obj.constructor &&
-				!hasOwn.call(obj, "constructor") &&
-				!hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
-				return false;
-			}
-		} catch ( e ) {
-			// IE8,9 Will throw exceptions on certain host objects #9897
-			return false;
-		}
-
-		// Own properties are enumerated firstly, so to speed up,
-		// if last one is own, then all properties are own.
-
-		var key;
-		for ( key in obj ) {}
-
-		return key === undefined || hasOwn.call( obj, key );
-	},
-
-	isEmptyObject: function( obj ) {
-		for ( var name in obj ) {
-			return false;
-		}
-		return true;
-	},
-
-	error: function( msg ) {
-		throw new Error( msg );
-	},
-
-	parseJSON: function( data ) {
-		if ( typeof data !== "string" || !data ) {
-			return null;
-		}
-
-		// Make sure leading/trailing whitespace is removed (IE can't handle it)
-		data = jQuery.trim( data );
-
-		// Attempt to parse using the native JSON parser first
-		if ( window.JSON && window.JSON.parse ) {
-			return window.JSON.parse( data );
-		}
-
-		// Make sure the incoming data is actual JSON
-		// Logic borrowed from http://json.org/json2.js
-		if ( rvalidchars.test( data.replace( rvalidescape, "@" )
-			.replace( rvalidtokens, "]" )
-			.replace( rvalidbraces, "")) ) {
-
-			return ( new Function( "return " + data ) )();
-
-		}
-		jQuery.error( "Invalid JSON: " + data );
-	},
-
-	// Cross-browser xml parsing
-	parseXML: function( data ) {
-		if ( typeof data !== "string" || !data ) {
-			return null;
-		}
-		var xml, tmp;
-		try {
-			if ( window.DOMParser ) { // Standard
-				tmp = new DOMParser();
-				xml = tmp.parseFromString( data , "text/xml" );
-			} else { // IE
-				xml = new ActiveXObject( "Microsoft.XMLDOM" );
-				xml.async = "false";
-				xml.loadXML( data );
-			}
-		} catch( e ) {
-			xml = undefined;
-		}
-		if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
-			jQuery.error( "Invalid XML: " + data );
-		}
-		return xml;
-	},
-
-	noop: function() {},
-
-	// Evaluates a script in a global context
-	// Workarounds based on findings by Jim Driscoll
-	// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
-	globalEval: function( data ) {
-		if ( data && rnotwhite.test( data ) ) {
-			// We use execScript on Internet Explorer
-			// We use an anonymous function so that context is window
-			// rather than jQuery in Firefox
-			( window.execScript || function( data ) {
-				window[ "eval" ].call( window, data );
-			} )( data );
-		}
-	},
-
-	// Convert dashed to camelCase; used by the css and data modules
-	// Microsoft forgot to hump their vendor prefix (#9572)
-	camelCase: function( string ) {
-		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
-	},
-
-	nodeName: function( elem, name ) {
-		return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
-	},
-
-	// args is for internal usage only
-	each: function( object, callback, args ) {
-		var name, i = 0,
-			length = object.length,
-			isObj = length === undefined || jQuery.isFunction( object );
-
-		if ( args ) {
-			if ( isObj ) {
-				for ( name in object ) {
-					if ( callback.apply( object[ name ], args ) === false ) {
-						break;
-					}
-				}
-			} else {
-				for ( ; i < length; ) {
-					if ( callback.apply( object[ i++ ], args ) === false ) {
-						break;
-					}
-				}
-			}
-
-		// A special, fast, case for the most common use of each
-		} else {
-			if ( isObj ) {
-				for ( name in object ) {
-					if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
-						break;
-					}
-				}
-			} else {
-				for ( ; i < length; ) {
-					if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
-						break;
-					}
-				}
-			}
-		}
-
-		return object;
-	},
-
-	// Use native String.trim function wherever possible
-	trim: trim ?
-		function( text ) {
-			return text == null ?
-				"" :
-				trim.call( text );
-		} :
-
-		// Otherwise use our own trimming functionality
-		function( text ) {
-			return text == null ?
-				"" :
-				text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
-		},
-
-	// results is for internal usage only
-	makeArray: function( array, results ) {
-		var ret = results || [];
-
-		if ( array != null ) {
-			// The window, strings (and functions) also have 'length'
-			// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
-			var type = jQuery.type( array );
-
-			if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
-				push.call( ret, array );
-			} else {
-				jQuery.merge( ret, array );
-			}
-		}
-
-		return ret;
-	},
-
-	inArray: function( elem, array, i ) {
-		var len;
-
-		if ( array ) {
-			if ( indexOf ) {
-				return indexOf.call( array, elem, i );
-			}
-
-			len = array.length;
-			i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
-
-			for ( ; i < len; i++ ) {
-				// Skip accessing in sparse arrays
-				if ( i in array && array[ i ] === elem ) {
-					return i;
-				}
-			}
-		}
-
-		return -1;
-	},
-
-	merge: function( first, second ) {
-		var i = first.length,
-			j = 0;
-
-		if ( typeof second.length === "number" ) {
-			for ( var l = second.length; j < l; j++ ) {
-				first[ i++ ] = second[ j ];
-			}
-
-		} else {
-			while ( second[j] !== undefined ) {
-				first[ i++ ] = second[ j++ ];
-			}
-		}
-
-		first.length = i;
-
-		return first;
-	},
-
-	grep: function( elems, callback, inv ) {
-		var ret = [], retVal;
-		inv = !!inv;
-
-		// Go through the array, only saving the items
-		// that pass the validator function
-		for ( var i = 0, length = elems.length; i < length; i++ ) {
-			retVal = !!callback( elems[ i ], i );
-			if ( inv !== retVal ) {
-				ret.push( elems[ i ] );
-			}
-		}
-
-		return ret;
-	},
-
-	// arg is for internal usage only
-	map: function( elems, callback, arg ) {
-		var value, key, ret = [],
-			i = 0,
-			length = elems.length,
-			// jquery objects are treated as arrays
-			isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
-
-		// Go through the array, translating each of the items to their
-		if ( isArray ) {
-			for ( ; i < length; i++ ) {
-				value = callback( elems[ i ], i, arg );
-
-				if ( value != null ) {
-					ret[ ret.length ] = value;
-				}
-			}
-
-		// Go through every key on the object,
-		} else {
-			for ( key in elems ) {
-				value = callback( elems[ key ], key, arg );
-
-				if ( value != null ) {
-					ret[ ret.length ] = value;
-				}
-			}
-		}
-
-		// Flatten any nested arrays
-		return ret.concat.apply( [], ret );
-	},
-
-	// A global GUID counter for objects
-	guid: 1,
-
-	// Bind a function to a context, optionally partially applying any
-	// arguments.
-	proxy: function( fn, context ) {
-		if ( typeof context === "string" ) {
-			var tmp = fn[ context ];
-			context = fn;
-			fn = tmp;
-		}
-
-		// Quick check to determine if target is callable, in the spec
-		// this throws a TypeError, but we will just return undefined.
-		if ( !jQuery.isFunction( fn ) ) {
-			return undefined;
-		}
-
-		// Simulated bind
-		var args = slice.call( arguments, 2 ),
-			proxy = function() {
-				return fn.apply( context, args.concat( slice.call( arguments ) ) );
-			};
-
-		// Set the guid of unique handler to the same of original handler, so it can be removed
-		proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
-
-		return proxy;
-	},
-
-	// Mutifunctional method to get and set values to a collection
-	// The value/s can optionally be executed if it's a function
-	access: function( elems, fn, key, value, chainable, emptyGet, pass ) {
-		var exec,
-			bulk = key == null,
-			i = 0,
-			length = elems.length;
-
-		// Sets many values
-		if ( key && typeof key === "object" ) {
-			for ( i in key ) {
-				jQuery.access( elems, fn, i, key[i], 1, emptyGet, value );
-			}
-			chainable = 1;
-
-		// Sets one value
-		} else if ( value !== undefined ) {
-			// Optionally, function values get executed if exec is true
-			exec = pass === undefined && jQuery.isFunction( value );
-
-			if ( bulk ) {
-				// Bulk operations only iterate when executing function values
-				if ( exec ) {
-					exec = fn;
-					fn = function( elem, key, value ) {
-						return exec.call( jQuery( elem ), value );
-					};
-
-				// Otherwise they run against the entire set
-				} else {
-					fn.call( elems, value );
-					fn = null;
-				}
-			}
-
-			if ( fn ) {
-				for (; i < length; i++ ) {
-					fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
-				}
-			}
-
-			chainable = 1;
-		}
-
-		return chainable ?
-			elems :
-
-			// Gets
-			bulk ?
-				fn.call( elems ) :
-				length ? fn( elems[0], key ) : emptyGet;
-	},
-
-	now: function() {
-		return ( new Date() ).getTime();
-	},
-
-	// Use of jQuery.browser is frowned upon.
-	// More details: http://docs.jquery.com/Utilities/jQuery.browser
-	uaMatch: function( ua ) {
-		ua = ua.toLowerCase();
-
-		var match = rwebkit.exec( ua ) ||
-			ropera.exec( ua ) ||
-			rmsie.exec( ua ) ||
-			ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
-			[];
-
-		return { browser: match[1] || "", version: match[2] || "0" };
-	},
-
-	sub: function() {
-		function jQuerySub( selector, context ) {
-			return new jQuerySub.fn.init( selector, context );
-		}
-		jQuery.extend( true, jQuerySub, this );
-		jQuerySub.superclass = this;
-		jQuerySub.fn = jQuerySub.prototype = this();
-		jQuerySub.fn.constructor = jQuerySub;
-		jQuerySub.sub = this.sub;
-		jQuerySub.fn.init = function init( selector, context ) {
-			if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
-				context = jQuerySub( context );
-			}
-
-			return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
-		};
-		jQuerySub.fn.init.prototype = jQuerySub.fn;
-		var rootjQuerySub = jQuerySub(document);
-		return jQuerySub;
-	},
-
-	browser: {}
-});
-
-// Populate the class2type map
-jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
-	class2type[ "[object " + name + "]" ] = name.toLowerCase();
-});
-
-browserMatch = jQuery.uaMatch( userAgent );
-if ( browserMatch.browser ) {
-	jQuery.browser[ browserMatch.browser ] = true;
-	jQuery.browser.version = browserMatch.version;
-}
-
-// Deprecated, use jQuery.browser.webkit instead
-if ( jQuery.browser.webkit ) {
-	jQuery.browser.safari = true;
-}
-
-// IE doesn't match non-breaking spaces with \s
-if ( rnotwhite.test( "\xA0" ) ) {
-	trimLeft = /^[\s\xA0]+/;
-	trimRight = /[\s\xA0]+$/;
-}
-
-// All jQuery objects should point back to these
-rootjQuery = jQuery(document);
-
-// Cleanup functions for the document ready method
-if ( document.addEventListener ) {
-	DOMContentLoaded = function() {
-		document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
-		jQuery.ready();
-	};
-
-} else if ( document.attachEvent ) {
-	DOMContentLoaded = function() {
-		// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
-		if ( document.readyState === "complete" ) {
-			document.detachEvent( "onreadystatechange", DOMContentLoaded );
-			jQuery.ready();
-		}
-	};
-}
-
-// The DOM ready check for Internet Explorer
-function doScrollCheck() {
-	if ( jQuery.isReady ) {
-		return;
-	}
-
-	try {
-		// If IE is used, use the trick by Diego Perini
-		// http://javascript.nwbox.com/IEContentLoaded/
-		document.documentElement.doScroll("left");
-	} catch(e) {
-		setTimeout( doScrollCheck, 1 );
-		return;
-	}
-
-	// and execute any waiting functions
-	jQuery.ready();
-}
-
-return jQuery;
-
-})();
-
-
-// String to Object flags format cache
-var flagsCache = {};
-
-// Convert String-formatted flags into Object-formatted ones and store in cache
-function createFlags( flags ) {
-	var object = flagsCache[ flags ] = {},
-		i, length;
-	flags = flags.split( /\s+/ );
-	for ( i = 0, length = flags.length; i < length; i++ ) {
-		object[ flags[i] ] = true;
-	}
-	return object;
-}
-
-/*
- * Create a callback list using the following parameters:
- *
- *	flags:	an optional list of space-separated flags that will change how
- *			the callback list behaves
- *
- * By default a callback list will act like an event callback list and can be
- * "fired" multiple times.
- *
- * Possible flags:
- *
- *	once:			will ensure the callback list can only be fired once (like a Deferred)
- *
- *	memory:			will keep track of previous values and will call any callback added
- *					after the list has been fired right away with the latest "memorized"
- *					values (like a Deferred)
- *
- *	unique:			will ensure a callback can only be added once (no duplicate in the list)
- *
- *	stopOnFalse:	interrupt callings when a callback returns false
- *
- */
-jQuery.Callbacks = function( flags ) {
-
-	// Convert flags from String-formatted to Object-formatted
-	// (we check in cache first)
-	flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};
-
-	var // Actual callback list
-		list = [],
-		// Stack of fire calls for repeatable lists
-		stack = [],
-		// Last fire value (for non-forgettable lists)
-		memory,
-		// Flag to know if list was already fired
-		fired,
-		// Flag to know if list is currently firing
-		firing,
-		// First callback to fire (used internally by add and fireWith)
-		firingStart,
-		// End of the loop when firing
-		firingLength,
-		// Index of currently firing callback (modified by remove if needed)
-		firingIndex,
-		// Add one or several callbacks to the list
-		add = function( args ) {
-			var i,
-				length,
-				elem,
-				type,
-				actual;
-			for ( i = 0, length = args.length; i < length; i++ ) {
-				elem = args[ i ];
-				type = jQuery.type( elem );
-				if ( type === "array" ) {
-					// Inspect recursively
-					add( elem );
-				} else if ( type === "function" ) {
-					// Add if not in unique mode and callback is not in
-					if ( !flags.unique || !self.has( elem ) ) {
-						list.push( elem );
-					}
-				}
-			}
-		},
-		// Fire callbacks
-		fire = function( context, args ) {
-			args = args || [];
-			memory = !flags.memory || [ context, args ];
-			fired = true;
-			firing = true;
-			firingIndex = firingStart || 0;
-			firingStart = 0;
-			firingLength = list.length;
-			for ( ; list && firingIndex < firingLength; firingIndex++ ) {
-				if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {
-					memory = true; // Mark as halted
-					break;
-				}
-			}
-			firing = false;
-			if ( list ) {
-				if ( !flags.once ) {
-					if ( stack && stack.length ) {
-						memory = stack.shift();
-						self.fireWith( memory[ 0 ], memory[ 1 ] );
-					}
-				} else if ( memory === true ) {
-					self.disable();
-				} else {
-					list = [];
-				}
-			}
-		},
-		// Actual Callbacks object
-		self = {
-			// Add a callback or a collection of callbacks to the list
-			add: function() {
-				if ( list ) {
-					var length = list.length;
-					add( arguments );
-					// Do we need to add the callbacks to the
-					// current firing batch?
-					if ( firing ) {
-						firingLength = list.length;
-					// With memory, if we're not firing then
-					// we should call right away, unless previous
-					// firing was halted (stopOnFalse)
-					} else if ( memory && memory !== true ) {
-						firingStart = length;
-						fire( memory[ 0 ], memory[ 1 ] );
-					}
-				}
-				return this;
-			},
-			// Remove a callback from the list
-			remove: function() {
-				if ( list ) {
-					var args = arguments,
-						argIndex = 0,
-						argLength = args.length;
-					for ( ; argIndex < argLength ; argIndex++ ) {
-						for ( var i = 0; i < list.length; i++ ) {
-							if ( args[ argIndex ] === list[ i ] ) {
-								// Handle firingIndex and firingLength
-								if ( firing ) {
-									if ( i <= firingLength ) {
-										firingLength--;
-										if ( i <= firingIndex ) {
-											firingIndex--;
-										}
-									}
-								}
-								// Remove the element
-								list.splice( i--, 1 );
-								// If we have some unicity property then
-								// we only need to do this once
-								if ( flags.unique ) {
-									break;
-								}
-							}
-						}
-					}
-				}
-				return this;
-			},
-			// Control if a given callback is in the list
-			has: function( fn ) {
-				if ( list ) {
-					var i = 0,
-						length = list.length;
-					for ( ; i < length; i++ ) {
-						if ( fn === list[ i ] ) {
-							return true;
-						}
-					}
-				}
-				return false;
-			},
-			// Remove all callbacks from the list
-			empty: function() {
-				list = [];
-				return this;
-			},
-			// Have the list do nothing anymore
-			disable: function() {
-				list = stack = memory = undefined;
-				return this;
-			},
-			// Is it disabled?
-			disabled: function() {
-				return !list;
-			},
-			// Lock the list in its current state
-			lock: function() {
-				stack = undefined;
-				if ( !memory || memory === true ) {
-					self.disable();
-				}
-				return this;
-			},
-			// Is it locked?
-			locked: function() {
-				return !stack;
-			},
-			// Call all callbacks with the given context and arguments
-			fireWith: function( context, args ) {
-				if ( stack ) {
-					if ( firing ) {
-						if ( !flags.once ) {
-							stack.push( [ context, args ] );
-						}
-					} else if ( !( flags.once && memory ) ) {
-						fire( context, args );
-					}
-				}
-				return this;
-			},
-			// Call all the callbacks with the given arguments
-			fire: function() {
-				self.fireWith( this, arguments );
-				return this;
-			},
-			// To know if the callbacks have already been called at least once
-			fired: function() {
-				return !!fired;
-			}
-		};
-
-	return self;
-};
-
-
-
-
-var // Static reference to slice
-	sliceDeferred = [].slice;
-
-jQuery.extend({
-
-	Deferred: function( func ) {
-		var doneList = jQuery.Callbacks( "once memory" ),
-			failList = jQuery.Callbacks( "once memory" ),
-			progressList = jQuery.Callbacks( "memory" ),
-			state = "pending",
-			lists = {
-				resolve: doneList,
-				reject: failList,
-				notify: progressList
-			},
-			promise = {
-				done: doneList.add,
-				fail: failList.add,
-				progress: progressList.add,
-
-				state: function() {
-					return state;
-				},
-
-				// Deprecated
-				isResolved: doneList.fired,
-				isRejected: failList.fired,
-
-				then: function( doneCallbacks, failCallbacks, progressCallbacks ) {
-					deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );
-					return this;
-				},
-				always: function() {
-					deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments );
-					return this;
-				},
-				pipe: function( fnDone, fnFail, fnProgress ) {
-					return jQuery.Deferred(function( newDefer ) {
-						jQuery.each( {
-							done: [ fnDone, "resolve" ],
-							fail: [ fnFail, "reject" ],
-							progress: [ fnProgress, "notify" ]
-						}, function( handler, data ) {
-							var fn = data[ 0 ],
-								action = data[ 1 ],
-								returned;
-							if ( jQuery.isFunction( fn ) ) {
-								deferred[ handler ](function() {
-									returned = fn.apply( this, arguments );
-									if ( returned && jQuery.isFunction( returned.promise ) ) {
-										returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify );
-									} else {
-										newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
-									}
-								});
-							} else {
-								deferred[ handler ]( newDefer[ action ] );
-							}
-						});
-					}).promise();
-				},
-				// Get a promise for this deferred
-				// If obj is provided, the promise aspect is added to the object
-				promise: function( obj ) {
-					if ( obj == null ) {
-						obj = promise;
-					} else {
-						for ( var key in promise ) {
-							obj[ key ] = promise[ key ];
-						}
-					}
-					return obj;
-				}
-			},
-			deferred = promise.promise({}),
-			key;
-
-		for ( key in lists ) {
-			deferred[ key ] = lists[ key ].fire;
-			deferred[ key + "With" ] = lists[ key ].fireWith;
-		}
-
-		// Handle state
-		deferred.done( function() {
-			state = "resolved";
-		}, failList.disable, progressList.lock ).fail( function() {
-			state = "rejected";
-		}, doneList.disable, progressList.lock );
-
-		// Call given func if any
-		if ( func ) {
-			func.call( deferred, deferred );
-		}
-
-		// All done!
-		return deferred;
-	},
-
-	// Deferred helper
-	when: function( firstParam ) {
-		var args = sliceDeferred.call( arguments, 0 ),
-			i = 0,
-			length = args.length,
-			pValues = new Array( length ),
-			count = length,
-			pCount = length,
-			deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?
-				firstParam :
-				jQuery.Deferred(),
-			promise = deferred.promise();
-		function resolveFunc( i ) {
-			return function( value ) {
-				args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
-				if ( !( --count ) ) {
-					deferred.resolveWith( deferred, args );
-				}
-			};
-		}
-		function progressFunc( i ) {
-			return function( value ) {
-				pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
-				deferred.notifyWith( promise, pValues );
-			};
-		}
-		if ( length > 1 ) {
-			for ( ; i < length; i++ ) {
-				if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) {
-					args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) );
-				} else {
-					--count;
-				}
-			}
-			if ( !count ) {
-				deferred.resolveWith( deferred, args );
-			}
-		} else if ( deferred !== firstParam ) {
-			deferred.resolveWith( deferred, length ? [ firstParam ] : [] );
-		}
-		return promise;
-	}
-});
-
-
-
-
-jQuery.support = (function() {
-
-	var support,
-		all,
-		a,
-		select,
-		opt,
-		input,
-		fragment,
-		tds,
-		events,
-		eventName,
-		i,
-		isSupported,
-		div = document.createElement( "div" ),
-		documentElement = document.documentElement;
-
-	// Preliminary tests
-	div.setAttribute("className", "t");
-	div.innerHTML = "   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
-
-	all = div.getElementsByTagName( "*" );
-	a = div.getElementsByTagName( "a" )[ 0 ];
-
-	// Can't get basic test support
-	if ( !all || !all.length || !a ) {
-		return {};
-	}
-
-	// First batch of supports tests
-	select = document.createElement( "select" );
-	opt = select.appendChild( document.createElement("option") );
-	input = div.getElementsByTagName( "input" )[ 0 ];
-
-	support = {
-		// IE strips leading whitespace when .innerHTML is used
-		leadingWhitespace: ( div.firstChild.nodeType === 3 ),
-
-		// Make sure that tbody elements aren't automatically inserted
-		// IE will insert them into empty tables
-		tbody: !div.getElementsByTagName("tbody").length,
-
-		// Make sure that link elements get serialized correctly by innerHTML
-		// This requires a wrapper element in IE
-		htmlSerialize: !!div.getElementsByTagName("link").length,
-
-		// Get the style information from getAttribute
-		// (IE uses .cssText instead)
-		style: /top/.test( a.getAttribute("style") ),
-
-		// Make sure that URLs aren't manipulated
-		// (IE normalizes it by default)
-		hrefNormalized: ( a.getAttribute("href") === "/a" ),
-
-		// Make sure that element opacity exists
-		// (IE uses filter instead)
-		// Use a regex to work around a WebKit issue. See #5145
-		opacity: /^0.55/.test( a.style.opacity ),
-
-		// Verify style float existence
-		// (IE uses styleFloat instead of cssFloat)
-		cssFloat: !!a.style.cssFloat,
-
-		// Make sure that if no value is specified for a checkbox
-		// that it defaults to "on".
-		// (WebKit defaults to "" instead)
-		checkOn: ( input.value === "on" ),
-
-		// Make sure that a selected-by-default option has a working selected property.
-		// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
-		optSelected: opt.selected,
-
-		// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
-		getSetAttribute: div.className !== "t",
-
-		// Tests for enctype support on a form(#6743)
-		enctype: !!document.createElement("form").enctype,
-
-		// Makes sure cloning an html5 element does not cause problems
-		// Where outerHTML is undefined, this still works
-		html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",
-
-		// Will be defined later
-		submitBubbles: true,
-		changeBubbles: true,
-		focusinBubbles: false,
-		deleteExpando: true,
-		noCloneEvent: true,
-		inlineBlockNeedsLayout: false,
-		shrinkWrapBlocks: false,
-		reliableMarginRight: true,
-		pixelMargin: true
-	};
-
-	// jQuery.boxModel DEPRECATED in 1.3, use jQuery.support.boxModel instead
-	jQuery.boxModel = support.boxModel = (document.compatMode === "CSS1Compat");
-
-	// Make sure checked status is properly cloned
-	input.checked = true;
-	support.noCloneChecked = input.cloneNode( true ).checked;
-
-	// Make sure that the options inside disabled selects aren't marked as disabled
-	// (WebKit marks them as disabled)
-	select.disabled = true;
-	support.optDisabled = !opt.disabled;
-
-	// Test to see if it's possible to delete an expando from an element
-	// Fails in Internet Explorer
-	try {
-		delete div.test;
-	} catch( e ) {
-		support.deleteExpando = false;
-	}
-
-	if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
-		div.attachEvent( "onclick", function() {
-			// Cloning a node shouldn't copy over any
-			// bound event handlers (IE does this)
-			support.noCloneEvent = false;
-		});
-		div.cloneNode( true ).fireEvent( "onclick" );
-	}
-
-	// Check if a radio maintains its value
-	// after being appended to the DOM
-	input = document.createElement("input");
-	input.value = "t";
-	input.setAttribute("type", "radio");
-	support.radioValue = input.value === "t";
-
-	input.setAttribute("checked", "checked");
-
-	// #11217 - WebKit loses check when the name is after the checked attribute
-	input.setAttribute( "name", "t" );
-
-	div.appendChild( input );
-	fragment = document.createDocumentFragment();
-	fragment.appendChild( div.lastChild );
-
-	// WebKit doesn't clone checked state correctly in fragments
-	support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
-
-	// Check if a disconnected checkbox will retain its checked
-	// value of true after appended to the DOM (IE6/7)
-	support.appendChecked = input.checked;
-
-	fragment.removeChild( input );
-	fragment.appendChild( div );
-
-	// Technique from Juriy Zaytsev
-	// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
-	// We only care about the case where non-standard event systems
-	// are used, namely in IE. Short-circuiting here helps us to
-	// avoid an eval call (in setAttribute) which can cause CSP
-	// to go haywire. See: https://developer.mozilla.org/en/Security/CSP
-	if ( div.attachEvent ) {
-		for ( i in {
-			submit: 1,
-			change: 1,
-			focusin: 1
-		}) {
-			eventName = "on" + i;
-			isSupported = ( eventName in div );
-			if ( !isSupported ) {
-				div.setAttribute( eventName, "return;" );
-				isSupported = ( typeof div[ eventName ] === "function" );
-			}
-			support[ i + "Bubbles" ] = isSupported;
-		}
-	}
-
-	fragment.removeChild( div );
-
-	// Null elements to avoid leaks in IE
-	fragment = select = opt = div = input = null;
-
-	// Run tests that need a body at doc ready
-	jQuery(function() {
-		var container, outer, inner, table, td, offsetSupport,
-			marginDiv, conMarginTop, style, html, positionTopLeftWidthHeight,
-			paddingMarginBorderVisibility, paddingMarginBorder,
-			body = document.getElementsByTagName("body")[0];
-
-		if ( !body ) {
-			// Return for frameset docs that don't have a body
-			return;
-		}
-
-		conMarginTop = 1;
-		paddingMarginBorder = "padding:0;margin:0;border:";
-		positionTopLeftWidthHeight = "position:absolute;top:0;left:0;width:1px;height:1px;";
-		paddingMarginBorderVisibility = paddingMarginBorder + "0;visibility:hidden;";
-		style = "style='" + positionTopLeftWidthHeight + paddingMarginBorder + "5px solid #000;";
-		html = "<div " + style + "display:block;'><div style='" + paddingMarginBorder + "0;display:block;overflow:hidden;'></div></div>" +
-			"<table " + style + "' cellpadding='0' cellspacing='0'>" +
-			"<tr><td></td></tr></table>";
-
-		container = document.createElement("div");
-		container.style.cssText = paddingMarginBorderVisibility + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px";
-		body.insertBefore( container, body.firstChild );
-
-		// Construct the test element
-		div = document.createElement("div");
-		container.appendChild( div );
-
-		// Check if table cells still have offsetWidth/Height when they are set
-		// to display:none and there are still other visible table cells in a
-		// table row; if so, offsetWidth/Height are not reliable for use when
-		// determining if an element has been hidden directly using
-		// display:none (it is still safe to use offsets if a parent element is
-		// hidden; don safety goggles and see bug #4512 for more information).
-		// (only IE 8 fails this test)
-		div.innerHTML = "<table><tr><td style='" + paddingMarginBorder + "0;display:none'></td><td>t</td></tr></table>";
-		tds = div.getElementsByTagName( "td" );
-		isSupported = ( tds[ 0 ].offsetHeight === 0 );
-
-		tds[ 0 ].style.display = "";
-		tds[ 1 ].style.display = "none";
-
-		// Check if empty table cells still have offsetWidth/Height
-		// (IE <= 8 fail this test)
-		support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
-
-		// Check if div with explicit width and no margin-right incorrectly
-		// gets computed margin-right based on width of container. For more
-		// info see bug #3333
-		// Fails in WebKit before Feb 2011 nightlies
-		// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
-		if ( window.getComputedStyle ) {
-			div.innerHTML = "";
-			marginDiv = document.createElement( "div" );
-			marginDiv.style.width = "0";
-			marginDiv.style.marginRight = "0";
-			div.style.width = "2px";
-			div.appendChild( marginDiv );
-			support.reliableMarginRight =
-				( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;
-		}
-
-		if ( typeof div.style.zoom !== "undefined" ) {
-			// Check if natively block-level elements act like inline-block
-			// elements when setting their display to 'inline' and giving
-			// them layout
-			// (IE < 8 does this)
-			div.innerHTML = "";
-			div.style.width = div.style.padding = "1px";
-			div.style.border = 0;
-			div.style.overflow = "hidden";
-			div.style.display = "inline";
-			div.style.zoom = 1;
-			support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
-
-			// Check if elements with layout shrink-wrap their children
-			// (IE 6 does this)
-			div.style.display = "block";
-			div.style.overflow = "visible";
-			div.innerHTML = "<div style='width:5px;'></div>";
-			support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
-		}
-
-		div.style.cssText = positionTopLeftWidthHeight + paddingMarginBorderVisibility;
-		div.innerHTML = html;
-
-		outer = div.firstChild;
-		inner = outer.firstChild;
-		td = outer.nextSibling.firstChild.firstChild;
-
-		offsetSupport = {
-			doesNotAddBorder: ( inner.offsetTop !== 5 ),
-			doesAddBorderForTableAndCells: ( td.offsetTop === 5 )
-		};
-
-		inner.style.position = "fixed";
-		inner.style.top = "20px";
-
-		// safari subtracts parent border width here which is 5px
-		offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 );
-		inner.style.position = inner.style.top = "";
-
-		outer.style.overflow = "hidden";
-		outer.style.position = "relative";
-
-		offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 );
-		offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop );
-
-		if ( window.getComputedStyle ) {
-			div.style.marginTop = "1%";
-			support.pixelMargin = ( window.getComputedStyle( div, null ) || { marginTop: 0 } ).marginTop !== "1%";
-		}
-
-		if ( typeof container.style.zoom !== "undefined" ) {
-			container.style.zoom = 1;
-		}
-
-		body.removeChild( container );
-		marginDiv = div = container = null;
-
-		jQuery.extend( support, offsetSupport );
-	});
-
-	return support;
-})();
-
-
-
-
-var rbrace = /^(?:\{.*\}|\[.*\])$/,
-	rmultiDash = /([A-Z])/g;
-
-jQuery.extend({
-	cache: {},
-
-	// Please use with caution
-	uuid: 0,
-
-	// Unique for each copy of jQuery on the page
-	// Non-digits removed to match rinlinejQuery
-	expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
-
-	// The following elements throw uncatchable exceptions if you
-	// attempt to add expando properties to them.
-	noData: {
-		"embed": true,
-		// Ban all objects except for Flash (which handle expandos)
-		"object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
-		"applet": true
-	},
-
-	hasData: function( elem ) {
-		elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
-		return !!elem && !isEmptyDataObject( elem );
-	},
-
-	data: function( elem, name, data, pvt /* Internal Use Only */ ) {
-		if ( !jQuery.acceptData( elem ) ) {
-			return;
-		}
-
-		var privateCache, thisCache, ret,
-			internalKey = jQuery.expando,
-			getByName = typeof name === "string",
-
-			// We have to handle DOM nodes and JS objects differently because IE6-7
-			// can't GC object references properly across the DOM-JS boundary
-			isNode = elem.nodeType,
-
-			// Only DOM nodes need the global jQuery cache; JS object data is
-			// attached directly to the object so GC can occur automatically
-			cache = isNode ? jQuery.cache : elem,
-
-			// Only defining an ID for JS objects if its cache already exists allows
-			// the code to shortcut on the same path as a DOM node with no cache
-			id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey,
-			isEvents = name === "events";
-
-		// Avoid doing any more work than we need to when trying to get data on an
-		// object that has no data at all
-		if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) {
-			return;
-		}
-
-		if ( !id ) {
-			// Only DOM nodes need a new unique ID for each element since their data
-			// ends up in the global cache
-			if ( isNode ) {
-				elem[ internalKey ] = id = ++jQuery.uuid;
-			} else {
-				id = internalKey;
-			}
-		}
-
-		if ( !cache[ id ] ) {
-			cache[ id ] = {};
-
-			// Avoids exposing jQuery metadata on plain JS objects when the object
-			// is serialized using JSON.stringify
-			if ( !isNode ) {
-				cache[ id ].toJSON = jQuery.noop;
-			}
-		}
-
-		// An object can be passed to jQuery.data instead of a key/value pair; this gets
-		// shallow copied over onto the existing cache
-		if ( typeof name === "object" || typeof name === "function" ) {
-			if ( pvt ) {
-				cache[ id ] = jQuery.extend( cache[ id ], name );
-			} else {
-				cache[ id ].data = jQuery.extend( cache[ id ].data, name );
-			}
-		}
-
-		privateCache = thisCache = cache[ id ];
-
-		// jQuery data() is stored in a separate object inside the object's internal data
-		// cache in order to avoid key collisions between internal data and user-defined
-		// data.
-		if ( !pvt ) {
-			if ( !thisCache.data ) {
-				thisCache.data = {};
-			}
-
-			thisCache = thisCache.data;
-		}
-
-		if ( data !== undefined ) {
-			thisCache[ jQuery.camelCase( name ) ] = data;
-		}
-
-		// Users should not attempt to inspect the internal events object using jQuery.data,
-		// it is undocumented and subject to change. But does anyone listen? No.
-		if ( isEvents && !thisCache[ name ] ) {
-			return privateCache.events;
-		}
-
-		// Check for both converted-to-camel and non-converted data property names
-		// If a data property was specified
-		if ( getByName ) {
-
-			// First Try to find as-is property data
-			ret = thisCache[ name ];
-
-			// Test for null|undefined property data
-			if ( ret == null ) {
-
-				// Try to find the camelCased property
-				ret = thisCache[ jQuery.camelCase( name ) ];
-			}
-		} else {
-			ret = thisCache;
-		}
-
-		return ret;
-	},
-
-	removeData: function( elem, name, pvt /* Internal Use Only */ ) {
-		if ( !jQuery.acceptData( elem ) ) {
-			return;
-		}
-
-		var thisCache, i, l,
-
-			// Reference to internal data cache key
-			internalKey = jQuery.expando,
-
-			isNode = elem.nodeType,
-
-			// See jQuery.data for more information
-			cache = isNode ? jQuery.cache : elem,
-
-			// See jQuery.data for more information
-			id = isNode ? elem[ internalKey ] : internalKey;
-
-		// If there is already no cache entry for this object, there is no
-		// purpose in continuing
-		if ( !cache[ id ] ) {
-			return;
-		}
-
-		if ( name ) {
-
-			thisCache = pvt ? cache[ id ] : cache[ id ].data;
-
-			if ( thisCache ) {
-
-				// Support array or space separated string names for data keys
-				if ( !jQuery.isArray( name ) ) {
-
-					// try the string as a key before any manipulation
-					if ( name in thisCache ) {
-						name = [ name ];
-					} else {
-
-						// split the camel cased version by spaces unless a key with the spaces exists
-						name = jQuery.camelCase( name );
-						if ( name in thisCache ) {
-							name = [ name ];
-						} else {
-							name = name.split( " " );
-						}
-					}
-				}
-
-				for ( i = 0, l = name.length; i < l; i++ ) {
-					delete thisCache[ name[i] ];
-				}
-
-				// If there is no data left in the cache, we want to continue
-				// and let the cache object itself get destroyed
-				if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
-					return;
-				}
-			}
-		}
-
-		// See jQuery.data for more information
-		if ( !pvt ) {
-			delete cache[ id ].data;
-
-			// Don't destroy the parent cache unless the internal data object
-			// had been the only thing left in it
-			if ( !isEmptyDataObject(cache[ id ]) ) {
-				return;
-			}
-		}
-
-		// Browsers that fail expando deletion also refuse to delete expandos on
-		// the window, but it will allow it on all other JS objects; other browsers
-		// don't care
-		// Ensure that `cache` is not a window object #10080
-		if ( jQuery.support.deleteExpando || !cache.setInterval ) {
-			delete cache[ id ];
-		} else {
-			cache[ id ] = null;
-		}
-
-		// We destroyed the cache and need to eliminate the expando on the node to avoid
-		// false lookups in the cache for entries that no longer exist
-		if ( isNode ) {
-			// IE does not allow us to delete expando properties from nodes,
-			// nor does it have a removeAttribute function on Document nodes;
-			// we must handle all of these cases
-			if ( jQuery.support.deleteExpando ) {
-				delete elem[ internalKey ];
-			} else if ( elem.removeAttribute ) {
-				elem.removeAttribute( internalKey );
-			} else {
-				elem[ internalKey ] = null;
-			}
-		}
-	},
-
-	// For internal use only.
-	_data: function( elem, name, data ) {
-		return jQuery.data( elem, name, data, true );
-	},
-
-	// A method for determining if a DOM node can handle the data expando
-	acceptData: function( elem ) {
-		if ( elem.nodeName ) {
-			var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
-
-			if ( match ) {
-				return !(match === true || elem.getAttribute("classid") !== match);
-			}
-		}
-
-		return true;
-	}
-});
-
-jQuery.fn.extend({
-	data: function( key, value ) {
-		var parts, part, attr, name, l,
-			elem = this[0],
-			i = 0,
-			data = null;
-
-		// Gets all values
-		if ( key === undefined ) {
-			if ( this.length ) {
-				data = jQuery.data( elem );
-
-				if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
-					attr = elem.attributes;
-					for ( l = attr.length; i < l; i++ ) {
-						name = attr[i].name;
-
-						if ( name.indexOf( "data-" ) === 0 ) {
-							name = jQuery.camelCase( name.substring(5) );
-
-							dataAttr( elem, name, data[ name ] );
-						}
-					}
-					jQuery._data( elem, "parsedAttrs", true );
-				}
-			}
-
-			return data;
-		}
-
-		// Sets multiple values
-		if ( typeof key === "object" ) {
-			return this.each(function() {
-				jQuery.data( this, key );
-			});
-		}
-
-		parts = key.split( ".", 2 );
-		parts[1] = parts[1] ? "." + parts[1] : "";
-		part = parts[1] + "!";
-
-		return jQuery.access( this, function( value ) {
-
-			if ( value === undefined ) {
-				data = this.triggerHandler( "getData" + part, [ parts[0] ] );
-
-				// Try to fetch any internally stored data first
-				if ( data === undefined && elem ) {
-					data = jQuery.data( elem, key );
-					data = dataAttr( elem, key, data );
-				}
-
-				return data === undefined && parts[1] ?
-					this.data( parts[0] ) :
-					data;
-			}
-
-			parts[1] = value;
-			this.each(function() {
-				var self = jQuery( this );
-
-				self.triggerHandler( "setData" + part, parts );
-				jQuery.data( this, key, value );
-				self.triggerHandler( "changeData" + part, parts );
-			});
-		}, null, value, arguments.length > 1, null, false );
-	},
-
-	removeData: function( key ) {
-		return this.each(function() {
-			jQuery.removeData( this, key );
-		});
-	}
-});
-
-function dataAttr( elem, key, data ) {
-	// If nothing was found internally, try to fetch any
-	// data from the HTML5 data-* attribute
-	if ( data === undefined && elem.nodeType === 1 ) {
-
-		var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
-
-		data = elem.getAttribute( name );
-
-		if ( typeof data === "string" ) {
-			try {
-				data = data === "true" ? true :
-				data === "false" ? false :
-				data === "null" ? null :
-				jQuery.isNumeric( data ) ? +data :
-					rbrace.test( data ) ? jQuery.parseJSON( data ) :
-					data;
-			} catch( e ) {}
-
-			// Make sure we set the data so it isn't changed later
-			jQuery.data( elem, key, data );
-
-		} else {
-			data = undefined;
-		}
-	}
-
-	return data;
-}
-
-// checks a cache object for emptiness
-function isEmptyDataObject( obj ) {
-	for ( var name in obj ) {
-
-		// if the public data object is empty, the private is still empty
-		if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
-			continue;
-		}
-		if ( name !== "toJSON" ) {
-			return false;
-		}
-	}
-
-	return true;
-}
-
-
-
-
-function handleQueueMarkDefer( elem, type, src ) {
-	var deferDataKey = type + "defer",
-		queueDataKey = type + "queue",
-		markDataKey = type + "mark",
-		defer = jQuery._data( elem, deferDataKey );
-	if ( defer &&
-		( src === "queue" || !jQuery._data(elem, queueDataKey) ) &&
-		( src === "mark" || !jQuery._data(elem, markDataKey) ) ) {
-		// Give room for hard-coded callbacks to fire first
-		// and eventually mark/queue something else on the element
-		setTimeout( function() {
-			if ( !jQuery._data( elem, queueDataKey ) &&
-				!jQuery._data( elem, markDataKey ) ) {
-				jQuery.removeData( elem, deferDataKey, true );
-				defer.fire();
-			}
-		}, 0 );
-	}
-}
-
-jQuery.extend({
-
-	_mark: function( elem, type ) {
-		if ( elem ) {
-			type = ( type || "fx" ) + "mark";
-			jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 );
-		}
-	},
-
-	_unmark: function( force, elem, type ) {
-		if ( force !== true ) {
-			type = elem;
-			elem = force;
-			force = false;
-		}
-		if ( elem ) {
-			type = type || "fx";
-			var key = type + "mark",
-				count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 );
-			if ( count ) {
-				jQuery._data( elem, key, count );
-			} else {
-				jQuery.removeData( elem, key, true );
-				handleQueueMarkDefer( elem, type, "mark" );
-			}
-		}
-	},
-
-	queue: function( elem, type, data ) {
-		var q;
-		if ( elem ) {
-			type = ( type || "fx" ) + "queue";
-			q = jQuery._data( elem, type );
-
-			// Speed up dequeue by getting out quickly if this is just a lookup
-			if ( data ) {
-				if ( !q || jQuery.isArray(data) ) {
-					q = jQuery._data( elem, type, jQuery.makeArray(data) );
-				} else {
-					q.push( data );
-				}
-			}
-			return q || [];
-		}
-	},
-
-	dequeue: function( elem, type ) {
-		type = type || "fx";
-
-		var queue = jQuery.queue( elem, type ),
-			fn = queue.shift(),
-			hooks = {};
-
-		// If the fx queue is dequeued, always remove the progress sentinel
-		if ( fn === "inprogress" ) {
-			fn = queue.shift();
-		}
-
-		if ( fn ) {
-			// Add a progress sentinel to prevent the fx queue from being
-			// automatically dequeued
-			if ( type === "fx" ) {
-				queue.unshift( "inprogress" );
-			}
-
-			jQuery._data( elem, type + ".run", hooks );
-			fn.call( elem, function() {
-				jQuery.dequeue( elem, type );
-			}, hooks );
-		}
-
-		if ( !queue.length ) {
-			jQuery.removeData( elem, type + "queue " + type + ".run", true );
-			handleQueueMarkDefer( elem, type, "queue" );
-		}
-	}
-});
-
-jQuery.fn.extend({
-	queue: function( type, data ) {
-		var setter = 2;
-
-		if ( typeof type !== "string" ) {
-			data = type;
-			type = "fx";
-			setter--;
-		}
-
-		if ( arguments.length < setter ) {
-			return jQuery.queue( this[0], type );
-		}
-
-		return data === undefined ?
-			this :
-			this.each(function() {
-				var queue = jQuery.queue( this, type, data );
-
-				if ( type === "fx" && queue[0] !== "inprogress" ) {
-					jQuery.dequeue( this, type );
-				}
-			});
-	},
-	dequeue: function( type ) {
-		return this.each(function() {
-			jQuery.dequeue( this, type );
-		});
-	},
-	// Based off of the plugin by Clint Helfers, with permission.
-	// http://blindsignals.com/index.php/2009/07/jquery-delay/
-	delay: function( time, type ) {
-		time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
-		type = type || "fx";
-
-		return this.queue( type, function( next, hooks ) {
-			var timeout = setTimeout( next, time );
-			hooks.stop = function() {
-				clearTimeout( timeout );
-			};
-		});
-	},
-	clearQueue: function( type ) {
-		return this.queue( type || "fx", [] );
-	},
-	// Get a promise resolved when queues of a certain type
-	// are emptied (fx is the type by default)
-	promise: function( type, object ) {
-		if ( typeof type !== "string" ) {
-			object = type;
-			type = undefined;
-		}
-		type = type || "fx";
-		var defer = jQuery.Deferred(),
-			elements = this,
-			i = elements.length,
-			count = 1,
-			deferDataKey = type + "defer",
-			queueDataKey = type + "queue",
-			markDataKey = type + "mark",
-			tmp;
-		function resolve() {
-			if ( !( --count ) ) {
-				defer.resolveWith( elements, [ elements ] );
-			}
-		}
-		while( i-- ) {
-			if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||
-					( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||
-						jQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&
-					jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) {
-				count++;
-				tmp.add( resolve );
-			}
-		}
-		resolve();
-		return defer.promise( object );
-	}
-});
-
-
-
-
-var rclass = /[\n\t\r]/g,
-	rspace = /\s+/,
-	rreturn = /\r/g,
-	rtype = /^(?:button|input)$/i,
-	rfocusable = /^(?:button|input|object|select|textarea)$/i,
-	rclickable = /^a(?:rea)?$/i,
-	rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
-	getSetAttribute = jQuery.support.getSetAttribute,
-	nodeHook, boolHook, fixSpecified;
-
-jQuery.fn.extend({
-	attr: function( name, value ) {
-		return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
-	},
-
-	removeAttr: function( name ) {
-		return this.each(function() {
-			jQuery.removeAttr( this, name );
-		});
-	},
-
-	prop: function( name, value ) {
-		return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
-	},
-
-	removeProp: function( name ) {
-		name = jQuery.propFix[ name ] || name;
-		return this.each(function() {
-			// try/catch handles cases where IE balks (such as removing a property on window)
-			try {
-				this[ name ] = undefined;
-				delete this[ name ];
-			} catch( e ) {}
-		});
-	},
-
-	addClass: function( value ) {
-		var classNames, i, l, elem,
-			setClass, c, cl;
-
-		if ( jQuery.isFunction( value ) ) {
-			return this.each(function( j ) {
-				jQuery( this ).addClass( value.call(this, j, this.className) );
-			});
-		}
-
-		if ( value && typeof value === "string" ) {
-			classNames = value.split( rspace );
-
-			for ( i = 0, l = this.length; i < l; i++ ) {
-				elem = this[ i ];
-
-				if ( elem.nodeType === 1 ) {
-					if ( !elem.className && classNames.length === 1 ) {
-						elem.className = value;
-
-					} else {
-						setClass = " " + elem.className + " ";
-
-						for ( c = 0, cl = classNames.length; c < cl; c++ ) {
-							if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {
-								setClass += classNames[ c ] + " ";
-							}
-						}
-						elem.className = jQuery.trim( setClass );
-					}
-				}
-			}
-		}
-
-		return this;
-	},
-
-	removeClass: function( value ) {
-		var classNames, i, l, elem, className, c, cl;
-
-		if ( jQuery.isFunction( value ) ) {
-			return this.each(function( j ) {
-				jQuery( this ).removeClass( value.call(this, j, this.className) );
-			});
-		}
-
-		if ( (value && typeof value === "string") || value === undefined ) {
-			classNames = ( value || "" ).split( rspace );
-
-			for ( i = 0, l = this.length; i < l; i++ ) {
-				elem = this[ i ];
-
-				if ( elem.nodeType === 1 && elem.className ) {
-					if ( value ) {
-						className = (" " + elem.className + " ").replace( rclass, " " );
-						for ( c = 0, cl = classNames.length; c < cl; c++ ) {
-							className = className.replace(" " + classNames[ c ] + " ", " ");
-						}
-						elem.className = jQuery.trim( className );
-
-					} else {
-						elem.className = "";
-					}
-				}
-			}
-		}
-
-		return this;
-	},
-
-	toggleClass: function( value, stateVal ) {
-		var type = typeof value,
-			isBool = typeof stateVal === "boolean";
-
-		if ( jQuery.isFunction( value ) ) {
-			return this.each(function( i ) {
-				jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
-			});
-		}
-
-		return this.each(function() {
-			if ( type === "string" ) {
-				// toggle individual class names
-				var className,
-					i = 0,
-					self = jQuery( this ),
-					state = stateVal,
-					classNames = value.split( rspace );
-
-				while ( (className = classNames[ i++ ]) ) {
-					// check each className given, space seperated list
-					state = isBool ? state : !self.hasClass( className );
-					self[ state ? "addClass" : "removeClass" ]( className );
-				}
-
-			} else if ( type === "undefined" || type === "boolean" ) {
-				if ( this.className ) {
-					// store className if set
-					jQuery._data( this, "__className__", this.className );
-				}
-
-				// toggle whole className
-				this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
-			}
-		});
-	},
-
-	hasClass: function( selector ) {
-		var className = " " + selector + " ",
-			i = 0,
-			l = this.length;
-		for ( ; i < l; i++ ) {
-			if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
-				return true;
-			}
-		}
-
-		return false;
-	},
-
-	val: function( value ) {
-		var hooks, ret, isFunction,
-			elem = this[0];
-
-		if ( !arguments.length ) {
-			if ( elem ) {
-				hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
-
-				if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
-					return ret;
-				}
-
-				ret = elem.value;
-
-				return typeof ret === "string" ?
-					// handle most common string cases
-					ret.replace(rreturn, "") :
-					// handle cases where value is null/undef or number
-					ret == null ? "" : ret;
-			}
-
-			return;
-		}
-
-		isFunction = jQuery.isFunction( value );
-
-		return this.each(function( i ) {
-			var self = jQuery(this), val;
-
-			if ( this.nodeType !== 1 ) {
-				return;
-			}
-
-			if ( isFunction ) {
-				val = value.call( this, i, self.val() );
-			} else {
-				val = value;
-			}
-
-			// Treat null/undefined as ""; convert numbers to string
-			if ( val == null ) {
-				val = "";
-			} else if ( typeof val === "number" ) {
-				val += "";
-			} else if ( jQuery.isArray( val ) ) {
-				val = jQuery.map(val, function ( value ) {
-					return value == null ? "" : value + "";
-				});
-			}
-
-			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
-
-			// If set returns undefined, fall back to normal setting
-			if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
-				this.value = val;
-			}
-		});
-	}
-});
-
-jQuery.extend({
-	valHooks: {
-		option: {
-			get: function( elem ) {
-				// attributes.value is undefined in Blackberry 4.7 but
-				// uses .value. See #6932
-				var val = elem.attributes.value;
-				return !val || val.specified ? elem.value : elem.text;
-			}
-		},
-		select: {
-			get: function( elem ) {
-				var value, i, max, option,
-					index = elem.selectedIndex,
-					values = [],
-					options = elem.options,
-					one = elem.type === "select-one";
-
-				// Nothing was selected
-				if ( index < 0 ) {
-					return null;
-				}
-
-				// Loop through all the selected options
-				i = one ? index : 0;
-				max = one ? index + 1 : options.length;
-				for ( ; i < max; i++ ) {
-					option = options[ i ];
-
-					// Don't return options that are disabled or in a disabled optgroup
-					if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
-							(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
-
-						// Get the specific value for the option
-						value = jQuery( option ).val();
-
-						// We don't need an array for one selects
-						if ( one ) {
-							return value;
-						}
-
-						// Multi-Selects return an array
-						values.push( value );
-					}
-				}
-
-				// Fixes Bug #2551 -- select.val() broken in IE after form.reset()
-				if ( one && !values.length && options.length ) {
-					return jQuery( options[ index ] ).val();
-				}
-
-				return values;
-			},
-
-			set: function( elem, value ) {
-				var values = jQuery.makeArray( value );
-
-				jQuery(elem).find("option").each(function() {
-					this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
-				});
-
-				if ( !values.length ) {
-					elem.selectedIndex = -1;
-				}
-				return values;
-			}
-		}
-	},
-
-	attrFn: {
-		val: true,
-		css: true,
-		html: true,
-		text: true,
-		data: true,
-		width: true,
-		height: true,
-		offset: true
-	},
-
-	attr: function( elem, name, value, pass ) {
-		var ret, hooks, notxml,
-			nType = elem.nodeType;
-
-		// don't get/set attributes on text, comment and attribute nodes
-		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
-			return;
-		}
-
-		if ( pass && name in jQuery.attrFn ) {
-			return jQuery( elem )[ name ]( value );
-		}
-
-		// Fallback to prop when attributes are not supported
-		if ( typeof elem.getAttribute === "undefined" ) {
-			return jQuery.prop( elem, name, value );
-		}
-
-		notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
-
-		// All attributes are lowercase
-		// Grab necessary hook if one is defined
-		if ( notxml ) {
-			name = name.toLowerCase();
-			hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );
-		}
-
-		if ( value !== undefined ) {
-
-			if ( value === null ) {
-				jQuery.removeAttr( elem, name );
-				return;
-
-			} else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
-				return ret;
-
-			} else {
-				elem.setAttribute( name, "" + value );
-				return value;
-			}
-
-		} else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
-			return ret;
-
-		} else {
-
-			ret = elem.getAttribute( name );
-
-			// Non-existent attributes return null, we normalize to undefined
-			return ret === null ?
-				undefined :
-				ret;
-		}
-	},
-
-	removeAttr: function( elem, value ) {
-		var propName, attrNames, name, l, isBool,
-			i = 0;
-
-		if ( value && elem.nodeType === 1 ) {
-			attrNames = value.toLowerCase().split( rspace );
-			l = attrNames.length;
-
-			for ( ; i < l; i++ ) {
-				name = attrNames[ i ];
-
-				if ( name ) {
-					propName = jQuery.propFix[ name ] || name;
-					isBool = rboolean.test( name );
-
-					// See #9699 for explanation of this approach (setting first, then removal)
-					// Do not do this for boolean attributes (see #10870)
-					if ( !isBool ) {
-						jQuery.attr( elem, name, "" );
-					}
-					elem.removeAttribute( getSetAttribute ? name : propName );
-
-					// Set corresponding property to false for boolean attributes
-					if ( isBool && propName in elem ) {
-						elem[ propName ] = false;
-					}
-				}
-			}
-		}
-	},
-
-	attrHooks: {
-		type: {
-			set: function( elem, value ) {
-				// We can't allow the type property to be changed (since it causes problems in IE)
-				if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
-					jQuery.error( "type property can't be changed" );
-				} else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
-					// Setting the type on a radio button after the value resets the value in IE6-9
-					// Reset value to it's default in case type is set after value
-					// This is for element creation
-					var val = elem.value;
-					elem.setAttribute( "type", value );
-					if ( val ) {
-						elem.value = val;
-					}
-					return value;
-				}
-			}
-		},
-		// Use the value property for back compat
-		// Use the nodeHook for button elements in IE6/7 (#1954)
-		value: {
-			get: function( elem, name ) {
-				if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
-					return nodeHook.get( elem, name );
-				}
-				return name in elem ?
-					elem.value :
-					null;
-			},
-			set: function( elem, value, name ) {
-				if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
-					return nodeHook.set( elem, value, name );
-				}
-				// Does not return so that setAttribute is also used
-				elem.value = value;
-			}
-		}
-	},
-
-	propFix: {
-		tabindex: "tabIndex",
-		readonly: "readOnly",
-		"for": "htmlFor",
-		"class": "className",
-		maxlength: "maxLength",
-		cellspacing: "cellSpacing",
-		cellpadding: "cellPadding",
-		rowspan: "rowSpan",
-		colspan: "colSpan",
-		usemap: "useMap",
-		frameborder: "frameBorder",
-		contenteditable: "contentEditable"
-	},
-
-	prop: function( elem, name, value ) {
-		var ret, hooks, notxml,
-			nType = elem.nodeType;
-
-		// don't get/set properties on text, comment and attribute nodes
-		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
-			return;
-		}
-
-		notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
-
-		if ( notxml ) {
-			// Fix name and attach hooks
-			name = jQuery.propFix[ name ] || name;
-			hooks = jQuery.propHooks[ name ];
-		}
-
-		if ( value !== undefined ) {
-			if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
-				return ret;
-
-			} else {
-				return ( elem[ name ] = value );
-			}
-
-		} else {
-			if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
-				return ret;
-
-			} else {
-				return elem[ name ];
-			}
-		}
-	},
-
-	propHooks: {
-		tabIndex: {
-			get: function( elem ) {
-				// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
-				// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
-				var attributeNode = elem.getAttributeNode("tabindex");
-
-				return attributeNode && attributeNode.specified ?
-					parseInt( attributeNode.value, 10 ) :
-					rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
-						0 :
-						undefined;
-			}
-		}
-	}
-});
-
-// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional)
-jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex;
-
-// Hook for boolean attributes
-boolHook = {
-	get: function( elem, name ) {
-		// Align boolean attributes with corresponding properties
-		// Fall back to attribute presence where some booleans are not supported
-		var attrNode,
-			property = jQuery.prop( elem, name );
-		return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
-			name.toLowerCase() :
-			undefined;
-	},
-	set: function( elem, value, name ) {
-		var propName;
-		if ( value === false ) {
-			// Remove boolean attributes when set to false
-			jQuery.removeAttr( elem, name );
-		} else {
-			// value is true since we know at this point it's type boolean and not false
-			// Set boolean attributes to the same name and set the DOM property
-			propName = jQuery.propFix[ name ] || name;
-			if ( propName in elem ) {
-				// Only set the IDL specifically if it already exists on the element
-				elem[ propName ] = true;
-			}
-
-			elem.setAttribute( name, name.toLowerCase() );
-		}
-		return name;
-	}
-};
-
-// IE6/7 do not support getting/setting some attributes with get/setAttribute
-if ( !getSetAttribute ) {
-
-	fixSpecified = {
-		name: true,
-		id: true,
-		coords: true
-	};
-
-	// Use this for any attribute in IE6/7
-	// This fixes almost every IE6/7 issue
-	nodeHook = jQuery.valHooks.button = {
-		get: function( elem, name ) {
-			var ret;
-			ret = elem.getAttributeNode( name );
-			return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ?
-				ret.nodeValue :
-				undefined;
-		},
-		set: function( elem, value, name ) {
-			// Set the existing or create a new attribute node
-			var ret = elem.getAttributeNode( name );
-			if ( !ret ) {
-				ret = document.createAttribute( name );
-				elem.setAttributeNode( ret );
-			}
-			return ( ret.nodeValue = value + "" );
-		}
-	};
-
-	// Apply the nodeHook to tabindex
-	jQuery.attrHooks.tabindex.set = nodeHook.set;
-
-	// Set width and height to auto instead of 0 on empty string( Bug #8150 )
-	// This is for removals
-	jQuery.each([ "width", "height" ], function( i, name ) {
-		jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
-			set: function( elem, value ) {
-				if ( value === "" ) {
-					elem.setAttribute( name, "auto" );
-					return value;
-				}
-			}
-		});
-	});
-
-	// Set contenteditable to false on removals(#10429)
-	// Setting to empty string throws an error as an invalid value
-	jQuery.attrHooks.contenteditable = {
-		get: nodeHook.get,
-		set: function( elem, value, name ) {
-			if ( value === "" ) {
-				value = "false";
-			}
-			nodeHook.set( elem, value, name );
-		}
-	};
-}
-
-
-// Some attributes require a special call on IE
-if ( !jQuery.support.hrefNormalized ) {
-	jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
-		jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
-			get: function( elem ) {
-				var ret = elem.getAttribute( name, 2 );
-				return ret === null ? undefined : ret;
-			}
-		});
-	});
-}
-
-if ( !jQuery.support.style ) {
-	jQuery.attrHooks.style = {
-		get: function( elem ) {
-			// Return undefined in the case of empty string
-			// Normalize to lowercase since IE uppercases css property names
-			return elem.style.cssText.toLowerCase() || undefined;
-		},
-		set: function( elem, value ) {
-			return ( elem.style.cssText = "" + value );
-		}
-	};
-}
-
-// Safari mis-reports the default selected property of an option
-// Accessing the parent's selectedIndex property fixes it
-if ( !jQuery.support.optSelected ) {
-	jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
-		get: function( elem ) {
-			var parent = elem.parentNode;
-
-			if ( parent ) {
-				parent.selectedIndex;
-
-				// Make sure that it also works with optgroups, see #5701
-				if ( parent.parentNode ) {
-					parent.parentNode.selectedIndex;
-				}
-			}
-			return null;
-		}
-	});
-}
-
-// IE6/7 call enctype encoding
-if ( !jQuery.support.enctype ) {
-	jQuery.propFix.enctype = "encoding";
-}
-
-// Radios and checkboxes getter/setter
-if ( !jQuery.support.checkOn ) {
-	jQuery.each([ "radio", "checkbox" ], function() {
-		jQuery.valHooks[ this ] = {
-			get: function( elem ) {
-				// Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
-				return elem.getAttribute("value") === null ? "on" : elem.value;
-			}
-		};
-	});
-}
-jQuery.each([ "radio", "checkbox" ], function() {
-	jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
-		set: function( elem, value ) {
-			if ( jQuery.isArray( value ) ) {
-				return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
-			}
-		}
-	});
-});
-
-
-
-
-var rformElems = /^(?:textarea|input|select)$/i,
-	rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/,
-	rhoverHack = /(?:^|\s)hover(\.\S+)?\b/,
-	rkeyEvent = /^key/,
-	rmouseEvent = /^(?:mouse|contextmenu)|click/,
-	rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
-	rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,
-	quickParse = function( selector ) {
-		var quick = rquickIs.exec( selector );
-		if ( quick ) {
-			//   0  1    2   3
-			// [ _, tag, id, class ]
-			quick[1] = ( quick[1] || "" ).toLowerCase();
-			quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" );
-		}
-		return quick;
-	},
-	quickIs = function( elem, m ) {
-		var attrs = elem.attributes || {};
-		return (
-			(!m[1] || elem.nodeName.toLowerCase() === m[1]) &&
-			(!m[2] || (attrs.id || {}).value === m[2]) &&
-			(!m[3] || m[3].test( (attrs[ "class" ] || {}).value ))
-		);
-	},
-	hoverHack = function( events ) {
-		return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
-	};
-
-/*
- * Helper functions for managing events -- not part of the public interface.
- * Props to Dean Edwards' addEvent library for many of the ideas.
- */
-jQuery.event = {
-
-	add: function( elem, types, handler, data, selector ) {
-
-		var elemData, eventHandle, events,
-			t, tns, type, namespaces, handleObj,
-			handleObjIn, quick, handlers, special;
-
-		// Don't attach events to noData or text/comment nodes (allow plain objects tho)
-		if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {
-			return;
-		}
-
-		// Caller can pass in an object of custom data in lieu of the handler
-		if ( handler.handler ) {
-			handleObjIn = handler;
-			handler = handleObjIn.handler;
-			selector = handleObjIn.selector;
-		}
-
-		// Make sure that the handler has a unique ID, used to find/remove it later
-		if ( !handler.guid ) {
-			handler.guid = jQuery.guid++;
-		}
-
-		// Init the element's event structure and main handler, if this is the first
-		events = elemData.events;
-		if ( !events ) {
-			elemData.events = events = {};
-		}
-		eventHandle = elemData.handle;
-		if ( !eventHandle ) {
-			elemData.handle = eventHandle = function( e ) {
-				// Discard the second event of a jQuery.event.trigger() and
-				// when an event is called after a page has unloaded
-				return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
-					jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
-					undefined;
-			};
-			// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
-			eventHandle.elem = elem;
-		}
-
-		// Handle multiple events separated by a space
-		// jQuery(...).bind("mouseover mouseout", fn);
-		types = jQuery.trim( hoverHack(types) ).split( " " );
-		for ( t = 0; t < types.length; t++ ) {
-
-			tns = rtypenamespace.exec( types[t] ) || [];
-			type = tns[1];
-			namespaces = ( tns[2] || "" ).split( "." ).sort();
-
-			// If event changes its type, use the special event handlers for the changed type
-			special = jQuery.event.special[ type ] || {};
-
-			// If selector defined, determine special event api type, otherwise given type
-			type = ( selector ? special.delegateType : special.bindType ) || type;
-
-			// Update special based on newly reset type
-			special = jQuery.event.special[ type ] || {};
-
-			// handleObj is passed to all event handlers
-			handleObj = jQuery.extend({
-				type: type,
-				origType: tns[1],
-				data: data,
-				handler: handler,
-				guid: handler.guid,
-				selector: selector,
-				quick: selector && quickParse( selector ),
-				namespace: namespaces.join(".")
-			}, handleObjIn );
-
-			// Init the event handler queue if we're the first
-			handlers = events[ type ];
-			if ( !handlers ) {
-				handlers = events[ type ] = [];
-				handlers.delegateCount = 0;
-
-				// Only use addEventListener/attachEvent if the special events handler returns false
-				if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
-					// Bind the global event handler to the element
-					if ( elem.addEventListener ) {
-						elem.addEventListener( type, eventHandle, false );
-
-					} else if ( elem.attachEvent ) {
-						elem.attachEvent( "on" + type, eventHandle );
-					}
-				}
-			}
-
-			if ( special.add ) {
-				special.add.call( elem, handleObj );
-
-				if ( !handleObj.handler.guid ) {
-					handleObj.handler.guid = handler.guid;
-				}
-			}
-
-			// Add to the element's handler list, delegates in front
-			if ( selector ) {
-				handlers.splice( handlers.delegateCount++, 0, handleObj );
-			} else {
-				handlers.push( handleObj );
-			}
-
-			// Keep track of which events have ever been used, for event optimization
-			jQuery.event.global[ type ] = true;
-		}
-
-		// Nullify elem to prevent memory leaks in IE
-		elem = null;
-	},
-
-	global: {},
-
-	// Detach an event or set of events from an element
-	remove: function( elem, types, handler, selector, mappedTypes ) {
-
-		var elemData = jQuery.hasData( elem ) && jQuery._data( elem ),
-			t, tns, type, origType, namespaces, origCount,
-			j, events, special, handle, eventType, handleObj;
-
-		if ( !elemData || !(events = elemData.events) ) {
-			return;
-		}
-
-		// Once for each type.namespace in types; type may be omitted
-		types = jQuery.trim( hoverHack( types || "" ) ).split(" ");
-		for ( t = 0; t < types.length; t++ ) {
-			tns = rtypenamespace.exec( types[t] ) || [];
-			type = origType = tns[1];
-			namespaces = tns[2];
-
-			// Unbind all events (on this namespace, if provided) for the element
-			if ( !type ) {
-				for ( type in events ) {
-					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
-				}
-				continue;
-			}
-
-			special = jQuery.event.special[ type ] || {};
-			type = ( selector? special.delegateType : special.bindType ) || type;
-			eventType = events[ type ] || [];
-			origCount = eventType.length;
-			namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
-
-			// Remove matching events
-			for ( j = 0; j < eventType.length; j++ ) {
-				handleObj = eventType[ j ];
-
-				if ( ( mappedTypes || origType === handleObj.origType ) &&
-					 ( !handler || handler.guid === handleObj.guid ) &&
-					 ( !namespaces || namespaces.test( handleObj.namespace ) ) &&
-					 ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
-					eventType.splice( j--, 1 );
-
-					if ( handleObj.selector ) {
-						eventType.delegateCount--;
-					}
-					if ( special.remove ) {
-						special.remove.call( elem, handleObj );
-					}
-				}
-			}
-
-			// Remove generic event handler if we removed something and no more handlers exist
-			// (avoids potential for endless recursion during removal of special event handlers)
-			if ( eventType.length === 0 && origCount !== eventType.length ) {
-				if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
-					jQuery.removeEvent( elem, type, elemData.handle );
-				}
-
-				delete events[ type ];
-			}
-		}
-
-		// Remove the expando if it's no longer used
-		if ( jQuery.isEmptyObject( events ) ) {
-			handle = elemData.handle;
-			if ( handle ) {
-				handle.elem = null;
-			}
-
-			// removeData also checks for emptiness and clears the expando if empty
-			// so use it instead of delete
-			jQuery.removeData( elem, [ "events", "handle" ], true );
-		}
-	},
-
-	// Events that are safe to short-circuit if no handlers are attached.
-	// Native DOM events should not be added, they may have inline handlers.
-	customEvent: {
-		"getData": true,
-		"setData": true,
-		"changeData": true
-	},
-
-	trigger: function( event, data, elem, onlyHandlers ) {
-		// Don't do events on text and comment nodes
-		if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {
-			return;
-		}
-
-		// Event object or event type
-		var type = event.type || event,
-			namespaces = [],
-			cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType;
-
-		// focus/blur morphs to focusin/out; ensure we're not firing them right now
-		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
-			return;
-		}
-
-		if ( type.indexOf( "!" ) >= 0 ) {
-			// Exclusive events trigger only for the exact event (no namespaces)
-			type = type.slice(0, -1);
-			exclusive = true;
-		}
-
-		if ( type.indexOf( "." ) >= 0 ) {
-			// Namespaced trigger; create a regexp to match event type in handle()
-			namespaces = type.split(".");
-			type = namespaces.shift();
-			namespaces.sort();
-		}
-
-		if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
-			// No jQuery handlers for this event type, and it can't have inline handlers
-			return;
-		}
-
-		// Caller can pass in an Event, Object, or just an event type string
-		event = typeof event === "object" ?
-			// jQuery.Event object
-			event[ jQuery.expando ] ? event :
-			// Object literal
-			new jQuery.Event( type, event ) :
-			// Just the event type (string)
-			new jQuery.Event( type );
-
-		event.type = type;
-		event.isTrigger = true;
-		event.exclusive = exclusive;
-		event.namespace = namespaces.join( "." );
-		event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
-		ontype = type.indexOf( ":" ) < 0 ? "on" + type : "";
-
-		// Handle a global trigger
-		if ( !elem ) {
-
-			// TODO: Stop taunting the data cache; remove global events and always attach to document
-			cache = jQuery.cache;
-			for ( i in cache ) {
-				if ( cache[ i ].eve

<TRUNCATED>

[15/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/lib/backbone.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/lib/backbone.js b/deleted/dist-cov/usergrid-portal/archive/js/lib/backbone.js
deleted file mode 100644
index 3373c95..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/lib/backbone.js
+++ /dev/null
@@ -1,1431 +0,0 @@
-//     Backbone.js 0.9.2
-
-//     (c) 2010-2012 Jeremy Ashkenas, DocumentCloud Inc.
-//     Backbone may be freely distributed under the MIT license.
-//     For all details and documentation:
-//     http://backbonejs.org
-
-(function(){
-
-  // Initial Setup
-  // -------------
-
-  // Save a reference to the global object (`window` in the browser, `global`
-  // on the server).
-  var root = this;
-
-  // Save the previous value of the `Backbone` variable, so that it can be
-  // restored later on, if `noConflict` is used.
-  var previousBackbone = root.Backbone;
-
-  // Create a local reference to slice/splice.
-  var slice = Array.prototype.slice;
-  var splice = Array.prototype.splice;
-
-  // The top-level namespace. All public Backbone classes and modules will
-  // be attached to this. Exported for both CommonJS and the browser.
-  var Backbone;
-  if (typeof exports !== 'undefined') {
-    Backbone = exports;
-  } else {
-    Backbone = root.Backbone = {};
-  }
-
-  // Current version of the library. Keep in sync with `package.json`.
-  Backbone.VERSION = '0.9.2';
-
-  // Require Underscore, if we're on the server, and it's not already present.
-  var _ = root._;
-  if (!_ && (typeof require !== 'undefined')) _ = require('underscore');
-
-  // For Backbone's purposes, jQuery, Zepto, or Ender owns the `$` variable.
-  var $ = root.jQuery || root.Zepto || root.ender;
-
-  // Set the JavaScript library that will be used for DOM manipulation and
-  // Ajax calls (a.k.a. the `$` variable). By default Backbone will use: jQuery,
-  // Zepto, or Ender; but the `setDomLibrary()` method lets you inject an
-  // alternate JavaScript library (or a mock library for testing your views
-  // outside of a browser).
-  Backbone.setDomLibrary = function(lib) {
-    $ = lib;
-  };
-
-  // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable
-  // to its previous owner. Returns a reference to this Backbone object.
-  Backbone.noConflict = function() {
-    root.Backbone = previousBackbone;
-    return this;
-  };
-
-  // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option
-  // will fake `"PUT"` and `"DELETE"` requests via the `_method` parameter and
-  // set a `X-Http-Method-Override` header.
-  Backbone.emulateHTTP = false;
-
-  // Turn on `emulateJSON` to support legacy servers that can't deal with direct
-  // `application/json` requests ... will encode the body as
-  // `application/x-www-form-urlencoded` instead and will send the model in a
-  // form param named `model`.
-  Backbone.emulateJSON = false;
-
-  // Backbone.Events
-  // -----------------
-
-  // Regular expression used to split event strings
-  var eventSplitter = /\s+/;
-
-  // A module that can be mixed in to *any object* in order to provide it with
-  // custom events. You may bind with `on` or remove with `off` callback functions
-  // to an event; trigger`-ing an event fires all callbacks in succession.
-  //
-  //     var object = {};
-  //     _.extend(object, Backbone.Events);
-  //     object.on('expand', function(){ alert('expanded'); });
-  //     object.trigger('expand');
-  //
-  var Events = Backbone.Events = {
-
-    // Bind one or more space separated events, `events`, to a `callback`
-    // function. Passing `"all"` will bind the callback to all events fired.
-    on: function(events, callback, context) {
-
-      var calls, event, node, tail, list;
-      if (!callback) return this;
-      events = events.split(eventSplitter);
-      calls = this._callbacks || (this._callbacks = {});
-
-      // Create an immutable callback list, allowing traversal during
-      // modification.  The tail is an empty object that will always be used
-      // as the next node.
-      while (event = events.shift()) {
-        list = calls[event];
-        node = list ? list.tail : {};
-        node.next = tail = {};
-        node.context = context;
-        node.callback = callback;
-        calls[event] = {tail: tail, next: list ? list.next : node};
-      }
-
-      return this;
-    },
-
-    // Remove one or many callbacks. If `context` is null, removes all callbacks
-    // with that function. If `callback` is null, removes all callbacks for the
-    // event. If `events` is null, removes all bound callbacks for all events.
-    off: function(events, callback, context) {
-      var event, calls, node, tail, cb, ctx;
-
-      // No events, or removing *all* events.
-      if (!(calls = this._callbacks)) return;
-      if (!(events || callback || context)) {
-        delete this._callbacks;
-        return this;
-      }
-
-      // Loop through the listed events and contexts, splicing them out of the
-      // linked list of callbacks if appropriate.
-      events = events ? events.split(eventSplitter) : _.keys(calls);
-      while (event = events.shift()) {
-        node = calls[event];
-        delete calls[event];
-        if (!node || !(callback || context)) continue;
-        // Create a new list, omitting the indicated callbacks.
-        tail = node.tail;
-        while ((node = node.next) !== tail) {
-          cb = node.callback;
-          ctx = node.context;
-          if ((callback && cb !== callback) || (context && ctx !== context)) {
-            this.on(event, cb, ctx);
-          }
-        }
-      }
-
-      return this;
-    },
-
-    // Trigger one or many events, firing all bound callbacks. Callbacks are
-    // passed the same arguments as `trigger` is, apart from the event name
-    // (unless you're listening on `"all"`, which will cause your callback to
-    // receive the true name of the event as the first argument).
-    trigger: function(events) {
-      var event, node, calls, tail, args, all, rest;
-      if (!(calls = this._callbacks)) return this;
-      all = calls.all;
-      events = events.split(eventSplitter);
-      rest = slice.call(arguments, 1);
-
-      // For each event, walk through the linked list of callbacks twice,
-      // first to trigger the event, then to trigger any `"all"` callbacks.
-      while (event = events.shift()) {
-        if (node = calls[event]) {
-          tail = node.tail;
-          while ((node = node.next) !== tail) {
-            node.callback.apply(node.context || this, rest);
-          }
-        }
-        if (node = all) {
-          tail = node.tail;
-          args = [event].concat(rest);
-          while ((node = node.next) !== tail) {
-            node.callback.apply(node.context || this, args);
-          }
-        }
-      }
-
-      return this;
-    }
-
-  };
-
-  // Aliases for backwards compatibility.
-  Events.bind   = Events.on;
-  Events.unbind = Events.off;
-
-  // Backbone.Model
-  // --------------
-
-  // Create a new model, with defined attributes. A client id (`cid`)
-  // is automatically generated and assigned for you.
-  var Model = Backbone.Model = function(attributes, options) {
-    var defaults;
-    attributes || (attributes = {});
-    if (options && options.parse) attributes = this.parse(attributes);
-    if (defaults = getValue(this, 'defaults')) {
-      attributes = _.extend({}, defaults, attributes);
-    }
-    if (options && options.collection) this.collection = options.collection;
-    this.attributes = {};
-    this._escapedAttributes = {};
-    this.cid = _.uniqueId('c');
-    this.changed = {};
-    this._silent = {};
-    this._pending = {};
-    this.set(attributes, {silent: true});
-    // Reset change tracking.
-    this.changed = {};
-    this._silent = {};
-    this._pending = {};
-    this._previousAttributes = _.clone(this.attributes);
-    this.initialize.apply(this, arguments);
-  };
-
-  // Attach all inheritable methods to the Model prototype.
-  _.extend(Model.prototype, Events, {
-
-    // A hash of attributes whose current and previous value differ.
-    changed: null,
-
-    // A hash of attributes that have silently changed since the last time
-    // `change` was called.  Will become pending attributes on the next call.
-    _silent: null,
-
-    // A hash of attributes that have changed since the last `'change'` event
-    // began.
-    _pending: null,
-
-    // The default name for the JSON `id` attribute is `"id"`. MongoDB and
-    // CouchDB users may want to set this to `"_id"`.
-    idAttribute: 'id',
-
-    // Initialize is an empty function by default. Override it with your own
-    // initialization logic.
-    initialize: function(){},
-
-    // Return a copy of the model's `attributes` object.
-    toJSON: function(options) {
-      return _.clone(this.attributes);
-    },
-
-    // Get the value of an attribute.
-    get: function(attr) {
-      return this.attributes[attr];
-    },
-
-    // Get the HTML-escaped value of an attribute.
-    escape: function(attr) {
-      var html;
-      if (html = this._escapedAttributes[attr]) return html;
-      var val = this.get(attr);
-      return this._escapedAttributes[attr] = _.escape(val == null ? '' : '' + val);
-    },
-
-    // Returns `true` if the attribute contains a value that is not null
-    // or undefined.
-    has: function(attr) {
-      return this.get(attr) != null;
-    },
-
-    // Set a hash of model attributes on the object, firing `"change"` unless
-    // you choose to silence it.
-    set: function(key, value, options) {
-      var attrs, attr, val;
-
-      // Handle both `"key", value` and `{key: value}` -style arguments.
-      if (_.isObject(key) || key == null) {
-        attrs = key;
-        options = value;
-      } else {
-        attrs = {};
-        attrs[key] = value;
-      }
-
-      // Extract attributes and options.
-      options || (options = {});
-      if (!attrs) return this;
-      if (attrs instanceof Model) attrs = attrs.attributes;
-      if (options.unset) for (attr in attrs) attrs[attr] = void 0;
-
-      // Run validation.
-      if (!this._validate(attrs, options)) return false;
-
-      // Check for changes of `id`.
-      if (this.idAttribute in attrs) this.id = attrs[this.idAttribute];
-
-      var changes = options.changes = {};
-      var now = this.attributes;
-      var escaped = this._escapedAttributes;
-      var prev = this._previousAttributes || {};
-
-      // For each `set` attribute...
-      for (attr in attrs) {
-        val = attrs[attr];
-
-        // If the new and current value differ, record the change.
-        if (!_.isEqual(now[attr], val) || (options.unset && _.has(now, attr))) {
-          delete escaped[attr];
-          (options.silent ? this._silent : changes)[attr] = true;
-        }
-
-        // Update or delete the current value.
-        options.unset ? delete now[attr] : now[attr] = val;
-
-        // If the new and previous value differ, record the change.  If not,
-        // then remove changes for this attribute.
-        if (!_.isEqual(prev[attr], val) || (_.has(now, attr) != _.has(prev, attr))) {
-          this.changed[attr] = val;
-          if (!options.silent) this._pending[attr] = true;
-        } else {
-          delete this.changed[attr];
-          delete this._pending[attr];
-        }
-      }
-
-      // Fire the `"change"` events.
-      if (!options.silent) this.change(options);
-      return this;
-    },
-
-    // Remove an attribute from the model, firing `"change"` unless you choose
-    // to silence it. `unset` is a noop if the attribute doesn't exist.
-    unset: function(attr, options) {
-      (options || (options = {})).unset = true;
-      return this.set(attr, null, options);
-    },
-
-    // Clear all attributes on the model, firing `"change"` unless you choose
-    // to silence it.
-    clear: function(options) {
-      (options || (options = {})).unset = true;
-      return this.set(_.clone(this.attributes), options);
-    },
-
-    // Fetch the model from the server. If the server's representation of the
-    // model differs from its current attributes, they will be overriden,
-    // triggering a `"change"` event.
-    fetch: function(options) {
-      options = options ? _.clone(options) : {};
-      var model = this;
-      var success = options.success;
-      options.success = function(resp, status, xhr) {
-        if (!model.set(model.parse(resp, xhr), options)) return false;
-        if (success) success(model, resp);
-      };
-      options.error = Backbone.wrapError(options.error, model, options);
-      return (this.sync || Backbone.sync).call(this, 'read', this, options);
-    },
-
-    // Set a hash of model attributes, and sync the model to the server.
-    // If the server returns an attributes hash that differs, the model's
-    // state will be `set` again.
-    save: function(key, value, options) {
-      var attrs, current;
-
-      // Handle both `("key", value)` and `({key: value})` -style calls.
-      if (_.isObject(key) || key == null) {
-        attrs = key;
-        options = value;
-      } else {
-        attrs = {};
-        attrs[key] = value;
-      }
-      options = options ? _.clone(options) : {};
-
-      // If we're "wait"-ing to set changed attributes, validate early.
-      if (options.wait) {
-        if (!this._validate(attrs, options)) return false;
-        current = _.clone(this.attributes);
-      }
-
-      // Regular saves `set` attributes before persisting to the server.
-      var silentOptions = _.extend({}, options, {silent: true});
-      if (attrs && !this.set(attrs, options.wait ? silentOptions : options)) {
-        return false;
-      }
-
-      // After a successful server-side save, the client is (optionally)
-      // updated with the server-side state.
-      var model = this;
-      var success = options.success;
-      options.success = function(resp, status, xhr) {
-        var serverAttrs = model.parse(resp, xhr);
-        if (options.wait) {
-          delete options.wait;
-          serverAttrs = _.extend(attrs || {}, serverAttrs);
-        }
-        if (!model.set(serverAttrs, options)) return false;
-        if (success) {
-          success(model, resp);
-        } else {
-          model.trigger('sync', model, resp, options);
-        }
-      };
-
-      // Finish configuring and sending the Ajax request.
-      options.error = Backbone.wrapError(options.error, model, options);
-      var method = this.isNew() ? 'create' : 'update';
-      var xhr = (this.sync || Backbone.sync).call(this, method, this, options);
-      if (options.wait) this.set(current, silentOptions);
-      return xhr;
-    },
-
-    // Destroy this model on the server if it was already persisted.
-    // Optimistically removes the model from its collection, if it has one.
-    // If `wait: true` is passed, waits for the server to respond before removal.
-    destroy: function(options) {
-      options = options ? _.clone(options) : {};
-      var model = this;
-      var success = options.success;
-
-      var triggerDestroy = function() {
-        model.trigger('destroy', model, model.collection, options);
-      };
-
-      if (this.isNew()) {
-        triggerDestroy();
-        return false;
-      }
-
-      options.success = function(resp) {
-        if (options.wait) triggerDestroy();
-        if (success) {
-          success(model, resp);
-        } else {
-          model.trigger('sync', model, resp, options);
-        }
-      };
-
-      options.error = Backbone.wrapError(options.error, model, options);
-      var xhr = (this.sync || Backbone.sync).call(this, 'delete', this, options);
-      if (!options.wait) triggerDestroy();
-      return xhr;
-    },
-
-    // Default URL for the model's representation on the server -- if you're
-    // using Backbone's restful methods, override this to change the endpoint
-    // that will be called.
-    url: function() {
-      var base = getValue(this, 'urlRoot') || getValue(this.collection, 'url') || urlError();
-      if (this.isNew()) return base;
-      return base + (base.charAt(base.length - 1) == '/' ? '' : '/') + encodeURIComponent(this.id);
-    },
-
-    // **parse** converts a response into the hash of attributes to be `set` on
-    // the model. The default implementation is just to pass the response along.
-    parse: function(resp, xhr) {
-      return resp;
-    },
-
-    // Create a new model with identical attributes to this one.
-    clone: function() {
-      return new this.constructor(this.attributes);
-    },
-
-    // A model is new if it has never been saved to the server, and lacks an id.
-    isNew: function() {
-      return this.id == null;
-    },
-
-    // Call this method to manually fire a `"change"` event for this model and
-    // a `"change:attribute"` event for each changed attribute.
-    // Calling this will cause all objects observing the model to update.
-    change: function(options) {
-      options || (options = {});
-      var changing = this._changing;
-      this._changing = true;
-
-      // Silent changes become pending changes.
-      for (var attr in this._silent) this._pending[attr] = true;
-
-      // Silent changes are triggered.
-      var changes = _.extend({}, options.changes, this._silent);
-      this._silent = {};
-      for (var attr in changes) {
-        this.trigger('change:' + attr, this, this.get(attr), options);
-      }
-      if (changing) return this;
-
-      // Continue firing `"change"` events while there are pending changes.
-      while (!_.isEmpty(this._pending)) {
-        this._pending = {};
-        this.trigger('change', this, options);
-        // Pending and silent changes still remain.
-        for (var attr in this.changed) {
-          if (this._pending[attr] || this._silent[attr]) continue;
-          delete this.changed[attr];
-        }
-        this._previousAttributes = _.clone(this.attributes);
-      }
-
-      this._changing = false;
-      return this;
-    },
-
-    // Determine if the model has changed since the last `"change"` event.
-    // If you specify an attribute name, determine if that attribute has changed.
-    hasChanged: function(attr) {
-      if (!arguments.length) return !_.isEmpty(this.changed);
-      return _.has(this.changed, attr);
-    },
-
-    // Return an object containing all the attributes that have changed, or
-    // false if there are no changed attributes. Useful for determining what
-    // parts of a view need to be updated and/or what attributes need to be
-    // persisted to the server. Unset attributes will be set to undefined.
-    // You can also pass an attributes object to diff against the model,
-    // determining if there *would be* a change.
-    changedAttributes: function(diff) {
-      if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;
-      var val, changed = false, old = this._previousAttributes;
-      for (var attr in diff) {
-        if (_.isEqual(old[attr], (val = diff[attr]))) continue;
-        (changed || (changed = {}))[attr] = val;
-      }
-      return changed;
-    },
-
-    // Get the previous value of an attribute, recorded at the time the last
-    // `"change"` event was fired.
-    previous: function(attr) {
-      if (!arguments.length || !this._previousAttributes) return null;
-      return this._previousAttributes[attr];
-    },
-
-    // Get all of the attributes of the model at the time of the previous
-    // `"change"` event.
-    previousAttributes: function() {
-      return _.clone(this._previousAttributes);
-    },
-
-    // Check if the model is currently in a valid state. It's only possible to
-    // get into an *invalid* state if you're using silent changes.
-    isValid: function() {
-      return !this.validate(this.attributes);
-    },
-
-    // Run validation against the next complete set of model attributes,
-    // returning `true` if all is well. If a specific `error` callback has
-    // been passed, call that instead of firing the general `"error"` event.
-    _validate: function(attrs, options) {
-      if (options.silent || !this.validate) return true;
-      attrs = _.extend({}, this.attributes, attrs);
-      var error = this.validate(attrs, options);
-      if (!error) return true;
-      if (options && options.error) {
-        options.error(this, error, options);
-      } else {
-        this.trigger('error', this, error, options);
-      }
-      return false;
-    }
-
-  });
-
-  // Backbone.Collection
-  // -------------------
-
-  // Provides a standard collection class for our sets of models, ordered
-  // or unordered. If a `comparator` is specified, the Collection will maintain
-  // its models in sort order, as they're added and removed.
-  var Collection = Backbone.Collection = function(models, options) {
-    options || (options = {});
-    if (options.model) this.model = options.model;
-    if (options.comparator) this.comparator = options.comparator;
-    this._reset();
-    this.initialize.apply(this, arguments);
-    if (models) this.reset(models, {silent: true, parse: options.parse});
-  };
-
-  // Define the Collection's inheritable methods.
-  _.extend(Collection.prototype, Events, {
-
-    // The default model for a collection is just a **Backbone.Model**.
-    // This should be overridden in most cases.
-    model: Model,
-
-    // Initialize is an empty function by default. Override it with your own
-    // initialization logic.
-    initialize: function(){},
-
-    // The JSON representation of a Collection is an array of the
-    // models' attributes.
-    toJSON: function(options) {
-      return this.map(function(model){ return model.toJSON(options); });
-    },
-
-    // Add a model, or list of models to the set. Pass **silent** to avoid
-    // firing the `add` event for every new model.
-    add: function(models, options) {
-      var i, index, length, model, cid, id, cids = {}, ids = {}, dups = [];
-      options || (options = {});
-      models = _.isArray(models) ? models.slice() : [models];
-
-      // Begin by turning bare objects into model references, and preventing
-      // invalid models or duplicate models from being added.
-      for (i = 0, length = models.length; i < length; i++) {
-        if (!(model = models[i] = this._prepareModel(models[i], options))) {
-          throw new Error("Can't add an invalid model to a collection");
-        }
-        cid = model.cid;
-        id = model.id;
-        if (cids[cid] || this._byCid[cid] || ((id != null) && (ids[id] || this._byId[id]))) {
-          dups.push(i);
-          continue;
-        }
-        cids[cid] = ids[id] = model;
-      }
-
-      // Remove duplicates.
-      i = dups.length;
-      while (i--) {
-        models.splice(dups[i], 1);
-      }
-
-      // Listen to added models' events, and index models for lookup by
-      // `id` and by `cid`.
-      for (i = 0, length = models.length; i < length; i++) {
-        (model = models[i]).on('all', this._onModelEvent, this);
-        this._byCid[model.cid] = model;
-        if (model.id != null) this._byId[model.id] = model;
-      }
-
-      // Insert models into the collection, re-sorting if needed, and triggering
-      // `add` events unless silenced.
-      this.length += length;
-      index = options.at != null ? options.at : this.models.length;
-      splice.apply(this.models, [index, 0].concat(models));
-      if (this.comparator) this.sort({silent: true});
-      if (options.silent) return this;
-      for (i = 0, length = this.models.length; i < length; i++) {
-        if (!cids[(model = this.models[i]).cid]) continue;
-        options.index = i;
-        model.trigger('add', model, this, options);
-      }
-      return this;
-    },
-
-    // Remove a model, or a list of models from the set. Pass silent to avoid
-    // firing the `remove` event for every model removed.
-    remove: function(models, options) {
-      var i, l, index, model;
-      options || (options = {});
-      models = _.isArray(models) ? models.slice() : [models];
-      for (i = 0, l = models.length; i < l; i++) {
-        model = this.getByCid(models[i]) || this.get(models[i]);
-        if (!model) continue;
-        delete this._byId[model.id];
-        delete this._byCid[model.cid];
-        index = this.indexOf(model);
-        this.models.splice(index, 1);
-        this.length--;
-        if (!options.silent) {
-          options.index = index;
-          model.trigger('remove', model, this, options);
-        }
-        this._removeReference(model);
-      }
-      return this;
-    },
-
-    // Add a model to the end of the collection.
-    push: function(model, options) {
-      model = this._prepareModel(model, options);
-      this.add(model, options);
-      return model;
-    },
-
-    // Remove a model from the end of the collection.
-    pop: function(options) {
-      var model = this.at(this.length - 1);
-      this.remove(model, options);
-      return model;
-    },
-
-    // Add a model to the beginning of the collection.
-    unshift: function(model, options) {
-      model = this._prepareModel(model, options);
-      this.add(model, _.extend({at: 0}, options));
-      return model;
-    },
-
-    // Remove a model from the beginning of the collection.
-    shift: function(options) {
-      var model = this.at(0);
-      this.remove(model, options);
-      return model;
-    },
-
-    // Get a model from the set by id.
-    get: function(id) {
-      if (id == null) return void 0;
-      return this._byId[id.id != null ? id.id : id];
-    },
-
-    // Get a model from the set by client id.
-    getByCid: function(cid) {
-      return cid && this._byCid[cid.cid || cid];
-    },
-
-    // Get the model at the given index.
-    at: function(index) {
-      return this.models[index];
-    },
-
-    // Return models with matching attributes. Useful for simple cases of `filter`.
-    where: function(attrs) {
-      if (_.isEmpty(attrs)) return [];
-      return this.filter(function(model) {
-        for (var key in attrs) {
-          if (attrs[key] !== model.get(key)) return false;
-        }
-        return true;
-      });
-    },
-
-    // Force the collection to re-sort itself. You don't need to call this under
-    // normal circumstances, as the set will maintain sort order as each item
-    // is added.
-    sort: function(options) {
-      options || (options = {});
-      if (!this.comparator) throw new Error('Cannot sort a set without a comparator');
-      var boundComparator = _.bind(this.comparator, this);
-      if (this.comparator.length == 1) {
-        this.models = this.sortBy(boundComparator);
-      } else {
-        this.models.sort(boundComparator);
-      }
-      if (!options.silent) this.trigger('reset', this, options);
-      return this;
-    },
-
-    // Pluck an attribute from each model in the collection.
-    pluck: function(attr) {
-      return _.map(this.models, function(model){ return model.get(attr); });
-    },
-
-    // When you have more items than you want to add or remove individually,
-    // you can reset the entire set with a new list of models, without firing
-    // any `add` or `remove` events. Fires `reset` when finished.
-    reset: function(models, options) {
-      models  || (models = []);
-      options || (options = {});
-      for (var i = 0, l = this.models.length; i < l; i++) {
-        this._removeReference(this.models[i]);
-      }
-      this._reset();
-      this.add(models, _.extend({silent: true}, options));
-      if (!options.silent) this.trigger('reset', this, options);
-      return this;
-    },
-
-    // Fetch the default set of models for this collection, resetting the
-    // collection when they arrive. If `add: true` is passed, appends the
-    // models to the collection instead of resetting.
-    fetch: function(options) {
-      options = options ? _.clone(options) : {};
-      if (options.parse === undefined) options.parse = true;
-      var collection = this;
-      var success = options.success;
-      options.success = function(resp, status, xhr) {
-        collection[options.add ? 'add' : 'reset'](collection.parse(resp, xhr), options);
-        if (success) success(collection, resp);
-      };
-      options.error = Backbone.wrapError(options.error, collection, options);
-      return (this.sync || Backbone.sync).call(this, 'read', this, options);
-    },
-
-    // Create a new instance of a model in this collection. Add the model to the
-    // collection immediately, unless `wait: true` is passed, in which case we
-    // wait for the server to agree.
-    create: function(model, options) {
-      var coll = this;
-      options = options ? _.clone(options) : {};
-      model = this._prepareModel(model, options);
-      if (!model) return false;
-      if (!options.wait) coll.add(model, options);
-      var success = options.success;
-      options.success = function(nextModel, resp, xhr) {
-        if (options.wait) coll.add(nextModel, options);
-        if (success) {
-          success(nextModel, resp);
-        } else {
-          nextModel.trigger('sync', model, resp, options);
-        }
-      };
-      model.save(null, options);
-      return model;
-    },
-
-    // **parse** converts a response into a list of models to be added to the
-    // collection. The default implementation is just to pass it through.
-    parse: function(resp, xhr) {
-      return resp;
-    },
-
-    // Proxy to _'s chain. Can't be proxied the same way the rest of the
-    // underscore methods are proxied because it relies on the underscore
-    // constructor.
-    chain: function () {
-      return _(this.models).chain();
-    },
-
-    // Reset all internal state. Called when the collection is reset.
-    _reset: function(options) {
-      this.length = 0;
-      this.models = [];
-      this._byId  = {};
-      this._byCid = {};
-    },
-
-    // Prepare a model or hash of attributes to be added to this collection.
-    _prepareModel: function(model, options) {
-      options || (options = {});
-      if (!(model instanceof Model)) {
-        var attrs = model;
-        options.collection = this;
-        model = new this.model(attrs, options);
-        if (!model._validate(model.attributes, options)) model = false;
-      } else if (!model.collection) {
-        model.collection = this;
-      }
-      return model;
-    },
-
-    // Internal method to remove a model's ties to a collection.
-    _removeReference: function(model) {
-      if (this == model.collection) {
-        delete model.collection;
-      }
-      model.off('all', this._onModelEvent, this);
-    },
-
-    // Internal method called every time a model in the set fires an event.
-    // Sets need to update their indexes when models change ids. All other
-    // events simply proxy through. "add" and "remove" events that originate
-    // in other collections are ignored.
-    _onModelEvent: function(event, model, collection, options) {
-      if ((event == 'add' || event == 'remove') && collection != this) return;
-      if (event == 'destroy') {
-        this.remove(model, options);
-      }
-      if (model && event === 'change:' + model.idAttribute) {
-        delete this._byId[model.previous(model.idAttribute)];
-        this._byId[model.id] = model;
-      }
-      this.trigger.apply(this, arguments);
-    }
-
-  });
-
-  // Underscore methods that we want to implement on the Collection.
-  var methods = ['forEach', 'each', 'map', 'reduce', 'reduceRight', 'find',
-    'detect', 'filter', 'select', 'reject', 'every', 'all', 'some', 'any',
-    'include', 'contains', 'invoke', 'max', 'min', 'sortBy', 'sortedIndex',
-    'toArray', 'size', 'first', 'initial', 'rest', 'last', 'without', 'indexOf',
-    'shuffle', 'lastIndexOf', 'isEmpty', 'groupBy'];
-
-  // Mix in each Underscore method as a proxy to `Collection#models`.
-  _.each(methods, function(method) {
-    Collection.prototype[method] = function() {
-      return _[method].apply(_, [this.models].concat(_.toArray(arguments)));
-    };
-  });
-
-  // Backbone.Router
-  // -------------------
-
-  // Routers map faux-URLs to actions, and fire events when routes are
-  // matched. Creating a new one sets its `routes` hash, if not set statically.
-  var Router = Backbone.Router = function(options) {
-    options || (options = {});
-    if (options.routes) this.routes = options.routes;
-    this._bindRoutes();
-    this.initialize.apply(this, arguments);
-  };
-
-  // Cached regular expressions for matching named param parts and splatted
-  // parts of route strings.
-  var namedParam    = /:\w+/g;
-  var splatParam    = /\*\w+/g;
-  var escapeRegExp  = /[-[\]{}()+?.,\\^$|#\s]/g;
-
-  // Set up all inheritable **Backbone.Router** properties and methods.
-  _.extend(Router.prototype, Events, {
-
-    // Initialize is an empty function by default. Override it with your own
-    // initialization logic.
-    initialize: function(){},
-
-    // Manually bind a single named route to a callback. For example:
-    //
-    //     this.route('search/:query/p:num', 'search', function(query, num) {
-    //       ...
-    //     });
-    //
-    route: function(route, name, callback) {
-      Backbone.history || (Backbone.history = new History);
-      if (!_.isRegExp(route)) route = this._routeToRegExp(route);
-      if (!callback) callback = this[name];
-      Backbone.history.route(route, _.bind(function(fragment) {
-        var args = this._extractParameters(route, fragment);
-        callback && callback.apply(this, args);
-        this.trigger.apply(this, ['route:' + name].concat(args));
-        Backbone.history.trigger('route', this, name, args);
-      }, this));
-      return this;
-    },
-
-    // Simple proxy to `Backbone.history` to save a fragment into the history.
-    navigate: function(fragment, options) {
-      Backbone.history.navigate(fragment, options);
-    },
-
-    // Bind all defined routes to `Backbone.history`. We have to reverse the
-    // order of the routes here to support behavior where the most general
-    // routes can be defined at the bottom of the route map.
-    _bindRoutes: function() {
-      if (!this.routes) return;
-      var routes = [];
-      for (var route in this.routes) {
-        routes.unshift([route, this.routes[route]]);
-      }
-      for (var i = 0, l = routes.length; i < l; i++) {
-        this.route(routes[i][0], routes[i][1], this[routes[i][1]]);
-      }
-    },
-
-    // Convert a route string into a regular expression, suitable for matching
-    // against the current location hash.
-    _routeToRegExp: function(route) {
-      route = route.replace(escapeRegExp, '\\$&')
-                   .replace(namedParam, '([^\/]+)')
-                   .replace(splatParam, '(.*?)');
-      return new RegExp('^' + route + '$');
-    },
-
-    // Given a route, and a URL fragment that it matches, return the array of
-    // extracted parameters.
-    _extractParameters: function(route, fragment) {
-      return route.exec(fragment).slice(1);
-    }
-
-  });
-
-  // Backbone.History
-  // ----------------
-
-  // Handles cross-browser history management, based on URL fragments. If the
-  // browser does not support `onhashchange`, falls back to polling.
-  var History = Backbone.History = function() {
-    this.handlers = [];
-    _.bindAll(this, 'checkUrl');
-  };
-
-  // Cached regex for cleaning leading hashes and slashes .
-  var routeStripper = /^[#\/]/;
-
-  // Cached regex for detecting MSIE.
-  var isExplorer = /msie [\w.]+/;
-
-  // Has the history handling already been started?
-  History.started = false;
-
-  // Set up all inheritable **Backbone.History** properties and methods.
-  _.extend(History.prototype, Events, {
-
-    // The default interval to poll for hash changes, if necessary, is
-    // twenty times a second.
-    interval: 50,
-
-    // Gets the true hash value. Cannot use location.hash directly due to bug
-    // in Firefox where location.hash will always be decoded.
-    getHash: function(windowOverride) {
-      var loc = windowOverride ? windowOverride.location : window.location;
-      var match = loc.href.match(/#(.*)$/);
-      return match ? match[1] : '';
-    },
-
-    // Get the cross-browser normalized URL fragment, either from the URL,
-    // the hash, or the override.
-    getFragment: function(fragment, forcePushState) {
-      if (fragment == null) {
-        if (this._hasPushState || forcePushState) {
-          fragment = window.location.pathname;
-          var search = window.location.search;
-          if (search) fragment += search;
-        } else {
-          fragment = this.getHash();
-        }
-      }
-      if (!fragment.indexOf(this.options.root)) fragment = fragment.substr(this.options.root.length);
-      return fragment.replace(routeStripper, '');
-    },
-
-    // Start the hash change handling, returning `true` if the current URL matches
-    // an existing route, and `false` otherwise.
-    start: function(options) {
-      if (History.started) throw new Error("Backbone.history has already been started");
-      History.started = true;
-
-      // Figure out the initial configuration. Do we need an iframe?
-      // Is pushState desired ... is it available?
-      this.options          = _.extend({}, {root: '/'}, this.options, options);
-      this._wantsHashChange = this.options.hashChange !== false;
-      this._wantsPushState  = !!this.options.pushState;
-      this._hasPushState    = !!(this.options.pushState && window.history && window.history.pushState);
-      var fragment          = this.getFragment();
-      var docMode           = document.documentMode;
-      var oldIE             = (isExplorer.exec(navigator.userAgent.toLowerCase()) && (!docMode || docMode <= 7));
-
-      if (oldIE) {
-        this.iframe = $('<iframe src="javascript:0" tabindex="-1" />').hide().appendTo('body')[0].contentWindow;
-        this.navigate(fragment);
-      }
-
-      // Depending on whether we're using pushState or hashes, and whether
-      // 'onhashchange' is supported, determine how we check the URL state.
-      if (this._hasPushState) {
-        $(window).bind('popstate', this.checkUrl);
-      } else if (this._wantsHashChange && ('onhashchange' in window) && !oldIE) {
-        $(window).bind('hashchange', this.checkUrl);
-      } else if (this._wantsHashChange) {
-        this._checkUrlInterval = setInterval(this.checkUrl, this.interval);
-      }
-
-      // Determine if we need to change the base url, for a pushState link
-      // opened by a non-pushState browser.
-      this.fragment = fragment;
-      var loc = window.location;
-      var atRoot  = loc.pathname == this.options.root;
-
-      // If we've started off with a route from a `pushState`-enabled browser,
-      // but we're currently in a browser that doesn't support it...
-      if (this._wantsHashChange && this._wantsPushState && !this._hasPushState && !atRoot) {
-        this.fragment = this.getFragment(null, true);
-        window.location.replace(this.options.root + '#' + this.fragment);
-        // Return immediately as browser will do redirect to new url
-        return true;
-
-      // Or if we've started out with a hash-based route, but we're currently
-      // in a browser where it could be `pushState`-based instead...
-      } else if (this._wantsPushState && this._hasPushState && atRoot && loc.hash) {
-        this.fragment = this.getHash().replace(routeStripper, '');
-        window.history.replaceState({}, document.title, loc.protocol + '//' + loc.host + this.options.root + this.fragment);
-      }
-
-      if (!this.options.silent) {
-        return this.loadUrl();
-      }
-    },
-
-    // Disable Backbone.history, perhaps temporarily. Not useful in a real app,
-    // but possibly useful for unit testing Routers.
-    stop: function() {
-      $(window).unbind('popstate', this.checkUrl).unbind('hashchange', this.checkUrl);
-      clearInterval(this._checkUrlInterval);
-      History.started = false;
-    },
-
-    // Add a route to be tested when the fragment changes. Routes added later
-    // may override previous routes.
-    route: function(route, callback) {
-      this.handlers.unshift({route: route, callback: callback});
-    },
-
-    // Checks the current URL to see if it has changed, and if it has,
-    // calls `loadUrl`, normalizing across the hidden iframe.
-    checkUrl: function(e) {
-      var current = this.getFragment();
-      if (current == this.fragment && this.iframe) current = this.getFragment(this.getHash(this.iframe));
-      if (current == this.fragment) return false;
-      if (this.iframe) this.navigate(current);
-      this.loadUrl() || this.loadUrl(this.getHash());
-    },
-
-    // Attempt to load the current URL fragment. If a route succeeds with a
-    // match, returns `true`. If no defined routes matches the fragment,
-    // returns `false`.
-    loadUrl: function(fragmentOverride) {
-      var fragment = this.fragment = this.getFragment(fragmentOverride);
-      var matched = _.any(this.handlers, function(handler) {
-        if (handler.route.test(fragment)) {
-          handler.callback(fragment);
-          return true;
-        }
-      });
-      return matched;
-    },
-
-    // Save a fragment into the hash history, or replace the URL state if the
-    // 'replace' option is passed. You are responsible for properly URL-encoding
-    // the fragment in advance.
-    //
-    // The options object can contain `trigger: true` if you wish to have the
-    // route callback be fired (not usually desirable), or `replace: true`, if
-    // you wish to modify the current URL without adding an entry to the history.
-    navigate: function(fragment, options) {
-      if (!History.started) return false;
-      if (!options || options === true) options = {trigger: options};
-      var frag = (fragment || '').replace(routeStripper, '');
-      if (this.fragment == frag) return;
-
-      // If pushState is available, we use it to set the fragment as a real URL.
-      if (this._hasPushState) {
-        if (frag.indexOf(this.options.root) != 0) frag = this.options.root + frag;
-        this.fragment = frag;
-        window.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, frag);
-
-      // If hash changes haven't been explicitly disabled, update the hash
-      // fragment to store history.
-      } else if (this._wantsHashChange) {
-        this.fragment = frag;
-        this._updateHash(window.location, frag, options.replace);
-        if (this.iframe && (frag != this.getFragment(this.getHash(this.iframe)))) {
-          // Opening and closing the iframe tricks IE7 and earlier to push a history entry on hash-tag change.
-          // When replace is true, we don't want this.
-          if(!options.replace) this.iframe.document.open().close();
-          this._updateHash(this.iframe.location, frag, options.replace);
-        }
-
-      // If you've told us that you explicitly don't want fallback hashchange-
-      // based history, then `navigate` becomes a page refresh.
-      } else {
-        window.location.assign(this.options.root + fragment);
-      }
-      if (options.trigger) this.loadUrl(fragment);
-    },
-
-    // Update the hash location, either replacing the current entry, or adding
-    // a new one to the browser history.
-    _updateHash: function(location, fragment, replace) {
-      if (replace) {
-        location.replace(location.toString().replace(/(javascript:|#).*$/, '') + '#' + fragment);
-      } else {
-        location.hash = fragment;
-      }
-    }
-  });
-
-  // Backbone.View
-  // -------------
-
-  // Creating a Backbone.View creates its initial element outside of the DOM,
-  // if an existing element is not provided...
-  var View = Backbone.View = function(options) {
-    this.cid = _.uniqueId('view');
-    this._configure(options || {});
-    this._ensureElement();
-    this.initialize.apply(this, arguments);
-    this.delegateEvents();
-  };
-
-  // Cached regex to split keys for `delegate`.
-  var delegateEventSplitter = /^(\S+)\s*(.*)$/;
-
-  // List of view options to be merged as properties.
-  var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName'];
-
-  // Set up all inheritable **Backbone.View** properties and methods.
-  _.extend(View.prototype, Events, {
-
-    // The default `tagName` of a View's element is `"div"`.
-    tagName: 'div',
-
-    // jQuery delegate for element lookup, scoped to DOM elements within the
-    // current view. This should be prefered to global lookups where possible.
-    $: function(selector) {
-      return this.$el.find(selector);
-    },
-
-    // Initialize is an empty function by default. Override it with your own
-    // initialization logic.
-    initialize: function(){},
-
-    // **render** is the core function that your view should override, in order
-    // to populate its element (`this.el`), with the appropriate HTML. The
-    // convention is for **render** to always return `this`.
-    render: function() {
-      return this;
-    },
-
-    // Remove this view from the DOM. Note that the view isn't present in the
-    // DOM by default, so calling this method may be a no-op.
-    remove: function() {
-      this.$el.remove();
-      return this;
-    },
-
-    // For small amounts of DOM Elements, where a full-blown template isn't
-    // needed, use **make** to manufacture elements, one at a time.
-    //
-    //     var el = this.make('li', {'class': 'row'}, this.model.escape('title'));
-    //
-    make: function(tagName, attributes, content) {
-      var el = document.createElement(tagName);
-      if (attributes) $(el).attr(attributes);
-      if (content) $(el).html(content);
-      return el;
-    },
-
-    // Change the view's element (`this.el` property), including event
-    // re-delegation.
-    setElement: function(element, delegate) {
-      if (this.$el) this.undelegateEvents();
-      this.$el = (element instanceof $) ? element : $(element);
-      this.el = this.$el[0];
-      if (delegate !== false) this.delegateEvents();
-      return this;
-    },
-
-    // Set callbacks, where `this.events` is a hash of
-    //
-    // *{"event selector": "callback"}*
-    //
-    //     {
-    //       'mousedown .title':  'edit',
-    //       'click .button':     'save'
-    //       'click .open':       function(e) { ... }
-    //     }
-    //
-    // pairs. Callbacks will be bound to the view, with `this` set properly.
-    // Uses event delegation for efficiency.
-    // Omitting the selector binds the event to `this.el`.
-    // This only works for delegate-able events: not `focus`, `blur`, and
-    // not `change`, `submit`, and `reset` in Internet Explorer.
-    delegateEvents: function(events) {
-      if (!(events || (events = getValue(this, 'events')))) return;
-      this.undelegateEvents();
-      for (var key in events) {
-        var method = events[key];
-        if (!_.isFunction(method)) method = this[events[key]];
-        if (!method) throw new Error('Method "' + events[key] + '" does not exist');
-        var match = key.match(delegateEventSplitter);
-        var eventName = match[1], selector = match[2];
-        method = _.bind(method, this);
-        eventName += '.delegateEvents' + this.cid;
-        if (selector === '') {
-          this.$el.bind(eventName, method);
-        } else {
-          this.$el.delegate(selector, eventName, method);
-        }
-      }
-    },
-
-    // Clears all callbacks previously bound to the view with `delegateEvents`.
-    // You usually don't need to use this, but may wish to if you have multiple
-    // Backbone views attached to the same DOM element.
-    undelegateEvents: function() {
-      this.$el.unbind('.delegateEvents' + this.cid);
-    },
-
-    // Performs the initial configuration of a View with a set of options.
-    // Keys with special meaning *(model, collection, id, className)*, are
-    // attached directly to the view.
-    _configure: function(options) {
-      if (this.options) options = _.extend({}, this.options, options);
-      for (var i = 0, l = viewOptions.length; i < l; i++) {
-        var attr = viewOptions[i];
-        if (options[attr]) this[attr] = options[attr];
-      }
-      this.options = options;
-    },
-
-    // Ensure that the View has a DOM element to render into.
-    // If `this.el` is a string, pass it through `$()`, take the first
-    // matching element, and re-assign it to `el`. Otherwise, create
-    // an element from the `id`, `className` and `tagName` properties.
-    _ensureElement: function() {
-      if (!this.el) {
-        var attrs = getValue(this, 'attributes') || {};
-        if (this.id) attrs.id = this.id;
-        if (this.className) attrs['class'] = this.className;
-        this.setElement(this.make(this.tagName, attrs), false);
-      } else {
-        this.setElement(this.el, false);
-      }
-    }
-
-  });
-
-  // The self-propagating extend function that Backbone classes use.
-  var extend = function (protoProps, classProps) {
-    var child = inherits(this, protoProps, classProps);
-    child.extend = this.extend;
-    return child;
-  };
-
-  // Set up inheritance for the model, collection, and view.
-  Model.extend = Collection.extend = Router.extend = View.extend = extend;
-
-  // Backbone.sync
-  // -------------
-
-  // Map from CRUD to HTTP for our default `Backbone.sync` implementation.
-  var methodMap = {
-    'create': 'POST',
-    'update': 'PUT',
-    'delete': 'DELETE',
-    'read':   'GET'
-  };
-
-  // Override this function to change the manner in which Backbone persists
-  // models to the server. You will be passed the type of request, and the
-  // model in question. By default, makes a RESTful Ajax request
-  // to the model's `url()`. Some possible customizations could be:
-  //
-  // * Use `setTimeout` to batch rapid-fire updates into a single request.
-  // * Send up the models as XML instead of JSON.
-  // * Persist models via WebSockets instead of Ajax.
-  //
-  // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests
-  // as `POST`, with a `_method` parameter containing the true HTTP method,
-  // as well as all requests with the body as `application/x-www-form-urlencoded`
-  // instead of `application/json` with the model in a param named `model`.
-  // Useful when interfacing with server-side languages like **PHP** that make
-  // it difficult to read the body of `PUT` requests.
-  Backbone.sync = function(method, model, options) {
-    var type = methodMap[method];
-
-    // Default options, unless specified.
-    options || (options = {});
-
-    // Default JSON-request options.
-    var params = {type: type, dataType: 'json'};
-
-    // Ensure that we have a URL.
-    if (!options.url) {
-      params.url = getValue(model, 'url') || urlError();
-    }
-
-    // Ensure that we have the appropriate request data.
-    if (!options.data && model && (method == 'create' || method == 'update')) {
-      params.contentType = 'application/json';
-      params.data = JSON.stringify(model.toJSON());
-    }
-
-    // For older servers, emulate JSON by encoding the request into an HTML-form.
-    if (Backbone.emulateJSON) {
-      params.contentType = 'application/x-www-form-urlencoded';
-      params.data = params.data ? {model: params.data} : {};
-    }
-
-    // For older servers, emulate HTTP by mimicking the HTTP method with `_method`
-    // And an `X-HTTP-Method-Override` header.
-    if (Backbone.emulateHTTP) {
-      if (type === 'PUT' || type === 'DELETE') {
-        if (Backbone.emulateJSON) params.data._method = type;
-        params.type = 'POST';
-        params.beforeSend = function(xhr) {
-          xhr.setRequestHeader('X-HTTP-Method-Override', type);
-        };
-      }
-    }
-
-    // Don't process data on a non-GET request.
-    if (params.type !== 'GET' && !Backbone.emulateJSON) {
-      params.processData = false;
-    }
-
-    // Make the request, allowing the user to override any Ajax options.
-    return $.ajax(_.extend(params, options));
-  };
-
-  // Wrap an optional error callback with a fallback error event.
-  Backbone.wrapError = function(onError, originalModel, options) {
-    return function(model, resp) {
-      resp = model === originalModel ? resp : model;
-      if (onError) {
-        onError(originalModel, resp, options);
-      } else {
-        originalModel.trigger('error', originalModel, resp, options);
-      }
-    };
-  };
-
-  // Helpers
-  // -------
-
-  // Shared empty constructor function to aid in prototype-chain creation.
-  var ctor = function(){};
-
-  // Helper function to correctly set up the prototype chain, for subclasses.
-  // Similar to `goog.inherits`, but uses a hash of prototype properties and
-  // class properties to be extended.
-  var inherits = function(parent, protoProps, staticProps) {
-    var child;
-
-    // The constructor function for the new subclass is either defined by you
-    // (the "constructor" property in your `extend` definition), or defaulted
-    // by us to simply call the parent's constructor.
-    if (protoProps && protoProps.hasOwnProperty('constructor')) {
-      child = protoProps.constructor;
-    } else {
-      child = function(){ parent.apply(this, arguments); };
-    }
-
-    // Inherit class (static) properties from parent.
-    _.extend(child, parent);
-
-    // Set the prototype chain to inherit from `parent`, without calling
-    // `parent`'s constructor function.
-    ctor.prototype = parent.prototype;
-    child.prototype = new ctor();
-
-    // Add prototype properties (instance properties) to the subclass,
-    // if supplied.
-    if (protoProps) _.extend(child.prototype, protoProps);
-
-    // Add static properties to the constructor function, if supplied.
-    if (staticProps) _.extend(child, staticProps);
-
-    // Correctly set child's `prototype.constructor`.
-    child.prototype.constructor = child;
-
-    // Set a convenience property in case the parent's prototype is needed later.
-    child.__super__ = parent.prototype;
-
-    return child;
-  };
-
-  // Helper function to get a value from a Backbone object as a property
-  // or as a function.
-  var getValue = function(object, prop) {
-    if (!(object && object[prop])) return null;
-    return _.isFunction(object[prop]) ? object[prop]() : object[prop];
-  };
-
-  // Throw an error when a URL is needed, and none is supplied.
-  var urlError = function() {
-    throw new Error('A "url" property or function must be specified');
-  };
-
-}).call(this);

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/lib/bootstrap.min.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/lib/bootstrap.min.js b/deleted/dist-cov/usergrid-portal/archive/js/lib/bootstrap.min.js
deleted file mode 100644
index 63e4610..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/lib/bootstrap.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
-* Bootstrap.js by @fat & @mdo
-* plugins: bootstrap-transition.js, bootstrap-modal.js, bootstrap-dropdown.js, bootstrap-scrollspy.js, bootstrap-tab.js, bootstrap-tooltip.js, bootstrap-popover.js, bootstrap-alert.js, bootstrap-button.js, bootstrap-collapse.js, bootstrap-carousel.js, bootstrap-typeahead.js
-* Copyright 2012 Twitter, Inc.
-* http://www.apache.org/licenses/LICENSE-2.0.txt
-*/
-!function(a){a(function(){"use strict",a.support.transition=function(){var b=document.body||document.documentElement,c=b.style,d=c.transition!==undefined||c.WebkitTransition!==undefined||c.MozTransition!==undefined||c.MsTransition!==undefined||c.OTransition!==undefined;return d&&{end:function(){var b="TransitionEnd";return a.browser.webkit?b="webkitTransitionEnd":a.browser.mozilla?b="transitionend":a.browser.opera&&(b="oTransitionEnd"),b}()}}()})}(window.jQuery),!function(a){function c(){var b=this,c=setTimeout(function(){b.$element.off(a.support.transition.end),d.call(b)},500);this.$element.one(a.support.transition.end,function(){clearTimeout(c),d.call(b)})}function d(a){this.$element.hide().trigger("hidden"),e.call(this)}function e(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(document.body),this.options.backdrop!="static"&&this.$backdr
 op.click(a.proxy(this.hide,this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),e?this.$backdrop.one(a.support.transition.end,b):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,a.proxy(f,this)):f.call(this)):b&&b()}function f(){this.$backdrop.remove(),this.$backdrop=null}function g(){var b=this;this.isShown&&this.options.keyboard?a(document).on("keyup.dismiss.modal",function(a){a.which==27&&b.hide()}):this.isShown||a(document).off("keyup.dismiss.modal")}"use strict";var b=function(b,c){this.options=a.extend({},a.fn.modal.defaults,c),this.$element=a(b).delegate('[data-dismiss="modal"]',"click.dismiss.modal",a.proxy(this.hide,this))};b.prototype={constructor:b,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var b=this;if(this.isShown)return;a("body").addClass("modal-open"),this.isShown=!0,this.$element.trigger("show"),g.
 call(this),e.call(this,function(){var c=a.support.transition&&b.$element.hasClass("fade");!b.$element.parent().length&&b.$element.appendTo(document.body),b.$element.show(),c&&b.$element[0].offsetWidth,b.$element.addClass("in"),c?b.$element.one(a.support.transition.end,function(){b.$element.trigger("shown")}):b.$element.trigger("shown")})},hide:function(b){b&&b.preventDefault();if(!this.isShown)return;var e=this;this.isShown=!1,a("body").removeClass("modal-open"),g.call(this),this.$element.trigger("hide").removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?c.call(this):d.call(this)}},a.fn.modal=function(c){return this.each(function(){var d=a(this),e=d.data("modal"),f=typeof c=="object"&&c;e||d.data("modal",e=new b(this,f)),typeof c=="string"?e[c]():e.show()})},a.fn.modal.defaults={backdrop:!0,keyboard:!0},a.fn.modal.Constructor=b,a(function(){a("body").on("click.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr
 ("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({},e.data(),c.data());b.preventDefault(),e.modal(f)})})}(window.jQuery),!function(a){function d(){a(b).parent().removeClass("open")}"use strict";var b='[data-toggle="dropdown"]',c=function(b){var c=a(b).on("click.dropdown.data-api",this.toggle);a("html").on("click.dropdown.data-api",function(){c.parent().removeClass("open")})};c.prototype={constructor:c,toggle:function(b){var c=a(this),e=c.attr("data-target"),f,g;return e||(e=c.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,"")),f=a(e),f.length||(f=c.parent()),g=f.hasClass("open"),d(),!g&&f.toggleClass("open"),!1}},a.fn.dropdown=function(b){return this.each(function(){var d=a(this),e=d.data("dropdown");e||d.data("dropdown",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.dropdown.Constructor=c,a(function(){a("html").on("click.dropdown.data-api",d),a("body").on("click.dropdown.data-api",b,c.prototype.toggle)})}(window.jQuery),!function(a){function b(b
 ,c){var d=a.proxy(this.process,this),e=a(b).is("body")?a(window):a(b),f;this.options=a.extend({},a.fn.scrollspy.defaults,c),this.$scrollElement=e.on("scroll.scroll.data-api",d),this.selector=(this.options.target||(f=a(b).attr("href"))&&f.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=a("body").on("click.scroll.data-api",this.selector,d),this.refresh(),this.process()}"use strict",b.prototype={constructor:b,refresh:function(){this.targets=this.$body.find(this.selector).map(function(){var b=a(this).attr("href");return/^#\w/.test(b)&&a(b).length?b:null}),this.offsets=a.map(this.targets,function(b){return a(b).position().top})},process:function(){var a=this.$scrollElement.scrollTop()+this.options.offset,b=this.offsets,c=this.targets,d=this.activeTarget,e;for(e=b.length;e--;)d!=c[e]&&a>=b[e]&&(!b[e+1]||a<=b[e+1])&&this.activate(c[e])},activate:function(a){var b;this.activeTarget=a,this.$body.find(this.selector).parent(".active").removeClass("active"),b=this.$body.find(this.se
 lector+'[href="'+a+'"]').parent("li").addClass("active"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active")}},a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("scrollspy"),f=typeof c=="object"&&c;e||d.data("scrollspy",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.defaults={offset:10},a(function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),!function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype={constructor:b,show:function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target"),e,f;d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,""));if(b.parent("li").hasClass("active"))return;e=c.find(".active a").last()[0],b.trigger({type:"show",relatedTarget:e}),f=a(d),this.activate(b.parent("li"),c),this.activate(f,f.parent(),function(){b.trigger({type:"shown",relatedTarget:e})})},activate:function(b
 ,c,d){function g(){e.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),f?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var e=c.find("> .active"),f=d&&a.support.transition&&e.hasClass("fade");f?e.one(a.support.transition.end,g):g(),e.removeClass("in")}},a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("tab");e||d.data("tab",e=new b(this)),typeof c=="string"&&e[c]()})},a.fn.tab.Constructor=b,a(function(){a("body").on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})})}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("tooltip",a,b)};b.prototype={constructor:b,init:function(b,c,d){var e,f;this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.enabled=!0,this.options.trigger!="manual"&&(e=this.options.trigger=="hover"?"mouse
 enter":"focus",f=this.options.trigger=="hover"?"mouseleave":"blur",this.$element.on(e,this.options.selector,a.proxy(this.enter,this)),this.$element.on(f,this.options.selector,a.proxy(this.leave,this))),this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(b){return b=a.extend({},a.fn[this.type].defaults,b,this.$element.data()),b.delay&&typeof b.delay=="number"&&(b.delay={show:b.delay,hide:b.delay}),b},enter:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);!c.options.delay||!c.options.delay.show?c.show():(c.hoverState="in",setTimeout(function(){c.hoverState=="in"&&c.show()},c.options.delay.show))},leave:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);!c.options.delay||!c.options.delay.hide?c.hide():(c.hoverState="out",setTimeout(function(){c.hoverState=="out"&&c.hide()},c.options.delay.hide))},show:function(){var a,b,c,d,e,f,g;if(this.hasContent()&&
 this.enabled){a=this.tip(),this.setContent(),this.options.animation&&a.addClass("fade"),f=typeof this.options.placement=="function"?this.options.placement.call(this,a[0],this.$element[0]):this.options.placement,b=/in/.test(f),a.remove().css({top:0,left:0,display:"block"}).appendTo(b?this.$element:document.body),c=this.getPosition(b),d=a[0].offsetWidth,e=a[0].offsetHeight;switch(b?f.split(" ")[1]:f){case"bottom":g={top:c.top+c.height,left:c.left+c.width/2-d/2};break;case"top":g={top:c.top-e,left:c.left+c.width/2-d/2};break;case"left":g={top:c.top+c.height/2-e/2,left:c.left-d};break;case"right":g={top:c.top+c.height/2-e/2,left:c.left+c.width}}a.css(g).addClass(f).addClass("in")}},setContent:function(){var a=this.tip();a.find(".tooltip-inner").html(this.getTitle()),a.removeClass("fade in top bottom left right")},hide:function(){function d(){var b=setTimeout(function(){c.off(a.support.transition.end).remove()},500);c.one(a.support.transition.end,function(){clearTimeout(b),c.remove()})}v
 ar b=this,c=this.tip();c.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d():c.remove()},fixTitle:function(){var a=this.$element;(a.attr("title")||typeof a.attr("data-original-title")!="string")&&a.attr("data-original-title",a.attr("title")||"").removeAttr("title")},hasContent:function(){return this.getTitle()},getPosition:function(b){return a.extend({},b?{top:0,left:0}:this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||(typeof c.title=="function"?c.title.call(b[0]):c.title),a=a.toString().replace(/(^\s*|\s*$)/,""),a},tip:function(){return this.$tip=this.$tip||a(this.options.template)},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function
 (){this[this.tip().hasClass("in")?"hide":"show"]()}},a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("tooltip"),f=typeof c=="object"&&c;e||d.data("tooltip",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.defaults={animation:!0,delay:0,selector:!1,placement:"top",trigger:"hover",title:"",template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'}}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype,{constructor:b,setContent:function(){var b=this.tip(),c=this.getTitle(),d=this.getContent();b.find(".popover-title")[a.type(c)=="object"?"append":"html"](c),b.find(".popover-content > *")[a.type(d)=="object"?"append":"html"](d),b.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var a,b=this.$element,c=th
 is.options;return a=b.attr("data-content")||(typeof c.content=="function"?c.content.call(b[0]):c.content),a=a.toString().replace(/(^\s*|\s*$)/,""),a},tip:function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip}}),a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("popover"),f=typeof c=="object"&&c;e||d.data("popover",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.defaults=a.extend({},a.fn.tooltip.defaults,{placement:"right",content:"",template:'<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'})}(window.jQuery),!function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype={constructor:c,close:function(b){function f(){e.remove(),e.trigger("closed")}var c=a(this),d=c.attr("data-target"),e;d||(d=c.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"
 ")),e=a(d),e.trigger("close"),b&&b.preventDefault(),e.length||(e=c.hasClass("alert")?c:c.parent()),e.removeClass("in"),a.support.transition&&e.hasClass("fade")?e.on(a.support.transition.end,f):f()}},a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("alert");e||d.data("alert",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.alert.Constructor=c,a(function(){a("body").on("click.alert.data-api",b,c.prototype.close)})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.button.defaults,c)};b.prototype={constructor:b,setState:function(a){var b="disabled",c=this.$element,d=c.data(),e=c.is("input")?"val":"html";a+="Text",d.resetText||c.data("resetText",c[e]()),c[e](d[a]||this.options[a]),setTimeout(function(){a=="loadingText"?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},toggle:function(){var a=this.$element.parent('[data-toggle="buttons-radio"]');a&&a.find(".active").removeClass("active")
 ,this.$element.toggleClass("active")}},a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("button"),f=typeof c=="object"&&c;e||d.data("button",e=new b(this,f)),c=="toggle"?e.toggle():c&&e.setState(c)})},a.fn.button.defaults={loadingText:"loading..."},a.fn.button.Constructor=b,a(function(){a("body").on("click.button.data-api","[data-toggle^=button]",function(b){a(b.target).button("toggle")})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.collapse.defaults,c),this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.prototype={constructor:b,dimension:function(){var a=this.$element.hasClass("width");return a?"width":"height"},show:function(){var b=this.dimension(),c=a.camelCase(["scroll",b].join("-")),d=this.$parent&&this.$parent.find(".in"),e;d&&d.length&&(e=d.data("collapse"),d.collapse("hide"),e||d.data("collapse",null)),this.$element[b](0),this.transition
 ("addClass","show","shown"),this.$element[b](this.$element[0][c])},hide:function(){var a=this.dimension();this.reset(this.$element[a]()),this.transition("removeClass","hide","hidden"),this.$element[a](0)},reset:function(a){var b=this.dimension();this.$element.removeClass("collapse")[b](a||"auto")[0].offsetWidth,this.$element.addClass("collapse")},transition:function(b,c,d){var e=this,f=function(){c=="show"&&e.reset(),e.$element.trigger(d)};this.$element.trigger(c)[b]("in"),a.support.transition&&this.$element.hasClass("collapse")?this.$element.one(a.support.transition.end,f):f()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}},a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("collapse"),f=typeof c=="object"&&c;e||d.data("collapse",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.collapse.defaults={toggle:!0},a.fn.collapse.Constructor=b,a(function(){a("body").on("click.collapse.data-api","[data-toggle=collapse]",function(b){var c=a
 (this),d,e=c.attr("data-target")||b.preventDefault()||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),f=a(e).data("collapse")?"toggle":c.data();a(e).collapse(f)})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.carousel.defaults,c),this.options.slide&&this.slide(this.options.slide)};b.prototype={cycle:function(){return this.interval=setInterval(a.proxy(this.next,this),this.options.interval),this},to:function(b){var c=this.$element.find(".active"),d=c.parent().children(),e=d.index(c),f=this;if(b>d.length-1||b<0)return;return this.sliding?this.$element.one("slid",function(){f.to(b)}):e==b?this.pause().cycle():this.slide(b>e?"next":"prev",a(d[b]))},pause:function(){return clearInterval(this.interval),this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(b,c){var d=this.$element.find(".active"),e=c||d[b](),f=this.interval,
 g=b=="next"?"left":"right",h=b=="next"?"first":"last",i=this;return this.sliding=!0,f&&this.pause(),e=e.length?e:this.$element.find(".item")[h](),!a.support.transition&&this.$element.hasClass("slide")?(this.$element.trigger("slide"),d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")):(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),this.$element.trigger("slide"),this.$element.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)})),f&&this.cycle(),this}},a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("carousel"),f=typeof c=="object"&&c;e||d.data("carousel",e=new b(this,f)),typeof c=="number"?e.to(c):typeof c=="string"||(c=f.slide)?e[c]():e.cycle()})},a.fn.carousel.defaults={interval:5e3},a.fn.carousel.Constructor=b,a(function(){a("body").on("click.carousel.data-api"
 ,"[data-slide]",function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=!e.data("modal")&&a.extend({},e.data(),c.data());e.carousel(f),b.preventDefault()})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.typeahead.defaults,c),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.$menu=a(this.options.menu).appendTo("body"),this.source=this.options.source,this.shown=!1,this.listen()};b.prototype={constructor:b,select:function(){var a=this.$menu.find(".active").attr("data-value");return this.$element.val(a),this.hide()},show:function(){var b=a.extend({},this.$element.offset(),{height:this.$element[0].offsetHeight});return this.$menu.css({top:b.top+b.height,left:b.left}),this.$menu.show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},
 lookup:function(b){var c=this,d,e;return this.query=this.$element.val(),this.query?(d=a.grep(this.source,function(a){if(c.matcher(a))return a}),d=this.sorter(d),d.length?this.render(d.slice(0,this.options.items)).show():this.shown?this.hide():this):this.shown?this.hide():this},matcher:function(a){return~a.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(a){var b=[],c=[],d=[],e;while(e=a.shift())e.toLowerCase().indexOf(this.query.toLowerCase())?~e.indexOf(this.query)?c.push(e):d.push(e):b.push(e);return b.concat(c,d)},highlighter:function(a){return a.replace(new RegExp("("+this.query+")","ig"),function(a,b){return"<strong>"+b+"</strong>"})},render:function(b){var c=this;return b=a(b).map(function(b,d){return b=a(c.options.item).attr("data-value",d),b.find("a").html(c.highlighter(d)),b[0]}),b.first().addClass("active"),this.$menu.html(b),this},next:function(b){var c=this.$menu.find(".active").removeClass("active"),d=c.next();d.length||(d=a(this.$menu.find("li")[0])),d.
 addClass("active")},prev:function(a){var b=this.$menu.find(".active").removeClass("active"),c=b.prev();c.length||(c=this.$menu.find("li").last()),c.addClass("active")},listen:function(){this.$element.on("blur",a.proxy(this.blur,this)).on("keypress",a.proxy(this.keypress,this)).on("keyup",a.proxy(this.keyup,this)),(a.browser.webkit||a.browser.msie)&&this.$element.on("keydown",a.proxy(this.keypress,this)),this.$menu.on("click",a.proxy(this.click,this)).on("mouseenter","li",a.proxy(this.mouseenter,this))},keyup:function(a){a.stopPropagation(),a.preventDefault();switch(a.keyCode){case 40:case 38:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:this.hide();break;default:this.lookup()}},keypress:function(a){a.stopPropagation();if(!this.shown)return;switch(a.keyCode){case 9:case 13:case 27:a.preventDefault();break;case 38:a.preventDefault(),this.prev();break;case 40:a.preventDefault(),this.next()}},blur:function(a){var b=this;a.stopPropagation(),a.preventDefault(),set
 Timeout(function(){b.hide()},150)},click:function(a){a.stopPropagation(),a.preventDefault(),this.select()},mouseenter:function(b){this.$menu.find(".active").removeClass("active"),a(b.currentTarget).addClass("active")}},a.fn.typeahead=function(c){return this.each(function(){var d=a(this),e=d.data("typeahead"),f=typeof c=="object"&&c;e||d.data("typeahead",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>'},a.fn.typeahead.Constructor=b,a(function(){a("body").on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(b){var c=a(this);if(c.data("typeahead"))return;b.preventDefault(),c.typeahead(c.data())})})}(window.jQuery)
\ No newline at end of file


[32/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/lib/prettify.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/lib/prettify.js b/deleted/archive/js/lib/prettify.js
deleted file mode 100644
index 037c26d..0000000
--- a/deleted/archive/js/lib/prettify.js
+++ /dev/null
@@ -1,1477 +0,0 @@
-// Copyright (C) 2006 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-/**
- * @fileoverview
- * some functions for browser-side pretty printing of code contained in html.
- *
- * <p>
- * For a fairly comprehensive set of languages see the
- * <a href="http://google-code-prettify.googlecode.com/svn/trunk/README.html#langs">README</a>
- * file that came with this source.  At a minimum, the lexer should work on a
- * number of languages including C and friends, Java, Python, Bash, SQL, HTML,
- * XML, CSS, Javascript, and Makefiles.  It works passably on Ruby, PHP and Awk
- * and a subset of Perl, but, because of commenting conventions, doesn't work on
- * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class.
- * <p>
- * Usage: <ol>
- * <li> include this source file in an html page via
- *   {@code <script type="text/javascript" src="/path/to/prettify.js"></script>}
- * <li> define style rules.  See the example page for examples.
- * <li> mark the {@code <pre>} and {@code <code>} tags in your source with
- *    {@code class=prettyprint.}
- *    You can also use the (html deprecated) {@code <xmp>} tag, but the pretty
- *    printer needs to do more substantial DOM manipulations to support that, so
- *    some css styles may not be preserved.
- * </ol>
- * That's it.  I wanted to keep the API as simple as possible, so there's no
- * need to specify which language the code is in, but if you wish, you can add
- * another class to the {@code <pre>} or {@code <code>} element to specify the
- * language, as in {@code <pre class="prettyprint lang-java">}.  Any class that
- * starts with "lang-" followed by a file extension, specifies the file type.
- * See the "lang-*.js" files in this directory for code that implements
- * per-language file handlers.
- * <p>
- * Change log:<br>
- * cbeust, 2006/08/22
- * <blockquote>
- *   Java annotations (start with "@") are now captured as literals ("lit")
- * </blockquote>
- * @requires console
- */
-
-// JSLint declarations
-/*global console, document, navigator, setTimeout, window */
-
-/**
- * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
- * UI events.
- * If set to {@code false}, {@code prettyPrint()} is synchronous.
- */
-window['PR_SHOULD_USE_CONTINUATION'] = true;
-
-(function () {
-  // Keyword lists for various languages.
-  // We use things that coerce to strings to make them compact when minified
-  // and to defeat aggressive optimizers that fold large string constants.
-  var FLOW_CONTROL_KEYWORDS = ["break,continue,do,else,for,if,return,while"];
-  var C_KEYWORDS = [FLOW_CONTROL_KEYWORDS,"auto,case,char,const,default," + 
-      "double,enum,extern,float,goto,int,long,register,short,signed,sizeof," +
-      "static,struct,switch,typedef,union,unsigned,void,volatile"];
-  var COMMON_KEYWORDS = [C_KEYWORDS,"catch,class,delete,false,import," +
-      "new,operator,private,protected,public,this,throw,true,try,typeof"];
-  var CPP_KEYWORDS = [COMMON_KEYWORDS,"alignof,align_union,asm,axiom,bool," +
-      "concept,concept_map,const_cast,constexpr,decltype," +
-      "dynamic_cast,explicit,export,friend,inline,late_check," +
-      "mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast," +
-      "template,typeid,typename,using,virtual,where"];
-  var JAVA_KEYWORDS = [COMMON_KEYWORDS,
-      "abstract,boolean,byte,extends,final,finally,implements,import," +
-      "instanceof,null,native,package,strictfp,super,synchronized,throws," +
-      "transient"];
-  var CSHARP_KEYWORDS = [JAVA_KEYWORDS,
-      "as,base,by,checked,decimal,delegate,descending,dynamic,event," +
-      "fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock," +
-      "object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed," +
-      "stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];
-  var COFFEE_KEYWORDS = "all,and,by,catch,class,else,extends,false,finally," +
-      "for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then," +
-      "true,try,unless,until,when,while,yes";
-  var JSCRIPT_KEYWORDS = [COMMON_KEYWORDS,
-      "debugger,eval,export,function,get,null,set,undefined,var,with," +
-      "Infinity,NaN"];
-  var PERL_KEYWORDS = "caller,delete,die,do,dump,elsif,eval,exit,foreach,for," +
-      "goto,if,import,last,local,my,next,no,our,print,package,redo,require," +
-      "sub,undef,unless,until,use,wantarray,while,BEGIN,END";
-  var PYTHON_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "and,as,assert,class,def,del," +
-      "elif,except,exec,finally,from,global,import,in,is,lambda," +
-      "nonlocal,not,or,pass,print,raise,try,with,yield," +
-      "False,True,None"];
-  var RUBY_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "alias,and,begin,case,class," +
-      "def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo," +
-      "rescue,retry,self,super,then,true,undef,unless,until,when,yield," +
-      "BEGIN,END"];
-  var SH_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "case,done,elif,esac,eval,fi," +
-      "function,in,local,set,then,until"];
-  var ALL_KEYWORDS = [
-      CPP_KEYWORDS, CSHARP_KEYWORDS, JSCRIPT_KEYWORDS, PERL_KEYWORDS +
-      PYTHON_KEYWORDS, RUBY_KEYWORDS, SH_KEYWORDS];
-  var C_TYPES = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;
-
-  // token style names.  correspond to css classes
-  /**
-   * token style for a string literal
-   * @const
-   */
-  var PR_STRING = 'str';
-  /**
-   * token style for a keyword
-   * @const
-   */
-  var PR_KEYWORD = 'kwd';
-  /**
-   * token style for a comment
-   * @const
-   */
-  var PR_COMMENT = 'com';
-  /**
-   * token style for a type
-   * @const
-   */
-  var PR_TYPE = 'typ';
-  /**
-   * token style for a literal value.  e.g. 1, null, true.
-   * @const
-   */
-  var PR_LITERAL = 'lit';
-  /**
-   * token style for a punctuation string.
-   * @const
-   */
-  var PR_PUNCTUATION = 'pun';
-  /**
-   * token style for a punctuation string.
-   * @const
-   */
-  var PR_PLAIN = 'pln';
-
-  /**
-   * token style for an sgml tag.
-   * @const
-   */
-  var PR_TAG = 'tag';
-  /**
-   * token style for a markup declaration such as a DOCTYPE.
-   * @const
-   */
-  var PR_DECLARATION = 'dec';
-  /**
-   * token style for embedded source.
-   * @const
-   */
-  var PR_SOURCE = 'src';
-  /**
-   * token style for an sgml attribute name.
-   * @const
-   */
-  var PR_ATTRIB_NAME = 'atn';
-  /**
-   * token style for an sgml attribute value.
-   * @const
-   */
-  var PR_ATTRIB_VALUE = 'atv';
-
-  /**
-   * A class that indicates a section of markup that is not code, e.g. to allow
-   * embedding of line numbers within code listings.
-   * @const
-   */
-  var PR_NOCODE = 'nocode';
-
-
-
-/**
- * A set of tokens that can precede a regular expression literal in
- * javascript
- * http://web.archive.org/web/20070717142515/http://www.mozilla.org/js/language/js20/rationale/syntax.html
- * has the full list, but I've removed ones that might be problematic when
- * seen in languages that don't support regular expression literals.
- *
- * <p>Specifically, I've removed any keywords that can't precede a regexp
- * literal in a syntactically legal javascript program, and I've removed the
- * "in" keyword since it's not a keyword in many languages, and might be used
- * as a count of inches.
- *
- * <p>The link a above does not accurately describe EcmaScript rules since
- * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
- * very well in practice.
- *
- * @private
- * @const
- */
-var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*';
-
-// CAVEAT: this does not properly handle the case where a regular
-// expression immediately follows another since a regular expression may
-// have flags for case-sensitivity and the like.  Having regexp tokens
-// adjacent is not valid in any language I'm aware of, so I'm punting.
-// TODO: maybe style special characters inside a regexp as punctuation.
-
-
-  /**
-   * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
-   * matches the union of the sets of strings matched by the input RegExp.
-   * Since it matches globally, if the input strings have a start-of-input
-   * anchor (/^.../), it is ignored for the purposes of unioning.
-   * @param {Array.<RegExp>} regexs non multiline, non-global regexs.
-   * @return {RegExp} a global regex.
-   */
-  function combinePrefixPatterns(regexs) {
-    var capturedGroupIndex = 0;
-  
-    var needToFoldCase = false;
-    var ignoreCase = false;
-    for (var i = 0, n = regexs.length; i < n; ++i) {
-      var regex = regexs[i];
-      if (regex.ignoreCase) {
-        ignoreCase = true;
-      } else if (/[a-z]/i.test(regex.source.replace(
-                     /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
-        needToFoldCase = true;
-        ignoreCase = false;
-        break;
-      }
-    }
-  
-    var escapeCharToCodeUnit = {
-      'b': 8,
-      't': 9,
-      'n': 0xa,
-      'v': 0xb,
-      'f': 0xc,
-      'r': 0xd
-    };
-  
-    function decodeEscape(charsetPart) {
-      var cc0 = charsetPart.charCodeAt(0);
-      if (cc0 !== 92 /* \\ */) {
-        return cc0;
-      }
-      var c1 = charsetPart.charAt(1);
-      cc0 = escapeCharToCodeUnit[c1];
-      if (cc0) {
-        return cc0;
-      } else if ('0' <= c1 && c1 <= '7') {
-        return parseInt(charsetPart.substring(1), 8);
-      } else if (c1 === 'u' || c1 === 'x') {
-        return parseInt(charsetPart.substring(2), 16);
-      } else {
-        return charsetPart.charCodeAt(1);
-      }
-    }
-  
-    function encodeEscape(charCode) {
-      if (charCode < 0x20) {
-        return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
-      }
-      var ch = String.fromCharCode(charCode);
-      if (ch === '\\' || ch === '-' || ch === '[' || ch === ']') {
-        ch = '\\' + ch;
-      }
-      return ch;
-    }
-  
-    function caseFoldCharset(charSet) {
-      var charsetParts = charSet.substring(1, charSet.length - 1).match(
-          new RegExp(
-              '\\\\u[0-9A-Fa-f]{4}'
-              + '|\\\\x[0-9A-Fa-f]{2}'
-              + '|\\\\[0-3][0-7]{0,2}'
-              + '|\\\\[0-7]{1,2}'
-              + '|\\\\[\\s\\S]'
-              + '|-'
-              + '|[^-\\\\]',
-              'g'));
-      var groups = [];
-      var ranges = [];
-      var inverse = charsetParts[0] === '^';
-      for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
-        var p = charsetParts[i];
-        if (/\\[bdsw]/i.test(p)) {  // Don't muck with named groups.
-          groups.push(p);
-        } else {
-          var start = decodeEscape(p);
-          var end;
-          if (i + 2 < n && '-' === charsetParts[i + 1]) {
-            end = decodeEscape(charsetParts[i + 2]);
-            i += 2;
-          } else {
-            end = start;
-          }
-          ranges.push([start, end]);
-          // If the range might intersect letters, then expand it.
-          // This case handling is too simplistic.
-          // It does not deal with non-latin case folding.
-          // It works for latin source code identifiers though.
-          if (!(end < 65 || start > 122)) {
-            if (!(end < 65 || start > 90)) {
-              ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
-            }
-            if (!(end < 97 || start > 122)) {
-              ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
-            }
-          }
-        }
-      }
-  
-      // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
-      // -> [[1, 12], [14, 14], [16, 17]]
-      ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1]  - a[1]); });
-      var consolidatedRanges = [];
-      var lastRange = [NaN, NaN];
-      for (var i = 0; i < ranges.length; ++i) {
-        var range = ranges[i];
-        if (range[0] <= lastRange[1] + 1) {
-          lastRange[1] = Math.max(lastRange[1], range[1]);
-        } else {
-          consolidatedRanges.push(lastRange = range);
-        }
-      }
-  
-      var out = ['['];
-      if (inverse) { out.push('^'); }
-      out.push.apply(out, groups);
-      for (var i = 0; i < consolidatedRanges.length; ++i) {
-        var range = consolidatedRanges[i];
-        out.push(encodeEscape(range[0]));
-        if (range[1] > range[0]) {
-          if (range[1] + 1 > range[0]) { out.push('-'); }
-          out.push(encodeEscape(range[1]));
-        }
-      }
-      out.push(']');
-      return out.join('');
-    }
-  
-    function allowAnywhereFoldCaseAndRenumberGroups(regex) {
-      // Split into character sets, escape sequences, punctuation strings
-      // like ('(', '(?:', ')', '^'), and runs of characters that do not
-      // include any of the above.
-      var parts = regex.source.match(
-          new RegExp(
-              '(?:'
-              + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]'  // a character set
-              + '|\\\\u[A-Fa-f0-9]{4}'  // a unicode escape
-              + '|\\\\x[A-Fa-f0-9]{2}'  // a hex escape
-              + '|\\\\[0-9]+'  // a back-reference or octal escape
-              + '|\\\\[^ux0-9]'  // other escape sequence
-              + '|\\(\\?[:!=]'  // start of a non-capturing group
-              + '|[\\(\\)\\^]'  // start/emd of a group, or line start
-              + '|[^\\x5B\\x5C\\(\\)\\^]+'  // run of other characters
-              + ')',
-              'g'));
-      var n = parts.length;
-  
-      // Maps captured group numbers to the number they will occupy in
-      // the output or to -1 if that has not been determined, or to
-      // undefined if they need not be capturing in the output.
-      var capturedGroups = [];
-  
-      // Walk over and identify back references to build the capturedGroups
-      // mapping.
-      for (var i = 0, groupIndex = 0; i < n; ++i) {
-        var p = parts[i];
-        if (p === '(') {
-          // groups are 1-indexed, so max group index is count of '('
-          ++groupIndex;
-        } else if ('\\' === p.charAt(0)) {
-          var decimalValue = +p.substring(1);
-          if (decimalValue && decimalValue <= groupIndex) {
-            capturedGroups[decimalValue] = -1;
-          }
-        }
-      }
-  
-      // Renumber groups and reduce capturing groups to non-capturing groups
-      // where possible.
-      for (var i = 1; i < capturedGroups.length; ++i) {
-        if (-1 === capturedGroups[i]) {
-          capturedGroups[i] = ++capturedGroupIndex;
-        }
-      }
-      for (var i = 0, groupIndex = 0; i < n; ++i) {
-        var p = parts[i];
-        if (p === '(') {
-          ++groupIndex;
-          if (capturedGroups[groupIndex] === undefined) {
-            parts[i] = '(?:';
-          }
-        } else if ('\\' === p.charAt(0)) {
-          var decimalValue = +p.substring(1);
-          if (decimalValue && decimalValue <= groupIndex) {
-            parts[i] = '\\' + capturedGroups[groupIndex];
-          }
-        }
-      }
-  
-      // Remove any prefix anchors so that the output will match anywhere.
-      // ^^ really does mean an anchored match though.
-      for (var i = 0, groupIndex = 0; i < n; ++i) {
-        if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
-      }
-  
-      // Expand letters to groups to handle mixing of case-sensitive and
-      // case-insensitive patterns if necessary.
-      if (regex.ignoreCase && needToFoldCase) {
-        for (var i = 0; i < n; ++i) {
-          var p = parts[i];
-          var ch0 = p.charAt(0);
-          if (p.length >= 2 && ch0 === '[') {
-            parts[i] = caseFoldCharset(p);
-          } else if (ch0 !== '\\') {
-            // TODO: handle letters in numeric escapes.
-            parts[i] = p.replace(
-                /[a-zA-Z]/g,
-                function (ch) {
-                  var cc = ch.charCodeAt(0);
-                  return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
-                });
-          }
-        }
-      }
-  
-      return parts.join('');
-    }
-  
-    var rewritten = [];
-    for (var i = 0, n = regexs.length; i < n; ++i) {
-      var regex = regexs[i];
-      if (regex.global || regex.multiline) { throw new Error('' + regex); }
-      rewritten.push(
-          '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
-    }
-  
-    return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
-  }
-
-
-  /**
-   * Split markup into a string of source code and an array mapping ranges in
-   * that string to the text nodes in which they appear.
-   *
-   * <p>
-   * The HTML DOM structure:</p>
-   * <pre>
-   * (Element   "p"
-   *   (Element "b"
-   *     (Text  "print "))       ; #1
-   *   (Text    "'Hello '")      ; #2
-   *   (Element "br")            ; #3
-   *   (Text    "  + 'World';")) ; #4
-   * </pre>
-   * <p>
-   * corresponds to the HTML
-   * {@code <p><b>print </b>'Hello '<br>  + 'World';</p>}.</p>
-   *
-   * <p>
-   * It will produce the output:</p>
-   * <pre>
-   * {
-   *   sourceCode: "print 'Hello '\n  + 'World';",
-   *   //                 1         2
-   *   //       012345678901234 5678901234567
-   *   spans: [0, #1, 6, #2, 14, #3, 15, #4]
-   * }
-   * </pre>
-   * <p>
-   * where #1 is a reference to the {@code "print "} text node above, and so
-   * on for the other text nodes.
-   * </p>
-   *
-   * <p>
-   * The {@code} spans array is an array of pairs.  Even elements are the start
-   * indices of substrings, and odd elements are the text nodes (or BR elements)
-   * that contain the text for those substrings.
-   * Substrings continue until the next index or the end of the source.
-   * </p>
-   *
-   * @param {Node} node an HTML DOM subtree containing source-code.
-   * @return {Object} source code and the text nodes in which they occur.
-   */
-  function extractSourceSpans(node) {
-    var nocode = /(?:^|\s)nocode(?:\s|$)/;
-  
-    var chunks = [];
-    var length = 0;
-    var spans = [];
-    var k = 0;
-  
-    var whitespace;
-    if (node.currentStyle) {
-      whitespace = node.currentStyle.whiteSpace;
-    } else if (window.getComputedStyle) {
-      whitespace = document.defaultView.getComputedStyle(node, null)
-          .getPropertyValue('white-space');
-    }
-    var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3);
-  
-    function walk(node) {
-      switch (node.nodeType) {
-        case 1:  // Element
-          if (nocode.test(node.className)) { return; }
-          for (var child = node.firstChild; child; child = child.nextSibling) {
-            walk(child);
-          }
-          var nodeName = node.nodeName;
-          if ('BR' === nodeName || 'LI' === nodeName) {
-            chunks[k] = '\n';
-            spans[k << 1] = length++;
-            spans[(k++ << 1) | 1] = node;
-          }
-          break;
-        case 3: case 4:  // Text
-          var text = node.nodeValue;
-          if (text.length) {
-            if (!isPreformatted) {
-              text = text.replace(/[ \t\r\n]+/g, ' ');
-            } else {
-              text = text.replace(/\r\n?/g, '\n');  // Normalize newlines.
-            }
-            // TODO: handle tabs here?
-            chunks[k] = text;
-            spans[k << 1] = length;
-            length += text.length;
-            spans[(k++ << 1) | 1] = node;
-          }
-          break;
-      }
-    }
-  
-    walk(node);
-  
-    return {
-      sourceCode: chunks.join('').replace(/\n$/, ''),
-      spans: spans
-    };
-  }
-
-
-  /**
-   * Apply the given language handler to sourceCode and add the resulting
-   * decorations to out.
-   * @param {number} basePos the index of sourceCode within the chunk of source
-   *    whose decorations are already present on out.
-   */
-  function appendDecorations(basePos, sourceCode, langHandler, out) {
-    if (!sourceCode) { return; }
-    var job = {
-      sourceCode: sourceCode,
-      basePos: basePos
-    };
-    langHandler(job);
-    out.push.apply(out, job.decorations);
-  }
-
-  var notWs = /\S/;
-
-  /**
-   * Given an element, if it contains only one child element and any text nodes
-   * it contains contain only space characters, return the sole child element.
-   * Otherwise returns undefined.
-   * <p>
-   * This is meant to return the CODE element in {@code <pre><code ...>} when
-   * there is a single child element that contains all the non-space textual
-   * content, but not to return anything where there are multiple child elements
-   * as in {@code <pre><code>...</code><code>...</code></pre>} or when there
-   * is textual content.
-   */
-  function childContentWrapper(element) {
-    var wrapper = undefined;
-    for (var c = element.firstChild; c; c = c.nextSibling) {
-      var type = c.nodeType;
-      wrapper = (type === 1)  // Element Node
-          ? (wrapper ? element : c)
-          : (type === 3)  // Text Node
-          ? (notWs.test(c.nodeValue) ? element : wrapper)
-          : wrapper;
-    }
-    return wrapper === element ? undefined : wrapper;
-  }
-
-  /** Given triples of [style, pattern, context] returns a lexing function,
-    * The lexing function interprets the patterns to find token boundaries and
-    * returns a decoration list of the form
-    * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
-    * where index_n is an index into the sourceCode, and style_n is a style
-    * constant like PR_PLAIN.  index_n-1 <= index_n, and style_n-1 applies to
-    * all characters in sourceCode[index_n-1:index_n].
-    *
-    * The stylePatterns is a list whose elements have the form
-    * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
-    *
-    * Style is a style constant like PR_PLAIN, or can be a string of the
-    * form 'lang-FOO', where FOO is a language extension describing the
-    * language of the portion of the token in $1 after pattern executes.
-    * E.g., if style is 'lang-lisp', and group 1 contains the text
-    * '(hello (world))', then that portion of the token will be passed to the
-    * registered lisp handler for formatting.
-    * The text before and after group 1 will be restyled using this decorator
-    * so decorators should take care that this doesn't result in infinite
-    * recursion.  For example, the HTML lexer rule for SCRIPT elements looks
-    * something like ['lang-js', /<[s]cript>(.+?)<\/script>/].  This may match
-    * '<script>foo()<\/script>', which would cause the current decorator to
-    * be called with '<script>' which would not match the same rule since
-    * group 1 must not be empty, so it would be instead styled as PR_TAG by
-    * the generic tag rule.  The handler registered for the 'js' extension would
-    * then be called with 'foo()', and finally, the current decorator would
-    * be called with '<\/script>' which would not match the original rule and
-    * so the generic tag rule would identify it as a tag.
-    *
-    * Pattern must only match prefixes, and if it matches a prefix, then that
-    * match is considered a token with the same style.
-    *
-    * Context is applied to the last non-whitespace, non-comment token
-    * recognized.
-    *
-    * Shortcut is an optional string of characters, any of which, if the first
-    * character, gurantee that this pattern and only this pattern matches.
-    *
-    * @param {Array} shortcutStylePatterns patterns that always start with
-    *   a known character.  Must have a shortcut string.
-    * @param {Array} fallthroughStylePatterns patterns that will be tried in
-    *   order if the shortcut ones fail.  May have shortcuts.
-    *
-    * @return {function (Object)} a
-    *   function that takes source code and returns a list of decorations.
-    */
-  function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {
-    var shortcuts = {};
-    var tokenizer;
-    (function () {
-      var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);
-      var allRegexs = [];
-      var regexKeys = {};
-      for (var i = 0, n = allPatterns.length; i < n; ++i) {
-        var patternParts = allPatterns[i];
-        var shortcutChars = patternParts[3];
-        if (shortcutChars) {
-          for (var c = shortcutChars.length; --c >= 0;) {
-            shortcuts[shortcutChars.charAt(c)] = patternParts;
-          }
-        }
-        var regex = patternParts[1];
-        var k = '' + regex;
-        if (!regexKeys.hasOwnProperty(k)) {
-          allRegexs.push(regex);
-          regexKeys[k] = null;
-        }
-      }
-      allRegexs.push(/[\0-\uffff]/);
-      tokenizer = combinePrefixPatterns(allRegexs);
-    })();
-
-    var nPatterns = fallthroughStylePatterns.length;
-
-    /**
-     * Lexes job.sourceCode and produces an output array job.decorations of
-     * style classes preceded by the position at which they start in
-     * job.sourceCode in order.
-     *
-     * @param {Object} job an object like <pre>{
-     *    sourceCode: {string} sourceText plain text,
-     *    basePos: {int} position of job.sourceCode in the larger chunk of
-     *        sourceCode.
-     * }</pre>
-     */
-    var decorate = function (job) {
-      var sourceCode = job.sourceCode, basePos = job.basePos;
-      /** Even entries are positions in source in ascending order.  Odd enties
-        * are style markers (e.g., PR_COMMENT) that run from that position until
-        * the end.
-        * @type {Array.<number|string>}
-        */
-      var decorations = [basePos, PR_PLAIN];
-      var pos = 0;  // index into sourceCode
-      var tokens = sourceCode.match(tokenizer) || [];
-      var styleCache = {};
-
-      for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {
-        var token = tokens[ti];
-        var style = styleCache[token];
-        var match = void 0;
-
-        var isEmbedded;
-        if (typeof style === 'string') {
-          isEmbedded = false;
-        } else {
-          var patternParts = shortcuts[token.charAt(0)];
-          if (patternParts) {
-            match = token.match(patternParts[1]);
-            style = patternParts[0];
-          } else {
-            for (var i = 0; i < nPatterns; ++i) {
-              patternParts = fallthroughStylePatterns[i];
-              match = token.match(patternParts[1]);
-              if (match) {
-                style = patternParts[0];
-                break;
-              }
-            }
-
-            if (!match) {  // make sure that we make progress
-              style = PR_PLAIN;
-            }
-          }
-
-          isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);
-          if (isEmbedded && !(match && typeof match[1] === 'string')) {
-            isEmbedded = false;
-            style = PR_SOURCE;
-          }
-
-          if (!isEmbedded) { styleCache[token] = style; }
-        }
-
-        var tokenStart = pos;
-        pos += token.length;
-
-        if (!isEmbedded) {
-          decorations.push(basePos + tokenStart, style);
-        } else {  // Treat group 1 as an embedded block of source code.
-          var embeddedSource = match[1];
-          var embeddedSourceStart = token.indexOf(embeddedSource);
-          var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;
-          if (match[2]) {
-            // If embeddedSource can be blank, then it would match at the
-            // beginning which would cause us to infinitely recurse on the
-            // entire token, so we catch the right context in match[2].
-            embeddedSourceEnd = token.length - match[2].length;
-            embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;
-          }
-          var lang = style.substring(5);
-          // Decorate the left of the embedded source
-          appendDecorations(
-              basePos + tokenStart,
-              token.substring(0, embeddedSourceStart),
-              decorate, decorations);
-          // Decorate the embedded source
-          appendDecorations(
-              basePos + tokenStart + embeddedSourceStart,
-              embeddedSource,
-              langHandlerForExtension(lang, embeddedSource),
-              decorations);
-          // Decorate the right of the embedded section
-          appendDecorations(
-              basePos + tokenStart + embeddedSourceEnd,
-              token.substring(embeddedSourceEnd),
-              decorate, decorations);
-        }
-      }
-      job.decorations = decorations;
-    };
-    return decorate;
-  }
-
-  /** returns a function that produces a list of decorations from source text.
-    *
-    * This code treats ", ', and ` as string delimiters, and \ as a string
-    * escape.  It does not recognize perl's qq() style strings.
-    * It has no special handling for double delimiter escapes as in basic, or
-    * the tripled delimiters used in python, but should work on those regardless
-    * although in those cases a single string literal may be broken up into
-    * multiple adjacent string literals.
-    *
-    * It recognizes C, C++, and shell style comments.
-    *
-    * @param {Object} options a set of optional parameters.
-    * @return {function (Object)} a function that examines the source code
-    *     in the input job and builds the decoration list.
-    */
-  function sourceDecorator(options) {
-    var shortcutStylePatterns = [], fallthroughStylePatterns = [];
-    if (options['tripleQuotedStrings']) {
-      // '''multi-line-string''', 'single-line-string', and double-quoted
-      shortcutStylePatterns.push(
-          [PR_STRING,  /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
-           null, '\'"']);
-    } else if (options['multiLineStrings']) {
-      // 'multi-line-string', "multi-line-string"
-      shortcutStylePatterns.push(
-          [PR_STRING,  /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
-           null, '\'"`']);
-    } else {
-      // 'single-line-string', "single-line-string"
-      shortcutStylePatterns.push(
-          [PR_STRING,
-           /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
-           null, '"\'']);
-    }
-    if (options['verbatimStrings']) {
-      // verbatim-string-literal production from the C# grammar.  See issue 93.
-      fallthroughStylePatterns.push(
-          [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
-    }
-    var hc = options['hashComments'];
-    if (hc) {
-      if (options['cStyleComments']) {
-        if (hc > 1) {  // multiline hash comments
-          shortcutStylePatterns.push(
-              [PR_COMMENT, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, '#']);
-        } else {
-          // Stop C preprocessor declarations at an unclosed open comment
-          shortcutStylePatterns.push(
-              [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,
-               null, '#']);
-        }
-        fallthroughStylePatterns.push(
-            [PR_STRING,
-             /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
-             null]);
-      } else {
-        shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
-      }
-    }
-    if (options['cStyleComments']) {
-      fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]);
-      fallthroughStylePatterns.push(
-          [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
-    }
-    if (options['regexLiterals']) {
-      /**
-       * @const
-       */
-      var REGEX_LITERAL = (
-          // A regular expression literal starts with a slash that is
-          // not followed by * or / so that it is not confused with
-          // comments.
-          '/(?=[^/*])'
-          // and then contains any number of raw characters,
-          + '(?:[^/\\x5B\\x5C]'
-          // escape sequences (\x5C),
-          +    '|\\x5C[\\s\\S]'
-          // or non-nesting character sets (\x5B\x5D);
-          +    '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+'
-          // finally closed by a /.
-          + '/');
-      fallthroughStylePatterns.push(
-          ['lang-regex',
-           new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
-           ]);
-    }
-
-    var types = options['types'];
-    if (types) {
-      fallthroughStylePatterns.push([PR_TYPE, types]);
-    }
-
-    var keywords = ("" + options['keywords']).replace(/^ | $/g, '');
-    if (keywords.length) {
-      fallthroughStylePatterns.push(
-          [PR_KEYWORD,
-           new RegExp('^(?:' + keywords.replace(/[\s,]+/g, '|') + ')\\b'),
-           null]);
-    }
-
-    shortcutStylePatterns.push([PR_PLAIN,       /^\s+/, null, ' \r\n\t\xA0']);
-    fallthroughStylePatterns.push(
-        // TODO(mikesamuel): recognize non-latin letters and numerals in idents
-        [PR_LITERAL,     /^@[a-z_$][a-z_$@0-9]*/i, null],
-        [PR_TYPE,        /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/, null],
-        [PR_PLAIN,       /^[a-z_$][a-z_$@0-9]*/i, null],
-        [PR_LITERAL,
-         new RegExp(
-             '^(?:'
-             // A hex number
-             + '0x[a-f0-9]+'
-             // or an octal or decimal number,
-             + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
-             // possibly in scientific notation
-             + '(?:e[+\\-]?\\d+)?'
-             + ')'
-             // with an optional modifier like UL for unsigned long
-             + '[a-z]*', 'i'),
-         null, '0123456789'],
-        // Don't treat escaped quotes in bash as starting strings.  See issue 144.
-        [PR_PLAIN,       /^\\[\s\S]?/, null],
-        [PR_PUNCTUATION, /^.[^\s\w\.$@\'\"\`\/\#\\]*/, null]);
-
-    return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
-  }
-
-  var decorateSource = sourceDecorator({
-        'keywords': ALL_KEYWORDS,
-        'hashComments': true,
-        'cStyleComments': true,
-        'multiLineStrings': true,
-        'regexLiterals': true
-      });
-
-  /**
-   * Given a DOM subtree, wraps it in a list, and puts each line into its own
-   * list item.
-   *
-   * @param {Node} node modified in place.  Its content is pulled into an
-   *     HTMLOListElement, and each line is moved into a separate list item.
-   *     This requires cloning elements, so the input might not have unique
-   *     IDs after numbering.
-   */
-  function numberLines(node, opt_startLineNum) {
-    var nocode = /(?:^|\s)nocode(?:\s|$)/;
-    var lineBreak = /\r\n?|\n/;
-  
-    var document = node.ownerDocument;
-  
-    var whitespace;
-    if (node.currentStyle) {
-      whitespace = node.currentStyle.whiteSpace;
-    } else if (window.getComputedStyle) {
-      whitespace = document.defaultView.getComputedStyle(node, null)
-          .getPropertyValue('white-space');
-    }
-    // If it's preformatted, then we need to split lines on line breaks
-    // in addition to <BR>s.
-    var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3);
-  
-    var li = document.createElement('LI');
-    while (node.firstChild) {
-      li.appendChild(node.firstChild);
-    }
-    // An array of lines.  We split below, so this is initialized to one
-    // un-split line.
-    var listItems = [li];
-  
-    function walk(node) {
-      switch (node.nodeType) {
-        case 1:  // Element
-          if (nocode.test(node.className)) { break; }
-          if ('BR' === node.nodeName) {
-            breakAfter(node);
-            // Discard the <BR> since it is now flush against a </LI>.
-            if (node.parentNode) {
-              node.parentNode.removeChild(node);
-            }
-          } else {
-            for (var child = node.firstChild; child; child = child.nextSibling) {
-              walk(child);
-            }
-          }
-          break;
-        case 3: case 4:  // Text
-          if (isPreformatted) {
-            var text = node.nodeValue;
-            var match = text.match(lineBreak);
-            if (match) {
-              var firstLine = text.substring(0, match.index);
-              node.nodeValue = firstLine;
-              var tail = text.substring(match.index + match[0].length);
-              if (tail) {
-                var parent = node.parentNode;
-                parent.insertBefore(
-                    document.createTextNode(tail), node.nextSibling);
-              }
-              breakAfter(node);
-              if (!firstLine) {
-                // Don't leave blank text nodes in the DOM.
-                node.parentNode.removeChild(node);
-              }
-            }
-          }
-          break;
-      }
-    }
-  
-    // Split a line after the given node.
-    function breakAfter(lineEndNode) {
-      // If there's nothing to the right, then we can skip ending the line
-      // here, and move root-wards since splitting just before an end-tag
-      // would require us to create a bunch of empty copies.
-      while (!lineEndNode.nextSibling) {
-        lineEndNode = lineEndNode.parentNode;
-        if (!lineEndNode) { return; }
-      }
-  
-      function breakLeftOf(limit, copy) {
-        // Clone shallowly if this node needs to be on both sides of the break.
-        var rightSide = copy ? limit.cloneNode(false) : limit;
-        var parent = limit.parentNode;
-        if (parent) {
-          // We clone the parent chain.
-          // This helps us resurrect important styling elements that cross lines.
-          // E.g. in <i>Foo<br>Bar</i>
-          // should be rewritten to <li><i>Foo</i></li><li><i>Bar</i></li>.
-          var parentClone = breakLeftOf(parent, 1);
-          // Move the clone and everything to the right of the original
-          // onto the cloned parent.
-          var next = limit.nextSibling;
-          parentClone.appendChild(rightSide);
-          for (var sibling = next; sibling; sibling = next) {
-            next = sibling.nextSibling;
-            parentClone.appendChild(sibling);
-          }
-        }
-        return rightSide;
-      }
-  
-      var copiedListItem = breakLeftOf(lineEndNode.nextSibling, 0);
-  
-      // Walk the parent chain until we reach an unattached LI.
-      for (var parent;
-           // Check nodeType since IE invents document fragments.
-           (parent = copiedListItem.parentNode) && parent.nodeType === 1;) {
-        copiedListItem = parent;
-      }
-      // Put it on the list of lines for later processing.
-      listItems.push(copiedListItem);
-    }
-  
-    // Split lines while there are lines left to split.
-    for (var i = 0;  // Number of lines that have been split so far.
-         i < listItems.length;  // length updated by breakAfter calls.
-         ++i) {
-      walk(listItems[i]);
-    }
-  
-    // Make sure numeric indices show correctly.
-    if (opt_startLineNum === (opt_startLineNum|0)) {
-      listItems[0].setAttribute('value', opt_startLineNum);
-    }
-  
-    var ol = document.createElement('OL');
-    ol.className = 'linenums';
-    var offset = Math.max(0, ((opt_startLineNum - 1 /* zero index */)) | 0) || 0;
-    for (var i = 0, n = listItems.length; i < n; ++i) {
-      li = listItems[i];
-      // Stick a class on the LIs so that stylesheets can
-      // color odd/even rows, or any other row pattern that
-      // is co-prime with 10.
-      li.className = 'L' + ((i + offset) % 10);
-      if (!li.firstChild) {
-        li.appendChild(document.createTextNode('\xA0'));
-      }
-      ol.appendChild(li);
-    }
-  
-    node.appendChild(ol);
-  }
-
-  /**
-   * Breaks {@code job.sourceCode} around style boundaries in
-   * {@code job.decorations} and modifies {@code job.sourceNode} in place.
-   * @param {Object} job like <pre>{
-   *    sourceCode: {string} source as plain text,
-   *    spans: {Array.<number|Node>} alternating span start indices into source
-   *       and the text node or element (e.g. {@code <BR>}) corresponding to that
-   *       span.
-   *    decorations: {Array.<number|string} an array of style classes preceded
-   *       by the position at which they start in job.sourceCode in order
-   * }</pre>
-   * @private
-   */
-  function recombineTagsAndDecorations(job) {
-    var isIE = /\bMSIE\b/.test(navigator.userAgent);
-    var newlineRe = /\n/g;
-  
-    var source = job.sourceCode;
-    var sourceLength = source.length;
-    // Index into source after the last code-unit recombined.
-    var sourceIndex = 0;
-  
-    var spans = job.spans;
-    var nSpans = spans.length;
-    // Index into spans after the last span which ends at or before sourceIndex.
-    var spanIndex = 0;
-  
-    var decorations = job.decorations;
-    var nDecorations = decorations.length;
-    // Index into decorations after the last decoration which ends at or before
-    // sourceIndex.
-    var decorationIndex = 0;
-  
-    // Remove all zero-length decorations.
-    decorations[nDecorations] = sourceLength;
-    var decPos, i;
-    for (i = decPos = 0; i < nDecorations;) {
-      if (decorations[i] !== decorations[i + 2]) {
-        decorations[decPos++] = decorations[i++];
-        decorations[decPos++] = decorations[i++];
-      } else {
-        i += 2;
-      }
-    }
-    nDecorations = decPos;
-  
-    // Simplify decorations.
-    for (i = decPos = 0; i < nDecorations;) {
-      var startPos = decorations[i];
-      // Conflate all adjacent decorations that use the same style.
-      var startDec = decorations[i + 1];
-      var end = i + 2;
-      while (end + 2 <= nDecorations && decorations[end + 1] === startDec) {
-        end += 2;
-      }
-      decorations[decPos++] = startPos;
-      decorations[decPos++] = startDec;
-      i = end;
-    }
-  
-    nDecorations = decorations.length = decPos;
-  
-    var decoration = null;
-    while (spanIndex < nSpans) {
-      var spanStart = spans[spanIndex];
-      var spanEnd = spans[spanIndex + 2] || sourceLength;
-  
-      var decStart = decorations[decorationIndex];
-      var decEnd = decorations[decorationIndex + 2] || sourceLength;
-  
-      var end = Math.min(spanEnd, decEnd);
-  
-      var textNode = spans[spanIndex + 1];
-      var styledText;
-      if (textNode.nodeType !== 1  // Don't muck with <BR>s or <LI>s
-          // Don't introduce spans around empty text nodes.
-          && (styledText = source.substring(sourceIndex, end))) {
-        // This may seem bizarre, and it is.  Emitting LF on IE causes the
-        // code to display with spaces instead of line breaks.
-        // Emitting Windows standard issue linebreaks (CRLF) causes a blank
-        // space to appear at the beginning of every line but the first.
-        // Emitting an old Mac OS 9 line separator makes everything spiffy.
-        if (isIE) { styledText = styledText.replace(newlineRe, '\r'); }
-        textNode.nodeValue = styledText;
-        var document = textNode.ownerDocument;
-        var span = document.createElement('SPAN');
-        span.className = decorations[decorationIndex + 1];
-        var parentNode = textNode.parentNode;
-        parentNode.replaceChild(span, textNode);
-        span.appendChild(textNode);
-        if (sourceIndex < spanEnd) {  // Split off a text node.
-          spans[spanIndex + 1] = textNode
-              // TODO: Possibly optimize by using '' if there's no flicker.
-              = document.createTextNode(source.substring(end, spanEnd));
-          parentNode.insertBefore(textNode, span.nextSibling);
-        }
-      }
-  
-      sourceIndex = end;
-  
-      if (sourceIndex >= spanEnd) {
-        spanIndex += 2;
-      }
-      if (sourceIndex >= decEnd) {
-        decorationIndex += 2;
-      }
-    }
-  }
-
-
-  /** Maps language-specific file extensions to handlers. */
-  var langHandlerRegistry = {};
-  /** Register a language handler for the given file extensions.
-    * @param {function (Object)} handler a function from source code to a list
-    *      of decorations.  Takes a single argument job which describes the
-    *      state of the computation.   The single parameter has the form
-    *      {@code {
-    *        sourceCode: {string} as plain text.
-    *        decorations: {Array.<number|string>} an array of style classes
-    *                     preceded by the position at which they start in
-    *                     job.sourceCode in order.
-    *                     The language handler should assigned this field.
-    *        basePos: {int} the position of source in the larger source chunk.
-    *                 All positions in the output decorations array are relative
-    *                 to the larger source chunk.
-    *      } }
-    * @param {Array.<string>} fileExtensions
-    */
-  function registerLangHandler(handler, fileExtensions) {
-    for (var i = fileExtensions.length; --i >= 0;) {
-      var ext = fileExtensions[i];
-      if (!langHandlerRegistry.hasOwnProperty(ext)) {
-        langHandlerRegistry[ext] = handler;
-      } else if (window['console']) {
-        console['warn']('cannot override language handler %s', ext);
-      }
-    }
-  }
-  function langHandlerForExtension(extension, source) {
-    if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {
-      // Treat it as markup if the first non whitespace character is a < and
-      // the last non-whitespace character is a >.
-      extension = /^\s*</.test(source)
-          ? 'default-markup'
-          : 'default-code';
-    }
-    return langHandlerRegistry[extension];
-  }
-  registerLangHandler(decorateSource, ['default-code']);
-  registerLangHandler(
-      createSimpleLexer(
-          [],
-          [
-           [PR_PLAIN,       /^[^<?]+/],
-           [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
-           [PR_COMMENT,     /^<\!--[\s\S]*?(?:-\->|$)/],
-           // Unescaped content in an unknown language
-           ['lang-',        /^<\?([\s\S]+?)(?:\?>|$)/],
-           ['lang-',        /^<%([\s\S]+?)(?:%>|$)/],
-           [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
-           ['lang-',        /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
-           // Unescaped content in javascript.  (Or possibly vbscript).
-           ['lang-js',      /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
-           // Contains unescaped stylesheet content
-           ['lang-css',     /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
-           ['lang-in.tag',  /^(<\/?[a-z][^<>]*>)/i]
-          ]),
-      ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);
-  registerLangHandler(
-      createSimpleLexer(
-          [
-           [PR_PLAIN,        /^[\s]+/, null, ' \t\r\n'],
-           [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\'']
-           ],
-          [
-           [PR_TAG,          /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
-           [PR_ATTRIB_NAME,  /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
-           ['lang-uq.val',   /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
-           [PR_PUNCTUATION,  /^[=<>\/]+/],
-           ['lang-js',       /^on\w+\s*=\s*\"([^\"]+)\"/i],
-           ['lang-js',       /^on\w+\s*=\s*\'([^\']+)\'/i],
-           ['lang-js',       /^on\w+\s*=\s*([^\"\'>\s]+)/i],
-           ['lang-css',      /^style\s*=\s*\"([^\"]+)\"/i],
-           ['lang-css',      /^style\s*=\s*\'([^\']+)\'/i],
-           ['lang-css',      /^style\s*=\s*([^\"\'>\s]+)/i]
-           ]),
-      ['in.tag']);
-  registerLangHandler(
-      createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']);
-  registerLangHandler(sourceDecorator({
-          'keywords': CPP_KEYWORDS,
-          'hashComments': true,
-          'cStyleComments': true,
-          'types': C_TYPES
-        }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
-  registerLangHandler(sourceDecorator({
-          'keywords': 'null,true,false'
-        }), ['json']);
-  registerLangHandler(sourceDecorator({
-          'keywords': CSHARP_KEYWORDS,
-          'hashComments': true,
-          'cStyleComments': true,
-          'verbatimStrings': true,
-          'types': C_TYPES
-        }), ['cs']);
-  registerLangHandler(sourceDecorator({
-          'keywords': JAVA_KEYWORDS,
-          'cStyleComments': true
-        }), ['java']);
-  registerLangHandler(sourceDecorator({
-          'keywords': SH_KEYWORDS,
-          'hashComments': true,
-          'multiLineStrings': true
-        }), ['bsh', 'csh', 'sh']);
-  registerLangHandler(sourceDecorator({
-          'keywords': PYTHON_KEYWORDS,
-          'hashComments': true,
-          'multiLineStrings': true,
-          'tripleQuotedStrings': true
-        }), ['cv', 'py']);
-  registerLangHandler(sourceDecorator({
-          'keywords': PERL_KEYWORDS,
-          'hashComments': true,
-          'multiLineStrings': true,
-          'regexLiterals': true
-        }), ['perl', 'pl', 'pm']);
-  registerLangHandler(sourceDecorator({
-          'keywords': RUBY_KEYWORDS,
-          'hashComments': true,
-          'multiLineStrings': true,
-          'regexLiterals': true
-        }), ['rb']);
-  registerLangHandler(sourceDecorator({
-          'keywords': JSCRIPT_KEYWORDS,
-          'cStyleComments': true,
-          'regexLiterals': true
-        }), ['js']);
-  registerLangHandler(sourceDecorator({
-          'keywords': COFFEE_KEYWORDS,
-          'hashComments': 3,  // ### style block comments
-          'cStyleComments': true,
-          'multilineStrings': true,
-          'tripleQuotedStrings': true,
-          'regexLiterals': true
-        }), ['coffee']);
-  registerLangHandler(createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
-
-  function applyDecorator(job) {
-    var opt_langExtension = job.langExtension;
-
-    try {
-      // Extract tags, and convert the source code to plain text.
-      var sourceAndSpans = extractSourceSpans(job.sourceNode);
-      /** Plain text. @type {string} */
-      var source = sourceAndSpans.sourceCode;
-      job.sourceCode = source;
-      job.spans = sourceAndSpans.spans;
-      job.basePos = 0;
-
-      // Apply the appropriate language handler
-      langHandlerForExtension(opt_langExtension, source)(job);
-
-      // Integrate the decorations and tags back into the source code,
-      // modifying the sourceNode in place.
-      recombineTagsAndDecorations(job);
-    } catch (e) {
-      if ('console' in window) {
-        console['log'](e && e['stack'] ? e['stack'] : e);
-      }
-    }
-  }
-
-  /**
-   * @param sourceCodeHtml {string} The HTML to pretty print.
-   * @param opt_langExtension {string} The language name to use.
-   *     Typically, a filename extension like 'cpp' or 'java'.
-   * @param opt_numberLines {number|boolean} True to number lines,
-   *     or the 1-indexed number of the first line in sourceCodeHtml.
-   */
-  function prettyPrintOne(sourceCodeHtml, opt_langExtension, opt_numberLines) {
-    var container = document.createElement('PRE');
-    // This could cause images to load and onload listeners to fire.
-    // E.g. <img onerror="alert(1337)" src="nosuchimage.png">.
-    // We assume that the inner HTML is from a trusted source.
-    container.innerHTML = sourceCodeHtml;
-    if (opt_numberLines) {
-      numberLines(container, opt_numberLines);
-    }
-
-    var job = {
-      langExtension: opt_langExtension,
-      numberLines: opt_numberLines,
-      sourceNode: container
-    };
-    applyDecorator(job);
-    return container.innerHTML;
-  }
-
-  function prettyPrint(opt_whenDone) {
-    function byTagName(tn) { return document.getElementsByTagName(tn); }
-    // fetch a list of nodes to rewrite
-    var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];
-    var elements = [];
-    for (var i = 0; i < codeSegments.length; ++i) {
-      for (var j = 0, n = codeSegments[i].length; j < n; ++j) {
-        elements.push(codeSegments[i][j]);
-      }
-    }
-    codeSegments = null;
-
-    var clock = Date;
-    if (!clock['now']) {
-      clock = { 'now': function () { return +(new Date); } };
-    }
-
-    // The loop is broken into a series of continuations to make sure that we
-    // don't make the browser unresponsive when rewriting a large page.
-    var k = 0;
-    var prettyPrintingJob;
-
-    var langExtensionRe = /\blang(?:uage)?-([\w.]+)(?!\S)/;
-    var prettyPrintRe = /\bprettyprint\b/;
-
-    function doWork() {
-      var endTime = (window['PR_SHOULD_USE_CONTINUATION'] ?
-                     clock['now']() + 250 /* ms */ :
-                     Infinity);
-      for (; k < elements.length && clock['now']() < endTime; k++) {
-        var cs = elements[k];
-        var className = cs.className;
-        if (className.indexOf('prettyprint') >= 0) {
-          // If the classes includes a language extensions, use it.
-          // Language extensions can be specified like
-          //     <pre class="prettyprint lang-cpp">
-          // the language extension "cpp" is used to find a language handler as
-          // passed to PR.registerLangHandler.
-          // HTML5 recommends that a language be specified using "language-"
-          // as the prefix instead.  Google Code Prettify supports both.
-          // http://dev.w3.org/html5/spec-author-view/the-code-element.html
-          var langExtension = className.match(langExtensionRe);
-          // Support <pre class="prettyprint"><code class="language-c">
-          var wrapper;
-          if (!langExtension && (wrapper = childContentWrapper(cs))
-              && "CODE" === wrapper.tagName) {
-            langExtension = wrapper.className.match(langExtensionRe);
-          }
-
-          if (langExtension) {
-            langExtension = langExtension[1];
-          }
-
-          // make sure this is not nested in an already prettified element
-          var nested = false;
-          for (var p = cs.parentNode; p; p = p.parentNode) {
-            if ((p.tagName === 'pre' || p.tagName === 'code' ||
-                 p.tagName === 'xmp') &&
-                p.className && p.className.indexOf('prettyprint') >= 0) {
-              nested = true;
-              break;
-            }
-          }
-          if (!nested) {
-            // Look for a class like linenums or linenums:<n> where <n> is the
-            // 1-indexed number of the first line.
-            var lineNums = cs.className.match(/\blinenums\b(?::(\d+))?/);
-            lineNums = lineNums
-                  ? lineNums[1] && lineNums[1].length ? +lineNums[1] : true
-                  : false;
-            if (lineNums) { numberLines(cs, lineNums); }
-
-            // do the pretty printing
-            prettyPrintingJob = {
-              langExtension: langExtension,
-              sourceNode: cs,
-              numberLines: lineNums
-            };
-            applyDecorator(prettyPrintingJob);
-          }
-        }
-      }
-      if (k < elements.length) {
-        // finish up in a continuation
-        setTimeout(doWork, 250);
-      } else if (opt_whenDone) {
-        opt_whenDone();
-      }
-    }
-
-    doWork();
-  }
-
-   /**
-    * Find all the {@code <pre>} and {@code <code>} tags in the DOM with
-    * {@code class=prettyprint} and prettify them.
-    *
-    * @param {Function?} opt_whenDone if specified, called when the last entry
-    *     has been finished.
-    */
-  window['prettyPrintOne'] = prettyPrintOne;
-   /**
-    * Pretty print a chunk of code.
-    *
-    * @param {string} sourceCodeHtml code as html
-    * @return {string} code as html, but prettier
-    */
-  window['prettyPrint'] = prettyPrint;
-   /**
-    * Contains functions for creating and registering new language handlers.
-    * @type {Object}
-    */
-  window['PR'] = {
-        'createSimpleLexer': createSimpleLexer,
-        'registerLangHandler': registerLangHandler,
-        'sourceDecorator': sourceDecorator,
-        'PR_ATTRIB_NAME': PR_ATTRIB_NAME,
-        'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,
-        'PR_COMMENT': PR_COMMENT,
-        'PR_DECLARATION': PR_DECLARATION,
-        'PR_KEYWORD': PR_KEYWORD,
-        'PR_LITERAL': PR_LITERAL,
-        'PR_NOCODE': PR_NOCODE,
-        'PR_PLAIN': PR_PLAIN,
-        'PR_PUNCTUATION': PR_PUNCTUATION,
-        'PR_SOURCE': PR_SOURCE,
-        'PR_STRING': PR_STRING,
-        'PR_TAG': PR_TAG,
-        'PR_TYPE': PR_TYPE
-      };
-})();

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/lib/underscore-min.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/lib/underscore-min.js b/deleted/archive/js/lib/underscore-min.js
deleted file mode 100644
index ad3a39a..0000000
--- a/deleted/archive/js/lib/underscore-min.js
+++ /dev/null
@@ -1,5 +0,0 @@
-//     Underscore.js 1.4.2
-//     http://underscorejs.org
-//     (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
-//     Underscore may be freely distributed under the MIT license.
-(function(){var e=this,t=e._,n={},r=Array.prototype,i=Object.prototype,s=Function.prototype,o=r.push,u=r.slice,a=r.concat,f=r.unshift,l=i.toString,c=i.hasOwnProperty,h=r.forEach,p=r.map,d=r.reduce,v=r.reduceRight,m=r.filter,g=r.every,y=r.some,b=r.indexOf,w=r.lastIndexOf,E=Array.isArray,S=Object.keys,x=s.bind,T=function(e){if(e instanceof T)return e;if(!(this instanceof T))return new T(e);this._wrapped=e};typeof exports!="undefined"?(typeof module!="undefined"&&module.exports&&(exports=module.exports=T),exports._=T):e._=T,T.VERSION="1.4.2";var N=T.each=T.forEach=function(e,t,r){if(e==null)return;if(h&&e.forEach===h)e.forEach(t,r);else if(e.length===+e.length){for(var i=0,s=e.length;i<s;i++)if(t.call(r,e[i],i,e)===n)return}else for(var o in e)if(T.has(e,o)&&t.call(r,e[o],o,e)===n)return};T.map=T.collect=function(e,t,n){var r=[];return e==null?r:p&&e.map===p?e.map(t,n):(N(e,function(e,i,s){r[r.length]=t.call(n,e,i,s)}),r)},T.reduce=T.foldl=T.inject=function(e,t,n,r){var i=arguments.len
 gth>2;e==null&&(e=[]);if(d&&e.reduce===d)return r&&(t=T.bind(t,r)),i?e.reduce(t,n):e.reduce(t);N(e,function(e,s,o){i?n=t.call(r,n,e,s,o):(n=e,i=!0)});if(!i)throw new TypeError("Reduce of empty array with no initial value");return n},T.reduceRight=T.foldr=function(e,t,n,r){var i=arguments.length>2;e==null&&(e=[]);if(v&&e.reduceRight===v)return r&&(t=T.bind(t,r)),arguments.length>2?e.reduceRight(t,n):e.reduceRight(t);var s=e.length;if(s!==+s){var o=T.keys(e);s=o.length}N(e,function(u,a,f){a=o?o[--s]:--s,i?n=t.call(r,n,e[a],a,f):(n=e[a],i=!0)});if(!i)throw new TypeError("Reduce of empty array with no initial value");return n},T.find=T.detect=function(e,t,n){var r;return C(e,function(e,i,s){if(t.call(n,e,i,s))return r=e,!0}),r},T.filter=T.select=function(e,t,n){var r=[];return e==null?r:m&&e.filter===m?e.filter(t,n):(N(e,function(e,i,s){t.call(n,e,i,s)&&(r[r.length]=e)}),r)},T.reject=function(e,t,n){var r=[];return e==null?r:(N(e,function(e,i,s){t.call(n,e,i,s)||(r[r.length]=e)}),r)},T.
 every=T.all=function(e,t,r){t||(t=T.identity);var i=!0;return e==null?i:g&&e.every===g?e.every(t,r):(N(e,function(e,s,o){if(!(i=i&&t.call(r,e,s,o)))return n}),!!i)};var C=T.some=T.any=function(e,t,r){t||(t=T.identity);var i=!1;return e==null?i:y&&e.some===y?e.some(t,r):(N(e,function(e,s,o){if(i||(i=t.call(r,e,s,o)))return n}),!!i)};T.contains=T.include=function(e,t){var n=!1;return e==null?n:b&&e.indexOf===b?e.indexOf(t)!=-1:(n=C(e,function(e){return e===t}),n)},T.invoke=function(e,t){var n=u.call(arguments,2);return T.map(e,function(e){return(T.isFunction(t)?t:e[t]).apply(e,n)})},T.pluck=function(e,t){return T.map(e,function(e){return e[t]})},T.where=function(e,t){return T.isEmpty(t)?[]:T.filter(e,function(e){for(var n in t)if(t[n]!==e[n])return!1;return!0})},T.max=function(e,t,n){if(!t&&T.isArray(e)&&e[0]===+e[0]&&e.length<65535)return Math.max.apply(Math,e);if(!t&&T.isEmpty(e))return-Infinity;var r={computed:-Infinity};return N(e,function(e,i,s){var o=t?t.call(n,e,i,s):e;o>=r.com
 puted&&(r={value:e,computed:o})}),r.value},T.min=function(e,t,n){if(!t&&T.isArray(e)&&e[0]===+e[0]&&e.length<65535)return Math.min.apply(Math,e);if(!t&&T.isEmpty(e))return Infinity;var r={computed:Infinity};return N(e,function(e,i,s){var o=t?t.call(n,e,i,s):e;o<r.computed&&(r={value:e,computed:o})}),r.value},T.shuffle=function(e){var t,n=0,r=[];return N(e,function(e){t=T.random(n++),r[n-1]=r[t],r[t]=e}),r};var k=function(e){return T.isFunction(e)?e:function(t){return t[e]}};T.sortBy=function(e,t,n){var r=k(t);return T.pluck(T.map(e,function(e,t,i){return{value:e,index:t,criteria:r.call(n,e,t,i)}}).sort(function(e,t){var n=e.criteria,r=t.criteria;if(n!==r){if(n>r||n===void 0)return 1;if(n<r||r===void 0)return-1}return e.index<t.index?-1:1}),"value")};var L=function(e,t,n,r){var i={},s=k(t);return N(e,function(t,o){var u=s.call(n,t,o,e);r(i,u,t)}),i};T.groupBy=function(e,t,n){return L(e,t,n,function(e,t,n){(T.has(e,t)?e[t]:e[t]=[]).push(n)})},T.countBy=function(e,t,n){return L(e,t,n,f
 unction(e,t,n){T.has(e,t)||(e[t]=0),e[t]++})},T.sortedIndex=function(e,t,n,r){n=n==null?T.identity:k(n);var i=n.call(r,t),s=0,o=e.length;while(s<o){var u=s+o>>>1;n.call(r,e[u])<i?s=u+1:o=u}return s},T.toArray=function(e){return e?e.length===+e.length?u.call(e):T.values(e):[]},T.size=function(e){return e.length===+e.length?e.length:T.keys(e).length},T.first=T.head=T.take=function(e,t,n){return t!=null&&!n?u.call(e,0,t):e[0]},T.initial=function(e,t,n){return u.call(e,0,e.length-(t==null||n?1:t))},T.last=function(e,t,n){return t!=null&&!n?u.call(e,Math.max(e.length-t,0)):e[e.length-1]},T.rest=T.tail=T.drop=function(e,t,n){return u.call(e,t==null||n?1:t)},T.compact=function(e){return T.filter(e,function(e){return!!e})};var A=function(e,t,n){return N(e,function(e){T.isArray(e)?t?o.apply(n,e):A(e,t,n):n.push(e)}),n};T.flatten=function(e,t){return A(e,t,[])},T.without=function(e){return T.difference(e,u.call(arguments,1))},T.uniq=T.unique=function(e,t,n,r){var i=n?T.map(e,n,r):e,s=[],o=[];
 return N(i,function(n,r){if(t?!r||o[o.length-1]!==n:!T.contains(o,n))o.push(n),s.push(e[r])}),s},T.union=function(){return T.uniq(a.apply(r,arguments))},T.intersection=function(e){var t=u.call(arguments,1);return T.filter(T.uniq(e),function(e){return T.every(t,function(t){return T.indexOf(t,e)>=0})})},T.difference=function(e){var t=a.apply(r,u.call(arguments,1));return T.filter(e,function(e){return!T.contains(t,e)})},T.zip=function(){var e=u.call(arguments),t=T.max(T.pluck(e,"length")),n=new Array(t);for(var r=0;r<t;r++)n[r]=T.pluck(e,""+r);return n},T.object=function(e,t){var n={};for(var r=0,i=e.length;r<i;r++)t?n[e[r]]=t[r]:n[e[r][0]]=e[r][1];return n},T.indexOf=function(e,t,n){if(e==null)return-1;var r=0,i=e.length;if(n){if(typeof n!="number")return r=T.sortedIndex(e,t),e[r]===t?r:-1;r=n<0?Math.max(0,i+n):n}if(b&&e.indexOf===b)return e.indexOf(t,n);for(;r<i;r++)if(e[r]===t)return r;return-1},T.lastIndexOf=function(e,t,n){if(e==null)return-1;var r=n!=null;if(w&&e.lastIndexOf===w)
 return r?e.lastIndexOf(t,n):e.lastIndexOf(t);var i=r?n:e.length;while(i--)if(e[i]===t)return i;return-1},T.range=function(e,t,n){arguments.length<=1&&(t=e||0,e=0),n=arguments[2]||1;var r=Math.max(Math.ceil((t-e)/n),0),i=0,s=new Array(r);while(i<r)s[i++]=e,e+=n;return s};var O=function(){};T.bind=function(t,n){var r,i;if(t.bind===x&&x)return x.apply(t,u.call(arguments,1));if(!T.isFunction(t))throw new TypeError;return i=u.call(arguments,2),r=function(){if(this instanceof r){O.prototype=t.prototype;var e=new O,s=t.apply(e,i.concat(u.call(arguments)));return Object(s)===s?s:e}return t.apply(n,i.concat(u.call(arguments)))}},T.bindAll=function(e){var t=u.call(arguments,1);return t.length==0&&(t=T.functions(e)),N(t,function(t){e[t]=T.bind(e[t],e)}),e},T.memoize=function(e,t){var n={};return t||(t=T.identity),function(){var r=t.apply(this,arguments);return T.has(n,r)?n[r]:n[r]=e.apply(this,arguments)}},T.delay=function(e,t){var n=u.call(arguments,2);return setTimeout(function(){return e.ap
 ply(null,n)},t)},T.defer=function(e){return T.delay.apply(T,[e,1].concat(u.call(arguments,1)))},T.throttle=function(e,t){var n,r,i,s,o,u,a=T.debounce(function(){o=s=!1},t);return function(){n=this,r=arguments;var f=function(){i=null,o&&(u=e.apply(n,r)),a()};return i||(i=setTimeout(f,t)),s?o=!0:(s=!0,u=e.apply(n,r)),a(),u}},T.debounce=function(e,t,n){var r,i;return function(){var s=this,o=arguments,u=function(){r=null,n||(i=e.apply(s,o))},a=n&&!r;return clearTimeout(r),r=setTimeout(u,t),a&&(i=e.apply(s,o)),i}},T.once=function(e){var t=!1,n;return function(){return t?n:(t=!0,n=e.apply(this,arguments),e=null,n)}},T.wrap=function(e,t){return function(){var n=[e];return o.apply(n,arguments),t.apply(this,n)}},T.compose=function(){var e=arguments;return function(){var t=arguments;for(var n=e.length-1;n>=0;n--)t=[e[n].apply(this,t)];return t[0]}},T.after=function(e,t){return e<=0?t():function(){if(--e<1)return t.apply(this,arguments)}},T.keys=S||function(e){if(e!==Object(e))throw new TypeEr
 ror("Invalid object");var t=[];for(var n in e)T.has(e,n)&&(t[t.length]=n);return t},T.values=function(e){var t=[];for(var n in e)T.has(e,n)&&t.push(e[n]);return t},T.pairs=function(e){var t=[];for(var n in e)T.has(e,n)&&t.push([n,e[n]]);return t},T.invert=function(e){var t={};for(var n in e)T.has(e,n)&&(t[e[n]]=n);return t},T.functions=T.methods=function(e){var t=[];for(var n in e)T.isFunction(e[n])&&t.push(n);return t.sort()},T.extend=function(e){return N(u.call(arguments,1),function(t){for(var n in t)e[n]=t[n]}),e},T.pick=function(e){var t={},n=a.apply(r,u.call(arguments,1));return N(n,function(n){n in e&&(t[n]=e[n])}),t},T.omit=function(e){var t={},n=a.apply(r,u.call(arguments,1));for(var i in e)T.contains(n,i)||(t[i]=e[i]);return t},T.defaults=function(e){return N(u.call(arguments,1),function(t){for(var n in t)e[n]==null&&(e[n]=t[n])}),e},T.clone=function(e){return T.isObject(e)?T.isArray(e)?e.slice():T.extend({},e):e},T.tap=function(e,t){return t(e),e};var M=function(e,t,n,r){i
 f(e===t)return e!==0||1/e==1/t;if(e==null||t==null)return e===t;e instanceof T&&(e=e._wrapped),t instanceof T&&(t=t._wrapped);var i=l.call(e);if(i!=l.call(t))return!1;switch(i){case"[object String]":return e==String(t);case"[object Number]":return e!=+e?t!=+t:e==0?1/e==1/t:e==+t;case"[object Date]":case"[object Boolean]":return+e==+t;case"[object RegExp]":return e.source==t.source&&e.global==t.global&&e.multiline==t.multiline&&e.ignoreCase==t.ignoreCase}if(typeof e!="object"||typeof t!="object")return!1;var s=n.length;while(s--)if(n[s]==e)return r[s]==t;n.push(e),r.push(t);var o=0,u=!0;if(i=="[object Array]"){o=e.length,u=o==t.length;if(u)while(o--)if(!(u=M(e[o],t[o],n,r)))break}else{var a=e.constructor,f=t.constructor;if(a!==f&&!(T.isFunction(a)&&a instanceof a&&T.isFunction(f)&&f instanceof f))return!1;for(var c in e)if(T.has(e,c)){o++;if(!(u=T.has(t,c)&&M(e[c],t[c],n,r)))break}if(u){for(c in t)if(T.has(t,c)&&!(o--))break;u=!o}}return n.pop(),r.pop(),u};T.isEqual=function(e,t){ret
 urn M(e,t,[],[])},T.isEmpty=function(e){if(e==null)return!0;if(T.isArray(e)||T.isString(e))return e.length===0;for(var t in e)if(T.has(e,t))return!1;return!0},T.isElement=function(e){return!!e&&e.nodeType===1},T.isArray=E||function(e){return l.call(e)=="[object Array]"},T.isObject=function(e){return e===Object(e)},N(["Arguments","Function","String","Number","Date","RegExp"],function(e){T["is"+e]=function(t){return l.call(t)=="[object "+e+"]"}}),T.isArguments(arguments)||(T.isArguments=function(e){return!!e&&!!T.has(e,"callee")}),typeof /./!="function"&&(T.isFunction=function(e){return typeof e=="function"}),T.isFinite=function(e){return T.isNumber(e)&&isFinite(e)},T.isNaN=function(e){return T.isNumber(e)&&e!=+e},T.isBoolean=function(e){return e===!0||e===!1||l.call(e)=="[object Boolean]"},T.isNull=function(e){return e===null},T.isUndefined=function(e){return e===void 0},T.has=function(e,t){return c.call(e,t)},T.noConflict=function(){return e._=t,this},T.identity=function(e){return e
 },T.times=function(e,t,n){for(var r=0;r<e;r++)t.call(n,r)},T.random=function(e,t){return t==null&&(t=e,e=0),e+(0|Math.random()*(t-e+1))};var _={escape:{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"}};_.unescape=T.invert(_.escape);var D={escape:new RegExp("["+T.keys(_.escape).join("")+"]","g"),unescape:new RegExp("("+T.keys(_.unescape).join("|")+")","g")};T.each(["escape","unescape"],function(e){T[e]=function(t){return t==null?"":(""+t).replace(D[e],function(t){return _[e][t]})}}),T.result=function(e,t){if(e==null)return null;var n=e[t];return T.isFunction(n)?n.call(e):n},T.mixin=function(e){N(T.functions(e),function(t){var n=T[t]=e[t];T.prototype[t]=function(){var e=[this._wrapped];return o.apply(e,arguments),F.call(this,n.apply(T,e))}})};var P=0;T.uniqueId=function(e){var t=P++;return e?e+t:t},T.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var H=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n","	":"t"
 ,"\u2028":"u2028","\u2029":"u2029"},j=/\\|'|\r|\n|\t|\u2028|\u2029/g;T.template=function(e,t,n){n=T.defaults({},n,T.templateSettings);var r=new RegExp([(n.escape||H).source,(n.interpolate||H).source,(n.evaluate||H).source].join("|")+"|$","g"),i=0,s="__p+='";e.replace(r,function(t,n,r,o,u){s+=e.slice(i,u).replace(j,function(e){return"\\"+B[e]}),s+=n?"'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":r?"'+\n((__t=("+r+"))==null?'':__t)+\n'":o?"';\n"+o+"\n__p+='":"",i=u+t.length}),s+="';\n",n.variable||(s="with(obj||{}){\n"+s+"}\n"),s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{var o=new Function(n.variable||"obj","_",s)}catch(u){throw u.source=s,u}if(t)return o(t,T);var a=function(e){return o.call(this,e,T)};return a.source="function("+(n.variable||"obj")+"){\n"+s+"}",a},T.chain=function(e){return T(e).chain()};var F=function(e){return this._chain?T(e).chain():e};T.mixin(T),N(["pop","push","reverse","shift","sort","sp
 lice","unshift"],function(e){var t=r[e];T.prototype[e]=function(){var n=this._wrapped;return t.apply(n,arguments),(e=="shift"||e=="splice")&&n.length===0&&delete n[0],F.call(this,n)}}),N(["concat","join","slice"],function(e){var t=r[e];T.prototype[e]=function(){return F.call(this,t.apply(this._wrapped,arguments))}}),T.extend(T.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}).call(this);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/spec/client-tests.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/spec/client-tests.js b/deleted/archive/js/spec/client-tests.js
deleted file mode 100644
index 2d7e060..0000000
--- a/deleted/archive/js/spec/client-tests.js
+++ /dev/null
@@ -1,159 +0,0 @@
-$(document).ready(function () {
-
-  initCore();
-
- });
-
-function defaultSuccess(data, status, xhr) {
-  start();
-  if (data) {
-    console.log(data);
-  } else {
-    console.log('no data');
-  }
-  // console.log(xhr);
-  ok(true, "yahoo!!!");
-}
-
-function defaultError(xhr, status, error) {
-  start();
-  console.log('boo!');
-  throw new Error("error!");
-}
-
-function initCore() {
-  window.query_params = getQueryParams();
-  parseParams();
-  prepareLocalStorage();
-  usergrid.client.Init();
-}
-
-function selectFirstApplication() {
-  for (var i in usergrid.session.currentOrganization.applications) {
-    usergrid.session.currentApplicationId = usergrid.session.currentOrganization.applications[i];
-    localStorage.setItem('currentApplicationId', usergrid.session.currentApplicationId);
-    console.log("current application: " + usergrid.session.currentApplicationId);
-    break;
-  };
-}
-
-function selectAnApplication(id) {
-  usergrid.session.currentApplicationId = id;
-  localStorage.setItem = usergrid.session.currentApplicationId;
-}
-
-QUnit.config.reorder = false;
-
-asyncTest("logging-in with loginAdmin(credentials)", function() {
-  expect(1);
-  usergrid.client.loginAdmin(
-    "fjendle@apigee.com",
-    "mafalda1",
-    defaultSuccess,
-    defaultError
-  );
-});
-
-asyncTest("logging-in autoLogin", function() {
-  expect(1);
-  usergrid.client.autoLogin(
-    defaultSuccess,
-    defaultError
-  );
-});
-
-asyncTest("getting applications", function() {
-  expect(1);
-  usergrid.client.requestApplications(
-    function() {
-      // selectFirstApplication();
-      selectAnApplication("f853f227-7dbc-11e1-8337-1231380dea5f");
-      defaultSuccess();
-    },
-    defaultError
-  );
-});
-
-asyncTest("getting users with requestUsers", function() {
-  expect(1);
-  usergrid.client.requestUsers(
-    usergrid.session.currentApplicationId,
-    defaultSuccess,
-    defaultError
-  );
-});
-
-asyncTest("getting users with queryUsers", function() {
-  expect(1);
-  usergrid.client.queryUsers(
-    defaultSuccess,
-    defaultError
-  );
-});
-
-d = new Date;
-d = MD5(d.toString()).substring(0,7);
-
-asyncTest("creating user", function() {
-  expect(1);
-  usergrid.client.createUser(
-    usergrid.session.currentApplicationId,
-    {
-      email: d + "@oarsy8.xom",
-      name: d,
-      password: "osautl4b",
-      username: d
-    },
-    defaultSuccess,
-    defaultError
-  )
-});
-
-// asyncTest("deleting a user", function() {
-//   expect(1);
-//   usergrid.client.deleteUser(
-//     usergrid.session.currentApplicationId,
-//     null, /* select one */
-//     defaultSuccess,
-//     defaultError
-//   )
-// });
-
-asyncTest("getting fabianorg/otra/group1/roles", function() {
-  expect(1);
-  // group is "group1"
-  usergrid.client.requestGroupRoles(
-    usergrid.session.currentApplicationId, "b713225b-88e8-11e1-8063-1231380dea5f", defaultSuccess, defaultError
-  )
-});
-
-asyncTest("adding group1 to role Guest", function() {
-  // group is still "group1", role is Guest: bd397ea1-a71c-3249-8a4c-62fd53c78ce7
-  expect(1);
-  usergrid.client.addGroupToRole(
-    usergrid.session.currentApplicationId, "bd397ea1-a71c-3249-8a4c-62fd53c78ce7", "b713225b-88e8-11e1-8063-1231380dea5f" , defaultSuccess, defaultError
-  )
-});
-
-asyncTest("getting fabianorg/roles/guest/groups", function() {
-  expect(1);
-  // group is "group1"
-  usergrid.client.requestGroupRoles(
-    usergrid.session.currentApplicationId, "bd397ea1-a71c-3249-8a4c-62fd53c78ce7", defaultSuccess, defaultError
-  )
-});
-
-asyncTest("removing group1 from Guest Role", function() {
-  expect(1);
-  usergrid.client.removeGroupFromRole(
-    usergrid.session.currentApplicationId, "bd397ea1-a71c-3249-8a4c-62fd53c78ce7", "b713225b-88e8-11e1-8063-1231380dea5f", defaultSuccess, defaultError
-  )
-});
-
-// asyncTest("getting fabianorg/roles/guest/groups", function() {
-//   expect(1);
-//   // group is "group1"
-//   usergrid.client.requestGroupRoles(
-//     usergrid.session.currentApplicationId, "bd397ea1-a71c-3249-8a4c-62fd53c78ce7", defaultSuccess, defaultError
-//   )
-// });

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/spec/index.html
----------------------------------------------------------------------
diff --git a/deleted/archive/js/spec/index.html b/deleted/archive/js/spec/index.html
deleted file mode 100644
index 74e26a7..0000000
--- a/deleted/archive/js/spec/index.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta charset="utf-8" />
-    <title>QUnit basic example</title>
-    <link rel="stylesheet" href="/js/spec/qunit-git.css" />
-  </head>
-  <body>
-    <div id="qunit"></div>
-    <div id="qunit-fixture"></div>
-
-    <script type="text/javascript" src="/js/spec/qunit-git.js"></script>    
-    <script type="text/javascript" src="/js/lib/jquery-1.7.2.min.js"></script>
-    <script type="text/javascript" src="/js/lib/MD5.min.js"></script>
-    <script type="text/javascript" src="/js/app/helpers.js"></script>
-    <script type="text/javascript" src="/js/app/session.js"></script>
-    <script type="text/javascript" src="/js/app/client.js"></script>
-    <script type="text/javascript" src="/js/spec/client-tests.js"></script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/spec/qunit-git.css
----------------------------------------------------------------------
diff --git a/deleted/archive/js/spec/qunit-git.css b/deleted/archive/js/spec/qunit-git.css
deleted file mode 100644
index de88479..0000000
--- a/deleted/archive/js/spec/qunit-git.css
+++ /dev/null
@@ -1,238 +0,0 @@
-/**
- * QUnit v1.9.0pre - A JavaScript Unit Testing Framework
- *
- * http://docs.jquery.com/QUnit
- *
- * Copyright (c) 2012 John Resig, Jörn Zaefferer
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * or GPL (GPL-LICENSE.txt) licenses.
- * Pulled Live from Git Wed Jun 20 16:15:01 UTC 2012
- * Last Commit: 1c0af4e943400de73bc36310d3db42a5217da215
- */
-
-/** Font Family and Sizes */
-
-#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
-	font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
-}
-
-#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
-#qunit-tests { font-size: smaller; }
-
-
-/** Resets */
-
-#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {
-	margin: 0;
-	padding: 0;
-}
-
-
-/** Header */
-
-#qunit-header {
-	padding: 0.5em 0 0.5em 1em;
-
-	color: #8699a4;
-	background-color: #0d3349;
-
-	font-size: 1.5em;
-	line-height: 1em;
-	font-weight: normal;
-
-	border-radius: 15px 15px 0 0;
-	-moz-border-radius: 15px 15px 0 0;
-	-webkit-border-top-right-radius: 15px;
-	-webkit-border-top-left-radius: 15px;
-}
-
-#qunit-header a {
-	text-decoration: none;
-	color: #c2ccd1;
-}
-
-#qunit-header a:hover,
-#qunit-header a:focus {
-	color: #fff;
-}
-
-#qunit-header label {
-	display: inline-block;
-	padding-left: 0.5em;
-}
-
-#qunit-banner {
-	height: 5px;
-}
-
-#qunit-testrunner-toolbar {
-	padding: 0.5em 0 0.5em 2em;
-	color: #5E740B;
-	background-color: #eee;
-}
-
-#qunit-userAgent {
-	padding: 0.5em 0 0.5em 2.5em;
-	background-color: #2b81af;
-	color: #fff;
-	text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
-}
-
-
-/** Tests: Pass/Fail */
-
-#qunit-tests {
-	list-style-position: inside;
-}
-
-#qunit-tests li {
-	padding: 0.4em 0.5em 0.4em 2.5em;
-	border-bottom: 1px solid #fff;
-	list-style-position: inside;
-}
-
-#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running  {
-	display: none;
-}
-
-#qunit-tests li strong {
-	cursor: pointer;
-}
-
-#qunit-tests li a {
-	padding: 0.5em;
-	color: #c2ccd1;
-	text-decoration: none;
-}
-#qunit-tests li a:hover,
-#qunit-tests li a:focus {
-	color: #000;
-}
-
-#qunit-tests ol {
-	margin-top: 0.5em;
-	padding: 0.5em;
-
-	background-color: #fff;
-
-	border-radius: 15px;
-	-moz-border-radius: 15px;
-	-webkit-border-radius: 15px;
-
-	box-shadow: inset 0px 2px 13px #999;
-	-moz-box-shadow: inset 0px 2px 13px #999;
-	-webkit-box-shadow: inset 0px 2px 13px #999;
-}
-
-#qunit-tests table {
-	border-collapse: collapse;
-	margin-top: .2em;
-}
-
-#qunit-tests th {
-	text-align: right;
-	vertical-align: top;
-	padding: 0 .5em 0 0;
-}
-
-#qunit-tests td {
-	vertical-align: top;
-}
-
-#qunit-tests pre {
-	margin: 0;
-	white-space: pre-wrap;
-	word-wrap: break-word;
-}
-
-#qunit-tests del {
-	background-color: #e0f2be;
-	color: #374e0c;
-	text-decoration: none;
-}
-
-#qunit-tests ins {
-	background-color: #ffcaca;
-	color: #500;
-	text-decoration: none;
-}
-
-/*** Test Counts */
-
-#qunit-tests b.counts                       { color: black; }
-#qunit-tests b.passed                       { color: #5E740B; }
-#qunit-tests b.failed                       { color: #710909; }
-
-#qunit-tests li li {
-	margin: 0.5em;
-	padding: 0.4em 0.5em 0.4em 0.5em;
-	background-color: #fff;
-	border-bottom: none;
-	list-style-position: inside;
-}
-
-/*** Passing Styles */
-
-#qunit-tests li li.pass {
-	color: #5E740B;
-	background-color: #fff;
-	border-left: 26px solid #C6E746;
-}
-
-#qunit-tests .pass                          { color: #528CE0; background-color: #D2E0E6; }
-#qunit-tests .pass .test-name               { color: #366097; }
-
-#qunit-tests .pass .test-actual,
-#qunit-tests .pass .test-expected           { color: #999999; }
-
-#qunit-banner.qunit-pass                    { background-color: #C6E746; }
-
-/*** Failing Styles */
-
-#qunit-tests li li.fail {
-	color: #710909;
-	background-color: #fff;
-	border-left: 26px solid #EE5757;
-	white-space: pre;
-}
-
-#qunit-tests > li:last-child {
-	border-radius: 0 0 15px 15px;
-	-moz-border-radius: 0 0 15px 15px;
-	-webkit-border-bottom-right-radius: 15px;
-	-webkit-border-bottom-left-radius: 15px;
-}
-
-#qunit-tests .fail                          { color: #000000; background-color: #EE5757; }
-#qunit-tests .fail .test-name,
-#qunit-tests .fail .module-name             { color: #000000; }
-
-#qunit-tests .fail .test-actual             { color: #EE5757; }
-#qunit-tests .fail .test-expected           { color: green;   }
-
-#qunit-banner.qunit-fail                    { background-color: #EE5757; }
-
-
-/** Result */
-
-#qunit-testresult {
-	padding: 0.5em 0.5em 0.5em 2.5em;
-
-	color: #2b81af;
-	background-color: #D2E0E6;
-
-	border-bottom: 1px solid white;
-}
-#qunit-testresult .module-name {
-	font-weight: bold;
-}
-
-/** Fixture */
-
-#qunit-fixture {
-	position: absolute;
-	top: -10000px;
-	left: -10000px;
-	width: 1000px;
-	height: 1000px;
-}


[38/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/app/usergrid.appSDK.orig.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/app/usergrid.appSDK.orig.js b/deleted/archive/js/app/usergrid.appSDK.orig.js
deleted file mode 100644
index 4e80c64..0000000
--- a/deleted/archive/js/app/usergrid.appSDK.orig.js
+++ /dev/null
@@ -1,2070 +0,0 @@
-/**
- *  App SDK is a collection of classes designed to make working with
- *  the Appigee App Services API as easy as possible.
- *  Learn more at http://apigee.com/docs
- *
- *   Copyright 2012 Apigee Corporation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-//define the console.log for IE
-window.console = window.console || {};
-window.console.log = window.console.log || function() {};
-
-//Usergrid namespace encapsulates this SDK
-window.Usergrid = window.Usergrid || {};
-Usergrid = Usergrid || {};
-Usergrid.SDK_VERSION = '0.9.9';
-
-/**
- *  Usergrid.Query is a class for holding all query information and paging state
- *
- *  @class Query
- *  @author Rod Simpson (rod@apigee.com)
- */
-
-(function () {
-
-  /**
-   *  @constructor
-   *  @param {string} method
-   *  @param {string} path
-   *  @param {object} jsonObj
-   *  @param {object} paramsObj
-   *  @param {function} successCallback
-   *  @param {function} failureCallback
-   */
-  Usergrid.Query = function(method, resource, jsonObj, paramsObj, successCallback, failureCallback) {
-    //query vars
-    this._method = method;
-    this._resource = resource;
-    this._jsonObj = jsonObj;
-    this._paramsObj = paramsObj;
-    this._successCallback = successCallback;
-    this._failureCallback = failureCallback;
-
-    //curl command - will be populated by runQuery function
-    this._curl = '';
-    this._token = false;
-
-    //paging vars
-    this._cursor = null;
-    this._next = null;
-    this._previous = [];
-    this._start = 0;
-    this._end = 0;
-  };
-
-  Usergrid.Query.prototype = {
-     setQueryStartTime: function() {
-       this._start = new Date().getTime();
-     },
-
-     setQueryEndTime: function() {
-       this._end = new Date().getTime();
-     },
-
-     getQueryTotalTime: function() {
-       var seconds = 0;
-       var time = this._end - this._start;
-       try {
-          seconds = ((time/10) / 60).toFixed(2);
-       } catch(e){ return 0; }
-       return this.getMethod() + " " + this.getResource() + " - " + seconds + " seconds";
-     },
-    /**
-     *  A method to set all settable parameters of the Query at one time
-     *
-     *  @public
-     *  @method validateUsername
-     *  @param {string} method
-     *  @param {string} path
-     *  @param {object} jsonObj
-     *  @param {object} paramsObj
-     *  @param {function} successCallback
-     *  @param {function} failureCallback
-     *  @return none
-     */
-    setAllQueryParams: function(method, resource, jsonObj, paramsObj, successCallback, failureCallback) {
-      this._method = method;
-      this._resource = resource;
-      this._jsonObj = jsonObj;
-      this._paramsObj = paramsObj;
-      this._successCallback = successCallback;
-      this._failureCallback = failureCallback;
-    },
-
-    /**
-     *  A method to reset all the parameters in one call
-     *
-     *  @public
-     *  @return none
-     */
-    clearAll: function() {
-      this._method = null;
-      this._resource = null;
-      this._jsonObj = {};
-      this._paramsObj = {};
-      this._successCallback = null;
-      this._failureCallback = null;
-    },
-    /**
-    * Returns the method
-    *
-    * @public
-    * @method getMethod
-    * @return {string} Returns method
-    */
-    getMethod: function() {
-      return this._method;
-    },
-
-    /**
-    * sets the method (POST, PUT, DELETE, GET)
-    *
-    * @public
-    * @method setMethod
-    * @return none
-    */
-    setMethod: function(method) {
-      this._method = method;
-    },
-
-    /**
-    * Returns the resource
-    *
-    * @public
-    * @method getResource
-    * @return {string} the resource
-    */
-    getResource: function() {
-      return this._resource;
-    },
-
-    /**
-    * sets the resource
-    *
-    * @public
-    * @method setResource
-    * @return none
-    */
-    setResource: function(resource) {
-      this._resource = resource;
-    },
-
-    /**
-    * Returns the json Object
-    *
-    * @public
-    * @method getJsonObj
-    * @return {object} Returns the json Object
-    */
-    getJsonObj: function() {
-      return this._jsonObj;
-    },
-
-    /**
-    * sets the json object
-    *
-    * @public
-    * @method setJsonObj
-    * @return none
-    */
-    setJsonObj: function(jsonObj) {
-      this._jsonObj = jsonObj;
-    },
-    /**
-    * Returns the Query Parameters object
-    *
-    * @public
-    * @method getQueryParams
-    * @return {object} Returns Query Parameters object
-    */
-    getQueryParams: function() {
-      return this._paramsObj;
-    },
-
-    /**
-    * sets the query parameter object
-    *
-    * @public
-    * @method setQueryParams
-    * @return none
-    */
-    setQueryParams: function(paramsObj) {
-      this._paramsObj = paramsObj;
-    },
-
-    /**
-    * Returns the success callback function
-    *
-    * @public
-    * @method getSuccessCallback
-    * @return {function} Returns the successCallback
-    */
-    getSuccessCallback: function() {
-      return this._successCallback;
-    },
-
-    /**
-    * sets the success callback function
-    *
-    * @public
-    * @method setSuccessCallback
-    * @return none
-    */
-    setSuccessCallback: function(successCallback) {
-      this._successCallback = successCallback;
-    },
-
-    /**
-    * Calls the success callback function
-    *
-    * @public
-    * @method callSuccessCallback
-    * @return {boolean} Returns true or false based on if there was a callback to call
-    */
-    callSuccessCallback: function(response) {
-      if (this._successCallback && typeof(this._successCallback ) === "function") {
-        this._successCallback(response);
-        return true;
-      } else {
-        return false;
-      }
-    },
-
-    /**
-    * Returns the failure callback function
-    *
-    * @public
-    * @method getFailureCallback
-    * @return {function} Returns the failureCallback
-    */
-    getFailureCallback: function() {
-      return this._failureCallback;
-    },
-
-    /**
-    * sets the failure callback function
-    *
-    * @public
-    * @method setFailureCallback
-    * @return none
-    */
-    setFailureCallback: function(failureCallback) {
-      this._failureCallback = failureCallback;
-    },
-
-    /**
-    * Calls the failure callback function
-    *
-    * @public
-    * @method callFailureCallback
-    * @return {boolean} Returns true or false based on if there was a callback to call
-    */
-    callFailureCallback: function(response) {
-      if (this._failureCallback && typeof(this._failureCallback) === "function") {
-        this._failureCallback(response);
-        return true;
-      } else {
-        return false;
-      }
-    },
-
-    /**
-    * Returns the curl call
-    *
-    * @public
-    * @method getCurl
-    * @return {function} Returns the curl call
-    */
-    getCurl: function() {
-      return this._curl;
-    },
-
-    /**
-    * sets the curl call
-    *
-    * @public
-    * @method setCurl
-    * @return none
-    */
-    setCurl: function(curl) {
-      this._curl = curl;
-    },
-
-    /**
-    * Returns the Token
-    *
-    * @public
-    * @method getToken
-    * @return {function} Returns the Token
-    */
-    getToken: function() {
-      return this._token;
-    },
-
-    /**
-    * Method to set
-    *
-    * @public
-    * @method setToken
-    * @return none
-    */
-    setToken: function(token) {
-      this._token = token;
-    },
-
-    /**
-    * Resets the paging pointer (back to original page)
-    *
-    * @public
-    * @method resetPaging
-    * @return none
-    */
-    resetPaging: function() {
-      this._previous = [];
-      this._next = null;
-      this._cursor = null;
-    },
-
-    /**
-    * Method to determine if there is a previous page of data
-    *
-    * @public
-    * @method hasPrevious
-    * @return {boolean} true or false based on if there is a previous page
-    */
-    hasPrevious: function() {
-      return (this._previous.length > 0);
-    },
-
-    /**
-    * Method to set the paging object to get the previous page of data
-    *
-    * @public
-    * @method getPrevious
-    * @return none
-    */
-    getPrevious: function() {
-      this._next=null; //clear out next so the comparison will find the next item
-      this._cursor = this._previous.pop();
-    },
-
-    /**
-    * Method to determine if there is a next page of data
-    *
-    * @public
-    * @method hasNext
-    * @return {boolean} true or false based on if there is a next page
-    */
-    hasNext: function(){
-      return (this._next);
-    },
-
-    /**
-    * Method to set the paging object to get the next page of data
-    *
-    * @public
-    * @method getNext
-    * @return none
-    */
-    getNext: function() {
-      this._previous.push(this._cursor);
-      this._cursor = this._next;
-    },
-
-    /**
-    * Method to save off the cursor just returned by the last API call
-    *
-    * @public
-    * @method saveCursor
-    * @return none
-    */
-    saveCursor: function(cursor) {
-      //if current cursor is different, grab it for next cursor
-      if (this._next !== cursor) {
-        this._next = cursor;
-      }
-    },
-
-    /**
-    * Method to determine if there is a next page of data
-    *
-    * @public
-    * @method getCursor
-    * @return {string} the current cursor
-    */
-    getCursor: function() {
-      return this._cursor;
-    }
-  };
-})(Usergrid);
-
-
-/**
- *  A class to Model a Usergrid Entity.
- *
- *  @class Entity
- *  @author Rod Simpson (rod@apigee.com)
- */
-(function () {
-  /**
-   *  Constructor for initializing an entity
-   *
-   *  @constructor
-   *  @param {string} collectionType - the type of collection to model
-   *  @param {uuid} uuid - (optional), the UUID of the collection if it is known
-   */
-  Usergrid.Entity = function(collectionType, uuid) {
-    this._collectionType = collectionType;
-    this._data = {};
-    this._uuid = uuid;
-  };
-
-  //inherit prototype from Query
-  Usergrid.Entity.prototype = new Usergrid.Query();
-
-  /**
-   *  gets the current Entity type
-   *
-   *  @method getCollectionType
-   *  @return {string} collection type
-   */
-  Usergrid.Entity.prototype.getCollectionType = function (){
-    return this._collectionType;
-  }
-
-  /**
-   *  sets the current Entity type
-   *
-   *  @method setCollectionType
-   *  @param {string} collectionType
-   *  @return none
-   */
-  Usergrid.Entity.prototype.setCollectionType = function (collectionType){
-    this._collectionType = collectionType;
-  }
-
-  /**
-   *  gets a specific field or the entire data object. If null or no argument
-   *  passed, will return all data, else, will return a specific field
-   *
-   *  @method get
-   *  @param {string} field
-   *  @return {string} || {object} data
-   */
-  Usergrid.Entity.prototype.get = function (field){
-    if (field) {
-      return this._data[field];
-    } else {
-      return this._data;
-    }
-  },
-
-  /**
-   *  adds a specific field or object to the Entity's data
-   *
-   *  @method set
-   *  @param {string} item || {object}
-   *  @param {string} value
-   *  @return none
-   */
-  Usergrid.Entity.prototype.set = function (item, value){
-    if (typeof item === 'object') {
-      for(field in item) {
-        this._data[field] = item[field];
-      }
-    } else if (typeof item === 'string') {
-      this._data[item] = value;
-    } else {
-      this._data = null;
-    }
-  }
-
-  /**
-   *  Saves the entity back to the database
-   *
-   *  @method save
-   *  @public
-   *  @param {function} successCallback
-   *  @param {function} errorCallback
-   *  @return none
-   */
-  Usergrid.Entity.prototype.save = function (successCallback, errorCallback){
-    var path = this.getCollectionType();
-    //TODO:  API will be changed soon to accomodate PUTs via name which create new entities
-    //       This function should be changed to PUT only at that time, and updated to use
-    //       either uuid or name
-    var method = 'POST';
-    if (this.get('uuid')) {
-      method = 'PUT';
-      if (Usergrid.validation.isUUID(this.get('uuid'))) {
-        path += "/" + this.get('uuid');
-      }
-    }
-
-    //if this is a user, update the password if it has been specified
-    var data = {};
-    if (path == 'users') {
-      data = this.get();
-      var pwdata = {};
-      //Note: we have a ticket in to change PUT calls to /users to accept the password change
-      //      once that is done, we will remove this call and merge it all into one
-      if (data.oldpassword && data.newpassword) {
-        pwdata.oldpassword = data.oldpassword;
-        pwdata.newpassword = data.newpassword;
-        this.runAppQuery(new Usergrid.Query('PUT', 'users/'+uuid+'/password', pwdata, null,
-          function (response) {
-            //not calling any callbacks - this section will be merged as soon as API supports
-            //   updating passwords in general PUT call
-          },
-          function (response) {
-
-          }
-        ));
-      }
-      //remove old and new password fields so they don't end up as part of the entity object
-      delete data.oldpassword;
-      delete data.newpassword;
-    }
-
-    //update the entity
-    var self = this;
-
-    data = {};
-    var entityData = this.get();
-    //remove system specific properties
-    for (var item in entityData) {
-      if (item == 'metadata' || item == 'created' || item == 'modified' ||
-          item == 'type' || item == 'activatted' ) { continue; }
-      data[item] = entityData[item];
-    }
-
-    this.setAllQueryParams(method, path, data, null,
-      function(response) {
-        try {
-          var entity = response.entities[0];
-          self.set(entity);
-          if (typeof(successCallback) === "function"){
-            successCallback(response);
-          }
-        } catch (e) {
-          if (typeof(errorCallback) === "function"){
-            errorCallback(response);
-          }
-        }
-      },
-      function(response) {
-        if (typeof(errorCallback) === "function"){
-          errorCallback(response);
-        }
-      }
-    );
-    Usergrid.ApiClient.runAppQuery(this);
-  }
-
-  /**
-   *  refreshes the entity by making a GET call back to the database
-   *
-   *  @method fetch
-   *  @public
-   *  @param {function} successCallback
-   *  @param {function} errorCallback
-   *  @return none
-   */
-  Usergrid.Entity.prototype.fetch = function (successCallback, errorCallback){
-    var path = this.getCollectionType();
-    //if a uuid is available, use that, otherwise, use the name
-    if (this.get('uuid')) {
-      path += "/" + this.get('uuid');
-    } else {
-      if (path == "users") {
-        if (this.get("username")) {
-          path += "/" + this.get("username");
-        } else {
-          console.log('no username specified');
-          if (typeof(errorCallback) === "function"){
-            console.log('no username specified');
-          }
-        }
-      } else {
-        if (this.get()) {
-          path += "/" + this.get();
-        } else {
-          console.log('no entity identifier specified');
-          if (typeof(errorCallback) === "function"){
-            console.log('no entity identifier specified');
-          }
-        }
-      }
-    }
-    var self = this;
-    this.setAllQueryParams('GET', path, null, null,
-      function(response) {
-        try {
-          if (response.user) {
-            self.set(response.user);
-          }
-          var entity = response.entities[0];
-          self.set(entity);
-          if (typeof(successCallback) === "function"){
-            successCallback(response);
-          }
-        } catch (e) {
-          if (typeof(errorCallback) === "function"){
-            errorCallback(response);
-          }
-        }
-      },
-      function(response) {
-        if (typeof(errorCallback) === "function"){
-            errorCallback(response);
-        }
-      }
-    );
-    Usergrid.ApiClient.runAppQuery(this);
-  }
-
-  /**
-   *  deletes the entity from the database - will only delete
-   *  if the object has a valid uuid
-   *
-   *  @method destroy
-   *  @public
-   *  @param {function} successCallback
-   *  @param {function} errorCallback
-   *  @return none
-   *
-   */
-  Usergrid.Entity.prototype.destroy = function (successCallback, errorCallback){
-    var path = this.getCollectionType();
-    if (this.get('uuid')) {
-      path += "/" + this.get('uuid');
-    } else {
-      console.log('Error trying to delete object - no uuid specified.');
-      if (typeof(errorCallback) === "function"){
-        errorCallback('Error trying to delete object - no uuid specified.');
-      }
-    }
-    var self = this;
-    this.setAllQueryParams('DELETE', path, null, null,
-      function(response) {
-        //clear out this object
-        self.set(null);
-        if (typeof(successCallback) === "function"){
-          successCallback(response);
-        }
-      },
-      function(response) {
-        if (typeof(errorCallback) === "function"){
-            errorCallback(response);
-        }
-      }
-    );
-    Usergrid.ApiClient.runAppQuery(this);
-  }
-
-})(Usergrid);
-
-
-/**
- *  The Collection class models Usergrid Collections.  It essentially
- *  acts as a container for holding Entity objects, while providing
- *  additional funcitonality such as paging, and saving
- *
- *  @class Collection
- *  @author Rod Simpson (rod@apigee.com)
- */
-(function () {
-  /**
-   *  Collection is a container class for holding entities
-   *
-   *  @constructor
-   *  @param {string} collectionPath - the type of collection to model
-   *  @param {uuid} uuid - (optional), the UUID of the collection if it is known
-   */
-  Usergrid.Collection = function(path, uuid) {
-    this._path = path;
-    this._uuid = uuid;
-    this._list = [];
-    this._Query = new Usergrid.Query();
-    this._iterator = -1; //first thing we do is increment, so set to -1
-  };
-
-  Usergrid.Collection.prototype = new Usergrid.Query();
-
-  /**
-   *  gets the current Collection path
-   *
-   *  @method getPath
-   *  @return {string} path
-   */
-  Usergrid.Collection.prototype.getPath = function (){
-    return this._path;
-  }
-
-  /**
-   *  sets the Collection path
-   *
-   *  @method setPath
-   *  @param {string} path
-   *  @return none
-   */
-  Usergrid.Collection.prototype.setPath = function (path){
-    this._path = path;
-  }
-
-  /**
-   *  gets the current Collection UUID
-   *
-   *  @method getUUID
-   *  @return {string} the uuid
-   */
-  Usergrid.Collection.prototype.getUUID = function (){
-    return this._uuid;
-  }
-
-  /**
-   *  sets the current Collection UUID
-   *  @method setUUID
-   *  @param {string} uuid
-   *  @return none
-   */
-  Usergrid.Collection.prototype.setUUID = function (uuid){
-    this._uuid = uuid;
-  }
-
-  /**
-   *  Adds an Entity to the collection (adds to the local object)
-   *
-   *  @method addEntity
-   *  @param {object} entity
-   *  @param {function} successCallback
-   *  @param {function} errorCallback
-   *  @return none
-   */
-  Usergrid.Collection.prototype.addEntity = function (entity){
-    //then add it to the list
-    var count = this._list.length;
-    this._list[count] = entity;
-  }
-
-  /**
-   *  Adds a new Entity to the collection (saves, then adds to the local object)
-   *
-   *  @method addNewEntity
-   *  @param {object} entity
-   *  @return none
-   */
-  Usergrid.Collection.prototype.addNewEntity = function (entity,successCallback, errorCallback) {
-    //add the entity to the list
-    this.addEntity(entity);
-    //then save the entity
-    entity.save(successCallback, errorCallback);
-  }
-
-  Usergrid.Collection.prototype.destroyEntity = function (entity) {
-    //first get the entities uuid
-    var uuid = entity.get('uuid');
-    //if the entity has a uuid, delete it
-    if (Usergrid.validation.isUUID(uuid)) {
-      //then remove it from the list
-      var count = this._list.length;
-      var i=0;
-      var reorder = false;
-      for (i=0; i<count; i++) {
-        if(reorder) {
-          this._list[i-1] = this._list[i];
-          this._list[i] = null;
-        }
-        if (this._list[i].get('uuid') == uuid) {
-          this._list[i] = null;
-          reorder=true;
-        }
-      }
-    }
-    //first destroy the entity on the server
-    entity.destroy();
-  }
-
-  /**
-   *  Looks up an Entity by a specific field - will return the first Entity that
-   *  has a matching field
-   *
-   *  @method getEntityByField
-   *  @param {string} field
-   *  @param {string} value
-   *  @return {object} returns an entity object, or null if it is not found
-   */
-  Usergrid.Collection.prototype.getEntityByField = function (field, value){
-    var count = this._list.length;
-    var i=0;
-    for (i=0; i<count; i++) {
-      if (this._list[i].getField(field) == value) {
-        return this._list[i];
-      }
-    }
-    return null;
-  }
-
-  /**
-   *  Looks up an Entity by UUID
-   *
-   *  @method getEntityByUUID
-   *  @param {string} UUID
-   *  @return {object} returns an entity object, or null if it is not found
-   */
-  Usergrid.Collection.prototype.getEntityByUUID = function (UUID){
-    var count = this._list.length;
-    var i=0;
-    for (i=0; i<count; i++) {
-      if (this._list[i].get('uuid') == UUID) {
-        return this._list[i];
-      }
-    }
-    return null;
-  }
-
-  /**
-   *  Returns the first Entity of the Entity list - does not affect the iterator
-   *
-   *  @method getFirstEntity
-   *  @return {object} returns an entity object
-   */
-  Usergrid.Collection.prototype.getFirstEntity = function (){
-    var count = this._list.length;
-      if (count > 0) {
-        return this._list[0];
-      }
-      return null;
-  }
-
-  /**
-   *  Returns the last Entity of the Entity list - does not affect the iterator
-   *
-   *  @method getLastEntity
-   *  @return {object} returns an entity object
-   */
-  Usergrid.Collection.prototype.getLastEntity = function (){
-    var count = this._list.length;
-      if (count > 0) {
-        return this._list[count-1];
-      }
-      return null;
-  }
-
-  /**
-   *  Entity iteration -Checks to see if there is a "next" entity
-   *  in the list.  The first time this method is called on an entity
-   *  list, or after the resetEntityPointer method is called, it will
-   *  return true referencing the first entity in the list
-   *
-   *  @method hasNextEntity
-   *  @return {boolean} true if there is a next entity, false if not
-   */
-  Usergrid.Collection.prototype.hasNextEntity = function (){
-    var next = this._iterator + 1;
-      if(next >=0 && next < this._list.length) {
-        return true;
-      }
-      return false;
-  }
-
-  /**
-   *  Entity iteration - Gets the "next" entity in the list.  The first
-   *  time this method is called on an entity list, or after the method
-   *  resetEntityPointer is called, it will return the,
-   *  first entity in the list
-   *
-   *  @method hasNextEntity
-   *  @return {object} entity
-   */
-  Usergrid.Collection.prototype.getNextEntity = function (){
-    this._iterator++;
-      if(this._iterator >= 0 && this._iterator <= this._list.length) {
-        return this._list[this._iterator];
-      }
-      return false;
-  }
-
-  /**
-   *  Entity iteration - Checks to see if there is a "previous"
-   *  entity in the list.
-   *
-   *  @method hasPreviousEntity
-   *  @return {boolean} true if there is a previous entity, false if not
-   */
-  Usergrid.Collection.prototype.hasPreviousEntity = function (){
-    var previous = this._iterator - 1;
-      if(previous >=0 && previous < this._list.length) {
-        return true;
-      }
-      return false;
-  }
-
-  /**
-   *  Entity iteration - Gets the "previous" entity in the list.
-   *
-   *  @method getPreviousEntity
-   *  @return {object} entity
-   */
-  Usergrid.Collection.prototype.getPreviousEntity = function (){
-     this._iterator--;
-      if(this._iterator >= 0 && this._iterator <= this._list.length) {
-        return this.list[this._iterator];
-      }
-      return false;
-  }
-
-  /**
-   *  Entity iteration - Resets the iterator back to the beginning
-   *  of the list
-   *
-   *  @method resetEntityPointer
-   *  @return none
-   */
-  Usergrid.Collection.prototype.resetEntityPointer = function (){
-     this._iterator  = -1;
-  }
-
-  /**
-   *  gets and array of all entities currently in the colleciton object
-   *
-   *  @method getEntityList
-   *  @return {array} returns an array of entity objects
-   */
-  Usergrid.Collection.prototype.getEntityList = function (){
-     return this._list;
-  }
-
-  /**
-   *  sets the entity list
-   *
-   *  @method setEntityList
-   *  @param {array} list - an array of Entity objects
-   *  @return none
-   */
-  Usergrid.Collection.prototype.setEntityList = function (list){
-    this._list = list;
-  }
-
-  /**
-   *  Paging -  checks to see if there is a next page od data
-   *
-   *  @method hasNextPage
-   *  @return {boolean} returns true if there is a next page of data, false otherwise
-   */
-  Usergrid.Collection.prototype.hasNextPage = function (){
-    return this.hasNext();
-  }
-
-  /**
-   *  Paging - advances the cursor and gets the next
-   *  page of data from the API.  Stores returned entities
-   *  in the Entity list.
-   *
-   *  @method getNextPage
-   *  @return none
-   */
-  Usergrid.Collection.prototype.getNextPage = function (){
-    if (this.hasNext()) {
-        //set the cursor to the next page of data
-        this.getNext();
-        //empty the list
-        this.setEntityList([]);
-        Usergrid.ApiClient.runAppQuery(this);
-      }
-  }
-
-  /**
-   *  Paging -  checks to see if there is a previous page od data
-   *
-   *  @method hasPreviousPage
-   *  @return {boolean} returns true if there is a previous page of data, false otherwise
-   */
-  Usergrid.Collection.prototype.hasPreviousPage = function (){
-    return this.hasPrevious();
-  }
-
-  /**
-   *  Paging - reverts the cursor and gets the previous
-   *  page of data from the API.  Stores returned entities
-   *  in the Entity list.
-   *
-   *  @method getPreviousPage
-   *  @return none
-   */
-  Usergrid.Collection.prototype.getPreviousPage = function (){
-    if (this.hasPrevious()) {
-        this.getPrevious();
-        //empty the list
-        this.setEntityList([]);
-        Usergrid.ApiClient.runAppQuery(this);
-      }
-  }
-
-  /**
-   *  clears the query parameters object
-   *
-   *  @method clearQuery
-   *  @return none
-   */
-  Usergrid.Collection.prototype.clearQuery = function (){
-    this.clearAll();
-  }
-
-  //The get() function is deprecated.  Including here for backwards compatibility
-  //with previous versions of the SDK
-  Usergrid.Collection.prototype.get = function (successCallback, errorCallback){
-    Usergrid.Collection.fetch(successCallback, errorCallback);
-  }
-
-  /**
-   *  A method to get all items in the collection, as dictated by the
-   *  cursor and the query.  By default, the API returns 10 items in
-   *  a given call.  This can be overriden so that more or fewer items
-   *  are returned.  The entities returned are all stored in the colleciton
-   *  object's entity list, and can be retrieved by calling getEntityList()
-   *
-   *  @method get
-   *  @param {function} successCallback
-   *  @param {function} errorCallback
-   *  @return none
-   */
-  Usergrid.Collection.prototype.fetch = function (successCallback, errorCallback){
-    var self = this;
-    var queryParams = this.getQueryParams();
-    //empty the list
-    this.setEntityList([]);
-    this.setAllQueryParams('GET', this.getPath(), null, queryParams,
-      function(response) {
-        if (response.entities) {
-          this.resetEntityPointer();
-          var count = response.entities.length;
-          for (var i=0;i<count;i++) {
-            var uuid = response.entities[i].uuid;
-            if (uuid) {
-              var entity = new Usergrid.Entity(self.getPath(), uuid);
-              //store the data in the entity
-              var data = response.entities[i] || {};
-              delete data.uuid; //remove uuid from the object
-              entity.set(data);
-              //store the new entity in this collection
-              self.addEntity(entity);
-            }
-          }
-          if (typeof(successCallback) === "function"){
-            successCallback(response);
-          }
-        } else {
-          if (typeof(errorCallback) === "function"){
-              errorCallback(response);
-          }
-        }
-      },
-      function(response) {
-        if (typeof(errorCallback) === "function"){
-            errorCallback(response);
-        }
-      }
-    );
-    Usergrid.ApiClient.runAppQuery(this);
-  }
-
-  /**
-   *  A method to save all items currently stored in the collection object
-   *  caveat with this method: we can't update anything except the items
-   *  currently stored in the collection.
-   *
-   *  @method save
-   *  @param {function} successCallback
-   *  @param {function} errorCallback
-   *  @return none
-   */
-  Usergrid.Collection.prototype.save = function (successCallback, errorCallback){
-    //loop across all entities and save each one
-    var entities = this.getEntityList();
-    var count = entities.length;
-    var jsonObj = [];
-    for (var i=0;i<count;i++) {
-      entity = entities[i];
-      data = entity.get();
-      if (entity.get('uuid')) {
-        data.uuid = entity.get('uuid');
-        jsonObj.push(data);
-      }
-      entity.save();
-    }
-    this.setAllQueryParams('PUT', this.getPath(), jsonObj, null,successCallback, errorCallback);
-    Usergrid.ApiClient.runAppQuery(this);
-  }
-})(Usergrid);
-
-
-/*
- *  Usergrid.ApiClient
- *
- *  A Singleton that is the main client for making calls to the API. Maintains
- *  state between calls for the following items:
- *
- *  Token
- *  User (username, email, name, uuid)
- *
- *  Main methods for making calls to the API are:
- *
- *  runAppQuery (Query)
- *  runManagementQuery(Query)
- *
- *  Create a new Usergrid.Query object and then pass it to either of these
- *  two methods for making calls directly to the API.
- *
- *  A method for logging in an app user (to get a OAuth token) also exists:
- *
- *  logInAppUser (username, password, successCallback, failureCallback)
- *
- *  @class Usergrid.ApiClient
- *  @author Rod Simpson (rod@apigee.com)
- *
- */
-Usergrid.M = 'ManagementQuery';
-Usergrid.A = 'ApplicationQuery';
-Usergrid.ApiClient = (function () {
-  //API endpoint
-  var _apiUrl = "https://api.usergrid.com/";
-  var _orgName = null;
-  var _appName = null;
-  var _token = null;
-  var _callTimeout = 30000;
-  var _queryType = null;
-  var _loggedInUser = null;
-  var _logoutCallback = null;
-  var _callTimeoutCallback = null;
-
-  /*
-   *  A method to set up the ApiClient with orgname and appname
-   *
-   *  @method init
-   *  @public
-   *  @param {string} orgName
-   *  @param {string} appName
-   *  @return none
-   *
-   */
-  function init(orgName, appName){
-    this.setOrganizationName(orgName);
-    this.setApplicationName(appName);
-  }
-
-  /*
-  *  Public method to run calls against the app endpoint
-  *
-  *  @method runAppQuery
-  *  @public
-  *  @params {object} Usergrid.Query - {method, path, jsonObj, params, successCallback, failureCallback}
-  *  @return none
-  */
-  function runAppQuery (Query) {
-    var endpoint = "/" + this.getOrganizationName() + "/" + this.getApplicationName() + "/";
-    setQueryType(Usergrid.A);
-    run(Query, endpoint);
-  }
-
-  /*
-  *  Public method to run calls against the management endpoint
-  *
-  *  @method runManagementQuery
-  *  @public
-  *  @params {object} Usergrid.Query - {method, path, jsonObj, params, successCallback, failureCallback}
-  *  @return none
-  */
-  function runManagementQuery (Query) {
-    var endpoint = "/management/";
-    setQueryType(Usergrid.M);
-    run(Query, endpoint)
-  }
-
-  /*
-    *  A public method to get the organization name to be used by the client
-    *
-    *  @method getOrganizationName
-    *  @public
-    *  @return {string} the organization name
-    */
-  function getOrganizationName() {
-    return _orgName;
-  }
-
-  /*
-    *  A public method to set the organization name to be used by the client
-    *
-    *  @method setOrganizationName
-    *  @param orgName - the organization name
-    *  @return none
-    */
-  function setOrganizationName(orgName) {
-    _orgName = orgName;
-  }
-
-  /*
-  *  A public method to get the application name to be used by the client
-  *
-  *  @method getApplicationName
-  *  @public
-  *  @return {string} the application name
-  */
-  function getApplicationName() {
-    return _appName;
-  }
-
-  /*
-  *  A public method to set the application name to be used by the client
-  *
-  *  @method setApplicationName
-  *  @public
-  *  @param appName - the application name
-  *  @return none
-  */
-  function setApplicationName(appName) {
-    _appName = appName;
-  }
-
-  /*
-  *  A public method to get current OAuth token
-  *
-  *  @method getToken
-  *  @public
-  *  @return {string} the current token
-  */
-  function getToken() {
-    return _token;
-  }
-
-  /*
-  *  A public method to set the current Oauth token
-  *
-  *  @method setToken
-  *  @public
-  *  @param token - the bearer token
-  *  @return none
-  */
-  function setToken(token) {
-    _token = token;
-  }
-
-  /*
-   *  A public method to return the API URL
-   *
-   *  @method getApiUrl
-   *  @public
-   *  @return {string} the API url
-   */
-  function getApiUrl() {
-    return _apiUrl;
-  }
-
-  /*
-   *  A public method to overide the API url
-   *
-   *  @method setApiUrl
-   *  @public
-   *  @return none
-   */
-  function setApiUrl(apiUrl) {
-    _apiUrl = apiUrl;
-  }
-
-  /*
-   *  A public method to return the call timeout amount
-   *
-   *  @method getCallTimeout
-   *  @public
-   *  @return {string} the timeout value (an integer) 30000 = 30 seconds
-   */
-  function getCallTimeout() {
-    return _callTimeout;
-  }
-
-  /*
-   *  A public method to override the call timeout amount
-   *
-   *  @method setCallTimeout
-   *  @public
-   *  @return none
-   */
-  function setCallTimeout(callTimeout) {
-    _callTimeout = callTimeout;
-  }
-
-  /*
-   * Returns the call timeout callback function
-   *
-   * @public
-   * @method setCallTimeoutCallback
-   * @return none
-   */
-  function setCallTimeoutCallback(callback) {
-    _callTimeoutCallback = callback;
-  }
-
-  /*
-   * Returns the call timeout callback function
-   *
-   * @public
-   * @method getCallTimeoutCallback
-   * @return {function} Returns the callTimeoutCallback
-   */
-  function getCallTimeoutCallback() {
-    return _callTimeoutCallback;
-  }
-
-  /*
-   * Calls the call timeout callback function
-   *
-   * @public
-   * @method callTimeoutCallback
-   * @return {boolean} Returns true or false based on if there was a callback to call
-   */
-  function callTimeoutCallback(response) {
-    if (_callTimeoutCallback && typeof(_callTimeoutCallback) === "function") {
-      _callTimeoutCallback(response);
-      return true;
-    } else {
-      return false;
-    }
-  }
-
-  /*
-   *  A public method to get the api url of the reset pasword endpoint
-   *
-   *  @method getResetPasswordUrl
-   *  @public
-   *  @return {string} the api rul of the reset password endpoint
-   */
-  function getResetPasswordUrl() {
-    return getApiUrl() + "/management/users/resetpw"
-  }
-
-  /*
-   *  A public method to get an Entity object for the current logged in user
-   *
-   *  @method getLoggedInUser
-   *  @public
-   *  @return {object} user - Entity object of type user
-   */
-  function getLoggedInUser() {
-    return this._loggedInUser;
-  }
-
-  /*
-   *  A public method to set an Entity object for the current logged in user
-   *
-   *  @method setLoggedInUser
-   *  @public
-   *  @param {object} user - Entity object of type user
-   *  @return none
-   */
-  function setLoggedInUser(user) {
-    this._loggedInUser = user;
-  }
-
-  /*
-  *  A public method to log in an app user - stores the token for later use
-  *
-  *  @method logInAppUser
-  *  @public
-  *  @params {string} username
-  *  @params {string} password
-  *  @params {function} successCallback
-  *  @params {function} failureCallback
-  *  @return {response} callback functions return API response object
-  */
-  function logInAppUser (username, password, successCallback, failureCallback) {
-    var self = this;
-    var data = {"username": username, "password": password, "grant_type": "password"};
-    this.runAppQuery(new Usergrid.Query('GET', 'token', null, data,
-      function (response) {
-        var user = new Usergrid.Entity('users');
-        user.set('username', response.user.username);
-        user.set('name', response.user.name);
-        user.set('email', response.user.email);
-        user.set('uuid', response.user.uuid);
-        self.setLoggedInUser(user);
-        self.setToken(response.access_token);
-        if (successCallback && typeof(successCallback) === "function") {
-          successCallback(response);
-        }
-      },
-      function (response) {
-        if (failureCallback && typeof(failureCallback) === "function") {
-          failureCallback(response);
-        }
-      }
-     ));
-  }
-
-  /*
-   *  TODO:  NOT IMPLEMENTED YET - A method to renew an app user's token
-   *  Note: waiting for API implementation
-   *  @method renewAppUserToken
-   *  @public
-   *  @return none
-   */
-  function renewAppUserToken() {
-
-  }
-
-  /**
-   *  A public method to log out an app user - clears all user fields from client
-   *
-   *  @method logoutAppUser
-   *  @public
-   *  @return none
-   */
-  function logoutAppUser() {
-    this.setLoggedInUser(null);
-    this.setToken(null);
-  }
-
-  /**
-   *  A public method to test if a user is logged in - does not guarantee that the token is still valid,
-   *  but rather that one exists, and that there is a valid UUID
-   *
-   *  @method isLoggedInAppUser
-   *  @public
-   *  @params {object} Usergrid.Query - {method, path, jsonObj, params, successCallback, failureCallback}
-   *  @return {boolean} Returns true the user is logged in (has token and uuid), false if not
-   */
-  function isLoggedInAppUser() {
-    var user = this.getLoggedInUser();
-    return (this.getToken() && Usergrid.validation.isUUID(user.get('uuid')));
-  }
-
-   /*
-   *  A public method to get the logout callback, which is called
-   *
-   *  when the token is found to be invalid
-   *  @method getLogoutCallback
-   *  @public
-   *  @return {string} the api rul of the reset password endpoint
-   */
-  function getLogoutCallback() {
-    return _logoutCallback;
-  }
-
-  /*
-   *  A public method to set the logout callback, which is called
-   *
-   *  when the token is found to be invalid
-   *  @method setLogoutCallback
-   *  @public
-   *  @param {function} logoutCallback
-   *  @return none
-   */
-  function setLogoutCallback(logoutCallback) {
-    _logoutCallback = logoutCallback;
-  }
-
-  /*
-   *  A public method to call the logout callback, which is called
-   *
-   *  when the token is found to be invalid
-   *  @method callLogoutCallback
-   *  @public
-   *  @return none
-   */
-  function callLogoutCallback() {
-    if (_logoutCallback && typeof(_logoutCallback ) === "function") {
-      _logoutCallback();
-      return true;
-    } else {
-      return false;
-    }
-  }
-
-  /**
-   *  Private helper method to encode the query string parameters
-   *
-   *  @method encodeParams
-   *  @public
-   *  @params {object} params - an object of name value pairs that will be urlencoded
-   *  @return {string} Returns the encoded string
-   */
-  function encodeParams (params) {
-    tail = [];
-    var item = [];
-    if (params instanceof Array) {
-      for (i in params) {
-        item = params[i];
-        if ((item instanceof Array) && (item.length > 1)) {
-          tail.push(item[0] + "=" + encodeURIComponent(item[1]));
-        }
-      }
-    } else {
-      for (var key in params) {
-        if (params.hasOwnProperty(key)) {
-          var value = params[key];
-          if (value instanceof Array) {
-            for (i in value) {
-              item = value[i];
-              tail.push(key + "=" + encodeURIComponent(item));
-            }
-          } else {
-            tail.push(key + "=" + encodeURIComponent(value));
-          }
-        }
-      }
-    }
-    return tail.join("&");
-  }
-
-  /*
-   *  A private method to get the type of the current api call - (Management or Application)
-   *
-   *  @method getQueryType
-   *  @private
-   *  @return {string} the call type
-   */
-  function getQueryType() {
-    return _queryType;
-  }
-  /*
-   *  A private method to set the type of the current api call - (Management or Application)
-   *
-   *  @method setQueryType
-   *  @private
-   *  @param {string} call type
-   *  @return none
-   */
-  function setQueryType(type) {
-    _queryType = type;
-  }
-
-  /**
-   *  A private method to validate, prepare,, and make the calls to the API
-   *  Use runAppQuery or runManagementQuery to make your calls!
-   *
-   *  @method run
-   *  @private
-   *  @params {object} Usergrid.Query - {method, path, jsonObj, params, successCallback, failureCallback}
-   *  @params {string} endpoint - used to differentiate between management and app queries
-   *  @return {response} callback functions return API response object
-   */
-  function run (Query, endpoint) {
-    var curl = "curl";
-    //validate parameters
-    try {
-      //verify that the query object is valid
-      if(!(Query instanceof Usergrid.Query)) {
-        throw(new Error('Query is not a valid object.'));
-      }
-      //for timing, call start
-      Query.setQueryStartTime();
-      //peel the data out of the query object
-      var method = Query.getMethod().toUpperCase();
-      var path = Query.getResource();
-      var jsonObj = Query.getJsonObj() || {};
-      var params = Query.getQueryParams() || {};
-
-      //method - should be GET, POST, PUT, or DELETE only
-      if (method != 'GET' && method != 'POST' && method != 'PUT' && method != 'DELETE') {
-        throw(new Error('Invalid method - should be GET, POST, PUT, or DELETE.'));
-      }
-      //curl - add the method to the command (no need to add anything for GET)
-      if (method == "POST") {curl += " -X POST"; }
-      else if (method == "PUT") { curl += " -X PUT"; }
-      else if (method == "DELETE") { curl += " -X DELETE"; }
-      else { curl += " -X GET"; }
-
-      //curl - append the bearer token if this is not the sandbox app
-      var application_name = Usergrid.ApiClient.getApplicationName();
-      if (application_name) {
-        application_name = application_name.toUpperCase();
-      }
-      //if (application_name != 'SANDBOX' && Usergrid.ApiClient.getToken()) {
-      if ( (application_name != 'SANDBOX' && Usergrid.ApiClient.getToken()) || (getQueryType() == Usergrid.M && Usergrid.ApiClient.getToken())) {
-        curl += ' -i -H "Authorization: Bearer ' + Usergrid.ApiClient.getToken() + '"';
-        Query.setToken(true);
-      }
-
-      //params - make sure we have a valid json object
-      _params = JSON.stringify(params);
-      if (!JSON.parse(_params)) {
-        throw(new Error('Params object is not valid.'));
-      }
-
-      //add in the cursor if one is available
-      if (Query.getCursor()) {
-        params.cursor = Query.getCursor();
-      } else {
-        delete params.cursor;
-      }
-
-      //strip off the leading slash of the endpoint if there is one
-      endpoint = endpoint.indexOf('/') == 0 ? endpoint.substring(1) : endpoint;
-
-      //add the endpoint to the path
-      path = endpoint + path;
-
-      //make sure path never has more than one / together
-      if (path) {
-        //regex to strip multiple slashes
-        while(path.indexOf('//') != -1){
-          path = path.replace('//', '/');
-        }
-      }
-
-      //add the http:// bit on the front
-      path = Usergrid.ApiClient.getApiUrl() + path;
-
-      //curl - append the path
-      curl += ' "' + path;
-
-      //curl - append params to the path for curl prior to adding the timestamp
-      var curl_encoded_params = encodeParams(params);
-      if (curl_encoded_params) {
-        curl += "?" + curl_encoded_params;
-      }
-      curl += '"';
-
-      //add in a timestamp for gets and deletes - to avoid caching by the browser
-      if ((method == "GET") || (method == "DELETE")) {
-        params['_'] = new Date().getTime();
-      }
-
-      //append params to the path
-      var encoded_params = encodeParams(params);
-      if (encoded_params) {
-        path += "?" + encoded_params;
-      }
-
-      //jsonObj - make sure we have a valid json object
-      jsonObj = JSON.stringify(jsonObj)
-      if (!JSON.parse(jsonObj)) {
-        throw(new Error('JSON object is not valid.'));
-      }
-      if (jsonObj == '{}') {
-        jsonObj = null;
-      } else {
-        //curl - add in the json obj
-        curl += " -d '" + jsonObj + "'";
-      }
-
-    } catch (e) {
-      //parameter was invalid
-      console.log('error occured running query -' + e.message);
-      return false;
-    }
-    //log the curl command to the console
-    console.log(curl);
-    //store the curl command back in the object
-    Query.setCurl(curl);
-
-    //so far so good, so run the query
-    var xD = window.XDomainRequest ? true : false;
-    var xhr = getXHR(method, path, jsonObj);
-
-    // Handle response.
-    /*
-    xhr.onerror = function() {
-      //for timing, call end
-      Query.setQueryEndTime();
-      //for timing, log the total call time
-      console.log(Query.getQueryTotalTime());
-      //network error
-      clearTimeout(timeout);
-      console.log('API call failed at the network level.');
-      //send back an error (best we can do with what ie gives back)
-      Query.callFailureCallback(response.innerText);
-    };*/
-    xhr.xdomainOnload = function (response) {
-      //for timing, call end
-      Query.setQueryEndTime();
-      //for timing, log the total call time
-      console.log('Call timing: ' + Query.getQueryTotalTime());
-      //call completed
-      clearTimeout(timeout);
-      //decode the response
-      response = JSON.parse(xhr.responseText);
-      //if a cursor was present, grab it
-      try {
-        var cursor = response.cursor || null;
-        Query.saveCursor(cursor);
-      }catch(e) {}
-      Query.callSuccessCallback(response);
-    };
-    xhr.onload = function(response) {
-      //for timing, call end
-      Query.setQueryEndTime();
-      //for timing, log the total call time
-      console.log('Call timing: ' + Query.getQueryTotalTime());
-      //call completed
-      clearTimeout(timeout);
-      //decode the response
-      response = JSON.parse(xhr.responseText);
-      if (xhr.status != 200 && !xD)   {
-        //there was an api error
-        try {
-          var error = response.error;
-          console.log('API call failed: (status: '+xhr.status+').' + error.type);
-          if ( (error == "auth_expired_session_token") ||
-               (error == "unauthorized")   ||
-               (error == "auth_missing_credentials")   ||
-               (error == "auth_invalid")) {
-            //this error type means the user is not authorized. If a logout function is defined, call it
-            callLogoutCallback();
-        }} catch(e){}
-        //otherwise, just call the failure callback
-        Query.callFailureCallback(response.error_description);
-        return;
-      } else {
-        //query completed succesfully, so store cursor
-        var cursor = response.cursor || null;
-        Query.saveCursor(cursor);
-        //then call the original callback
-        Query.callSuccessCallback(response);
-     }
-    };
-
-    var timeout = setTimeout(
-      function() {
-        xhr.abort();
-        if ( typeof(Usergrid.ApiClient.getCallTimeoutCallback()) === 'function') {
-          Usergrid.ApiClient.callTimeoutCallback('API CALL TIMEOUT');
-        } else if (typeof(Query.getFailureCallback()) === 'function'){
-          Query.callFailureCallback('API CALL TIMEOUT');
-        }
-      },
-      Usergrid.ApiClient.getCallTimeout()); //set for 30 seconds
-
-    xhr.send(jsonObj);
-  }
-
-   /**
-   *  A private method to return the XHR object
-   *
-   *  @method getXHR
-   *  @private
-   *  @params {string} method (GET,POST,PUT,DELETE)
-   *  @params {string} path - api endpoint to call
-   *  @return {object} jsonObj - the json object if there is one
-   */
-  function getXHR(method, path, jsonObj) {
-    var xhr;
-    if(window.XDomainRequest)
-    {
-      xhr = new window.XDomainRequest();
-      if (Usergrid.ApiClient.getToken()) {
-        if (path.indexOf("?")) {
-          path += '&access_token='+Usergrid.ApiClient.getToken();
-        } else {
-          path = '?access_token='+Usergrid.ApiClient.getToken();
-        }
-      }
-      xhr.open(method, path, true);
-    }
-    else
-    {
-      xhr = new XMLHttpRequest();
-      xhr.open(method, path, true);
-      //add content type = json if there is a json payload
-      if (jsonObj) {
-        xhr.setRequestHeader("Content-Type", "application/json");
-      }
-      if (Usergrid.ApiClient.getToken()) {
-        xhr.setRequestHeader("Authorization", "Bearer " + Usergrid.ApiClient.getToken());
-        xhr.withCredentials = true;
-      }
-    }
-    return xhr;
-  }
-
-  return {
-    init:init,
-    runAppQuery:runAppQuery,
-    runManagementQuery:runManagementQuery,
-    getOrganizationName:getOrganizationName,
-    setOrganizationName:setOrganizationName,
-    getApplicationName:getApplicationName,
-    setApplicationName:setApplicationName,
-    getToken:getToken,
-    setToken:setToken,
-    getCallTimeout:getCallTimeout,
-    setCallTimeout:setCallTimeout,
-    getCallTimeoutCallback:getCallTimeoutCallback,
-    setCallTimeoutCallback:setCallTimeoutCallback,
-    callTimeoutCallback:callTimeoutCallback,
-    getApiUrl:getApiUrl,
-    setApiUrl:setApiUrl,
-    getResetPasswordUrl:getResetPasswordUrl,
-    getLoggedInUser:getLoggedInUser,
-    setLoggedInUser:setLoggedInUser,
-    logInAppUser:logInAppUser,
-    renewAppUserToken:renewAppUserToken,
-    logoutAppUser:logoutAppUser,
-    isLoggedInAppUser:isLoggedInAppUser,
-    getLogoutCallback:getLogoutCallback,
-    setLogoutCallback:setLogoutCallback,
-    callLogoutCallback:callLogoutCallback
-  }
-})();
-
-/**
- * validation is a Singleton that provides methods for validating common field types
- *
- * @class Usergrid.validation
- * @author Rod Simpson (rod@apigee.com)
-**/
-Usergrid.validation = (function () {
-
-  var usernameRegex = new RegExp("^([0-9a-zA-Z\.\-])+$");
-  var nameRegex     = new RegExp("^([0-9a-zA-Z@#$%^&!?;:.,'\"~*-=+_\[\\](){}/\\ |])+$");
-  var emailRegex    = new RegExp("^(([0-9a-zA-Z]+[_\+.-]?)+@[0-9a-zA-Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+$");
-  var passwordRegex = new RegExp("^([0-9a-zA-Z@#$%^&!?<>;:.,'\"~*-=+_\[\\](){}/\\ |])+$");
-  var pathRegex     = new RegExp("^([0-9a-z./-])+$");
-  var titleRegex    = new RegExp("^([0-9a-zA-Z.!-?/])+$");
-
-  /**
-    * Tests the string against the allowed chars regex
-    *
-    * @public
-    * @method validateUsername
-    * @param {string} username - The string to test
-    * @param {function} failureCallback - (optional), the function to call on a failure
-    * @return {boolean} Returns true if string passes regex, false if not
-    */
-  function validateUsername(username, failureCallback) {
-    if (usernameRegex.test(username) && checkLength(username, 4, 80)) {
-      return true;
-    } else {
-      if (failureCallback && typeof(failureCallback) === "function") {
-        failureCallback(this.getUsernameAllowedChars());
-      }
-      return false;
-    }
-  }
-
-  /**
-    * Returns the regex of allowed chars
-    *
-    * @public
-    * @method getUsernameAllowedChars
-    * @return {string} Returns a string with the allowed chars
-    */
-  function getUsernameAllowedChars(){
-    return 'Length: min 4, max 80. Allowed: A-Z, a-z, 0-9, dot, and dash';
-  }
-
-  /**
-    * Tests the string against the allowed chars regex
-    *
-    * @public
-    * @method validateName
-    * @param {string} name - The string to test
-    * @param {function} failureCallback - (optional), the function to call on a failure
-    * @return {boolean} Returns true if string passes regex, false if not
-    */
-  function validateName(name, failureCallback) {
-    if (nameRegex.test(name) && checkLength(name, 4, 16)) {
-      return true;
-    } else {
-      if (failureCallback && typeof(failureCallback) === "function") {
-        failureCallback(this.getNameAllowedChars());
-      }
-      return false;
-    }
-  }
-
-  /**
-    * Returns the regex of allowed chars
-    *
-    * @public
-    * @method getNameAllowedChars
-    * @return {string} Returns a string with the allowed chars
-    */
-  function getNameAllowedChars(){
-    return 'Length: min 4, max 80. Allowed: A-Z, a-z, 0-9, ~ @ # % ^ & * ( ) - _ = + [ ] { } \\ | ; : \' " , . / ? !';
-  }
-
-  /**
-    * Tests the string against the allowed chars regex
-    *
-    * @public
-    * @method validatePassword
-    * @param {string} password - The string to test
-    * @param {function} failureCallback - (optional), the function to call on a failure
-    * @return {boolean} Returns true if string passes regex, false if not
-    */
-  function validatePassword(password, failureCallback) {
-    if (passwordRegex.test(password) && checkLength(password, 5, 16)) {
-      return true;
-    } else {
-      if (failureCallback && typeof(failureCallback) === "function") {
-        failureCallback(this.getPasswordAllowedChars());
-      }
-      return false;
-    }
-  }
-
-  /**
-    * Returns the regex of allowed chars
-    *
-    * @public
-    * @method getPasswordAllowedChars
-    * @return {string} Returns a string with the allowed chars
-    */
-  function getPasswordAllowedChars(){
-    return 'Length: min 5, max 16. Allowed: A-Z, a-z, 0-9, ~ @ # % ^ & * ( ) - _ = + [ ] { } \\ | ; : \' " , . < > / ? !';
-  }
-
-  /**
-    * Tests the string against the allowed chars regex
-    *
-    * @public
-    * @method validateEmail
-    * @param {string} email - The string to test
-    * @param {function} failureCallback - (optional), the function to call on a failure
-    * @return {boolean} Returns true if string passes regex, false if not
-    */
-  function validateEmail(email, failureCallback) {
-    if (emailRegex.test(email) && checkLength(email, 4, 80)) {
-      return true;
-    } else {
-      if (failureCallback && typeof(failureCallback) === "function") {
-        failureCallback(this.getEmailAllowedChars());
-      }
-      return false;
-    }
-  }
-
-  /**
-    * Returns the regex of allowed chars
-    *
-    * @public
-    * @method getEmailAllowedChars
-    * @return {string} Returns a string with the allowed chars
-    */
-  function getEmailAllowedChars(){
-    return 'Email must be in standard form: e.g. example@Usergrid.com';
-  }
-
-  /**
-    * Tests the string against the allowed chars regex
-    *
-    * @public
-    * @method validatePath
-    * @param {string} path - The string to test
-    * @param {function} failureCallback - (optional), the function to call on a failure
-    * @return {boolean} Returns true if string passes regex, false if not
-    */
-  function validatePath(path, failureCallback) {
-    if (pathRegex.test(path) && checkLength(path, 4, 80)) {
-      return true;
-    } else {
-      if (failureCallback && typeof(failureCallback) === "function") {
-        failureCallback(this.getPathAllowedChars());
-      }
-      return false;
-    }
-  }
-
-  /**
-    * Returns the regex of allowed chars
-    *
-    * @public
-    * @method getPathAllowedChars
-    * @return {string} Returns a string with the allowed chars
-    */
-  function getPathAllowedChars(){
-    return 'Length: min 4, max 80. Allowed: /, a-z, 0-9, dot, and dash';
-  }
-
-  /**
-    * Tests the string against the allowed chars regex
-    *
-    * @public
-    * @method validateTitle
-    * @param {string} title - The string to test
-    * @param {function} failureCallback - (optional), the function to call on a failure
-    * @return {boolean} Returns true if string passes regex, false if not
-    */
-  function validateTitle(title, failureCallback) {
-    if (titleRegex.test(title) && checkLength(title, 4, 80)) {
-      return true;
-    } else {
-      if (failureCallback && typeof(failureCallback) === "function") {
-        failureCallback(this.getTitleAllowedChars());
-      }
-      return false;
-    }
-  }
-
-  /**
-    * Returns the regex of allowed chars
-    *
-    * @public
-    * @method getTitleAllowedChars
-    * @return {string} Returns a string with the allowed chars
-    */
-  function getTitleAllowedChars(){
-    return 'Length: min 4, max 80. Allowed: space, A-Z, a-z, 0-9, dot, dash, /, !, and ?';
-  }
-
-  /**
-    * Tests if the string is the correct length
-    *
-    * @public
-    * @method checkLength
-    * @param {string} string - The string to test
-    * @param {integer} min - the lower bound
-    * @param {integer} max - the upper bound
-    * @return {boolean} Returns true if string is correct length, false if not
-    */
-  function checkLength(string, min, max) {
-    if (string.length > max || string.length < min) {
-      return false;
-    }
-    return true;
-  }
-
-  /**
-    * Tests if the string is a uuid
-    *
-    * @public
-    * @method isUUID
-    * @param {string} uuid The string to test
-    * @returns {Boolean} true if string is uuid
-    */
-  function isUUID (uuid) {
-    var uuidValueRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;
-    if (!uuid) return false;
-    return uuidValueRegex.test(uuid);
-  }
-
-  return {
-    validateUsername:validateUsername,
-    getUsernameAllowedChars:getUsernameAllowedChars,
-    validateName:validateName,
-    getNameAllowedChars:getNameAllowedChars,
-    validatePassword:validatePassword,
-    getPasswordAllowedChars:getPasswordAllowedChars,
-    validateEmail:validateEmail,
-    getEmailAllowedChars:getEmailAllowedChars,
-    validatePath:validatePath,
-    getPathAllowedChars:getPathAllowedChars,
-    validateTitle:validateTitle,
-    getTitleAllowedChars:getTitleAllowedChars,
-    isUUID:isUUID
-  }
-})();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/lib/MD5.min.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/lib/MD5.min.js b/deleted/archive/js/lib/MD5.min.js
deleted file mode 100644
index 0bfc085..0000000
--- a/deleted/archive/js/lib/MD5.min.js
+++ /dev/null
@@ -1 +0,0 @@
-var MD5=function(a){function n(a){a=a.replace(/\r\n/g,"\n");var b="";for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);if(d<128){b+=String.fromCharCode(d)}else if(d>127&&d<2048){b+=String.fromCharCode(d>>6|192);b+=String.fromCharCode(d&63|128)}else{b+=String.fromCharCode(d>>12|224);b+=String.fromCharCode(d>>6&63|128);b+=String.fromCharCode(d&63|128)}}return b}function m(a){var b="",c="",d,e;for(e=0;e<=3;e++){d=a>>>e*8&255;c="0"+d.toString(16);b=b+c.substr(c.length-2,2)}return b}function l(a){var b;var c=a.length;var d=c+8;var e=(d-d%64)/64;var f=(e+1)*16;var g=Array(f-1);var h=0;var i=0;while(i<c){b=(i-i%4)/4;h=i%4*8;g[b]=g[b]|a.charCodeAt(i)<<h;i++}b=(i-i%4)/4;h=i%4*8;g[b]=g[b]|128<<h;g[f-2]=c<<3;g[f-1]=c>>>29;return g}function k(a,d,e,f,h,i,j){a=c(a,c(c(g(d,e,f),h),j));return c(b(a,i),d)}function j(a,d,e,g,h,i,j){a=c(a,c(c(f(d,e,g),h),j));return c(b(a,i),d)}function i(a,d,f,g,h,i,j){a=c(a,c(c(e(d,f,g),h),j));return c(b(a,i),d)}function h(a,e,f,g,h,i,j){a=c(a,c(c(d(e,f,g),h),j));re
 turn c(b(a,i),e)}function g(a,b,c){return b^(a|~c)}function f(a,b,c){return a^b^c}function e(a,b,c){return a&c|b&~c}function d(a,b,c){return a&b|~a&c}function c(a,b){var c,d,e,f,g;e=a&2147483648;f=b&2147483648;c=a&1073741824;d=b&1073741824;g=(a&1073741823)+(b&1073741823);if(c&d){return g^2147483648^e^f}if(c|d){if(g&1073741824){return g^3221225472^e^f}else{return g^1073741824^e^f}}else{return g^e^f}}function b(a,b){return a<<b|a>>>32-b}var o=Array();var p,q,r,s,t,u,v,w,x;var y=7,z=12,A=17,B=22;var C=5,D=9,E=14,F=20;var G=4,H=11,I=16,J=23;var K=6,L=10,M=15,N=21;a=n(a);o=l(a);u=1732584193;v=4023233417;w=2562383102;x=271733878;for(p=0;p<o.length;p+=16){q=u;r=v;s=w;t=x;u=h(u,v,w,x,o[p+0],y,3614090360);x=h(x,u,v,w,o[p+1],z,3905402710);w=h(w,x,u,v,o[p+2],A,606105819);v=h(v,w,x,u,o[p+3],B,3250441966);u=h(u,v,w,x,o[p+4],y,4118548399);x=h(x,u,v,w,o[p+5],z,1200080426);w=h(w,x,u,v,o[p+6],A,2821735955);v=h(v,w,x,u,o[p+7],B,4249261313);u=h(u,v,w,x,o[p+8],y,1770035416);x=h(x,u,v,w,o[p+9],z,2336552
 879);w=h(w,x,u,v,o[p+10],A,4294925233);v=h(v,w,x,u,o[p+11],B,2304563134);u=h(u,v,w,x,o[p+12],y,1804603682);x=h(x,u,v,w,o[p+13],z,4254626195);w=h(w,x,u,v,o[p+14],A,2792965006);v=h(v,w,x,u,o[p+15],B,1236535329);u=i(u,v,w,x,o[p+1],C,4129170786);x=i(x,u,v,w,o[p+6],D,3225465664);w=i(w,x,u,v,o[p+11],E,643717713);v=i(v,w,x,u,o[p+0],F,3921069994);u=i(u,v,w,x,o[p+5],C,3593408605);x=i(x,u,v,w,o[p+10],D,38016083);w=i(w,x,u,v,o[p+15],E,3634488961);v=i(v,w,x,u,o[p+4],F,3889429448);u=i(u,v,w,x,o[p+9],C,568446438);x=i(x,u,v,w,o[p+14],D,3275163606);w=i(w,x,u,v,o[p+3],E,4107603335);v=i(v,w,x,u,o[p+8],F,1163531501);u=i(u,v,w,x,o[p+13],C,2850285829);x=i(x,u,v,w,o[p+2],D,4243563512);w=i(w,x,u,v,o[p+7],E,1735328473);v=i(v,w,x,u,o[p+12],F,2368359562);u=j(u,v,w,x,o[p+5],G,4294588738);x=j(x,u,v,w,o[p+8],H,2272392833);w=j(w,x,u,v,o[p+11],I,1839030562);v=j(v,w,x,u,o[p+14],J,4259657740);u=j(u,v,w,x,o[p+1],G,2763975236);x=j(x,u,v,w,o[p+4],H,1272893353);w=j(w,x,u,v,o[p+7],I,4139469664);v=j(v,w,x,u,o[p+10],J,320
 0236656);u=j(u,v,w,x,o[p+13],G,681279174);x=j(x,u,v,w,o[p+0],H,3936430074);w=j(w,x,u,v,o[p+3],I,3572445317);v=j(v,w,x,u,o[p+6],J,76029189);u=j(u,v,w,x,o[p+9],G,3654602809);x=j(x,u,v,w,o[p+12],H,3873151461);w=j(w,x,u,v,o[p+15],I,530742520);v=j(v,w,x,u,o[p+2],J,3299628645);u=k(u,v,w,x,o[p+0],K,4096336452);x=k(x,u,v,w,o[p+7],L,1126891415);w=k(w,x,u,v,o[p+14],M,2878612391);v=k(v,w,x,u,o[p+5],N,4237533241);u=k(u,v,w,x,o[p+12],K,1700485571);x=k(x,u,v,w,o[p+3],L,2399980690);w=k(w,x,u,v,o[p+10],M,4293915773);v=k(v,w,x,u,o[p+1],N,2240044497);u=k(u,v,w,x,o[p+8],K,1873313359);x=k(x,u,v,w,o[p+15],L,4264355552);w=k(w,x,u,v,o[p+6],M,2734768916);v=k(v,w,x,u,o[p+13],N,1309151649);u=k(u,v,w,x,o[p+4],K,4149444226);x=k(x,u,v,w,o[p+11],L,3174756917);w=k(w,x,u,v,o[p+2],M,718787259);v=k(v,w,x,u,o[p+9],N,3951481745);u=c(u,q);v=c(v,r);w=c(w,s);x=c(x,t)}var O=m(u)+m(v)+m(w)+m(x);return O.toLowerCase()}
\ No newline at end of file


[05/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angular/angular.min.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angular/angular.min.js b/deleted/dist-cov/usergrid-portal/bower_components/angular/angular.min.js
deleted file mode 100644
index cd416d1..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angular/angular.min.js
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- AngularJS v1.3.0-build.2607+sha.b2e48e6
- (c) 2010-2014 Google, Inc. http://angularjs.org
- License: MIT
-*/
-(function(O,V,r){'use strict';function B(b){return function(){var a=arguments[0],c,a="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.3.0-build.2607+sha.b2e48e6/"+(b?b+"/":"")+a;for(c=1;c<arguments.length;c++)a=a+(1==c?"?":"&")+"p"+(c-1)+"="+encodeURIComponent("function"==typeof arguments[c]?arguments[c].toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof arguments[c]?"undefined":"string"!=typeof arguments[c]?JSON.stringify(arguments[c]):arguments[c]);return Error(a)}}function db(b){if(null==
-b||Da(b))return!1;var a=b.length;return 1===b.nodeType&&a?!0:v(b)||L(b)||0===a||"number"===typeof a&&0<a&&a-1 in b}function q(b,a,c){var d;if(b)if(P(b))for(d in b)"prototype"==d||("length"==d||"name"==d||b.hasOwnProperty&&!b.hasOwnProperty(d))||a.call(c,b[d],d);else if(b.forEach&&b.forEach!==q)b.forEach(a,c);else if(db(b))for(d=0;d<b.length;d++)a.call(c,b[d],d);else for(d in b)b.hasOwnProperty(d)&&a.call(c,b[d],d);return b}function Vb(b){var a=[],c;for(c in b)b.hasOwnProperty(c)&&a.push(c);return a.sort()}
-function dd(b,a,c){for(var d=Vb(b),e=0;e<d.length;e++)a.call(c,b[d[e]],d[e]);return d}function Wb(b){return function(a,c){b(c,a)}}function eb(){for(var b=ka.length,a;b;){b--;a=ka[b].charCodeAt(0);if(57==a)return ka[b]="A",ka.join("");if(90==a)ka[b]="0";else return ka[b]=String.fromCharCode(a+1),ka.join("")}ka.unshift("0");return ka.join("")}function Xb(b,a){a?b.$$hashKey=a:delete b.$$hashKey}function D(b){var a=b.$$hashKey;q(arguments,function(a){a!==b&&q(a,function(a,c){b[c]=a})});Xb(b,a);return b}
-function Y(b){return parseInt(b,10)}function Yb(b,a){return D(new (D(function(){},{prototype:b})),a)}function w(){}function Ea(b){return b}function aa(b){return function(){return b}}function E(b){return"undefined"===typeof b}function A(b){return"undefined"!==typeof b}function T(b){return null!=b&&"object"===typeof b}function v(b){return"string"===typeof b}function Ab(b){return"number"===typeof b}function ra(b){return"[object Date]"===ya.call(b)}function L(b){return"[object Array]"===ya.call(b)}function P(b){return"function"===
-typeof b}function fb(b){return"[object RegExp]"===ya.call(b)}function Da(b){return b&&b.document&&b.location&&b.alert&&b.setInterval}function ed(b){return!(!b||!(b.nodeName||b.prop&&b.attr&&b.find))}function fd(b,a,c){var d=[];q(b,function(b,f,g){d.push(a.call(c,b,f,g))});return d}function gb(b,a){if(b.indexOf)return b.indexOf(a);for(var c=0;c<b.length;c++)if(a===b[c])return c;return-1}function Fa(b,a){var c=gb(b,a);0<=c&&b.splice(c,1);return a}function ca(b,a){if(Da(b)||b&&b.$evalAsync&&b.$watch)throw Pa("cpws");
-if(a){if(b===a)throw Pa("cpi");if(L(b))for(var c=a.length=0;c<b.length;c++)a.push(ca(b[c]));else{c=a.$$hashKey;q(a,function(b,c){delete a[c]});for(var d in b)a[d]=ca(b[d]);Xb(a,c)}}else(a=b)&&(L(b)?a=ca(b,[]):ra(b)?a=new Date(b.getTime()):fb(b)?a=RegExp(b.source):T(b)&&(a=ca(b,{})));return a}function Zb(b,a){a=a||{};for(var c in b)!b.hasOwnProperty(c)||"$"===c.charAt(0)&&"$"===c.charAt(1)||(a[c]=b[c]);return a}function za(b,a){if(b===a)return!0;if(null===b||null===a)return!1;if(b!==b&&a!==a)return!0;
-var c=typeof b,d;if(c==typeof a&&"object"==c)if(L(b)){if(!L(a))return!1;if((c=b.length)==a.length){for(d=0;d<c;d++)if(!za(b[d],a[d]))return!1;return!0}}else{if(ra(b))return ra(a)&&b.getTime()==a.getTime();if(fb(b)&&fb(a))return b.toString()==a.toString();if(b&&b.$evalAsync&&b.$watch||a&&a.$evalAsync&&a.$watch||Da(b)||Da(a)||L(a))return!1;c={};for(d in b)if("$"!==d.charAt(0)&&!P(b[d])){if(!za(b[d],a[d]))return!1;c[d]=!0}for(d in a)if(!c.hasOwnProperty(d)&&"$"!==d.charAt(0)&&a[d]!==r&&!P(a[d]))return!1;
-return!0}return!1}function $b(){return V.securityPolicy&&V.securityPolicy.isActive||V.querySelector&&!(!V.querySelector("[ng-csp]")&&!V.querySelector("[data-ng-csp]"))}function hb(b,a){var c=2<arguments.length?sa.call(arguments,2):[];return!P(a)||a instanceof RegExp?a:c.length?function(){return arguments.length?a.apply(b,c.concat(sa.call(arguments,0))):a.apply(b,c)}:function(){return arguments.length?a.apply(b,arguments):a.call(b)}}function gd(b,a){var c=a;"string"===typeof b&&"$"===b.charAt(0)?c=
-r:Da(a)?c="$WINDOW":a&&V===a?c="$DOCUMENT":a&&(a.$evalAsync&&a.$watch)&&(c="$SCOPE");return c}function ta(b,a){return"undefined"===typeof b?r:JSON.stringify(b,gd,a?"  ":null)}function ac(b){return v(b)?JSON.parse(b):b}function Qa(b){"function"===typeof b?b=!0:b&&0!==b.length?(b=I(""+b),b=!("f"==b||"0"==b||"false"==b||"no"==b||"n"==b||"[]"==b)):b=!1;return b}function ha(b){b=y(b).clone();try{b.empty()}catch(a){}var c=y("<div>").append(b).html();try{return 3===b[0].nodeType?I(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,
-function(a,b){return"<"+I(b)})}catch(d){return I(c)}}function bc(b){try{return decodeURIComponent(b)}catch(a){}}function cc(b){var a={},c,d;q((b||"").split("&"),function(b){b&&(c=b.split("="),d=bc(c[0]),A(d)&&(b=A(c[1])?bc(c[1]):!0,a[d]?L(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function dc(b){var a=[];q(b,function(b,d){L(b)?q(b,function(b){a.push(Aa(d,!0)+(!0===b?"":"="+Aa(b,!0)))}):a.push(Aa(d,!0)+(!0===b?"":"="+Aa(b,!0)))});return a.length?a.join("&"):""}function Bb(b){return Aa(b,
-!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function Aa(b,a){return encodeURIComponent(b).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,a?"%20":"+")}function hd(b,a){var c,d,e=ec.length;b=y(b);for(d=0;d<e;++d)if(c=ec[d]+a,v(c=b.attr(c)))return c;return null}function id(b,a){function c(a){a&&d.push(a)}var d=[b],e,f,g={},h=["ng:app","ng-app","x-ng-app","data-ng-app"],l=/\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;q(h,function(a){h[a]=
-!0;c(V.getElementById(a));a=a.replace(":","\\:");b.querySelectorAll&&(q(b.querySelectorAll("."+a),c),q(b.querySelectorAll("."+a+"\\:"),c),q(b.querySelectorAll("["+a+"]"),c))});q(d,function(a){if(!e){var b=l.exec(" "+a.className+" ");b?(e=a,f=(b[2]||"").replace(/\s+/g,",")):q(a.attributes,function(b){!e&&h[b.name]&&(e=a,f=b.value)})}});e&&(g.strictDi=null!==hd(e,"strict-di"),a(e,f?[f]:[],g))}function fc(b,a,c){T(c)||(c={});c=D({strictDi:!1},c);var d=function(){b=y(b);if(b.injector()){var d=b[0]===
-V?"document":ha(b);throw Pa("btstrpd",d);}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);a.unshift("ng");d=Cb(a,c.strictDi);d.invoke(["$rootScope","$rootElement","$compile","$injector","$animate",function(a,b,c,d,e){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return d},e=/^NG_DEFER_BOOTSTRAP!/;if(O&&!e.test(O.name))return d();O.name=O.name.replace(e,"");Ra.resumeBootstrap=function(b){q(b,function(b){a.push(b)});d()}}function ib(b,a){a=a||"_";return b.replace(jd,
-function(b,d){return(d?a:"")+b.toLowerCase()})}function Db(b,a,c){if(!b)throw Pa("areq",a||"?",c||"required");return b}function Sa(b,a,c){c&&L(b)&&(b=b[b.length-1]);Db(P(b),a,"not a function, got "+(b&&"object"==typeof b?b.constructor.name||"Object":typeof b));return b}function Ba(b,a){if("hasOwnProperty"===b)throw Pa("badname",a);}function gc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g<f;g++)d=a[g],b&&(b=(e=b)[d]);return!c&&P(b)?hb(e,b):b}function Eb(b){var a=b[0];b=b[b.length-
-1];if(a===b)return y(a);var c=[a];do{a=a.nextSibling;if(!a)break;c.push(a)}while(a!==b);return y(c)}function kd(b){var a=B("$injector"),c=B("ng");b=b.angular||(b.angular={});b.$$minErr=b.$$minErr||B;return b.module||(b.module=function(){var b={};return function(e,f,g){if("hasOwnProperty"===e)throw c("badname","module");f&&b.hasOwnProperty(e)&&(b[e]=null);return b[e]||(b[e]=function(){function b(a,d,e){return function(){c[e||"push"]([a,d,arguments]);return p}}if(!f)throw a("nomod",e);var c=[],d=[],
-m=b("$injector","invoke"),p={_invokeQueue:c,_runBlocks:d,requires:f,name:e,provider:b("$provide","provider"),factory:b("$provide","factory"),service:b("$provide","service"),value:b("$provide","value"),constant:b("$provide","constant","unshift"),animation:b("$animateProvider","register"),filter:b("$filterProvider","register"),controller:b("$controllerProvider","register"),directive:b("$compileProvider","directive"),config:m,run:function(a){d.push(a);return this}};g&&m(g);return p}())}}())}function ld(b){D(b,
-{bootstrap:fc,copy:ca,extend:D,equals:za,element:y,forEach:q,injector:Cb,noop:w,bind:hb,toJson:ta,fromJson:ac,identity:Ea,isUndefined:E,isDefined:A,isString:v,isFunction:P,isObject:T,isNumber:Ab,isElement:ed,isArray:L,version:md,isDate:ra,lowercase:I,uppercase:Ga,callbacks:{counter:0},$$minErr:B,$$csp:$b});Ta=kd(O);try{Ta("ngLocale")}catch(a){Ta("ngLocale",[]).provider("$locale",nd)}Ta("ng",["ngLocale"],["$provide",function(a){a.provider({$$sanitizeUri:od});a.provider("$compile",hc).directive({a:pd,
-input:ic,textarea:ic,form:qd,script:rd,select:sd,style:td,option:ud,ngBind:vd,ngBindHtml:wd,ngBindTemplate:xd,ngClass:yd,ngClassEven:zd,ngClassOdd:Ad,ngCloak:Bd,ngController:Cd,ngForm:Dd,ngHide:Ed,ngIf:Fd,ngInclude:Gd,ngInit:Hd,ngNonBindable:Id,ngPluralize:Jd,ngRepeat:Kd,ngShow:Ld,ngStyle:Md,ngSwitch:Nd,ngSwitchWhen:Od,ngSwitchDefault:Pd,ngOptions:Qd,ngTransclude:Rd,ngModel:Sd,ngList:Td,ngChange:Ud,required:jc,ngRequired:jc,ngValue:Vd,ngModelOptions:Wd}).directive({ngInclude:Xd}).directive(Fb).directive(kc);
-a.provider({$anchorScroll:Yd,$animate:Zd,$browser:$d,$cacheFactory:ae,$controller:be,$document:ce,$exceptionHandler:de,$filter:lc,$interpolate:ee,$interval:fe,$http:ge,$httpBackend:he,$location:ie,$log:je,$parse:ke,$rootScope:le,$q:me,$sce:ne,$sceDelegate:oe,$sniffer:pe,$templateCache:qe,$timeout:re,$window:se,$$rAF:te,$$asyncCallback:ue})}])}function Ua(b){return b.replace(ve,function(a,b,d,e){return e?d.toUpperCase():d}).replace(we,"Moz$1")}function Gb(b,a,c,d){function e(b){var e=c&&b?[this.filter(b)]:
-[this],l=a,k,m,p,n,s,t;if(!d||null!=b)for(;e.length;)for(k=e.shift(),m=0,p=k.length;m<p;m++)for(n=y(k[m]),l?n.triggerHandler("$destroy"):l=!l,s=0,n=(t=n.children()).length;s<n;s++)e.push(Ha(t[s]));return f.apply(this,arguments)}var f=Ha.fn[b],f=f.$original||f;e.$original=f;Ha.fn[b]=e}function xe(b,a){var c,d,e=a.createDocumentFragment(),f=[];if(Hb.test(b)){c=c||e.appendChild(a.createElement("div"));d=(ye.exec(b)||["",""])[1].toLowerCase();d=ea[d]||ea._default;c.innerHTML=d[1]+b.replace(ze,"<$1></$2>")+
-d[2];for(d=d[0];d--;)c=c.lastChild;f=f.concat(sa.call(c.childNodes,void 0));c=e.firstChild;c.textContent=""}else f.push(a.createTextNode(b));e.textContent="";e.innerHTML="";q(f,function(a){e.appendChild(a)});return e}function M(b){if(b instanceof M)return b;v(b)&&(b=ba(b));if(!(this instanceof M)){if(v(b)&&"<"!=b.charAt(0))throw Ib("nosel");return new M(b)}if(v(b)){var a;a=V;var c;b=(c=Ae.exec(b))?[a.createElement(c[1])]:(c=xe(b,a))?c.childNodes:[]}mc(this,b)}function Jb(b){return b.cloneNode(!0)}
-function Ia(b){nc(b);var a=0;for(b=b.childNodes||[];a<b.length;a++)Ia(b[a])}function oc(b,a,c,d){if(A(d))throw Ib("offargs");var e=la(b,"events");la(b,"handle")&&(E(a)?q(e,function(a,c){Va(b,c,a);delete e[c]}):q(a.split(" "),function(a){E(c)?(Va(b,a,e[a]),delete e[a]):Fa(e[a]||[],c)}))}function nc(b,a){var c=b[jb],d=Wa[c];d&&(a?delete Wa[c].data[a]:(d.handle&&(d.events.$destroy&&d.handle({},"$destroy"),oc(b)),delete Wa[c],b[jb]=r))}function la(b,a,c){var d=b[jb],d=Wa[d||-1];if(A(c))d||(b[jb]=d=++Be,
-d=Wa[d]={}),d[a]=c;else return d&&d[a]}function pc(b,a,c){var d=la(b,"data"),e=A(c),f=!e&&A(a),g=f&&!T(a);d||g||la(b,"data",d={});if(e)d[a]=c;else if(f){if(g)return d&&d[a];D(d,a)}else return d}function Kb(b,a){return b.getAttribute?-1<(" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+a+" "):!1}function kb(b,a){a&&b.setAttribute&&q(a.split(" "),function(a){b.setAttribute("class",ba((" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+ba(a)+" "," ")))})}
-function lb(b,a){if(a&&b.setAttribute){var c=(" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");q(a.split(" "),function(a){a=ba(a);-1===c.indexOf(" "+a+" ")&&(c+=a+" ")});b.setAttribute("class",ba(c))}}function mc(b,a){if(a){a=a.nodeName||!A(a.length)||Da(a)?[a]:a;for(var c=0;c<a.length;c++)b.push(a[c])}}function qc(b,a){return mb(b,"$"+(a||"ngController")+"Controller")}function mb(b,a,c){b=y(b);9==b[0].nodeType&&(b=b.find("html"));for(a=L(a)?a:[a];b.length;){for(var d=b[0],e=0,f=a.length;e<
-f;e++)if((c=b.data(a[e]))!==r)return c;b=y(d.parentNode||11===d.nodeType&&d.host)}}function rc(b){for(var a=0,c=b.childNodes;a<c.length;a++)Ia(c[a]);for(;b.firstChild;)b.removeChild(b.firstChild)}function sc(b,a){var c=nb[a.toLowerCase()];return c&&tc[b.nodeName]&&c}function Ce(b,a){var c=function(c,e){c.preventDefault||(c.preventDefault=function(){c.returnValue=!1});c.stopPropagation||(c.stopPropagation=function(){c.cancelBubble=!0});c.target||(c.target=c.srcElement||V);if(E(c.defaultPrevented)){var f=
-c.preventDefault;c.preventDefault=function(){c.defaultPrevented=!0;f.call(c)};c.defaultPrevented=!1}c.isDefaultPrevented=function(){return c.defaultPrevented||!1===c.returnValue};var g=Zb(a[e||c.type]||[]);q(g,function(a){a.call(b,c)});8>=U?(c.preventDefault=null,c.stopPropagation=null,c.isDefaultPrevented=null):(delete c.preventDefault,delete c.stopPropagation,delete c.isDefaultPrevented)};c.elem=b;return c}function Ja(b){var a=typeof b,c;"object"==a&&null!==b?"function"==typeof(c=b.$$hashKey)?c=
-b.$$hashKey():c===r&&(c=b.$$hashKey=eb()):c=b;return a+":"+c}function Xa(b){q(b,this.put,this)}function De(b){return(b=b.toString().replace(uc,"").match(vc))?"function("+(b[1]||"").replace(/[\s\r\n]+/," ")+")":"fn"}function Lb(b,a,c){var d;if("function"==typeof b){if(!(d=b.$inject)){d=[];if(b.length){if(a)throw v(c)&&c||(c=b.name||De(b)),Ka("strictdi",c);a=b.toString().replace(uc,"");a=a.match(vc);q(a[1].split(Ee),function(a){a.replace(Fe,function(a,b,c){d.push(c)})})}b.$inject=d}}else L(b)?(a=b.length-
-1,Sa(b[a],"fn"),d=b.slice(0,a)):Sa(b,"fn",!0);return d}function Cb(b,a){function c(a){return function(b,c){if(T(b))q(b,Wb(a));else return a(b,c)}}function d(a,b){Ba(a,"service");if(P(b)||L(b))b=n.instantiate(b);if(!b.$get)throw Ka("pget",a);return p[a+l]=b}function e(a,b){return d(a,{$get:b})}function f(a){var b=[],c,d,e,h;q(a,function(a){if(!m.get(a)){m.put(a,!0);try{if(v(a))for(c=Ta(a),b=b.concat(f(c.requires)).concat(c._runBlocks),d=c._invokeQueue,e=0,h=d.length;e<h;e++){var g=d[e],l=n.get(g[0]);
-l[g[1]].apply(l,g[2])}else P(a)?b.push(n.invoke(a)):L(a)?b.push(n.invoke(a)):Sa(a,"module")}catch(k){throw L(a)&&(a=a[a.length-1]),k.message&&(k.stack&&-1==k.stack.indexOf(k.message))&&(k=k.message+"\n"+k.stack),Ka("modulerr",a,k.stack||k.message||k);}}});return b}function g(b,c){function d(a){if(b.hasOwnProperty(a)){if(b[a]===h)throw Ka("cdep",k.join(" <- "));return b[a]}try{return k.unshift(a),b[a]=h,b[a]=c(a)}catch(e){throw b[a]===h&&delete b[a],e;}finally{k.shift()}}function e(b,c,f,h){"string"===
-typeof f&&(h=f,f=null);var g=[];h=Lb(b,a,h);var l,k,m;k=0;for(l=h.length;k<l;k++){m=h[k];if("string"!==typeof m)throw Ka("itkn",m);g.push(f&&f.hasOwnProperty(m)?f[m]:d(m))}b.$inject||(b=b[l]);return b.apply(c,g)}return{invoke:e,instantiate:function(a,b,c){var d=function(){};d.prototype=(L(a)?a[a.length-1]:a).prototype;d=new d;a=e(a,d,b,c);return T(a)||P(a)?a:d},get:d,annotate:Lb,has:function(a){return p.hasOwnProperty(a+l)||b.hasOwnProperty(a)}}}a=!0===a;var h={},l="Provider",k=[],m=new Xa,p={$provide:{provider:c(d),
-factory:c(e),service:c(function(a,b){return e(a,["$injector",function(a){return a.instantiate(b)}])}),value:c(function(a,b){return e(a,aa(b))}),constant:c(function(a,b){Ba(a,"constant");p[a]=b;s[a]=b}),decorator:function(a,b){var c=n.get(a+l),d=c.$get;c.$get=function(){var a=t.invoke(d,c);return t.invoke(b,null,{$delegate:a})}}}},n=p.$injector=g(p,function(){throw Ka("unpr",k.join(" <- "));},a),s={},t=s.$injector=g(s,function(a){var b=n.get(a+l);return t.invoke(b.$get,b,r,a)},a);q(f(b),function(a){t.invoke(a||
-w)});return t}function Yd(){var b=!0;this.disableAutoScrolling=function(){b=!1};this.$get=["$window","$location","$rootScope",function(a,c,d){function e(a){var b=null;q(a,function(a){b||"a"!==I(a.nodeName)||(b=a)});return b}function f(){var b=c.hash(),d;b?(d=g.getElementById(b))?d.scrollIntoView():(d=e(g.getElementsByName(b)))?d.scrollIntoView():"top"===b&&a.scrollTo(0,0):a.scrollTo(0,0)}var g=a.document;b&&d.$watch(function(){return c.hash()},function(){d.$evalAsync(f)});return f}]}function ue(){this.$get=
-["$$rAF","$timeout",function(b,a){return b.supported?function(a){return b(a)}:function(b){return a(b,0,!1)}}]}function Ge(b,a,c,d){function e(a){try{a.apply(null,sa.call(arguments,1))}finally{if(t--,0===t)for(;H.length;)try{H.pop()()}catch(b){c.error(b)}}}function f(a,b){(function S(){q(x,function(a){a()});u=b(S,a)})()}function g(){z=null;N!=h.url()&&(N=h.url(),q(ma,function(a){a(h.url())}))}var h=this,l=a[0],k=b.location,m=b.history,p=b.setTimeout,n=b.clearTimeout,s={};h.isMock=!1;var t=0,H=[];h.$$completeOutstandingRequest=
-e;h.$$incOutstandingRequestCount=function(){t++};h.notifyWhenNoOutstandingRequests=function(a){q(x,function(a){a()});0===t?a():H.push(a)};var x=[],u;h.addPollFn=function(a){E(u)&&f(100,p);x.push(a);return a};var N=k.href,G=a.find("base"),z=null;h.url=function(a,c){k!==b.location&&(k=b.location);m!==b.history&&(m=b.history);if(a){if(N!=a)return N=a,d.history?c?m.replaceState(null,"",a):(m.pushState(null,"",a),G.attr("href",G.attr("href"))):(z=a,c?k.replace(a):k.href=a),h}else return z||k.href.replace(/%27/g,
-"'")};var ma=[],K=!1;h.onUrlChange=function(a){if(!K){if(d.history)y(b).on("popstate",g);if(d.hashchange)y(b).on("hashchange",g);else h.addPollFn(g);K=!0}ma.push(a);return a};h.baseHref=function(){var a=G.attr("href");return a?a.replace(/^(https?\:)?\/\/[^\/]*/,""):""};var Q={},da="",C=h.baseHref();h.cookies=function(a,b){var d,e,f,h;if(a)b===r?l.cookie=escape(a)+"=;path="+C+";expires=Thu, 01 Jan 1970 00:00:00 GMT":v(b)&&(d=(l.cookie=escape(a)+"="+escape(b)+";path="+C).length+1,4096<d&&c.warn("Cookie '"+
-a+"' possibly not set or overflowed because it was too large ("+d+" > 4096 bytes)!"));else{if(l.cookie!==da)for(da=l.cookie,d=da.split("; "),Q={},f=0;f<d.length;f++)e=d[f],h=e.indexOf("="),0<h&&(a=unescape(e.substring(0,h)),Q[a]===r&&(Q[a]=unescape(e.substring(h+1))));return Q}};h.defer=function(a,b){var c;t++;c=p(function(){delete s[c];e(a)},b||0);s[c]=!0;return c};h.defer.cancel=function(a){return s[a]?(delete s[a],n(a),e(w),!0):!1}}function $d(){this.$get=["$window","$log","$sniffer","$document",
-function(b,a,c,d){return new Ge(b,d,a,c)}]}function ae(){this.$get=function(){function b(b,d){function e(a){a!=p&&(n?n==a&&(n=a.n):n=a,f(a.n,a.p),f(a,p),p=a,p.n=null)}function f(a,b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(b in a)throw B("$cacheFactory")("iid",b);var g=0,h=D({},d,{id:b}),l={},k=d&&d.capacity||Number.MAX_VALUE,m={},p=null,n=null;return a[b]={put:function(a,b){if(k<Number.MAX_VALUE){var c=m[a]||(m[a]={key:a});e(c)}if(!E(b))return a in l||g++,l[a]=b,g>k&&this.remove(n.key),b},get:function(a){if(k<
-Number.MAX_VALUE){var b=m[a];if(!b)return;e(b)}return l[a]},remove:function(a){if(k<Number.MAX_VALUE){var b=m[a];if(!b)return;b==p&&(p=b.p);b==n&&(n=b.n);f(b.n,b.p);delete m[a]}delete l[a];g--},removeAll:function(){l={};g=0;m={};p=n=null},destroy:function(){m=h=l=null;delete a[b]},info:function(){return D({},h,{size:g})}}}var a={};b.info=function(){var b={};q(a,function(a,e){b[e]=a.info()});return b};b.get=function(b){return a[b]};return b}}function qe(){this.$get=["$cacheFactory",function(b){return b("templates")}]}
-function hc(b,a){var c={},d="Directive",e=/^\s*directive\:\s*([\d\w\-_]+)\s+(.*)$/,f=/(([\d\w\-_]+)(?:\:([^;]+))?;?)/,g=/^(on[a-z]+|formaction)$/;this.directive=function l(a,e){Ba(a,"directive");v(a)?(Db(e,"directiveFactory"),c.hasOwnProperty(a)||(c[a]=[],b.factory(a+d,["$injector","$exceptionHandler",function(b,d){var e=[];q(c[a],function(c,f){try{var g=b.invoke(c);P(g)?g={compile:aa(g)}:!g.compile&&g.link&&(g.compile=aa(g.link));g.priority=g.priority||0;g.index=f;g.name=g.name||a;g.require=g.require||
-g.controller&&g.name;g.restrict=g.restrict||"A";e.push(g)}catch(l){d(l)}});return e}])),c[a].push(e)):q(a,Wb(l));return this};this.aHrefSanitizationWhitelist=function(b){return A(b)?(a.aHrefSanitizationWhitelist(b),this):a.aHrefSanitizationWhitelist()};this.imgSrcSanitizationWhitelist=function(b){return A(b)?(a.imgSrcSanitizationWhitelist(b),this):a.imgSrcSanitizationWhitelist()};this.$get=["$injector","$interpolate","$exceptionHandler","$http","$templateCache","$parse","$controller","$rootScope",
-"$document","$sce","$animate","$$sanitizeUri",function(a,b,m,p,n,s,t,H,x,u,N,G){function z(a,b,c,d,e){a instanceof y||(a=y(a));q(a,function(b,c){3==b.nodeType&&b.nodeValue.match(/\S+/)&&(a[c]=y(b).wrap("<span></span>").parent()[0])});var f=K(a,b,a,c,d,e);ma(a,"ng-scope");return function(b,c,d){Db(b,"scope");var e=c?La.clone.call(a):a;q(d,function(a,b){e.data("$"+b+"Controller",a)});d=0;for(var g=e.length;d<g;d++){var l=e[d].nodeType;1!==l&&9!==l||e.eq(d).data("$scope",b)}c&&c(e,b);f&&f(b,e,e);return e}}
-function ma(a,b){try{a.addClass(b)}catch(c){}}function K(a,b,c,d,e,f){function g(a,c,d,e){var f,k,m,p,n,s,t;f=c.length;var J=Array(f);for(n=0;n<f;n++)J[n]=c[n];t=n=0;for(s=l.length;n<s;t++)k=J[t],c=l[n++],f=l[n++],m=y(k),c?(c.scope?(p=a.$new(),m.data("$scope",p)):p=a,(m=c.transclude)||!e&&b?c(f,p,k,d,Q(a,m||b)):c(f,p,k,d,e)):f&&f(a,k.childNodes,r,e)}for(var l=[],k,m,p,n,s=0;s<a.length;s++)k=new Mb,m=da(a[s],[],k,0===s?d:r,e),(f=m.length?ia(m,a[s],k,b,c,null,[],[],f):null)&&f.scope&&ma(y(a[s]),"ng-scope"),
-k=f&&f.terminal||!(p=a[s].childNodes)||!p.length?null:K(p,f?f.transclude:b),l.push(f,k),n=n||f||k,f=null;return n?g:null}function Q(a,b){return function(c,d,e){var f=!1;c||(c=a.$new(),f=c.$$transcluded=!0);d=b(c,d,e);if(f)d.on("$destroy",hb(c,c.$destroy));return d}}function da(a,b,c,d,g){var k=c.$attr,l;switch(a.nodeType){case 1:S(b,na(Ma(a).toLowerCase()),"E",d,g);var m,p,n;l=a.attributes;for(var s=0,t=l&&l.length;s<t;s++){var x=!1,H=!1;m=l[s];if(!U||8<=U||m.specified){p=m.name;n=na(p);X.test(n)&&
-(p=ib(n.substr(6),"-"));var N=n.replace(/(Start|End)$/,"");n===N+"Start"&&(x=p,H=p.substr(0,p.length-5)+"end",p=p.substr(0,p.length-6));n=na(p.toLowerCase());k[n]=p;c[n]=m=ba(m.value);sc(a,n)&&(c[n]=!0);M(a,b,m,n);S(b,n,"A",d,g,x,H)}}a=a.className;if(v(a)&&""!==a)for(;l=f.exec(a);)n=na(l[2]),S(b,n,"C",d,g)&&(c[n]=ba(l[3])),a=a.substr(l.index+l[0].length);break;case 3:B(b,a.nodeValue);break;case 8:try{if(l=e.exec(a.nodeValue))n=na(l[1]),S(b,n,"M",d,g)&&(c[n]=ba(l[2]))}catch(u){}}b.sort(E);return b}
-function C(a,b,c){var d=[],e=0;if(b&&a.hasAttribute&&a.hasAttribute(b)){do{if(!a)throw ja("uterdir",b,c);1==a.nodeType&&(a.hasAttribute(b)&&e++,a.hasAttribute(c)&&e--);d.push(a);a=a.nextSibling}while(0<e)}else d.push(a);return y(d)}function R(a,b,c){return function(d,e,f,g,l){e=C(e[0],b,c);return a(d,e,f,g,l)}}function ia(a,c,d,e,f,g,l,n,p){function x(a,b,c,d){if(a){c&&(a=R(a,c,d));a.require=F.require;a.directiveName=B;if(Q===F||F.$$isolateScope)a=xc(a,{isolateScope:!0});l.push(a)}if(b){c&&(b=R(b,
-c,d));b.require=F.require;b.directiveName=B;if(Q===F||F.$$isolateScope)b=xc(b,{isolateScope:!0});n.push(b)}}function H(a,b,c,d){var e,f="data",g=!1;if(v(b)){for(;"^"==(e=b.charAt(0))||"?"==e;)b=b.substr(1),"^"==e&&(f="inheritedData"),g=g||"?"==e;e=null;d&&"data"===f&&(e=d[b]);e=e||c[f]("$"+b+"Controller");if(!e&&!g)throw ja("ctreq",b,a);}else L(b)&&(e=[],q(b,function(b){e.push(H(a,b,c,d))}));return e}function N(a,e,f,g,p){function x(a,b){var c;2>arguments.length&&(b=a,a=r);D&&(c=da);return p(a,b,
-c)}var u,J,z,G,R,C,da={},ob;u=c===f?d:Zb(d,new Mb(y(f),d.$attr));J=u.$$element;if(Q){var S=/^\s*([@=&])(\??)\s*(\w*)\s*$/;g=y(f);C=e.$new(!0);ia&&ia===Q.$$originalDirective?g.data("$isolateScope",C):g.data("$isolateScopeNoTemplate",C);ma(g,"ng-isolate-scope");q(Q.scope,function(a,c){var d=a.match(S)||[],f=d[3]||c,g="?"==d[2],d=d[1],l,m,p,n;C.$$isolateBindings[c]=d+f;switch(d){case "@":u.$observe(f,function(a){C[c]=a});u.$$observers[f].$$scope=e;u[f]&&(C[c]=b(u[f])(e));break;case "=":if(g&&!u[f])break;
-m=s(u[f]);n=m.literal?za:function(a,b){return a===b};p=m.assign||function(){l=C[c]=m(e);throw ja("nonassign",u[f],Q.name);};l=C[c]=m(e);C.$watch(function(){var a=m(e);n(a,C[c])||(n(a,l)?p(e,a=C[c]):C[c]=a);return l=a},null,m.literal);break;case "&":m=s(u[f]);C[c]=function(a){return m(e,a)};break;default:throw ja("iscp",Q.name,c,a);}})}ob=p&&x;K&&q(K,function(a){var b={$scope:a===Q||a.$$isolateScope?C:e,$element:J,$attrs:u,$transclude:ob},c;R=a.controller;"@"==R&&(R=u[a.name]);c=t(R,b);da[a.name]=
-c;D||J.data("$"+a.name+"Controller",c);a.controllerAs&&(b.$scope[a.controllerAs]=c)});g=0;for(z=l.length;g<z;g++)try{G=l[g],G(G.isolateScope?C:e,J,u,G.require&&H(G.directiveName,G.require,J,da),ob)}catch(F){m(F,ha(J))}g=e;Q&&(Q.template||null===Q.templateUrl)&&(g=C);a&&a(g,f.childNodes,r,p);for(g=n.length-1;0<=g;g--)try{G=n[g],G(G.isolateScope?C:e,J,u,G.require&&H(G.directiveName,G.require,J,da),ob)}catch(A){m(A,ha(J))}}p=p||{};for(var u=-Number.MAX_VALUE,G,K=p.controllerDirectives,Q=p.newIsolateScopeDirective,
-ia=p.templateDirective,S=p.nonTlbTranscludeDirective,E=!1,D=p.hasElementTranscludeDirective,Z=d.$$element=y(c),F,B,W,Ya=e,O,M=0,oa=a.length;M<oa;M++){F=a[M];var U=F.$$start,X=F.$$end;U&&(Z=C(c,U,X));W=r;if(u>F.priority)break;if(W=F.scope)G=G||F,F.templateUrl||(I("new/isolated scope",Q,F,Z),T(W)&&(Q=F));B=F.name;!F.templateUrl&&F.controller&&(W=F.controller,K=K||{},I("'"+B+"' controller",K[B],F,Z),K[B]=F);if(W=F.transclude)E=!0,F.$$tlb||(I("transclusion",S,F,Z),S=F),"element"==W?(D=!0,u=F.priority,
-W=C(c,U,X),Z=d.$$element=y(V.createComment(" "+B+": "+d[B]+" ")),c=Z[0],pb(f,y(sa.call(W,0)),c),Ya=z(W,e,u,g&&g.name,{nonTlbTranscludeDirective:S})):(W=y(Jb(c)).contents(),Z.empty(),Ya=z(W,e));if(F.template)if(I("template",ia,F,Z),ia=F,W=P(F.template)?F.template(Z,d):F.template,W=Y(W),F.replace){g=F;W=Hb.test(W)?y(ba(W)):[];c=W[0];if(1!=W.length||1!==c.nodeType)throw ja("tplrt",B,"");pb(f,Z,c);oa={$attr:{}};W=da(c,[],oa);var $=a.splice(M+1,a.length-(M+1));Q&&wc(W);a=a.concat(W).concat($);A(d,oa);
-oa=a.length}else Z.html(W);if(F.templateUrl)I("template",ia,F,Z),ia=F,F.replace&&(g=F),N=w(a.splice(M,a.length-M),Z,d,f,Ya,l,n,{controllerDirectives:K,newIsolateScopeDirective:Q,templateDirective:ia,nonTlbTranscludeDirective:S}),oa=a.length;else if(F.compile)try{O=F.compile(Z,d,Ya),P(O)?x(null,O,U,X):O&&x(O.pre,O.post,U,X)}catch(aa){m(aa,ha(Z))}F.terminal&&(N.terminal=!0,u=Math.max(u,F.priority))}N.scope=G&&!0===G.scope;N.transclude=E&&Ya;p.hasElementTranscludeDirective=D;return N}function wc(a){for(var b=
-0,c=a.length;b<c;b++)a[b]=Yb(a[b],{$$isolateScope:!0})}function S(b,e,f,g,k,p,n){if(e===k)return null;k=null;if(c.hasOwnProperty(e)){var s;e=a.get(e+d);for(var t=0,x=e.length;t<x;t++)try{s=e[t],(g===r||g>s.priority)&&-1!=s.restrict.indexOf(f)&&(p&&(s=Yb(s,{$$start:p,$$end:n})),b.push(s),k=s)}catch(H){m(H)}}return k}function A(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;q(a,function(d,e){"$"!=e.charAt(0)&&(b[e]&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});q(b,function(b,f){"class"==f?(ma(e,
-b),a["class"]=(a["class"]?a["class"]+" ":"")+b):"style"==f?(e.attr("style",e.attr("style")+";"+b),a.style=(a.style?a.style+";":"")+b):"$"==f.charAt(0)||a.hasOwnProperty(f)||(a[f]=b,d[f]=c[f])})}function w(a,b,c,d,e,f,g,l){var k=[],m,s,t=b[0],x=a.shift(),H=D({},x,{templateUrl:null,transclude:null,replace:null,$$originalDirective:x}),N=P(x.templateUrl)?x.templateUrl(b,c):x.templateUrl;b.empty();p.get(u.getTrustedResourceUrl(N),{cache:n}).success(function(p){var n,u;p=Y(p);if(x.replace){p=Hb.test(p)?
-y(ba(p)):[];n=p[0];if(1!=p.length||1!==n.nodeType)throw ja("tplrt",x.name,N);p={$attr:{}};pb(d,b,n);var z=da(n,[],p);T(x.scope)&&wc(z);a=z.concat(a);A(c,p)}else n=t,b.html(p);a.unshift(H);m=ia(a,n,c,e,b,x,f,g,l);q(d,function(a,c){a==n&&(d[c]=b[0])});for(s=K(b[0].childNodes,e);k.length;){p=k.shift();u=k.shift();var G=k.shift(),R=k.shift(),z=b[0];if(u!==t){var C=u.className;l.hasElementTranscludeDirective&&x.replace||(z=Jb(n));pb(G,y(u),z);ma(y(z),C)}u=m.transclude?Q(p,m.transclude):R;m(s,p,z,d,u)}k=
-null}).error(function(a,b,c,d){throw ja("tpload",d.url);});return function(a,b,c,d,e){k?(k.push(b),k.push(c),k.push(d),k.push(e)):m(s,b,c,d,e)}}function E(a,b){var c=b.priority-a.priority;return 0!==c?c:a.name!==b.name?a.name<b.name?-1:1:a.index-b.index}function I(a,b,c,d){if(b)throw ja("multidir",b.name,c.name,a,ha(d));}function B(a,c){var d=b(c,!0);d&&a.push({priority:0,compile:aa(function(a,b){var c=b.parent(),e=c.data("$binding")||[];e.push(d);ma(c.data("$binding",e),"ng-binding");a.$watch(d,
-function(a){b[0].nodeValue=a})})})}function O(a,b){if("srcdoc"==b)return u.HTML;var c=Ma(a);if("xlinkHref"==b||"FORM"==c&&"action"==b||"IMG"!=c&&("src"==b||"ngSrc"==b))return u.RESOURCE_URL}function M(a,c,d,e){var f=b(d,!0);if(f){if("multiple"===e&&"SELECT"===Ma(a))throw ja("selmulti",ha(a));c.push({priority:100,compile:function(){return{pre:function(c,d,l){d=l.$$observers||(l.$$observers={});if(g.test(e))throw ja("nodomevents");if(f=b(l[e],!0,O(a,e)))l[e]=f(c),(d[e]||(d[e]=[])).$$inter=!0,(l.$$observers&&
-l.$$observers[e].$$scope||c).$watch(f,function(a,b){"class"===e&&a!=b?l.$updateClass(a,b):l.$set(e,a)})}}}})}}function pb(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,l;if(a)for(g=0,l=a.length;g<l;g++)if(a[g]==d){a[g++]=c;l=g+e-1;for(var k=a.length;g<k;g++,l++)l<k?a[g]=a[l]:delete a[g];a.length-=e-1;break}f&&f.replaceChild(c,d);a=V.createDocumentFragment();a.appendChild(d);c[y.expando]=d[y.expando];d=1;for(e=b.length;d<e;d++)f=b[d],y(f).remove(),a.appendChild(f),delete b[d];b[0]=c;b.length=1}function xc(a,
-b){return D(function(){return a.apply(null,arguments)},a,b)}var Mb=function(a,b){this.$$element=a;this.$attr=b||{}};Mb.prototype={$normalize:na,$addClass:function(a){a&&0<a.length&&N.addClass(this.$$element,a)},$removeClass:function(a){a&&0<a.length&&N.removeClass(this.$$element,a)},$updateClass:function(a,b){var c=yc(a,b),d=yc(b,a);0===c.length?N.removeClass(this.$$element,d):0===d.length?N.addClass(this.$$element,c):N.setClass(this.$$element,c,d)},$set:function(a,b,c,d){var e=sc(this.$$element[0],
-a);e&&(this.$$element.prop(a,b),d=e);this[a]=b;d?this.$attr[a]=d:(d=this.$attr[a])||(this.$attr[a]=d=ib(a,"-"));e=Ma(this.$$element);if("A"===e&&"href"===a||"IMG"===e&&"src"===a)this[a]=b=G(b,"src"===a);!1!==c&&(null===b||b===r?this.$$element.removeAttr(d):this.$$element.attr(d,b));(c=this.$$observers)&&q(c[a],function(a){try{a(b)}catch(c){m(c)}})},$observe:function(a,b){var c=this,d=c.$$observers||(c.$$observers={}),e=d[a]||(d[a]=[]);e.push(b);H.$evalAsync(function(){e.$$inter||b(c[a])});return function(){Fa(e,
-b)}}};var Z=b.startSymbol(),oa=b.endSymbol(),Y="{{"==Z||"}}"==oa?Ea:function(a){return a.replace(/\{\{/g,Z).replace(/}}/g,oa)},X=/^ngAttr[A-Z]/;return z}]}function na(b){return Ua(b.replace(He,""))}function yc(b,a){var c="",d=b.split(/\s+/),e=a.split(/\s+/),f=0;a:for(;f<d.length;f++){for(var g=d[f],h=0;h<e.length;h++)if(g==e[h])continue a;c+=(0<c.length?" ":"")+g}return c}function be(){var b={},a=/^(\S+)(\s+as\s+(\w+))?$/;this.register=function(a,d){Ba(a,"controller");T(a)?D(b,a):b[a]=d};this.$get=
-["$injector","$window",function(c,d){return function(e,f){var g,h,l;v(e)&&(g=e.match(a),h=g[1],l=g[3],e=b.hasOwnProperty(h)?b[h]:gc(f.$scope,h,!0)||gc(d,h,!0),Sa(e,h,!0));g=c.instantiate(e,f,h);if(l){if(!f||"object"!=typeof f.$scope)throw B("$controller")("noscp",h||e.name,l);f.$scope[l]=g}return g}}]}function ce(){this.$get=["$window",function(b){return y(b.document)}]}function de(){this.$get=["$log",function(b){return function(a,c){b.error.apply(b,arguments)}}]}function zc(b){var a={},c,d,e;if(!b)return a;
-q(b.split("\n"),function(b){e=b.indexOf(":");c=I(ba(b.substr(0,e)));d=ba(b.substr(e+1));c&&(a[c]=a[c]?a[c]+(", "+d):d)});return a}function Ac(b){var a=T(b)?b:r;return function(c){a||(a=zc(b));return c?a[I(c)]||null:a}}function Bc(b,a,c){if(P(c))return c(b,a);q(c,function(c){b=c(b,a)});return b}function ge(){var b=/^\s*(\[|\{[^\{])/,a=/[\}\]]\s*$/,c=/^\)\]\}',?\n/,d={"Content-Type":"application/json;charset=utf-8"},e=this.defaults={transformResponse:[function(d){v(d)&&(d=d.replace(c,""),b.test(d)&&
-a.test(d)&&(d=ac(d)));return d}],transformRequest:[function(a){return T(a)&&"[object File]"!==ya.call(a)&&"[object Blob]"!==ya.call(a)?ta(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:ca(d),put:ca(d),patch:ca(d)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"},f=this.interceptors=[],g=this.responseInterceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector",function(a,b,c,d,p,n){function s(a){function c(a){var b=D({},a,{data:Bc(a.data,
-a.headers,d.transformResponse)});return 200<=a.status&&300>a.status?b:p.reject(b)}var d={method:"get",transformRequest:e.transformRequest,transformResponse:e.transformResponse},f=function(a){function b(a){var c;q(a,function(b,d){P(b)&&(c=b(),null!=c?a[d]=c:delete a[d])})}var c=e.headers,d=D({},a.headers),f,g,c=D({},c.common,c[I(a.method)]);b(c);b(d);a:for(f in c){a=I(f);for(g in d)if(I(g)===a)continue a;d[f]=c[f]}return d}(a);D(d,a);d.headers=f;d.method=Ga(d.method);(a=Nb(d.url)?b.cookies()[d.xsrfCookieName||
-e.xsrfCookieName]:r)&&(f[d.xsrfHeaderName||e.xsrfHeaderName]=a);var g=[function(a){f=a.headers;var b=Bc(a.data,Ac(f),a.transformRequest);E(a.data)&&q(f,function(a,b){"content-type"===I(b)&&delete f[b]});E(a.withCredentials)&&!E(e.withCredentials)&&(a.withCredentials=e.withCredentials);return t(a,b,f).then(c,c)},r],h=p.when(d);for(q(u,function(a){(a.request||a.requestError)&&g.unshift(a.request,a.requestError);(a.response||a.responseError)&&g.push(a.response,a.responseError)});g.length;){a=g.shift();
-var k=g.shift(),h=h.then(a,k)}h.success=function(a){h.then(function(b){a(b.data,b.status,b.headers,d)});return h};h.error=function(a){h.then(null,function(b){a(b.data,b.status,b.headers,d)});return h};return h}function t(b,c,f){function g(a,b,c,e){u&&(200<=a&&300>a?u.put(r,[a,b,zc(c),e]):u.remove(r));l(b,a,c,e);d.$$phase||d.$apply()}function l(a,c,d,e){c=Math.max(c,0);(200<=c&&300>c?n.resolve:n.reject)({data:a,status:c,headers:Ac(d),config:b,statusText:e})}function k(){var a=gb(s.pendingRequests,
-b);-1!==a&&s.pendingRequests.splice(a,1)}var n=p.defer(),t=n.promise,u,q,r=H(b.url,b.params);s.pendingRequests.push(b);t.then(k,k);(b.cache||e.cache)&&(!1!==b.cache&&"GET"==b.method)&&(u=T(b.cache)?b.cache:T(e.cache)?e.cache:x);if(u)if(q=u.get(r),A(q)){if(q.then)return q.then(k,k),q;L(q)?l(q[1],q[0],ca(q[2]),q[3]):l(q,200,{},"OK")}else u.put(r,t);E(q)&&a(b.method,r,c,g,f,b.timeout,b.withCredentials,b.responseType);return t}function H(a,b){if(!b)return a;var c=[];dd(b,function(a,b){null===a||E(a)||
-(L(a)||(a=[a]),q(a,function(a){T(a)&&(a=ta(a));c.push(Aa(b)+"="+Aa(a))}))});0<c.length&&(a+=(-1==a.indexOf("?")?"?":"&")+c.join("&"));return a}var x=c("$http"),u=[];q(f,function(a){u.unshift(v(a)?n.get(a):n.invoke(a))});q(g,function(a,b){var c=v(a)?n.get(a):n.invoke(a);u.splice(b,0,{response:function(a){return c(p.when(a))},responseError:function(a){return c(p.reject(a))}})});s.pendingRequests=[];(function(a){q(arguments,function(a){s[a]=function(b,c){return s(D(c||{},{method:a,url:b}))}})})("get",
-"delete","head","jsonp");(function(a){q(arguments,function(a){s[a]=function(b,c,d){return s(D(d||{},{method:a,url:b,data:c}))}})})("post","put");s.defaults=e;return s}]}function Ie(b){if(8>=U&&(!b.match(/^(get|post|head|put|delete|options)$/i)||!O.XMLHttpRequest))return new O.ActiveXObject("Microsoft.XMLHTTP");if(O.XMLHttpRequest)return new O.XMLHttpRequest;throw B("$httpBackend")("noxhr");}function he(){this.$get=["$browser","$window","$document",function(b,a,c){return Je(b,Ie,b.defer,a.angular.callbacks,
-c[0])}]}function Je(b,a,c,d,e){function f(a,b,c){var f=e.createElement("script"),g=null;f.type="text/javascript";f.src=a;f.async=!0;g=function(a){Va(f,"load",g);Va(f,"error",g);e.body.removeChild(f);f=null;var h=-1,t="unknown";a&&("load"!==a.type||d[b].called||(a={type:"error"}),t=a.type,h="error"===a.type?404:200);c&&c(h,t)};qb(f,"load",g);qb(f,"error",g);e.body.appendChild(f);return g}var g=-1;return function(e,l,k,m,p,n,s,t){function H(){u=g;G&&G();z&&z.abort()}function x(a,d,e,f,g){K&&c.cancel(K);
-G=z=null;0===d&&(d=e?200:"file"==ua(l).protocol?404:0);a(1223===d?204:d,e,f,g||"");b.$$completeOutstandingRequest(w)}var u;b.$$incOutstandingRequestCount();l=l||b.url();if("jsonp"==I(e)){var N="_"+(d.counter++).toString(36);d[N]=function(a){d[N].data=a;d[N].called=!0};var G=f(l.replace("JSON_CALLBACK","angular.callbacks."+N),N,function(a,b){x(m,a,d[N].data,"",b);d[N]=w})}else{var z=a(e);z.open(e,l,!0);q(p,function(a,b){A(a)&&z.setRequestHeader(b,a)});z.onreadystatechange=function(){if(z&&4==z.readyState){var a=
-null,b=null;u!==g&&(a=z.getAllResponseHeaders(),b="response"in z?z.response:z.responseText);x(m,u||z.status,b,a,z.statusText||"")}};s&&(z.withCredentials=!0);if(t)try{z.responseType=t}catch(r){if("json"!==t)throw r;}z.send(k||null)}if(0<n)var K=c(H,n);else n&&n.then&&n.then(H)}}function ee(){var b="{{",a="}}";this.startSymbol=function(a){return a?(b=a,this):b};this.endSymbol=function(b){return b?(a=b,this):a};this.$get=["$parse","$exceptionHandler","$sce",function(c,d,e){function f(f,k,m){for(var p,
-n,s=0,t=[],H=f.length,x=!1,u=[];s<H;)-1!=(p=f.indexOf(b,s))&&-1!=(n=f.indexOf(a,p+g))?(s!=p&&t.push(f.substring(s,p)),t.push(s=c(x=f.substring(p+g,n))),s.exp=x,s=n+h,x=!0):(s!=H&&t.push(f.substring(s)),s=H);(H=t.length)||(t.push(""),H=1);if(m&&1<t.length)throw Cc("noconcat",f);if(!k||x)return u.length=H,s=function(a){try{for(var b=0,c=H,g;b<c;b++)"function"==typeof(g=t[b])&&(g=g(a),g=m?e.getTrusted(m,g):e.valueOf(g),null===g||E(g)?g="":"string"!=typeof g&&(g=ta(g))),u[b]=g;return u.join("")}catch(h){a=
-Cc("interr",f,h.toString()),d(a)}},s.exp=f,s.parts=t,s}var g=b.length,h=a.length;f.startSymbol=function(){return b};f.endSymbol=function(){return a};return f}]}function fe(){this.$get=["$rootScope","$window","$q",function(b,a,c){function d(d,g,h,l){var k=a.setInterval,m=a.clearInterval,p=c.defer(),n=p.promise,s=0,t=A(l)&&!l;h=A(h)?h:0;n.then(null,null,d);n.$$intervalId=k(function(){p.notify(s++);0<h&&s>=h&&(p.resolve(s),m(n.$$intervalId),delete e[n.$$intervalId]);t||b.$apply()},g);e[n.$$intervalId]=
-p;return n}var e={};d.cancel=function(a){return a&&a.$$intervalId in e?(e[a.$$intervalId].reject("canceled"),clearInterval(a.$$intervalId),delete e[a.$$intervalId],!0):!1};return d}]}function nd(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"\u00a4",posSuf:"",negPre:"(\u00a4",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},
-DATETIME_FORMATS:{MONTH:"January February March April May June July August September October November December".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",
-shortTime:"h:mm a"},pluralCat:function(b){return 1===b?"one":"other"}}}}function Dc(b){b=b.split("/");for(var a=b.length;a--;)b[a]=Bb(b[a]);return b.join("/")}function Ec(b,a,c){b=ua(b,c);a.$$protocol=b.protocol;a.$$host=b.hostname;a.$$port=Y(b.port)||Ke[b.protocol]||null}function Fc(b,a,c){var d="/"!==b.charAt(0);d&&(b="/"+b);b=ua(b,c);a.$$path=decodeURIComponent(d&&"/"===b.pathname.charAt(0)?b.pathname.substring(1):b.pathname);a.$$search=cc(b.search);a.$$hash=decodeURIComponent(b.hash);a.$$path&&
-"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function pa(b,a){if(0===a.indexOf(b))return a.substr(b.length)}function Za(b){var a=b.indexOf("#");return-1==a?b:b.substr(0,a)}function Ob(b){return b.substr(0,Za(b).lastIndexOf("/")+1)}function Gc(b,a){this.$$html5=!0;a=a||"";var c=Ob(b);Ec(b,this,b);this.$$parse=function(a){var e=pa(c,a);if(!v(e))throw Pb("ipthprfx",a,c);Fc(e,this,b);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=dc(this.$$search),b=this.$$hash?"#"+
-Bb(this.$$hash):"";this.$$url=Dc(this.$$path)+(a?"?"+a:"")+b;this.$$absUrl=c+this.$$url.substr(1)};this.$$rewrite=function(d){var e;if((e=pa(b,d))!==r)return d=e,(e=pa(a,e))!==r?c+(pa("/",e)||e):b+d;if((e=pa(c,d))!==r)return c+e;if(c==d+"/")return c}}function Qb(b,a){var c=Ob(b);Ec(b,this,b);this.$$parse=function(d){var e=pa(b,d)||pa(c,d),e="#"==e.charAt(0)?pa(a,e):this.$$html5?e:"";if(!v(e))throw Pb("ihshprfx",d,a);Fc(e,this,b);d=this.$$path;var f=/^\/?.*?:(\/.*)/;0===e.indexOf(b)&&(e=e.replace(b,
-""));f.exec(e)||(d=(e=f.exec(d))?e[1]:d);this.$$path=d;this.$$compose()};this.$$compose=function(){var c=dc(this.$$search),e=this.$$hash?"#"+Bb(this.$$hash):"";this.$$url=Dc(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+(this.$$url?a+this.$$url:"")};this.$$rewrite=function(a){if(Za(b)==Za(a))return a}}function Hc(b,a){this.$$html5=!0;Qb.apply(this,arguments);var c=Ob(b);this.$$rewrite=function(d){var e;if(b==Za(d))return d;if(e=pa(c,d))return b+a+e;if(c===d+"/")return c}}function rb(b){return function(){return this[b]}}
-function Ic(b,a){return function(c){if(E(c))return this[b];this[b]=a(c);this.$$compose();return this}}function ie(){var b="",a=!1;this.hashPrefix=function(a){return A(a)?(b=a,this):b};this.html5Mode=function(b){return A(b)?(a=b,this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement",function(c,d,e,f){function g(a){c.$broadcast("$locationChangeSuccess",h.absUrl(),a)}var h,l=d.baseHref(),k=d.url();a?(l=k.substring(0,k.indexOf("/",k.indexOf("//")+2))+(l||"/"),e=e.history?Gc:Hc):(l=Za(k),
-e=Qb);h=new e(l,"#"+b);h.$$parse(h.$$rewrite(k));f.on("click",function(a){if(!a.ctrlKey&&!a.metaKey&&2!=a.which){for(var b=y(a.target);"a"!==I(b[0].nodeName);)if(b[0]===f[0]||!(b=b.parent())[0])return;var e=b.prop("href");T(e)&&"[object SVGAnimatedString]"===e.toString()&&(e=ua(e.animVal).href);var g=h.$$rewrite(e);e&&(!b.attr("target")&&g&&!a.isDefaultPrevented())&&(a.preventDefault(),g!=d.url()&&(h.$$parse(g),c.$apply(),O.angular["ff-684208-preventDefault"]=!0))}});h.absUrl()!=k&&d.url(h.absUrl(),
-!0);d.onUrlChange(function(a){h.absUrl()!=a&&(c.$evalAsync(function(){var b=h.absUrl();h.$$parse(a);c.$broadcast("$locationChangeStart",a,b).defaultPrevented?(h.$$parse(b),d.url(b)):g(b)}),c.$$phase||c.$digest())});var m=0;c.$watch(function(){var a=d.url(),b=h.$$replace;m&&a==h.absUrl()||(m++,c.$evalAsync(function(){c.$broadcast("$locationChangeStart",h.absUrl(),a).defaultPrevented?h.$$parse(a):(d.url(h.absUrl(),b),g(a))}));h.$$replace=!1;return m});return h}]}function je(){var b=!0,a=this;this.debugEnabled=
-function(a){return A(a)?(b=a,this):b};this.$get=["$window",function(c){function d(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=c.console||{},e=b[a]||b.log||w;a=!1;try{a=!!e.apply}catch(l){}return a?function(){var a=[];q(arguments,function(b){a.push(d(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),
-warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){b&&c.apply(a,arguments)}}()}}]}function fa(b,a){if("constructor"===b)throw Ca("isecfld",a);return b}function $a(b,a){if(b){if(b.constructor===b)throw Ca("isecfn",a);if(b.document&&b.location&&b.alert&&b.setInterval)throw Ca("isecwindow",a);if(b.children&&(b.nodeName||b.prop&&b.attr&&b.find))throw Ca("isecdom",a);}return b}function sb(b,a,c,d,e){e=e||{};a=a.split(".");for(var f,g=0;1<a.length;g++){f=fa(a.shift(),d);
-var h=b[f];h||(h={},b[f]=h);b=h;b.then&&e.unwrapPromises&&(va(d),"$$v"in b||function(a){a.then(function(b){a.$$v=b})}(b),b.$$v===r&&(b.$$v={}),b=b.$$v)}f=fa(a.shift(),d);return b[f]=c}function Jc(b,a,c,d,e,f,g){fa(b,f);fa(a,f);fa(c,f);fa(d,f);fa(e,f);return g.unwrapPromises?function(g,l){var k=l&&l.hasOwnProperty(b)?l:g,m;if(null==k)return k;(k=k[b])&&k.then&&(va(f),"$$v"in k||(m=k,m.$$v=r,m.then(function(a){m.$$v=a})),k=k.$$v);if(!a)return k;if(null==k)return r;(k=k[a])&&k.then&&(va(f),"$$v"in k||
-(m=k,m.$$v=r,m.then(function(a){m.$$v=a})),k=k.$$v);if(!c)return k;if(null==k)return r;(k=k[c])&&k.then&&(va(f),"$$v"in k||(m=k,m.$$v=r,m.then(function(a){m.$$v=a})),k=k.$$v);if(!d)return k;if(null==k)return r;(k=k[d])&&k.then&&(va(f),"$$v"in k||(m=k,m.$$v=r,m.then(function(a){m.$$v=a})),k=k.$$v);if(!e)return k;if(null==k)return r;(k=k[e])&&k.then&&(va(f),"$$v"in k||(m=k,m.$$v=r,m.then(function(a){m.$$v=a})),k=k.$$v);return k}:function(f,g){var k=g&&g.hasOwnProperty(b)?g:f;if(null==k)return k;k=k[b];
-if(!a)return k;if(null==k)return r;k=k[a];if(!c)return k;if(null==k)return r;k=k[c];if(!d)return k;if(null==k)return r;k=k[d];return e?null==k?r:k=k[e]:k}}function Le(b,a){fa(b,a);return function(a,d){return null==a?r:(d&&d.hasOwnProperty(b)?d:a)[b]}}function Me(b,a,c){fa(b,c);fa(a,c);return function(c,e){if(null==c)return r;c=(e&&e.hasOwnProperty(b)?e:c)[b];return null==c?r:c[a]}}function Kc(b,a,c){if(Rb.hasOwnProperty(b))return Rb[b];var d=b.split("."),e=d.length,f;if(a.unwrapPromises||1!==e)if(a.unwrapPromises||
-2!==e)if(a.csp)f=6>e?Jc(d[0],d[1],d[2],d[3],d[4],c,a):function(b,f){var g=0,h;do h=Jc(d[g++],d[g++],d[g++],d[g++],d[g++],c,a)(b,f),f=r,b=h;while(g<e);return h};else{var g="var p;\n";q(d,function(b,d){fa(b,c);g+="if(s == null) return undefined;\ns="+(d?"s":'((k&&k.hasOwnProperty("'+b+'"))?k:s)')+'["'+b+'"];\n'+(a.unwrapPromises?'if (s && s.then) {\n pw("'+c.replace(/(["\r\n])/g,"\\$1")+'");\n if (!("$$v" in s)) {\n p=s;\n p.$$v = undefined;\n p.then(function(v) {p.$$v=v;});\n}\n s=s.$$v\n}\n':"")});
-var g=g+"return s;",h=new Function("s","k","pw",g);h.toString=aa(g);f=a.unwrapPromises?function(a,b){return h(a,b,va)}:h}else f=Me(d[0],d[1],c);else f=Le(d[0],c);"hasOwnProperty"!==b&&(Rb[b]=f);return f}function ke(){var b={},a={csp:!1,unwrapPromises:!1,logPromiseWarnings:!0};this.unwrapPromises=function(b){return A(b)?(a.unwrapPromises=!!b,this):a.unwrapPromises};this.logPromiseWarnings=function(b){return A(b)?(a.logPromiseWarnings=b,this):a.logPromiseWarnings};this.$get=["$filter","$sniffer","$log",
-function(c,d,e){a.csp=d.csp;va=function(b){a.logPromiseWarnings&&!Lc.hasOwnProperty(b)&&(Lc[b]=!0,e.warn("[$parse] Promise found in the expression `"+b+"`. Automatic unwrapping of promises in Angular expressions is deprecated."))};return function(d){var e;switch(typeof d){case "string":if(b.hasOwnProperty(d))return b[d];e=new Sb(a);e=(new ab(e,c,a)).parse(d,!1);"hasOwnProperty"!==d&&(b[d]=e);return e;case "function":return d;default:return w}}}]}function me(){this.$get=["$rootScope","$exceptionHandler",
-function(b,a){return Ne(function(a){b.$evalAsync(a)},a)}]}function Ne(b,a){function c(a){return a}function d(a){return g(a)}var e=function(){var g=[],k,m;return m={resolve:function(a){if(g){var c=g;g=r;k=f(a);c.length&&b(function(){for(var a,b=0,d=c.length;b<d;b++)a=c[b],k.then(a[0],a[1],a[2])})}},reject:function(a){m.resolve(h(a))},notify:function(a){if(g){var c=g;g.length&&b(function(){for(var b,d=0,e=c.length;d<e;d++)b=c[d],b[2](a)})}},promise:{then:function(b,f,h){var m=e(),H=function(d){try{m.resolve((P(b)?
-b:c)(d))}catch(e){m.reject(e),a(e)}},x=function(b){try{m.resolve((P(f)?f:d)(b))}catch(c){m.reject(c),a(c)}},u=function(b){try{m.notify((P(h)?h:c)(b))}catch(d){a(d)}};g?g.push([H,x,u]):k.then(H,x,u);return m.promise},"catch":function(a){return this.then(null,a)},"finally":function(a){function b(a,c){var d=e();c?d.resolve(a):d.reject(a);return d.promise}function d(e,f){var g=null;try{g=(a||c)()}catch(h){return b(h,!1)}return g&&P(g.then)?g.then(function(){return b(e,f)},function(a){return b(a,!1)}):
-b(e,f)}return this.then(function(a){return d(a,!0)},function(a){return d(a,!1)})}}}},f=function(a){return a&&P(a.then)?a:{then:function(c){var d=e();b(function(){d.resolve(c(a))});return d.promise}}},g=function(a){var b=e();b.reject(a);return b.promise},h=function(c){return{then:function(f,g){var h=e();b(function(){try{h.resolve((P(g)?g:d)(c))}catch(b){h.reject(b),a(b)}});return h.promise}}};return{defer:e,reject:g,when:function(h,k,m,p){var n=e(),s,t=function(b){try{return(P(k)?k:c)(b)}catch(d){return a(d),
-g(d)}},H=function(b){try{return(P(m)?m:d)(b)}catch(c){return a(c),g(c)}},x=function(b){try{return(P(p)?p:c)(b)}catch(d){a(d)}};b(function(){f(h).then(function(a){s||(s=!0,n.resolve(f(a).then(t,H,x)))},function(a){s||(s=!0,n.resolve(H(a)))},function(a){s||n.notify(x(a))})});return n.promise},all:function(a){var b=e(),c=0,d=L(a)?[]:{};q(a,function(a,e){c++;f(a).then(function(a){d.hasOwnProperty(e)||(d[e]=a,--c||b.resolve(d))},function(a){d.hasOwnProperty(e)||b.reject(a)})});0===c&&b.resolve(d);return b.promise}}}
-function te(){this.$get=["$window","$timeout",function(b,a){var c=b.requestAnimationFrame||b.webkitRequestAnimationFrame||b.mozRequestAnimationFrame,d=b.cancelAnimationFrame||b.webkitCancelAnimationFrame||b.mozCancelAnimationFrame||b.webkitCancelRequestAnimationFrame,e=!!c,f=e?function(a){var b=c(a);return function(){d(b)}}:function(b){var c=a(b,16.66,!1);return function(){a.cancel(c)}};f.supported=e;return f}]}function le(){var b=10,a=B("$rootScope"),c=null;this.digestTtl=function(a){arguments.length&&
-(b=a);return b};this.$get=["$injector","$exceptionHandler","$parse","$browser",function(d,e,f,g){function h(){this.$id=eb();this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null;this["this"]=this.$root=this;this.$$destroyed=!1;this.$$asyncQueue=[];this.$$postDigestQueue=[];this.$$listeners={};this.$$listenerCount={};this.$$isolateBindings={}}function l(b){if(n.$$phase)throw a("inprog",n.$$phase);n.$$phase=b}function k(a,b){var c=f(a);
-Sa(c,b);return c}function m(a,b,c){do a.$$listenerCount[c]-=b,0===a.$$listenerCount[c]&&delete a.$$listenerCount[c];while(a=a.$parent)}function p(){}h.prototype={constructor:h,$new:function(a){a?(a=new h,a.$root=this.$root,a.$$asyncQueue=this.$$asyncQueue,a.$$postDigestQueue=this.$$postDigestQueue):(a=function(){},a.prototype=this,a=new a,a.$id=eb());a["this"]=a;a.$$listeners={};a.$$listenerCount={};a.$parent=this;a.$$watchers=a.$$nextSibling=a.$$childHead=a.$$childTail=null;a.$$prevSibling=this.$$childTail;
-this.$$childHead?this.$$childTail=this.$$childTail.$$nextSibling=a:this.$$childHead=this.$$childTail=a;return a},$watch:function(a,b,d){var e=k(a,"watch"),f=this.$$watchers,g={fn:b,last:p,get:e,exp:a,eq:!!d};c=null;if(!P(b)){var h=k(b||w,"listener");g.fn=function(a,b,c){h(c)}}if("string"==typeof a&&e.constant){var l=g.fn;g.fn=function(a,b,c){l.call(this,a,b,c);Fa(f,g)}}f||(f=this.$$watchers=[]);f.unshift(g);return function(){Fa(f,g);c=null}},$watchCollection:function(a,b){var c=this,d,e,g,h=1<b.length,
-k=0,l=f(a),m=[],n={},p=!0,q=0;return this.$watch(function(){d=l(c);var a,b;if(T(d))if(db(d))for(e!==m&&(e=m,q=e.length=0,k++),a=d.length,q!==a&&(k++,e.length=q=a),b=0;b<a;b++)e[b]!==e[b]&&d[b]!==d[b]||e[b]===d[b]||(k++,e[b]=d[b]);else{e!==n&&(e=n={},q=0,k++);a=0;for(b in d)d.hasOwnProperty(b)&&(a++,e.hasOwnProperty(b)?e[b]!==d[b]&&(k++,e[b]=d[b]):(q++,e[b]=d[b],k++));if(q>a)for(b in k++,e)e.hasOwnProperty(b)&&!d.hasOwnProperty(b)&&(q--,delete e[b])}else e!==d&&(e=d,k++);return k},function(){p?(p=
-!1,b(d,d,c)):b(d,g,c);if(h)if(T(d))if(db(d)){g=Array(d.length);for(var a=0;a<d.length;a++)g[a]=d[a]}else for(a in g={},d)Mc.call(d,a)&&(g[a]=d[a]);else g=d})},$digest:function(){var d,f,g,h,k=this.$$asyncQueue,m=this.$$postDigestQueue,q,z,r=b,K,Q=[],y,C,R;l("$digest");c=null;do{z=!1;for(K=this;k.length;){try{R=k.shift(),R.scope.$eval(R.expression)}catch(A){n.$$phase=null,e(A)}c=null}a:do{if(h=K.$$watchers)for(q=h.length;q--;)try{if(d=h[q])if((f=d.get(K))!==(g=d.last)&&!(d.eq?za(f,g):"number"==typeof f&&
-"number"==typeof g&&isNaN(f)&&isNaN(g)))z=!0,c=d,d.last=d.eq?ca(f):f,d.fn(f,g===p?f:g,K),5>r&&(y=4-r,Q[y]||(Q[y]=[]),C=P(d.exp)?"fn: "+(d.exp.name||d.exp.toString()):d.exp,C+="; newVal: "+ta(f)+"; oldVal: "+ta(g),Q[y].push(C));else if(d===c){z=!1;break a}}catch(v){n.$$phase=null,e(v)}if(!(h=K.$$childHead||K!==this&&K.$$nextSibling))for(;K!==this&&!(h=K.$$nextSibling);)K=K.$parent}while(K=h);if((z||k.length)&&!r--)throw n.$$phase=null,a("infdig",b,ta(Q));}while(z||k.length);for(n.$$phase=null;m.length;)try{m.shift()()}catch(S){e(S)}},
-$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;this!==n&&(q(this.$$listenerCount,hb(null,m,this)),a.$$childHead==this&&(a.$$childHead=this.$$nextSibling),a.$$childTail==this&&(a.$$childTail=this.$$prevSibling),this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling),this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling),this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=
-this.$root=null,this.$$listeners={},this.$$watchers=this.$$asyncQueue=this.$$postDigestQueue=[],this.$destroy=this.$digest=this.$apply=w,this.$on=this.$watch=function(){return w})}},$eval:function(a,b){return f(a)(this,b)},$evalAsync:function(a){n.$$phase||n.$$asyncQueue.length||g.defer(function(){n.$$asyncQueue.length&&n.$digest()});this.$$asyncQueue.push({scope:this,expression:a})},$$postDigest:function(a){this.$$postDigestQueue.push(a)},$apply:function(a){try{return l("$apply"),this.$eval(a)}catch(b){e(b)}finally{n.$$phase=
-null;try{n.$digest()}catch(c){throw e(c),c;}}},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){c[gb(c,b)]=null;m(e,1,a)}},$emit:function(a,b){var c=[],d,f=this,g=!1,h={name:a,targetScope:f,stopPropagation:function(){g=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},k=[h].concat(sa.call(arguments,1)),l,m;do{d=
-f.$$listeners[a]||c;h.currentScope=f;l=0;for(m=d.length;l<m;l++)if(d[l])try{d[l].apply(null,k)}catch(n){e(n)}else d.splice(l,1),l--,m--;if(g)break;f=f.$parent}while(f);return h},$broadcast:function(a,b){for(var c=this,d=this,f={name:a,targetScope:this,preventDefault:function(){f.defaultPrevented=!0},defaultPrevented:!1},g=[f].concat(sa.call(arguments,1)),h,k;c=d;){f.currentScope=c;d=c.$$listeners[a]||[];h=0;for(k=d.length;h<k;h++)if(d[h])try{d[h].apply(null,g)}catch(l){e(l)}else d.splice(h,1),h--,
-k--;if(!(d=c.$$listenerCount[a]&&c.$$childHead||c!==this&&c.$$nextSibling))for(;c!==this&&!(d=c.$$nextSibling);)c=c.$parent}return f}};var n=new h;return n}]}function od(){var b=/^\s*(https?|ftp|mailto|tel|file):/,a=/^\s*(https?|ftp|file|blob):|data:image\//;this.aHrefSanitizationWhitelist=function(a){return A(a)?(b=a,this):b};this.imgSrcSanitizationWhitelist=function(b){return A(b)?(a=b,this):a};this.$get=function(){return function(c,d){var e=d?a:b,f;if(!U||8<=U)if(f=ua(c).href,""!==f&&!f.match(e))return"unsafe:"+
-f;return c}}}function Oe(b){if("self"===b)return b;if(v(b)){if(-1<b.indexOf("***"))throw wa("iwcard",b);b=b.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08").replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*");return RegExp("^"+b+"$")}if(fb(b))return RegExp("^"+b.source+"$");throw wa("imatcher");}function Nc(b){var a=[];A(b)&&q(b,function(b){a.push(Oe(b))});return a}function oe(){this.SCE_CONTEXTS=ga;var b=["self"],a=[];this.resourceUrlWhitelist=function(a){arguments.length&&
-(b=Nc(a));return b};this.resourceUrlBlacklist=function(b){arguments.length&&(a=Nc(b));return a};this.$get=["$injector",function(c){function d(a){var b=function(a){this.$$unwrapTrustedValue=function(){return a}};a&&(b.prototype=new a);b.prototype.valueOf=function(){return this.$$unwrapTrustedValue()};b.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()};return b}var e=function(a){throw wa("unsafe");};c.has("$sanitize")&&(e=c.get("$sanitize"));var f=d(),g={};g[ga.HTML]=d(f);
-g[ga.CSS]=d(f);g[ga.URL]=d(f);g[ga.JS]=d(f);g[ga.RESOURCE_URL]=d(g[ga.URL]);return{trustAs:function(a,b){var c=g.hasOwnProperty(a)?g[a]:null;if(!c)throw wa("icontext",a,b);if(null===b||b===r||""===b)return b;if("string"!==typeof b)throw wa("itype",a);return new c(b)},getTrusted:function(c,d){if(null===d||d===r||""===d)return d;var f=g.hasOwnProperty(c)?g[c]:null;if(f&&d instanceof f)return d.$$unwrapTrustedValue();if(c===ga.RESOURCE_URL){var f=ua(d.toString()),m,p,n=!1;m=0;for(p=b.length;m<p;m++)if("self"===
-b[m]?Nb(f):b[m].exec(f.href)){n=!0;break}if(n)for(m=0,p=a.length;m<p;m++)if("self"===a[m]?Nb(f):a[m].exec(f.href)){n=!1;break}if(n)return d;throw wa("insecurl",d.toString());}if(c===ga.HTML)return e(d);throw wa("unsafe");},valueOf:function(a){return a instanceof f?a.$$unwrapTrustedValue():a}}}]}function ne(){var b=!0;this.enabled=function(a){arguments.length&&(b=!!a);return b};this.$get=["$parse","$sniffer","$sceDelegate",function(a,c,d){if(b&&c.msie&&8>c.msieDocumentMode)throw wa("iequirks");var e=
-ca(ga);e.isEnabled=function(){return b};e.trustAs=d.trustAs;e.getTrusted=d.getTrusted;e.valueOf=d.valueOf;b||(e.trustAs=e.getTrusted=function(a,b){return b},e.valueOf=Ea);e.parseAs=function(b,c){var d=a(c);return d.literal&&d.constant?d:function(a,c){return e.getTrusted(b,d(a,c))}};var f=e.parseAs,g=e.getTrusted,h=e.trustAs;q(ga,function(a,b){var c=I(b);e[Ua("parse_as_"+c)]=function(b){return f(a,b)};e[Ua("get_trusted_"+c)]=function(b){return g(a,b)};e[Ua("trust_as_"+c)]=function(b){return h(a,b)}});
-return e}]}function pe(){this.$get=["$window","$document",function(b,a){var c={},d=Y((/android (\d+)/.exec(I((b.navigator||{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator||{}).userAgent),f=a[0]||{},g=f.documentMode,h,l=/^(Moz|webkit|O|ms)(?=[A-Z])/,k=f.body&&f.body.style,m=!1,p=!1;if(k){for(var n in k)if(m=l.exec(n)){h=m[0];h=h.substr(0,1).toUpperCase()+h.substr(1);break}h||(h="WebkitOpacity"in k&&"webkit");m=!!("transition"in k||h+"Transition"in k);p=!!("animation"in k||h+"Animation"in k);
-!d||m&&p||(m=v(f.body.style.webkitTransition),p=v(f.body.style.webkitAnimation))}return{history:!(!b.history||!b.history.pushState||4>d||e),hashchange:"onhashchange"in b&&(!g||7<g),hasEvent:function(a){if("input"==a&&9==U)return!1;if(E(c[a])){var b=f.createElement("div");c[a]="on"+a in b}return c[a]},csp:$b(),vendorPrefix:h,transitions:m,animations:p,android:d,msie:U,msieDocumentMode:g}}]}function re(){this.$get=["$rootScope","$browser","$q","$exceptionHandler",function(b,a,c,d){function e(e,h,l){var k=
-c.defer(),m=k.promise,p=A(l)&&!l;h=a.defer(function(){try{k.resolve(e())}catch(a){k.reject(a),d(a)}finally{delete f[m.$$timeoutId]}p||b.$apply()},h);m.$$timeoutId=h;f[h]=k;return m}var f={};e.cancel=function(b){return b&&b.$$timeoutId in f?(f[b.$$timeoutId].reject("canceled"),delete f[b.$$timeoutId],a.defer.cancel(b.$$timeoutId)):!1};return e}]}function ua(b,a){var c=b;U&&(X.setAttribute("href",c),c=X.href);X.setAttribute("href",c);return{href:X.href,protocol:X.protocol?X.protocol.replace(/:$/,""):
-"",host:X.host,search:X.search?X.search.replace(/^\?/,""):"",hash:X.hash?X.hash.replace(/^#/,""):"",hostname:X.hostname,port:X.port,pathname:"/"===X.pathname.charAt(0)?X.pathname:"/"+X.pathname}}function Nb(b){b=v(b)?ua(b):b;return b.protocol===Oc.protocol&&b.host===Oc.host}function se(){this.$get=aa(O)}function lc(b){function a(d,e){if(T(d)){var f={};q(d,function(b,c){f[c]=a(c,b)});return f}return b.factory(d+c,e)}var c="Filter";this.register=a;this.$get=["$injector",function(a){return function(b){return a.get(b+
-c)}}];a("currency",Pc);a("date",Qc);a("filter",Pe);a("json",Qe);a("limitTo",Re);a("lowercase",Se);a("number",Rc);a("orderBy",Sc);a("uppercase",Te)}function Pe(){return function(b,a,c){if(!L(b))return b;var d=typeof c,e=[];e.check=function(a){for(var b=0;b<e.length;b++)if(!e[b](a))return!1;return!0};"function"!==d&&(c="boolean"===d&&c?function(a,b){return Ra.equals(a,b)}:function(a,b){if(a&&b&&"object"===typeof a&&"object"===typeof b){for(var d in a)if("$"!==d.charAt(0)&&Mc.call(a,d)&&c(a[d],b[d]))return!0;
-return!1}b=(""+b).toLowerCase();return-1<(""+a).toLowerCase().indexOf(b)});var f=function(a,b){if("string"==typeof b&&"!"===b.charAt(0))return!f(a,b.substr(1));switch(typeof a){case "boolean":case "number":case "string":return c(a,b);case "object":switch(typeof b){case "object":return c(a,b);default:for(var d in a)if("$"!==d.charAt(0)&&f(a[d],b))return!0}return!1;case "array":for(d=0;d<a.length;d++)if(f(a[d],b))return!0;return!1;default:return!1}};switch(typeof a){case "boolean":case "number":case "string":a=
-{$:a};case "object":for(var g in a)(function(b){"undefined"!=typeof a[b]&&e.push(function(c){return f("$"==b?c:c&&c[b],a[b])})})(g);break;case "function":e.push(a);break;default:return b}d=[];for(g=0;g<b.length;g++){var h=b[g];e.check(h)&&d.push(h)}return d}}function Pc(b){var a=b.NUMBER_FORMATS;return function(b,d){E(d)&&(d=a.CURRENCY_SYM);return Tc(b,a.PATTERNS[1],a.GROUP_SEP,a.DECIMAL_SEP,2).replace(/\u00A4/g,d)}}function Rc(b){var a=b.NUMBER_FORMATS;return function(b,d){return Tc(b,a.PATTERNS[0],
-a.GROUP_SEP,a.DECIMAL_SEP,d)}}function Tc(b,a,c,d,e){if(null==b||!isFinite(b)||T(b))return"";var f=0>b;b=Math.abs(b);var g=b+"",h="",l=[],k=!1;if(-1!==g.indexOf("e")){var m=g.match(/([\d\.]+)e(-?)(\d+)/);m&&"-"==m[2]&&m[3]>e+1?g="0":(h=g,k=!0)}if(k)0<e&&(-1<b&&1>b)&&(h=b.toFixed(e));else{g=(g.split(Uc)[1]||"").length;E(e)&&(e=Math.min(Math.max(a.minFrac,g),a.maxFrac));g=Math.pow(10,e);b=Math.round(b*g)/g;b=(""+b).split(Uc);g=b[0];b=b[1]||"";var m=0,p=a.lgSize,n=a.gSize;if(g.length>=p+n)for(m=g.length-
-p,k=0;k<m;k++)0===(m-k)%n&&0!==k&&(h+=c),h+=g.charAt(k);for(k=m;k<g.length;k++)0===(g.length-k)%p&&0!==k&&(h+=c),h+=g.charAt(k);for(;b.length<e;)b+="0";e&&"0"!==e&&(h+=d+b.substr(0,e))}l.push(f?a.negPre:a.posPre);l.push(h);l.push(f?a.negSuf:a.posSuf);return l.join("")}function tb(b,a,c){var d="";0>b&&(d="-",b=-b);for(b=""+b;b.length<a;)b="0"+b;c&&(b=b.substr(b.length-a));return d+b}function $(b,a,c,d){c=c||0;return function(e){e=e["get"+b]();if(0<c||e>-c)e+=c;0===e&&-12==c&&(e=12);return tb(e,a,d)}}
-function ub(b,a){return function(c,d){var e=c["get"+b](),f=Ga(a?"SHORT"+b:b);return d[f][e]}}function Vc(b){var a=(new Date(b,0,1)).getDay();return new Date(b,0,(4>=a?5:12)-a)}function Wc(b){return function(a){var c=Vc(a.getFullYear());a=+new Date(a.getFullYear(),a.getMonth(),a.getDate()+(4-a.getDay()))-+c;a=1+Math.round(a/6048E5);return tb(a,b)}}function Qc(b){function a(a){var b;if(b=a.match(c)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,l=b[8]?a.setUTCHours:a.setHours;b[9]&&
-(f=Y(b[9]+b[10]),g=Y(b[9]+b[11]));h.call(a,Y(b[1]),Y(b[2])-1,Y(b[3]));f=Y(b[4]||0)-f;g=Y(b[5]||0)-g;h=Y(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));l.call(a,f,g,h,b)}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,e){var f="",g=[],h,l;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;v(c)&&(c=Ue.test(c)?Y(c):a(c));Ab(c)&&(c=new Date(c));if(!ra(c))return c;for(;e;)(l=Ve.exec(e))?(g=g.concat(sa.call(l,1)),e=
-g.pop()):(g.push(e),e=null);q(g,function(a){h=We[a];f+=h?h(c,b.DATETIME_FORMATS):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return f}}function Qe(){return function(b){return ta(b,!0)}}function Re(){return function(b,a){if(!L(b)&&!v(b))return b;a=Infinity===Math.abs(Number(a))?Number(a):Y(a);if(v(b))return a?0<=a?b.slice(0,a):b.slice(a,b.length):"";var c=[],d,e;a>b.length?a=b.length:a<-b.length&&(a=-b.length);0<a?(d=0,e=a):(d=b.length+a,e=b.length);for(;d<e;d++)c.push(b[d]);return c}}function Sc(b){return function(a,
-c,d){function e(a,b){return Qa(b)?function(b,c){return a(c,b)}:a}function f(a,b){var c=typeof a,d=typeof b;return c==d?("string"==c&&(a=a.toLowerCase(),b=b.toLowerCase()),a===b?0:a<b?-1:1):c<d?-1:1}if(!L(a)||!c)return a;c=L(c)?c:[c];c=fd(c,function(a){var c=!1,d=a||Ea;if(v(a)){if("+"==a.charAt(0)||"-"==a.charAt(0))c="-"==a.charAt(0),a=a.substring(1);d=b(a);if(d.constant){var g=d();return e(function(a,b){return f(a[g],b[g])},c)}}return e(function(a,b){return f(d(a),d(b))},c)});for(var g=[],h=0;h<a.length;h++)g.push(a[h]);
-return g.sort(e(function(a,b){for(var d=0;d<c.length;d++){var e=c[d](a,b);if(0!==e)return e}return 0},d))}}function xa(b){P(b)&&(b={link:b});b.restrict=b.restrict||"AC";return aa(b)}function Xc(b,a,c,d){function e(a,c){c=c?"-"+ib(c,"-"):"";d.removeClass(b,(a?vb:wb)+c);d.addClass(b,(a?wb:vb)+c)}var f=this,g=b.parent().controller("form")||xb,h=0,l=f.$error={},k=[];f.$name=a.name||a.ngForm;f.$dirty=!1;f.$pristine=!0;f.$valid=!0;f.$invalid=!1;g.$addControl(f);b.addClass(Na);e(!0);f.$addControl=function(a){Ba(a.$name,
-"input");k.push(a);a.$name&&(f[a.$name]=a)};f.$removeControl=function(a){a.$name&&f[a.$name]===a&&delete f[a.$name];q(l,function(b,c){f.$setValidity(c,!0,a)});Fa(k,a)};f.$setValidity=function(a,b,c){var d=l[a];if(b)d&&(Fa(d,c),d.length||(h--,h||(e(b),f.$valid=!0,f.$invalid=!1),l[a]=!1,e(!0,a),g.$setValidity(a,!0,f)));else{h||e(b);if(d){if(-1!=gb(d,c))return}else l[a]=d=[],h++,e(!1,a),g.$setValidity(a,!1,f);d.push(c);f.$valid=!1;f.$invalid=!0}};f.$setDirty=function(){d.removeClass(b,Na);d.addClass(b,
-yb);f.$dirty=!0;f.$pristine=!1;g.$setDirty()};f.$setPristine=function(){d.removeClass(b,yb);d.addClass(b,Na);f.$dirty=!1;f.$pristine=!0;q(k,function(a){a.$setPristine()})}}function qa(b,a,c,d){b.$setValidity(a,c);return c?d:r}function Xe(b,a,c){var d=c.prop("validity");T(d)&&b.$parsers.push(function(c){if(b.$error[a]||!(d.badInput||d.customError||d.typeMismatch)||d.valueMissing)return c;b.$setValidity(a,!1)})}function bb(b,a,c,d,e,f){var g=a.prop("validity");if(!e.android){var h=!1;a.on("compositionstart",
-function(a){h=!0});a.on("compositionend",function(){h=!1;l()})}var l=function(e){if(!h){var f=a.val(),k=e&&e.type;Qa(c.ngTrim||"T")&&(f=ba(f));if(d.$viewValue!==f||g&&""===f&&!g.valueMissing)b.$$phase?d.$setViewValue(f,k):b.$apply(function(){d.$setViewValue(f,k)})}};if(d.$options&&d.$options.updateOn)a.on(d.$options.updateOn,l);if(!d.$options||d.$options.updateOnDefault){if(e.hasEvent("input"))a.on("input",l);else{var k,m=function(a){k||(k=f.defer(function(){l(a);k=null}))};a.on("keydown",function(a){var b=
-a.keyCode;91===b||(15<b&&19>b||37<=b&&40>=b)||m(a)});if(e.hasEvent("paste"))a.on("paste cut",m)}a.on("change",l)}d.$render=function(){a.val(d.$isEmpty(d.$viewValue)?"":d.$viewValue)};var p=c.ngPattern;p&&((e=p.match(/^\/(.*)\/([gim]*)$/))?(p=RegExp(e[1],e[2]),e=function(a){return qa(d,"pattern",d.$isEmpty(a)||p.test(a),a)}):e=function(c){var e=b.$eval(p);if(!e||!e.test)throw B("ngPattern")("noregexp",p,e,ha(a));return qa(d,"pattern",d.$isEmpty(c)||e.test(c),c)},d.$formatters.push(e),d.$parsers.push(e));
-if(c.ngMinlength){var n=Y(c.ngMinlength);e=function(a){return qa(d,"minlength",d.$isEmpty(a)||a.length>=n,a)};d.$parsers.push(e);d.$formatters.push(e)}if(c.ngMaxlength){var s=Y(c.ngMaxlength);e=function(a){return qa(d,"maxlength",d.$isEmpty(a)||a.length<=s,a)};d.$parsers.push(e);d.$formatters.push(e)}}function zb(b,a){return function(c){var d;return ra(c)?c:v(c)&&(b.lastIndex=0,c=b.exec(c))?(c.shift(),d={yyyy:0,MM:1,dd:1,HH:0,mm:0},q(c,function(b,c){c<a.length&&(d[a[c]]=+b)}),new Date(d.yyyy,d.MM-
-1,d.dd,d.HH,d.mm)):NaN}}function cb(b,a,c,d){return function(e,f,g,h,l,k,m){bb(e,f,g,h,l,k);h.$parsers.push(function(d){if(h.$isEmpty(d))return h.$setValidity(b,!0),null;if(a.test(d))return h.$setValidity(b,!0),c(d);h.$setValidity(b,!1);return r});h.$formatters.push(function(a){return ra(a)?m("date")(a,d):""});g.min&&(e=function(a){var b=h.$isEmpty(a)||c(a)>=c(g.min);h.$setValidity("min",b);return b?a:r},h.$parsers.push(e),h.$formatters.push(e));g.max&&(e=function(a){var b=h.$isEmpty(a)||c(a)<=c(g.max);
-h.$setValidity("max",b);return b?a:r},h.$parsers.push(e),h.$formatters.push(e))}}function Tb(b,a){b="ngClass"+b;return["$animate",function(c){function d(a,b){var c=[],d=0;a:for(;d<a.length;d++){for(var e=a[d],m=0;m<b.length;m++)if(e==b[m])continue a;c.push(e)}return c}function e(a){if(!L(a)){if(v(a))return a.split(" ");if(T(a)){var b=[];q(a,function(a,c){a&&b.push(c)});return b}}return a}return{restrict:"AC",link:function(f,g,h){function l(a,b){var c=g.data("$classCounts")||{},d=[];q(a,function(a){if(0<
-b||c[a])c[a]=(c[a]||0)+b,c[a]===+(0<b)&&d.push(a)});g.data("$classCounts",c);return d.join(" ")}function k(b){if(!0===a||f.$index%2===a){var k=e(b||[]);if(!m){var q=l(k,1);h.$addClass(q)}else if(!za(b,m)){var t=e(m),q=d(k,t),k=d(t,k),k=l(k,-1),q=l(q,1);0===q.length?c.removeClass(g,k):0===k.length?c.addClass(g,q):c.setClass(g,q,k)}}m=ca(b)}var m;f.$watch(h[b],k,!0);h.$observe("class",function(a){k(f.$eval(h[b]))});"ngClass"!==b&&f.$watch("$index",function(c,d){var g=c&1;if(g!==d&1){var k=e(f.$eval(h[b]));
-g===a?(g=l(k,1),h.$addClass(g)):(g=l(k,-1),h.$removeClass(g))}})}}}]}var I=function(b){return v(b)?b.toLowerCase():b},Mc=Object.prototype.hasOwnProperty,Ga=function(b){return v(b)?b.toUpperCase():b},U,y,Ha,sa=[].slice,Ye=[].push,ya=Object.prototype.toString,Pa=B("ng"),Ra=O.angular||(O.angular={}),Ta,Ma,ka=["0","0","0"];U=Y((/msie (\d+)/.exec(I(navigator.userAgent))||[])[1]);isNaN(U)&&(U=Y((/trident\/.*; rv:(\d+)/.exec(I(navigator.userAgent))||[])[1]));w.$inject=[];Ea.$inject=[];var ba=function(){return String.prototype.trim?
-function(b){return v(b)?b.trim():b}:function(b){return v(b)?b.replace(/^\s\s*/,"").replace(/\s\s*$/,""):b}}();Ma=9>U?function(b){b=b.nodeName?b:b[0];return b.scopeName&&"HTML"!=b.scopeName?Ga(b.scopeName+":"+b.nodeName):b.nodeName}:function(b){return b.nodeName?b.nodeName:b[0].nodeName};var ec=["ng-","data-ng-","ng:","x-ng-"],jd=/[A-Z]/g,md={full:"1.3.0-build.2607+sha.b2e48e6",major:1,minor:3,dot:0,codeName:"snapshot"},Wa=M.cache={},jb=M.expando="ng-"+(new Date).getTime(),Be=1,qb=O.document.addEventListener?
-function(b,a,c){b.addEventListener(a,c,!1)}:function(b,a,c){b.attachEvent("on"+a,c)},Va=O.document.removeEventListener?function(b,a,c){b.removeEventListener(a,c,!1)}:function(b,a,c){b.detachEvent("on"+a,c)};M._data=function(b){return this.cache[b[this.expando]]||{}};var ve=/([\:\-\_]+(.))/g,we=/^moz([A-Z])/,Ib=B("jqLite"),Ae=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,Hb=/<|&#?\w+;/,ye=/<([\w:]+)/,ze=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ea={option:[1,'<select multiple="multiple">',
-"</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ea.optgroup=ea.option;ea.tbody=ea.tfoot=ea.colgroup=ea.caption=ea.thead;ea.th=ea.td;var La=M.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===V.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),M(O).on("load",a))},toString:function(){var b=[];q(this,function(a){b.push(""+
-a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=b?y(this[b]):y(this[this.length+b])},length:0,push:Ye,sort:[].sort,splice:[].splice},nb={};q("multiple selected checked disabled readOnly required open".split(" "),function(b){nb[I(b)]=b});var tc={};q("input select option textarea button form details".split(" "),function(b){tc[Ga(b)]=!0});q({data:pc,inheritedData:mb,scope:function(b){return y(b).data("$scope")||mb(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return y(b).data("$isolateScope")||
-y(b).data("$isolateScopeNoTemplate")},controller:qc,injector:function(b){return mb(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Kb,css:function(b,a,c){a=Ua(a);if(A(c))b.style[a]=c;else{var d;8>=U&&(d=b.currentStyle&&b.currentStyle[a],""===d&&(d="auto"));d=d||b.style[a];8>=U&&(d=""===d?r:d);return d}},attr:function(b,a,c){var d=I(a);if(nb[d])if(A(c))c?(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||w).specified?
-d:r;else if(A(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?r:b},prop:function(b,a,c){if(A(c))b[a]=c;else return b[a]},text:function(){function b(b,d){var e=a[b.nodeType];if(E(d))return e?b[e]:"";b[e]=d}var a=[];9>U?(a[1]="innerText",a[3]="nodeValue"):a[1]=a[3]="textContent";b.$dv="";return b}(),val:function(b,a){if(E(a)){if("SELECT"===Ma(b)&&b.multiple){var c=[];q(b.options,function(a){a.selected&&c.push(a.value||a.text)});return 0===c.length?null:c}return b.value}b.value=
-a},html:function(b,a){if(E(a))return b.innerHTML;for(var c=0,d=b.childNodes;c<d.length;c++)Ia(d[c]);b.innerHTML=a},empty:rc},function(b,a){M.prototype[a]=function(a,d){var e,f;if(b!==rc&&(2==b.length&&b!==Kb&&b!==qc?a:d)===r){if(T(a)){for(e=0;e<this.length;e++)if(b===pc)b(this[e],a);else for(f in a)b(this[e],f,a[f]);return this}e=b.$dv;f=e===r?Math.min(this.length,1):this.length;for(var g=0;g<f;g++){var h=b(this[g],a,d);e=e?e+h:h}return e}for(e=0;e<this.length;e++)b(this[e],a,d);return this}});q({removeData:nc,
-dealoc:Ia,on:function a(c,d,e,f){if(A(f))throw Ib("onargs");var g=la(c,"events"),h=la(c,"handle");g||la(c,"events",g={});h||la(c,"handle",h=Ce(c,g));q(d.split(" "),function(d){var f=g[d];if(!f){if("mouseenter"==d||"mouseleave"==d){var m=V.body.contains||V.body.compareDocumentPosition?function(a,c){var d=9===a.nodeType?a.documentElement:a,e=c&&c.parentNode;return a===e||!!(e&&1===e.nodeType&&(d.contains?d.contains(e):a.compareDocumentPosition&&a.compareDocumentPosition(e)&16))}:function(a,c){if(c)for(;c=
-c.parentNode;)if(c===a)return!0;return!1};g[d]=[];a(c,{mouseleave:"mouseout",mouseenter:"mouseover"}[d],function(a){var c=a.relatedTarget;c&&(c===this||m(this,c))||h(a,d)})}else qb(c,d,h),g[d]=[];f=g[d]}f.push(e)})},off:oc,one:function(a,c,d){a=y(a);a.on(c,function f(){a.off(c,d);a.off(c,f)});a.on(c,d)},replaceWith:function(a,c){var d,e=a.parentNode;Ia(a);q(new M(c),function(c){d?e.insertBefore(c,d.nextSibling):e.replaceChild(c,a);d=c})},children:function(a){var c=[];q(a.childNodes,function(a){1===
-a.nodeType&&c.push(a)});return c},contents:function(a){return a.contentDocument||a.childNodes||[]},append:function(a,c){q(new M(c),function(c){1!==a.nodeType&&11!==a.nodeType||a.appendChild(c)})},prepend:function(a,c){if(1===a.nodeType){var d=a.firstChild;q(new M(c),function(c){a.insertBefore(c,d)})}},wrap:function(a,c){c=y(c)[0];var d=a.parentNode;d&&d.replaceChild(c,a);c.appendChild(a)},remove:function(a){Ia(a);var c=a.parentNode;c&&c.removeChild(a)},after:function(a,c){var d=a,e=a.parentNode;q(new M(c),
-function(a){e.insertBefore(a,d.nextSibling);d=a})},addClass:lb,removeClass:kb,toggleClass:function(a,c,d){c&&q(c.split(" "),function(c){var f=d;E(f)&&(f=!Kb(a,c));(f?lb:kb)(a,c)})},parent:function(a){return(a=a.parentNode)&&11!==a.nodeType?a:null},next:function(a){if(a.nextElementSibling)return a.nextElementSibling;for(a=a.nextSibling;null!=a&&1!==a.nodeType;)a=a.nextSibling;return a},find:function(a,c){return a.getElementsByTagName?a.getElementsByTagName(c):[]},clone:Jb,triggerHandler:function(a,
-c,d){c=(la(a,"events")||{})[c];d=d||[];var e=[{preventDefault:w,stopPropagation:w}];q(c,function(c){c.apply(a,e.concat(d))})}},function(a,c){M.prototype[c]=function(c,e,f){for(var g,h=0;h<this.length;h++)E(g)?(g=a(this[h],c,e,f),A(g)&&(g=y(g))):mc(g,a(this[h],c,e,f));return A(g)?g:this};M.prototype.bind=M.prototype.on;M.prototype.unbind=M.prototype.off});Xa.prototype={put:function(a,c){this[Ja(a)]=c},get:function(a){return this[Ja(a)]},remove:function(a){var c=this[a=Ja(a)];delete this[a];return c}};
-var vc=/^function\s*[^\(]*\(\s*([^\)]*)\)/m,Ee=/,/,Fe=/^\s*(_?)(\S+?)\1\s*$/,uc=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,Ka=B("$injector");Cb.$$annotate=Lb;var Ze=B("$animate"),Zd=["$provide",function(a){this.$$selectors={};this.register=function(c,d){var e=c+"-animation";if(c&&"."!=c.charAt(0))throw Ze("notcsel",c);this.$$selectors[c.substr(1)]=e;a.factory(e,d)};this.classNameFilter=function(a){1===arguments.length&&(this.$$classNameFilter=a instanceof RegExp?a:null);return this.$$classNameFilter};this.$get=
-["$timeout","$$asyncCallback",function(a,d){return{enter:function(a,c,g,h){g?g.after(a):c.prepend(a);h&&d(h)},leave:function(a,c){a.remove();c&&d(c)},move:function(a,c,d,h){this.enter(a,c,d,h)},addClass:function(a,c,g){c=v(c)?c:L(c)?c.join(" "):"";q(a,function(a){lb(a,c)});g&&d(g)},removeClass:function(a,c,g){c=v(c)?c:L(c)?c.join(" "):"";q(a,function(a){kb(a,c)});g&&d(g)},setClass:function(a,c,g,h){q(a,function(a){lb(a,c);kb(a,g)});h&&d(h)},enabled:w}}]}],ja=B("$compile");hc.$inject=["$provide","$$sanitizeUriProvider"];
-var He=/^(x[\:\-_]|data[\:\-_])/i,Cc=B("$interpolate"),$e=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,Ke={http:80,https:443,ftp:21},Pb=B("$location");Hc.prototype=Qb.prototype=Gc.prototype={$$html5:!1,$$replace:!1,absUrl:rb("$$absUrl"),url:function(a,c){if(E(a))return this.$$url;var d=$e.exec(a);d[1]&&this.path(decodeURIComponent(d[1]));(d[2]||d[1])&&this.search(d[3]||"");this.hash(d[5]||"",c);return this},protocol:rb("$$protocol"),host:rb("$$host"),port:rb("$$port"),path:Ic("$$path",function(a){return"/"==
-a.charAt(0)?a:"/"+a}),search:function(a,c){switch(arguments.length){case 0:return this.$$search;case 1:if(v(a))this.$$search=cc(a);else if(T(a))this.$$search=a;else throw Pb("isrcharg");break;default:E(c)||null===c?delete this.$$search[a]:this.$$search[a]=c}this.$$compose();return this},hash:Ic("$$hash",Ea),replace:function(){this.$$replace=!0;return this}};var Ca=B("$parse"),Lc={},va,Oa={"null":function(){return null},"true":function(){return!0},"false":function(){return!1},undefined:w,"+":function(a,
-c,d,e){d=d(a,c);e=e(a,c);return A(d)?A(e)?d+e:d:A(e)?e:r},"-":function(a,c,d,e){d=d(a,c);e=e(a,c);return(A(d)?d:0)-(A(e)?e:0)},"*":function(a,c,d,e){return d(a,c)*e(a,c)},"/":function(a,c,d,e){return d(a,c)/e(a,c)},"%":function(a,c,d,e){return d(a,c)%e(a,c)},"^":function(a,c,d,e){return d(a,c)^e(a,c)},"=":w,"===":function(a,c,d,e){return d(a,c)===e(a,c)},"!==":function(a,c,d,e){return d(a,c)!==e(a,c)},"==":function(a,c,d,e){return d(a,c)==e(a,c)},"!=":function(a,c,d,e){return d(a,c)!=e(a,c)},"<":function(a,
-c,d,e){return d(a,c)<e(a,c)},">":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,c,d,e){return d(a,c)>=e(a,c)},"&&":function(a,c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a,c)||e(a,c)},"&":function(a,c,d,e){return d(a,c)&e(a,c)},"|":function(a,c,d,e){return e(a,c)(a,c,d(a,c))},"!":function(a,c,d){return!d(a,c)}},af={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},Sb=function(a){this.options=a};Sb.prototype={constructor:Sb,
-lex:function(a){this.text=a;this.index=0;this.ch=r;this.lastCh=":";this.tokens=[];var c;for(a=[];this.index<this.text.length;){this.ch=this.text.charAt(this.index);if(this.is("\"'"))this.readString(this.ch);else if(this.isNumber(this.ch)||this.is(".")&&this.isNumber(this.peek()))this.readNumber();else if(this.isIdent(this.ch))this.readIdent(),this.was("{,")&&("{"===a[0]&&(c=this.tokens[this.tokens.length-1]))&&(c.json=-1===c.text.indexOf("."));else if(this.is("(){}[].,;:?"))this.tokens.push({index:this.index,
-text:this.ch,json:this.was(":[,")&&this.is("{[")||this.is("}]:,")}),this.is("{[")&&a.unshift(this.ch),this.is("}]")&&a.shift(),this.index++;else if(this.isWhitespace(this.ch)){this.index++;continue}else{var d=this.ch+this.peek(),e=d+this.peek(2),f=Oa[this.ch],g=Oa[d],h=Oa[e];h?(this.tokens.push({index:this.index,text:e,fn:h}),this.index+=3):g?(this.tokens.push({index:this.index,text:d,fn:g}),this.index+=2):f?(this.tokens.push({index:this.index,text:this.ch,fn:f,json:this.was("[,:")&&this.is("+-")}),
-this.index+=1):this.throwError("Unexpected next character ",this.index,this.index+1)}this.lastCh=this.ch}return this.tokens},is:function(a){return-1!==a.indexOf(this.ch)},was:function(a){return-1!==a.indexOf(this.lastCh)},peek:function(a){a=a||1;return this.index+a<this.text.length?this.text.charAt(this.index+a):!1},isNumber:function(a){return"0"<=a&&"9">=a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=
-a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,c,d){d=d||this.index;c=A(c)?"s "+c+"-"+this.index+" ["+this.text.substring(c,d)+"]":" "+d;throw Ca("lexerr",a,c,this.text);},readNumber:function(){for(var a="",c=this.index;this.index<this.text.length;){var d=I(this.text.charAt(this.index));if("."==d||this.isNumber(d))a+=d;else{var e=this.peek();if("e"==d&&this.isExpOperator(e))a+=d;else if(this.isExpOperator(d)&&e&&this.isNumber(e)&&
-"e"==a.charAt(a.length-1))a+=d;else if(!this.isExpOperator(d)||e&&this.isNumber(e)||"e"!=a.charAt(a.length-1))break;else this.throwError("Invalid exponent")}this.index++}a*=1;this.tokens.push({index:c,text:a,json:!0,fn:function(){return a}})},readIdent:function(){for(var a=this,c="",d=this.index,e,f,g,h;this.index<this.text.length;){h=this.text.charAt(this.index);if("."===h||this.isIdent(h)||this.isNumber(h))"."===h&&(e=this.index),c+=h;else break;this.index++}if(e)for(f=this.index;f<this.text.length;){h=
-this.text.charAt(f);if("("===h){g=c.substr(e-d+1);c=c.substr(0,e-d);this.index=f;break}if(this.isWhitespace(h))f++;else break}d={index:d,text:c};if(Oa.hasOwnProperty(c))d.fn=Oa[c],d.json=Oa[c];else{var l=Kc(c,this.options,this.text);d.fn=D(function(a,c){return l(a,c)},{assign:function(d,e){return sb(d,c,e,a.text,a.options)}})}this.tokens.push(d);g&&(this.tokens.push({index:e,text:".",json:!1}),this.tokens.push({index:e+1,text:g,json:!1}))},readString:function(a){var c=this.index;this.index++;for(var d=
-"",e=a,f=!1;this.index<this.text.length;){var g=this.text.charAt(this.index),e=e+g;if(f)"u"===g?(g=this.text.substring(this.index+1,this.index+5),g.match(/[\da-f]{4}/i)||this.throwError("Invalid unicode escape [\\u"+g+"]"),this.index+=4,d+=String.fromCharCode(parseInt(g,16))):d=(f=af[g])?d+f:d+g,f=!1;else if("\\"===g)f=!0;else{if(g===a){this.index++;this.tokens.push({index:c,text:e,string:d,json:!0,fn:function(){return d}});return}d+=g}this.index++}this.throwError("Unterminated quote",c)}};var ab=
-function(a,c,d){this.lexer=a;this.$filter=c;this.options=d};ab.ZERO=D(function(){return 0},{constant:!0});ab.prototype={constructor:ab,parse:function(a,c){this.text=a;this.json=c;this.tokens=this.lexer.lex(a);c&&(this.assignment=this.logicalOR,this.functionCall=this.fieldAccess=this.objectIndex=this.filterChain=function(){this.throwError("is not valid json",{text:a,index:0})});var d=c?this.primary():this.statements();0!==this.tokens.length&&this.throwError("is an unexpected token",this.tokens[0]);
-d.literal=!!d.literal;d.constant=!!d.constant;return d},primary:function(){var a;if(this.expect("("))a=this.filterChain(),this.consume(")");else if(this.expect("["))a=this.arrayDeclaration();else if(this.expect("{"))a=this.object();else{var c=this.expect();(a=c.fn)||this.throwError("not a primary expression",c);c.json&&(a.constant=!0,a.literal=!0)}for(var d;c=this.expect("(","[",".");)"("===c.text?(a=this.functionCall(a,d),d=null):"["===c.text?(d=a,a=this.objectIndex(a)):"."===c.text?(d=a,a=this.fieldAccess(a)):
-this.throwError("IMPOSSIBLE");return a},throwError:function(a,c){throw Ca("syntax",c.text,a,c.index+1,this.text,this.text.substring(c.index));},peekToken:function(){if(0===this.tokens.length)throw Ca("ueoe",this.text);return this.tokens[0]},peek:function(a,c,d,e){if(0<this.tokens.length){var f=this.tokens[0],g=f.text;if(g===a||g===c||g===d||g===e||!(a||c||d||e))return f}return!1},expect:function(a,c,d,e){return(a=this.peek(a,c,d,e))?(this.json&&!a.json&&this.throwError("is not valid json",a),this.tokens.shift(),
-a):!1},consume:function(a){this.expect(a)||this.throwError("is unexpected, expecting ["+a+"]",this.peek())},unaryFn:function(a,c){return D(function(d,e){return a(d,e,c)},{constant:c.constant})},ternaryFn:function(a,c,d){return D(function(e,f){return a(e,f)?c(e,f):d(e,f)},{constant:a.constant&&c.constant&&d.constant})},binaryFn:function(a,c,d){return D(function(e,f){return c(e,f,a,d)},{constant:a.constant&&d.constant})},statements:function(){for(var a=[];;)if(0<this.tokens.length&&!this.peek("}",")",
-";","]")&&a.push(this.filterChain()),!this.expect(";"))return 1===a.length?a[0]:function(c,d){for(var e,f=0;f<a.length;f++){var g=a[f];g&&(e=g(c,d))}return e}},filterChain:function(){for(var a=this.expression(),c;;)if(c=this.expect("|"))a=this.binaryFn(a,c.fn,this.filter());else return a},filter:function(){for(var a=this.expect(),c=this.$filter(a.text),d=[];;)if(a=this.expect(":"))d.push(this.expression());else{var e=function(a,e,h){h=[h];for(var l=0;l<d.length;l++)h.push(d[l](a,e));return c.apply(a,
-h)};return function(){return e}}},expression:function(){return this.assignment()},assignment:function(){var a=this.ternary(),c,d;return(d=this.expect("="))?(a.assign||this.throwError("implies assignment but ["+this.text.substring(0,d.index)+"] can not be assigned to",d),c=this.ternary(),function(d,f){return a.assign(d,c(d,f),f)}):a},ternary:function(){var a=this.logicalOR(),c,d;if(this.expect("?")){c=this.ternary();if(d=this.expect(":"))return this.ternaryFn(a,c,this.ternary());this.throwError("expected :",
-d)}else return a},logicalOR:function(){for(var a=this.logicalAND(),c;;)if(c=this.expect("||"))a=this.binaryFn(a,c.fn,this.logicalAND());else return a},logicalAND:function(){var a=this.equality(),c;if(c=this.expect("&&"))a=this.binaryFn(a,c.fn,this.logicalAND());return a},equality:function(){var a=this.relational(),c;if(c=this.expect("==","!=","===","!=="))a=this.binaryFn(a,c.fn,this.equality());return a},relational:function(){var a=this.additive(),c;if(c=this.expect("<",">","<=",">="))a=this.binaryFn(a,
-c.fn,this.relational());return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a=this.binaryFn(a,c.fn,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a=this.binaryFn(a,c.fn,this.unary());return a},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(ab.ZERO,a.fn,this.unary()):(a=this.expect("!"))?this.unaryFn(a.fn,this.unary()):this.primary()},fieldAccess:function(a){var c=
-this,d=this.expect().text,e=Kc(d,this.options,this.text);return D(function(c,d,h){return e(h||a(c,d))},{assign:function(e,g,h){return sb(a(e,h),d,g,c.text,c.options)}})},objectIndex:function(a){var c=this,d=this.expression();this.consume("]");return D(function(e,f){var g=a(e,f),h=d(e,f),l;if(!g)return r;(g=$a(g[h],c.text))&&(g.then&&c.options.unwrapPromises)&&(l=g,"$$v"in g||(l.$$v=r,l.then(function(a){l.$$v=a})),g=g.$$v);return g},{assign:function(e,f,g){var h=d(e,g);return $a(a(e,g),c.text)[h]=
-f}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push(this.expression());while(this.expect(","))}this.consume(")");var e=this;return function(f,g){for(var h=[],l=c?c(f,g):f,k=0;k<d.length;k++)h.push(d[k](f,g));k=a(f,g,l)||w;$a(l,e.text);$a(k,e.text);h=k.apply?k.apply(l,h):k(h[0],h[1],h[2],h[3],h[4]);return $a(h,e.text)}},arrayDeclaration:function(){var a=[],c=!0;if("]"!==this.peekToken().text){do{if(this.peek("]"))break;var d=this.expression();a.push(d);d.constant||(c=
-!1)}while(this.expect(","))}this.consume("]");return D(function(c,d){for(var g=[],h=0;h<a.length;h++)g.push(a[h](c,d));return g},{literal:!0,constant:c})},object:function(){var a=[],c=!0;if("}"!==this.peekToken().text){do{if(this.peek("}"))break;var d=this.expect(),d=d.string||d.text;this.consume(":");var e=this.expression();a.push({key:d,value:e});e.constant||(c=!1)}while(this.expect(","))}this.consume("}");return D(function(c,d){for(var e={},l=0;l<a.length;l++){var k=a[l];e[k.key]=k.value(c,d)}return e},
-{literal:!0,constant:c})}};var Rb={},wa=B("$sce"),ga={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},X=V.createElement("a"),Oc=ua(O.location.href,!0);lc.$inject=["$provide"];Pc.$inject=["$locale"];Rc.$inject=["$locale"];var Uc=".",We={yyyy:$("FullYear",4),yy:$("FullYear",2,0,!0),y:$("FullYear",1),MMMM:ub("Month"),MMM:ub("Month",!0),MM:$("Month",2,1),M:$("Month",1,1),dd:$("Date",2),d:$("Date",1),HH:$("Hours",2),H:$("Hours",1),hh:$("Hours",2,-12),h:$("Hours",1,-12),mm:$("Minutes",
-2),m:$("Minutes",1),ss:$("Seconds",2),s:$("Seconds",1),sss:$("Milliseconds",3),EEEE:ub("Day"),EEE:ub("Day",!0),a:function(a,c){return 12>a.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset();return a=(0<=a?"+":"")+(tb(Math[0<a?"floor":"ceil"](a/60),2)+tb(Math.abs(a%60),2))},ww:Wc(2),w:Wc(1)},Ve=/((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|w+))(.*)/,Ue=/^\-?\d+$/;Qc.$inject=["$locale"];var Se=aa(I),Te=aa(Ga);Sc.$inject=["$parse"];var pd=aa({restrict:"E",
-c

<TRUNCATED>

[53/54] [abbrv] git commit: moved generated files to their own directories

Posted by sn...@apache.org.
moved generated files to their own directories


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/0f2e2032
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/0f2e2032
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/0f2e2032

Branch: refs/heads/master
Commit: 0f2e2032af61018c931bb92329c795868caebe14
Parents: e3dbe76
Author: Rod Simpson <ro...@apigee.com>
Authored: Mon Aug 4 13:44:00 2014 -0600
Committer: Rod Simpson <ro...@apigee.com>
Committed: Mon Aug 4 13:44:00 2014 -0600

----------------------------------------------------------------------
 .gitignore                 |  6 ++++++
 portal/Gruntfile.js        | 29 ++++++++++++++---------------
 portal/index-template.html |  4 ++--
 portal/tests/karma.conf.js |  4 ++--
 4 files changed, 24 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/0f2e2032/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 4ec3b9b..4203d92 100644
--- a/.gitignore
+++ b/.gitignore
@@ -48,3 +48,9 @@ stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/q
 portal/js/templates.js
 
 /portal/dist/usergrid-portal.zip
+
+/portal/js/usergrid-dev.js
+
+/portal/js/generated/
+
+/portal/js/generated-templates/

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/0f2e2032/portal/Gruntfile.js
----------------------------------------------------------------------
diff --git a/portal/Gruntfile.js b/portal/Gruntfile.js
index 2b6245e..b44f3e0 100644
--- a/portal/Gruntfile.js
+++ b/portal/Gruntfile.js
@@ -20,12 +20,13 @@ var bower = require('./bower.json');
 
 var distPath = 'dist/'+bower.name,
   coveragePath = 'dist-cov/'+bower.name,
-  libsFile = 'js/libs/usergrid-libs.min.js',
-  devFile = 'js/usergrid-dev.min.js',
+  libsFile = 'js/generated/usergrid-libs.min.js',
+  devFile = 'js/generated/usergrid-dev.js',
+  mainFile = 'js/generated/usergrid.min.js',
+  templateFile = 'js/generated-templates/templates.js',
   coverageDir = 'test/coverage/instrument/',
   coverageFile = 'test/coverage/instrument/js/usergrid-coverage.min.js',
-  mainFile = 'js/usergrid.min.js',
-  templateFile = 'js/templates.js',
+
   distName = bower.name,
   licenseHeader =' /**\n \
  Licensed to the Apache Software Foundation (ASF) under one\n \
@@ -64,7 +65,7 @@ module.exports = function (grunt) {
           beautify: false
         },
         files:{
-          'js/libs/usergrid-libs.min.js':[
+          'js/generated/usergrid-libs.min.js':[
             'js/libs/jquery/jquery-1.9.1.min.js',
             'js/libs/jquery/jquery-migrate-1.1.1.min.js',
             'js/libs/jquery/jquery.sparkline.min.js',
@@ -91,13 +92,12 @@ module.exports = function (grunt) {
           wrap: true
         },
         files: {
-          'js/usergrid-dev.min.js': [
+          'js/generated/usergrid-dev.js': [
             'js/app.js',
             'js/**/*.js',
             '!js/config.js',
             '!js/libs/**/*.js',
-            '!'+mainFile,
-            '!'+devFile
+            '!js/generated/*.js'
           ]
         }
       },
@@ -112,10 +112,10 @@ module.exports = function (grunt) {
           'test/coverage/instrument/js/usergrid-coverage.min.js': [
             coverageDir+'js/app.js',
             coverageDir+'js/**/*.js',
-            'js/templates.js',
+            'js/generated-templates/templates.js',
             '!'+coverageDir+'js/config.js',
             '!'+coverageDir+'js/libs/**/*.js',
-            '!'+coverageDir+''+mainFile,
+            '!'+coverageDir+'js/generated/*.js',
             '!'+coverageDir+'js/usergrid-coverage.min.js'
           ]
         }
@@ -139,7 +139,7 @@ module.exports = function (grunt) {
           beautify: false
         },
         files: {
-          'js/usergrid.min.js': [
+          'js/generated/usergrid.min.js': [
             devFile
           ]
         }
@@ -178,9 +178,8 @@ module.exports = function (grunt) {
         '!tests/',
         '!css/main.min.css',
         '!js/libs/',
-        '!js/*.min.js',
-        '!'+templateFile,
-        '!'+libsFile
+        '!js/generated/*.js',
+        '!js/generated-templates/*.js'
       ],
       tasks: ['build-dev']
     },
@@ -298,7 +297,7 @@ module.exports = function (grunt) {
       }
     },
     clean: {
-        build: ['dist/','dist-cov/','test/', 'js/*.min.js',templateFile,'index.html','index-debug.html'],
+        build: ['dist/','dist-cov/','test/','js/generated/','js/*.min.js',templateFile,'index.html','index-debug.html'],
         coverage: ['reports/']
     },
     dom_munger: {

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/0f2e2032/portal/index-template.html
----------------------------------------------------------------------
diff --git a/portal/index-template.html b/portal/index-template.html
index 5b1b5da..ee818ad 100644
--- a/portal/index-template.html
+++ b/portal/index-template.html
@@ -143,13 +143,13 @@ under the License.
     </div>
   </div>
 </section>
-<script id="libScript" src="js/libs/usergrid-libs.min.js"></script>
+<script id="libScript" src="js/generated/usergrid-libs.min.js"></script>
 <script id="libScript" src="js/libs/bootstrap/custom/js/bootstrap.min.js"></script>
 <!--todo - remove this. temporarily including jquery ui for calendar in push-->
 <script id="libScript" src="js/libs/jqueryui/jquery.ui.timepicker.min.js" type="text/javascript"></script>
 <!-- In dev use: <script src="js/libs/angular-1.1.5.js"></script> -->
 <!--<script type="text/javascript" src="js/libs/angular-ui-ng-grid/ng-grid-2.0.2.debug.js"></script>-->
 <script src="config.js"></script>
-<script id="main-script" src="js/usergrid.min.js"></script>
+<script id="main-script" src="js/generated/usergrid.min.js"></script>
 </body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/0f2e2032/portal/tests/karma.conf.js
----------------------------------------------------------------------
diff --git a/portal/tests/karma.conf.js b/portal/tests/karma.conf.js
index e3e4a2e..7e37393 100644
--- a/portal/tests/karma.conf.js
+++ b/portal/tests/karma.conf.js
@@ -8,9 +8,9 @@ module.exports = function(config) {
     // list of files / patterns to load in the browser
     files: [
       'config.js',
-       'js/libs/usergrid-libs.min.js',
+       'js/generated/usergrid-libs.min.js',
        'js/libs/angular-1.2.5/angular-mocks.js',
-      'js/usergrid-dev.min.js',
+       'js/generated/usergrid-dev.js',
        'tests/unit/*.js'
     ],
 


[22/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/index-stripped2.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/index-stripped2.html b/deleted/dist-cov/usergrid-portal/archive/index-stripped2.html
deleted file mode 100644
index 19e9752..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/index-stripped2.html
+++ /dev/null
@@ -1,1795 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html"
-      xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html">
-<html>
-  <head>
-  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
-  <title>Apigee App Services Admin Portal </title>
-    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
-    <link rel="stylesheet" type="text/css" href="css/usergrid-stripped.css"/>
-    <script src="config.js" type="text/javascript"></script>
-    <script src="js/app/usergrid.appSDK.js" type="text/javascript"></script>
-    <script src="js/app/session.js" type="text/javascript"></script>
-    <script src="js/app/quickLogin.js" type="text/javascript"></script>
-    <script src="js/app/params.js" type="text/javascript"></script>
-    <script src="js/app/sso.js" type="text/javascript"></script>
-    <script type="text/javascript">
-      /*
-      Quick Login: script loads the minimal amount of resources to be able to detect if the user is logged in
-      and if not, send him directly to the SSO page
-       */
-      Usergrid.Params.parseParams();
-      Usergrid.SSO.setUseSSO(Usergrid.Params.queryParams.use_sso);
-      Usergrid.QuickLogin.init(Usergrid.Params.queryParams,Usergrid.userSession.loggedIn(),
-      Usergrid.SSO.usingSSO());
-
-    </script>
-    <script src="js/lib/jquery-1.7.2.min.js" type="text/javascript"></script>
-    <script src="js/lib/underscore-min.js" type="text/javascript"></script>
-    <script src="js/lib/backbone.js" type="text/javascript"></script>
-    <script src="js/lib/jquery-ui-1.8.18.min.js" type="text/javascript"></script>
-    <script src="js/lib/jquery.jsonp-2.3.1.min.js" type="text/javascript"></script>
-    <script src="js/lib/jquery.dataset.min.js" type="text/javascript"></script>
-    <script src="js/lib/jquery.tmpl.min.js" type="text/javascript"></script>
-    <script src="js/lib/jquery.dform-0.1.3.min.js" type="text/javascript"></script>
-    <script src="js/lib/jquery.ui.timepicker.min.js" type="text/javascript"></script>
-    <script src="js/lib/jquery.ui.statusbar.min.js" type="text/javascript"></script>
-    <script src="js/lib/date.min.js" type="text/javascript"></script>
-    <script src="js/app/helpers.js" type="text/javascript"></script>
-    <script src="js/app/navigation.js" type="text/javascript"></script>
-    <script src="js/app/console.js" type="text/javascript"></script>
-    <script src="js/app/ui/ui.js" type="text/javascript"></script>
-
-<style type="text/css">
-
-
-</style>
-
-</head>
-<body>
-
-<div id="alert-error-message-container" class="alert alert-error" style="width:96.5%; z-index: 99; position: fixed; top: 84px;display: none;">
-  <a href="#" class="close" data-dismiss="alert">&times;</a>
-  <strong id="alert-error-header"></strong>
-  <span id="alert-error-message"></span>
-</div>
-
-<div id="pages">
-
-  <div id="message-page" class="container-fluid">
-    <div id="message-area" class="alert alert-info curl-data" style="padding: 20px;">
-      Whoops! We encounterd an error connecting to the API.  Press refresh to try loading the Admin Portal again.
-      <button id="reload-button" class="btn btn-primary" style="float: right; margin: -4px 30px;" onClick="window.location.reload()">Refresh</button>
-    </div>
-  </div>
-  <div id="login-page" class="container-fluid">
-    <div class="row">
-      <div id="login-area" class="span6 offset1">
-        <div id="login-message" class="alert alert-error">
-          <strong>ERROR</strong>: Your details were incorrect.<br/>
-        </div>
-        <div class="console-section">
-          <div class="well thingy"><span style="margin-left: 30px" class="title">Login</span></div>
-          <form name="login-form" id="login-form" class="form-horizontal">
-            <div class="control-group">
-              <label class="control-label" for="login-email">Email:</label>
-              <div class="controls">
-                <input type="text" name="login-email" id="login-email" class="" value="" size="20"/>
-              </div>
-
-            </div>
-            <div class="control-group">
-              <label class="control-label" for="login-password">Password:</label>
-              <div class="controls">
-                <input type="password" name="login-password" id="login-password" class="" value="" size="20"/>
-
-              </div>
-            </div>
-            <div class="control-group">
-              <div class="controls">
-                <input type="checkbox" value="true" id="remember" name="remember"/>
-                <span>Remember me</span>
-              </div>
-            </div>
-            <div class="form-actions">
-              <div class="submit">
-                <input type="submit" name="button-login" id="button-login" value="Log In" class="btn btn-usergrid"/>
-              </div>
-            </div>
-          </form>
-        </div>
-      </div>
-    </div>
-  </div>
-  <div id="post-signup-page" class="container-fluid">
-    <div class="row">
-      <div id="login-area" class="span6 offset1">
-        <div class="console-section well thingy">
-          <span class="title">We're holding a seat for you!</span>
-          <br /><br />
-          <p>Thanks for signing up for a spot on our private beta. We will send you an email as soon as we're ready for you!</p>
-          <p>In the mean time, you can stay up to date with App Services on our <a href="https://groups.google.com/forum/?fromgroups#!forum/usergrid">Google Group</a>.</p>
-        </div>
-      </div>
-    </div>
-  </div>
-  <div id="signup-page" class="container-fluid">
-    <div class="row">
-      <div id="signup-area" class="span6 offset1">
-        <div id="signup-message" class="alert alert-error"></div>
-        <div class="console-section">
-          <div class="well thingy"><span class="title">Register</span> </div>
-          <form name="signup-form" id="signup-form" onsubmit="return false;" class="form-horizontal">
-            <div class="control-group">
-              <label class="control-label" for="signup-organization-name">Organization Account</label>
-              <div class="controls">
-                <input type="text" name="signup-organization-name" id="signup-organization-name" class="" value="" size="20"/>
-              </div>
-            </div>
-            <div class="control-group">
-              <label class="control-label" for="signup-username">Username</label>
-              <div class="controls">
-                <input type="text" name="signup-username" id="signup-username" class="" value="" size="20"/>
-              </div>
-            </div>
-            <div class="control-group">
-              <label class="control-label" for="signup-name">Name </label>
-              <div class="controls">
-                <input type="text" name="signup-name" id="signup-name" class="" value="" size="20"/>
-              </div>
-            </div>
-            <div class="control-group">
-              <label class="control-label" for="signup-email">Email </label>
-              <div class="controls">
-                <input type="text" name="signup-email" id="signup-email" class="" value="" size="20"/>
-              </div>
-            </div>
-            <div class="control-group">
-              <label class="control-label" for="signup-password">Password </label>
-              <div class="controls">
-                <input type="password" name="signup-password" id="signup-password" class="" value="" size="20"/>
-              </div>
-            </div>
-            <div class="control-group">
-              <label class="control-label" for="signup-password-confirm">Confirm </label>
-              <div class="controls">
-                <input type="password" name="signup-password-confirm" id="signup-password-confirm" class="" value="" size="20"/>
-              </div>
-            </div>
-            <div class="form-actions">
-              <div class="submit">
-                <input type="button" name="button-signup" id="button-signup" value="Sign up" class="btn btn-usergrid"/>
-              </div>
-            </div>
-          </form>
-        </div>
-      </div>
-    </div>
-  </div>
-  <div id="forgot-password-page" class="container">
-    <iframe class="container"></iframe>
-  </div>
-
-  <div id="console-page" class="">
-    <div id="main1">
-      <div id="main2">
-
-        <div id="left2" style="display: none;">
-          <div id="left2-content" class="column-in">
-
-            <div id="sidebar-menu2" style="padding-top: 10px; display: none;">
-              <p class="panel-desc">Data related to your application end-users.</p>
-              <hr style="margin: 0 0 0 10px; width:130px;">
-              <ul id="app-end-users-buttons" class="nav nav-list">
-                <li><a href="#users" id="users-sublink"><span class="nav-menu-text">Users</span></a></li>
-                <li><a href="#groups" id="groups-sublink"><span class="nav-menu-text">Groups</span></a></li>
-                <li><a href="#roles" id="roles-sublink"> <span class="nav-menu-text">Roles</span></a></li>
-              </ul>
-            </div>
-
-            <div id="left-collections-menu" style="display: none;">
-                <p class="panel-desc">Explore your application's data collections.</p>
-                <hr class="col-divider">
-                <div id="collections-menu" style="padding: 10px">
-                 <a class="btn" data-toggle="modal" href="#dialog-form-new-collection">Add Collection</a>
-                </div>
-                <hr class="col-divider">
-                <div id="left-collections-content"></div>
-            </div>
-
-            <div id="left-notifications-menu" style="display: none;">
-              <p class="panel-desc">Configure and send push notifications to your app.</p>
-              <hr class="col-divider">
-
-              <ul id="notification-buttons" class="nav nav-list" style="margin-bottom: 5px;">
-                <li><a href="#sendNotification" id="sendNotification-sublink"><span class="nav-menu-text">Send Notification</span></a></li>
-                <li><a href="#messageHistory" id="messageHistory-sublink"><span class="nav-menu-text">Notification History</span></a></li>
-                <li><a href="#configuration" id="configuration-sublink"> <span class="nav-menu-text">Configuration</span></a></li>
-                <li><a href="#getStarted" id="getStarted-sublink"> <span class="nav-menu-text">Getting Started</span></a></li>
-              </ul>
-            </div>
-
-          </div>
-        </div>
-
-
-
-
-        <div id="middle">
-          <div class="column-in" style="padding-top: 10px;">
-
-
-            <div id="console-panels" class="container-fluid">
-              <div id="organization-panel" style="display: none">
-                <div id="console-panel-nav-bar"></div>
-                <div id="home-messages" class="alert" style="display: none;"></div>
-                <div class="console-section">
-                  <div class="well thingy"><span class="title"> Current Organization </span></div>
-                  <table id="organizations-table" class="hideable table">
-                    <tbody></tbody>
-                  </table>
-                </div>
-                <div class="org-page-sections">
-                  <div class="well thingy"><span class="title" style="float: left;"> Applications </span>
-                    <div class="bar">
-                      <a class="btn button bottom-space" data-toggle="modal" href="#dialog-form-new-application"> New Application</a>
-                    </div>
-                  </div>
-                  <table id="organization-applications-table" class="hideable table">
-                    <tbody></tbody>
-                  </table>
-                </div>
-                <div class="org-page-sections">
-                  <div class="well thingy">
-                    <span class="title"> Activities </span>
-                  </div>
-                  <table id="organization-feed-table" class="hideable table">
-                    <tbody></tbody>
-                  </table>
-                </div>
-                <div class="org-page-sections">
-                  <div class="well thingy"><span class="title" style="float: left;"> Organization's Administrators </span>
-                    <div class="bar">
-                      <a class="btn button bottom-space" data-toggle="modal" href="#dialog-form-new-admin"> New Administrator</a>
-                    </div>
-                  </div>
-                  <table id="organization-admins-table" class="hideable table">
-                    <tbody></tbody>
-                  </table>
-                </div>
-                <div class="org-page-sections">
-                  <div class="well thingy"><span class="title" style="float: left;"> Organization API Credentials </span>
-                    <div class="bar">
-                      <a class="btn button bottom-space" onclick="Usergrid.console.newOrganizationCredentials(); return false;"> Regenerate Credentials</a>
-                    </div>
-                  </div>
-                  <table class="hideable table">
-                    <tbody>
-                      <tr>
-                        <td>
-                          <span class="span2">Client ID</span>
-                        </td>
-                        <td>
-                          <span id="organization-panel-key">...</span>
-                        </td>
-                      </tr>
-                      <tr>
-                        <td>
-                          <span class="span2">Client Secret</span>
-                        </td>
-                        <td>
-                          <span id="organization-panel-secret">...</span>
-                        </td>
-                      </tr>
-                    </tbody>
-                  </table>
-                </div>
-                <form id="dialog-form-force-new-application" class="modal hide fade" action="#">
-                  <div class="modal-header">
-                    <h4>No applications for this organization</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p class="validateTips">All organizations require at least one application. Please create one.</p>
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="new-application-name">Name</label>
-                        <div class="controls">
-                          <input type="text" name="name" id="" value="" class="input-xlarge new-application-name"/>
-                          <p class="help-block">Length of name must be between 4 and 80</p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Create"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-                <form id="dialog-form-new-admin" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Create new administrator</h4>
-                  </div>
-                  <div class="modal-body">
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="new-admin-email">Email</label>
-                        <div class="controls">
-                          <input type="text" name="email" id="new-admin-email" value="" class="input-xlarge"/>
-                          <input type="hidden" name="password" id="new-admin-password" value=""/>
-                          <input type="hidden" name="" id="new-admin-password-confirm" value=""/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Create"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-              </div>
-
-              <div id="dashboard-panel" style="display: none">
-                <div class="console-section">
-                  <div class="well thingy">
-                    <span class="title"> Application Dashboard: <span class="app_title"></span> </span>
-                  </div>
-                  <div class="console-section-contents">
-                    <div id="application-panel-table" style="overflow: hidden;">
-                      <div id="application-panel-entity-graph" class="span graph"></div>
-                      <div id="application-panel-text" class="span">...</div>
-                    </div>
-
-                    <div style="max-width: 680px; overflow: hidden;">
-                    <div>
-                      <div id="application-entities-timeline" class="span graph"></div>
-                      <div id="application-cpu-time" class="span graph"></div>
-                    </div>
-                    <div>
-                      <div id="application-data-uploaded" class="span graph"></div>
-                      <div id="application-data-downloaded" class="span graph"></div>
-                    </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-              <div id="account-panel" class="container-fluid hide">
-                <div id="account-update-modal" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Account Settings</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p>Account settings updated.</p>
-                  </div>
-                  <div class="modal-footer">
-                    <button class="btn btn-usergrid" data-dismiss="modal">OK</button>
-                  </div>
-                </div>
-                <div class="span offset1">
-                  <h2>Account Settings </h2>
-                  <div id="account-panels">
-                    <div class="panel-content">
-                      <div class="console-section">
-                        <div class="well thingy"><span class="title"> Personal Account </span> </div>
-                        <div class="console-section-contents">
-                          <form name="update-account-form" id="update-account-form" class="form-horizontal">
-                            <fieldset>
-                              <div class="control-group">
-                                <label id="update-account-id-label" class="control-label" for="update-account-id">UUID</label>
-                                <div class="controls">
-                                  <span id="update-account-id" class="monospace"></span>
-                                </div>
-                              </div>
-                              <div class="control-group">
-                                <label class="control-label" for="update-account-username">Username </label>
-                                <div class="controls">
-                                  <input type="text" name="update-account-username" id="update-account-username" class="span4" value="" size="20"/>
-                                </div>
-                              </div>
-                              <div class="control-group">
-                                <label class="control-label" for="update-account-name">Name </label>
-                                <div class="controls">
-                                  <input type="text" name="update-account-name" id="update-account-name" class="span4" value="" size="20"/>
-                                </div>
-                              </div>
-                              <div class="control-group">
-                                <label class="control-label" for="update-account-email"> Email</label>
-                                <div class="controls">
-                                  <input type="text" name="update-account-email" id="update-account-email" class="span4" value="" size="20"/>
-                                </div>
-                              </div>
-                              <div class="control-group">
-                                <label class="control-label" for="update-account-picture-img">Picture <br />(from <a href="http://gravatar.com">gravatar.com</a>) </label>
-                                <div class="controls">
-                                  <img id="update-account-picture-img" src="" class="" width="50" />
-                                </div>
-                              </div>
-                              <span class="help-block">Leave blank any of the following to keep the current password unchanged</span>
-                              <br />
-                              <div class="control-group">
-                                <label class="control-label" for="old-account-password">Old Password</label>
-                                <div class="controls">
-                                  <input type="password" name="old-account-password" id="old-account-password" class="span4" value="" size="20"/>
-                                </div>
-                              </div>
-                              <div class="control-group">
-                                <label class="control-label" for="update-account-password">New Password</label>
-                                <div class="controls">
-                                  <input type="password" name="update-account-password" id="update-account-password" class="span4" value="" size="20"/>
-                                </div>
-                              </div>
-                              <div class="control-group">
-                                <label class="control-label" for="update-account-password-repeat">Confirm New Password</label>
-                                <div class="controls">
-                                  <input type="password" name="update-account-password-repeat" id="update-account-password-repeat" class="span4" value="" size="20"/>
-                                </div>
-                              </div>
-                            </fieldset>
-                            <div class="form-actions">
-                              <input type="button" name="button-update-account" id="button-update-account" value="Update" class="btn btn-usergrid span"/>
-                            </div>
-                          </form>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                  <div class="panel-content">
-                    <div class="console-section">
-                      <div class="well thingy"><span class="title"> Organizations </span>
-                        <div class="bar">
-                          <a class="" data-toggle="modal" href="#dialog-form-new-organization"> Add </a>
-                        </div>
-                      </div>
-                      <table class="table" id="organizations">
-                      </table>
-                    </div>
-                  </div>
-                  <form id="dialog-form-new-organization" class="modal hide fade">
-                    <div class="modal-header">
-                      <a class="close" data-dismiss="modal">&times</a>
-                      <h4>Create new organization</h4>
-                    </div>
-                    <div class="modal-body">
-                      <p class="validateTips">All form fields are required.</p>
-                      <fieldset>
-                        <div class="control-group">
-                          <label for="new-organization-name">Name</label>
-                          <div class="controls">
-                            <input type="text" name="organization" id="new-organization-name" class="input-xlarge"/>
-                            <p class="help-block hide"></p>
-                          </div>
-                        </div>
-                      </fieldset>
-                    </div>
-                    <div class="modal-footer">
-                      <input type="submit" class="btn btn-usergrid" value="Create"/>
-                      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                    </div>
-                  </form>
-                </div>
-              </div>
-              <div id="users-panel" class="panel-buffer">
-                 <ul id="users-panel-tab-bar" class="nav nav-tabs">
-                    <li class="active"><a id="button-users-list">List</a></li>
-                  </ul>
-                  <div id="users-panel-list" class="panel-content">
-                    <div id="users-messages" class="alert" style="display: none;"></div>
-
-                    <div class="console-section">
-                       <span class="title"> App Users </span>
-                      <div class="well thingy">
-                        <div class="bar">
-                          <input onkeyup="Usergrid.console.searchUsers();" type="text" name="search-user-username" id="search-user-username" class="input-small search" placeholder="Search"/>
-                          <select id="search-user-type" onChange="Usergrid.console.searchUsers();" class="input-medium search">
-                            <option value="username">Username</option>
-                            <option value="name">Full Name</option>
-                          </select>
-
-                          <a class="btn " data-toggle="modal" id="delete-users-link" > Delete</a>
-                          <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-new-user"> Create new user</a>
-
-
-
-                        </div>
-                      </div>
-                      <table id="users-table" class="table">
-                        <tbody></tbody>
-                      </table>
-                      <ul id="users-pagination" class="pager">
-                        <li id="users-previous" class="previous"><a >&larr; Previous</a></li>
-                        <li id="users-next" class="next"><a >Next &rarr;</a></li>
-                      </ul>
-                    </div>
-                    <div id="users-curl-container" class="row-fluid curl-container ">
-                    </div>
-                  </div>
-                  <form id="dialog-form-new-user" class="modal hide fade">
-                    <div class="modal-header">
-                      <a class="close" data-dismiss="modal">&times</a>
-                      <h4>Create new user</h4>
-                    </div>
-                    <div class="modal-body">
-                      <p class="validateTips">Username is required.</p>
-                      <fieldset>
-                        <div class="control-group">
-                          <label for="new-user-username">Username</label>
-                          <div class="controls">
-                            <input type="text" name="username" id="new-user-username" class="input-xlarge"/>
-                            <p class="help-block hide"></p>
-                          </div>
-                        </div>
-                        <div class="control-group">
-                          <label for="new-user-fullname">Full name</label>
-                          <div class="controls">
-                            <input type="text" name="name" id="new-user-fullname" class="input-xlarge"/>
-                            <p class="help-block hide"></p>
-                          </div>
-                        </div>
-                        <div class="control-group">
-                          <label for="new-user-email">Email</label>
-                          <div class="controls">
-                            <input type="text" name="email" id="new-user-email" class="input-xlarge"/>
-                            <p class="help-block hide"></p>
-                          </div>
-                        </div>
-                        <div class="control-group">
-                          <label for="new-user-password">Password</label>
-                          <div class="controls">
-                            <input type="password" name="password" id="new-user-password" class="input-xlarge"/>
-                            <p class="help-block hide"></p>
-                          </div>
-                        </div>
-                        <div class="control-group">
-                          <label for="new-user-validate-password">Confirm password</label>
-                          <div class="controls">
-                            <input type="password" name="validate-password" id="new-user-validate-password" class="input-xlarge"/>
-                            <p class="help-block hide"></p>
-                          </div>
-                        </div>
-                      </fieldset>
-                    </div>
-                    <div class="modal-footer">
-                      <input type="submit" class="btn btn-usergrid" value="Create"/>
-                      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                    </div>
-                  </form>
-                </div>
-
-              <form id="confirmAction" class="modal hide fade">
-                <div class="modal-header">
-                  <a class="close" data-dismiss="modal">&times</a>
-                  <h4></h4>
-                </div>
-                <div class="modal-body">
-                  <p></p>
-                </div>
-                <div class="modal-footer">
-                  <input type="submit" class="btn btn-danger" value="Yes, continue"/>
-                  <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                </div>
-              </form>
-              <form id="confirmDialog" class="modal hide fade">
-                <div class="modal-header">
-                  <a class="close" data-dismiss="modal">&times</a>
-                  <h4>Are you sure?</h4>
-                </div>
-                <div class="modal-body">
-                  <p></p>
-                </div>
-                <div class="modal-footer">
-                  <input type="submit" class="btn btn-danger" value="Yes, delete"/>
-                  <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                </div>
-              </form>
-              <form id="alertModal" class="modal hide fade">
-                <div class="modal-header">
-                  <a class="close" data-dismiss="modal">&times</a>
-                  <h4></h4>
-                </div>
-                <div class="modal-body">
-                  <p></p>
-                </div>
-                <div class="modal-footer">
-                  <input type="reset" class="btn btn-usergrid" value="OK" data-dismiss="modal"/>
-                </div>
-              </form>
-
-              <form id="queryHelpModal" class="modal hide fade">
-                <div class="modal-header">
-                  <a class="close" data-dismiss="modal">&times</a>
-                  <h4>Making Queries</h4>
-                </div>
-                <div class="modal-body">
-                  <p><strong>Making Queries</strong></p>
-                  <p>Use the Query String field to enter SQL-style queries against your collections.  For example, to select
-                    all users whose name starts with <strong>fred</strong>:</p>
-                  <pre>select * where name = 'fred*'</pre>
-                  <p>To select all activities where a category is <strong>usermessage</strong> and content contains the word
-                    <strong>hello</strong> in a string:</p>
-                  <pre class="code-para">select * where category = 'usermessage' and content contains 'hello'</pre>
-                  <a class="outside-link" target="_blank" href="http://apigee.com/docs/usergrid/content/queries-and-parameters"><strong>Learn more about Queries and Parameters.</strong></a>
-                </div>
-                <div class="modal-footer">
-                  <input type="reset" class="btn btn-usergrid" value="close" data-dismiss="modal"/>
-                </div>
-              </form>
-
-              <form id="queryPathHelpModal" class="modal hide fade">
-                <div class="modal-header">
-                  <a class="close" data-dismiss="modal">&times</a>
-                  <h4>Query Path</h4>
-                </div>
-                <div class="modal-body">
-                  <p><strong>Query Path</strong></p>
-                  <p>The query path is typically just the name of the collection you want to access.  For example, if you want to work with a <strong>dogs</strong> collection,
-                    then your path will be:
-                  </p>
-                  <pre>/dogs</pre>
-                  <p>You may also have a more complex path, such as the case when you want to make a connection between two entities.
-                    To create a <strong>likes</strong> connection between a user named <strong>Fred</strong> and a dog named <strong>Dino</strong>,
-                    do a <strong>POST</strong> operation to:
-                   </p>
-                  <pre class="code-para">/users/fred/likes/dogs/dino</pre>
-                  <a class="outside-link" target="_blank" href="http://apigee.com/docs/usergrid/content/entity-relationships"><strong>Learn more about Entity Relationships.</strong></a>
-                </div>
-                <div class="modal-footer">
-                  <input type="reset" class="btn btn-usergrid" value="close" data-dismiss="modal"/>
-                </div>
-              </form>
-
-              <form id="queryLimitHelpModal" class="modal hide fade">
-                <div class="modal-header">
-                  <a class="close" data-dismiss="modal">&times</a>
-                  <h4>Limit</h4>
-                </div>
-                <div class="modal-body">
-                  <p><strong>Limit</strong></p>
-                  <p>The <strong>limit parameter</strong> is used to tell the API how many results you want to have returned from the API call.</p>
-                  <p>The <strong>default</strong> setting is <strong>10</strong>.</p>
-                  <p>The <strong>max</strong> setting is <strong>999</strong>.</p>
-                  <p>This parameter is appended to the end of the query string to be sent to the API.  For example, a limit of 100:</p>
-                  <pre>GET /dogs?limit=100</pre>
-                  <a class="outside-link" target="_blank" href="http://apigee.com/docs/usergrid/content/queries-and-parameters"><strong>Learn more about Queries and Parameters.</strong></a>
-                </div>
-                <div class="modal-footer">
-                  <input type="reset" class="btn btn-usergrid" value="close" data-dismiss="modal"/>
-                </div>
-              </form>
-
-              <form id="queryMethodHelpModal" class="modal hide fade">
-                <div class="modal-header">
-                  <a class="close" data-dismiss="modal">&times</a>
-                  <h4>Method</h4>
-                </div>
-                <div class="modal-body">
-                  <p><strong>Method</strong></p>
-                  <p>The <strong>Method</strong> is used to tell the API what type of operation you want to perform.
-                    These <strong>http methods</strong> map to the standard <strong>CRUD</strong> methods:</p>
-                  <p><strong>POST</strong> is used for <strong>CREATE</strong></p>
-                  <p><strong>GET</strong> is used for <strong>READ</strong></p>
-                  <p><strong>PUT</strong> is used for <strong>UPDATE</strong></p>
-                  <p><strong>DELETE</strong> is used for <strong>DELETE</strong></p>
-                  <p>Using these four methods, you can perform any type of operation against the API.  For example, to READ
-                    from a collection called <strong>/dogs</strong>:</p>
-                  <pre>GET /dogs</pre>
-                  <a class="outside-link" target="_blank" href="http://apigee.com/docs/usergrid/content/using-api"><strong>Learn more about using the API.</strong></a>
-                </div>
-                <div class="modal-footer">
-                  <input type="reset" class="btn btn-usergrid" value="close" data-dismiss="modal"/>
-                </div>
-              </form>
-
-
-               <form id="dialog-form-new-application" class="modal hide fade" action="#">
-                <div class="modal-header">
-                  <a class="close" data-dismiss="modal">&times</a>
-                  <h4>Create new application</h4>
-                </div>
-                <div class="modal-body">
-                  <p class="validateTips">All form fields are required.</p>
-                  <fieldset>
-                    <div class="control-group">
-                      <label for="new-application-name">Name</label>
-                      <div class="controls">
-                        <input type="text" name="name" id="" value="" class="input-xlarge new-application-name"/>
-                        <p class="help-block">Length of name must be between 4 and 80</p>
-                      </div>
-                    </div>
-                  </fieldset>
-                </div>
-                <div class="modal-footer">
-                  <input type="submit" class="btn btn-usergrid" value="Create"/>
-                  <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                </div>
-              </form>
-
-              <div id="user-panel" class="panel-buffer">
-                <ul id="user-panel-tab-bar" class="nav nav-tabs">
-                  <li><a id="button-user-list">List</a></li>
-                  <li class="active"><a id="button-user-profile">Profile</a></li>
-                  <li><a id="button-user-memberships">Groups</a></li>
-                  <li><a id="button-user-activities">Activities</a></li>
-                  <li><a id="button-user-graph">Graph</a></li>
-                  <li><a id="button-user-permissions">Roles &amp; Permissions</a></li>
-                </ul>
-                <!--
-                <div id="user-panel-tab-bar">
-                  <a class="tab-button btn" id="button-user-list" >List</a>
-                  <a class="tab-button btn active" id="button-user-profile" >Profile</a>
-                  <a class="tab-button btn" id="button-user-memberships" >Groups</a>
-                  <a class="tab-button btn" id="button-user-activities" >Activities</a>
-                  <a class="tab-button btn" id="button-user-graph" >Graph</a>
-                  <a class="tab-button btn" id="button-user-permissions" >Roles & Permissions</a>
-                </div>
-                -->
-                <div id="user-panel-profile" class="panel-content"></div>
-                <div id="user-panel-memberships" class="panel-content" style="display: none;"></div>
-                <div id="user-panel-activities" class="panel-content" style="display: none;"></div>
-                <div id="user-panel-graph" class="panel-content" style="display: none;"></div>
-                <div id="user-panel-permissions" class="panel-content" style="display: none;"></div>
-                <form id="dialog-form-add-user-to-role" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Add this user to a Role</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p class="validateTips">Search for the role you want to add to this user.</p>
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="search-role-name-input">Role</label>
-                        <div class="controls">
-                          <input type="text" name="search-role-name-input" id="search-role-name-input" class="input-xlarge"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Add"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-                <form id="dialog-form-add-group-to-user" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Add this user to a Group</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p class="validateTips">Search for the group you want to add this user to.</p>
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="search-group-name-input">Group</label>
-                        <div class="controls">
-                          <input type="text" name="search-group-name-input" id="search-group-name-input" class="input-xlarge"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Add"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-                <form id="dialog-form-follow-user" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Follow this User</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p class="validateTips">Search for the user you want to Follow.</p>
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="search-follow-username-input">User</label>
-                        <div class="controls">
-                          <input type="text" name="search-follow-username-input" id="search-follow-username-input"
-                                 class="input-xlarge"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Follow"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-              </div>
-
-
-
-              <div id="groups-panel" class="panel-buffer">
-                <ul class="nav nav-tabs">
-                    <li class="active"><a id="button-groups-list">List</a></li>
-                  </ul>
-                <div id="groups-panel-list" class="panel-content">
-                  <div id="groups-messages" class="alert" style="display: none;"></div>
-                  <div class="console-section">
-                      <span class="title"> App Groups </span>
-                      <div class="well thingy">
-                        <div class="bar">
-                        <input onkeyup="Usergrid.console.searchGroups();" type="text" name="search-user-groupname" id="search-user-groupname" class="input-small search" placeholder="Search"/>
-                        <select id="search-group-type" onChange="Usergrid.console.searchGroups();" class="input-medium search">
-                          <option value="path">Path</option>
-                          <option value="title">Group Name</option>
-                        </select>
-
-                        <a class="btn" id="delete-groups-link" > Delete</a>
-                        <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-new-group"> Create new group</a>
-
-                      </div>
-                    </div>
-                    <table id="groups-table" class="table">
-                      <tbody></tbody>
-                    </table>
-                    <ul id="groups-pagination" class="pager">
-                      <li id="groups-previous" class="previous"><a >&larr; Previous</a></li>
-                      <li id="groups-next" class="next"><a >Next &rarr;</a></li>
-                    </ul>
-                  </div>
-                  <div id="groups-curl-container" class="row-fluid curl-container ">
-                  </div>
-                </div>
-                <form id="dialog-form-new-group" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Create new group</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p class="validateTips">All form fields are required.</p>
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="new-group-title">Display Name</label>
-                        <div class="controls">
-                          <input type="text" name="title" id="new-group-title" value="" class="input-xlarge"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                      <div class="control-group">
-                        <label for="new-group-path">Group Path</label>
-                        <div class="controls">
-                          <input type="text" name="path" id="new-group-path" value="" class="input-xlarge"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Create"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-              </div>
-              <div id="group-panel" class="panel-buffer">
-                <ul id="group-panel-tab-bar" class="nav nav-tabs">
-                  <li><a id="button-group-list">List</a></li>
-                  <li class="active"><a id="button-group-details">Details</a></li>
-                  <li><a id="button-group-memberships">Members</a></li>
-                  <li><a id="button-group-activities">Activities</a></li>
-                  <li><a id="button-group-permissions">Roles &amp; Permissions</a></li>
-                </ul>
-                <!--
-                <div id="group-panel-tab-bar">
-                  <a class="tab-button btn" id="button-group-list" >List</a>
-                  <a class="tab-button btn active" id="button-group-details" >Details</a>
-                  <a class="tab-button btn" id="button-group-memberships" >Members</a>
-                  <a class="tab-button btn" id="button-group-activities" >Activities</a>
-                  <a class="tab-button btn" id="button-group-permissions" >Roles & Permissions</a>
-                </div-->
-                <div id="group-panel-details" class="panel-content"></div>
-                <div id="group-panel-memberships" class="panel-content" style="display: none;"></div>
-                <div id="group-panel-activities" class="panel-content" style="display: none;"></div>
-                <div id="group-panel-permissions" class="panel-content" style="display: none;"></div>
-                <form id="dialog-form-add-user-to-group" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Add a User to this Group</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p class="validateTips">Search for the user you want to add to this group.</p>
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="search-user-name-input">User</label>
-                        <div class="controls">
-                          <input type="text" name="search-user-name-input" id="search-user-name-input" class="input-xlarge" autocomplete="off"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Add"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-                <form id="dialog-form-add-role-to-group" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Add a Role to this Group</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p class="validateTips">Search for the role you want to add to this group.</p>
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="search-groups-role-name-input">Role</label>
-                        <div class="controls">
-                          <input type="text" name="search-groups-role-name-input" id="search-groups-role-name-input" class="input-xlarge" autocomplete="off"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Add"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-              </div>
-              <div id="roles-panel" class="panel-buffer">
-                <ul id="roles-panel-tab-bar" class="nav nav-tabs">
-                  <li class="active"><a id="button-roles-list">List</a></li>
-                </ul>
-                <div id="roles-panel-list" class="panel-content">
-                  <div id="roles-messages" class="alert" style="display: none;"></div>
-                  <div class="console-section">
-                    <span class="title"> App Roles </span>
-                    <div class="well thingy">
-                      <div class="bar">
-
-                        <a class="btn" id="delete-roles-link" > Delete</a>
-                        <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-new-role"> Add Role</a>
-
-
-                      </div>
-                    </div>
-                    <table id="roles-table" class="table">
-                      <tbody></tbody>
-                    </table>
-                    <ul id="roles-pagination" class="pager">
-                      <li id="roles-previous" class="previous"><a >&larr; Previous</a></li>
-                      <li id="roles-next" class="next"><a >Next &rarr;</a></li>
-                    </ul>
-                  </div>
-                  <div id="roles-curl-container" class="row-fluid curl-container ">
-                  </div>
-                </div>
-                <div id="roles-panel-search" class="panel-content" style="display: none;">
-                  <div class="console-section">
-                    <div class="well thingy"><span class="title"> Role Settings: <span class="app_title"></span></span></div>
-                    <div class="console-section-contents">
-                      <div id="roles-settings">
-                        <h2>No Permissions.</h2>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-                <form id="dialog-form-new-role" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Create new Role</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p class="validateTips">All form fields are required.</p>
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="new-role-title">Display Name</label>
-                        <div class="controls">
-                          <input type="text" name="title" id="new-role-title" class="input-xlarge"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                      <div class="control-group">
-                        <label for="new-role-name">Name</label>
-                        <div class="controls">
-                          <input type="text" name="name" id="new-role-name" class="input-xlarge"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Create"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-              </div>
-              <div id="role-panel" class="panel-buffer">
-                <ul id="role-panel-tab-bar" class="nav nav-tabs">
-                  <li><a id="button-role-list">List</a></li>
-                  <li class="active"><a id="button-role-settings">Settings</a></li>
-                  <li><a id="button-role-users">Users</a></li>
-                  <li><a id="button-role-groups">Groups</a></li>
-                </ul>
-
-                <!--div id="role-panel-tab-bar">
-                  <a class="tab-button btn" id="button-role-list" >List</a>
-                  <a class="tab-button btn active" id="button-role-settings" >Settings</a>
-                  <a class="tab-button btn" id="button-role-users" >Users</a>
-                  <a class="tab-button btn" id="button-role-groups" >Groups</a>
-                </div-->
-
-                <div id="role-panel-settings" class="panel-content">
-                  <div class="console-section">
-                    <div class="well thingy"> <span id="role-section-title" class="title">Role</span> </div>
-                    <div class="console-section-contents">
-                      <div id="role-permissions-messages" class="alert" style="display: none"></div>
-                      <div id="role-permissions">
-                        <h2>...</h2>
-                      </div>
-                    </div>
-                  </div>
-                  <div id="role-permissions-curl-container" class="curl-container">
-                  </div>
-                </div>
-                <div id="role-panel-users" class="panel-content">
-                  <div class="console-section" id="role-users"></div>
-                  <div id="role-users-curl-container" class="curl-container">
-                  </div>
-                </div>
-                <div id="role-panel-groups" class="panel-content"></div>
-                <form id="dialog-form-add-group-to-role" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Add a Group to this Role</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p class="validateTips">Search for the group you want to add to this role.</p>
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="search-roles-group-name-input">Group</label>
-                        <div class="controls">
-                          <input type="text" name="search-roles-group-name-input" id="search-roles-group-name-input" class="input-xlarge" autocomplete="off"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Add"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-                <form id="dialog-form-add-role-to-user" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Add a user to this Role</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p class="validateTips">Search for the user you want to add to this role.</p>
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="search-roles-user-name-input">User</label>
-                        <div class="controls">
-                          <input type="text" name="search-roles-user-name-input" id="search-roles-user-name-input" class="input-xlarge"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Add"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-              </div>
-              <div id="activities-panel" style="margin-top: 10px; display: none;">
-                <div id="activities-panel-list" class="panel-content">
-                  <div class="console-section">
-                    <span class="title"> Activities </span>
-                    <div class="well thingy">
-                      <div class="bar" style="margin-bottom: 25px;">
-                        <input onkeyup="Usergrid.console.searchActivities();" type="text" name="search-activities" id="search-activities" class="input-small search" placeholder="Search"/>
-                        <select id="search-activities-type" onChange="Usergrid.console.searchActivities();" class="input-medium search">
-                          <option value="content">Content</option>
-                          <option value="actor">Actor</option>
-                        </select>
-                        <a class="btn" onclick="Usergrid.console.requestActivities(); return false;">Update Activities</a>
-                      </div>
-                    </div>
-                    <table id="activities-table" class="table">
-                      <tbody></tbody>
-                    </table>
-                    <ul id="activities-pagination" class="pager">
-                      <li id="activities-previous" class="previous"><a >&larr; Previous</a></li>
-                      <li id="activities-next" class="next"><a >Next &rarr;</a></li>
-                    </ul>
-                  </div>
-                </div>
-              </div>
-              <div id="analytics-panel" style="display: none">
-                <div class="panel-content">
-                  <div class="console-section">
-                    <div class="well thingy"><span class="title"> Analytics </span></div>
-                    <div class="console-section-contents">
-                      <div id="analytics-time">
-                        <form id="resolutionSelectForm" action="" class="form-horizontal">
-                          <div class="row">
-                            <fieldset class="span">
-                              <div id="analytics-start-time-span" class="control-group">
-                                <label class="control-label" for="start-date">Start:</label>
-                                <div class="controls">
-                                  <input type="text" id="start-date" class="fixSpan2"/>
-                                  <input type="text" id="start-time" value="12:00 AM" class="fixSpan2"/>
-                                </div>
-                              </div>
-                              <div id="analytics-end-time-span" class="control-group" style="float: left">
-                                <label class="control-label" for="end-date">End:</label>
-                                <div class="controls">
-                                  <input type="text" id="end-date" class="fixSpan2"/>
-                                  <input type="text" id="end-time" value="12:00 AM" class="fixSpan2"/>
-                                </div>
-                              </div>
-                              <div class="control-group">
-                                <label class="control-label" for="resolutionSelect">Resolution</label>
-                                <div class="controls">
-                                  <select name="resolutionSelect" id="resolutionSelect">
-                                    <option value="all">All</option>
-                                    <option value="minute">Minute</option>
-                                    <option value="five_minutes">5 Minutes</option>
-                                    <option value="half_hour">30 Minutes</option>
-                                    <option value="hour">Hour</option>
-                                    <option value="six_hour">6 Hours</option>
-                                    <option value="half_day">Half Day</option>
-                                    <option value="day" selected="selected">Day</option>
-                                    <option value="week">Week</option>
-                                    <option value="month">Month</option>
-                                  </select>
-                                </div>
-                              </div>
-                            </fieldset>
-                            <fieldset class="span offset1">
-                              <div id="analytics-counter-names"></div>
-                            </fieldset>
-                          </div>
-                          <div class="form-actions">
-                            <button class="btn btn-primary" id="button-analytics-generate" style="margin-left: -80px">Generate</button>
-                          </div>
-                        </form>
-                      </div>
-                    </div>
-                  </div>
-                  <div class="console-section">
-                    <div class="well thingy"><span class="title"> Result Analytics <span class="app_title"></span></span></div>
-                    <div class="console-section-contents">
-                      <div id="analytics-graph"></div>
-                      <div id="analytics-graph-area" style="overflow-x: auto;"></div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-              <div id="properties-panel" style="display: none">
-                <div class="console-section">
-                  <div class="well thingy"><span class="title"> Application Properties: <span class="app_title"></span></span>
-                    <div class="bar" style="margin-bottom: 25px;">
-                      <a class="btn"  onclick="Usergrid.console.newApplicationCredentials(); return false;">Regenerate Credentials</a>
-                    </div>
-                  </div>
-                  <div class="console-section-contents">
-                    <table id="application-panel-key-table" class="table">
-                      <tr>
-                        <td>
-                          <span class="span3">Client ID</span>
-                        </td>
-                        <td>
-                          <span id="application-panel-key">...</span>
-                        </td>
-                      </tr>
-                      <tr>
-                        <td>
-                          <span class="span3">Client Secret</span>
-                        </td>
-                        <td>
-                          <span id="application-panel-secret">...</span>
-                        </td>
-                      </tr>
-                    </table>
-                  </div>
-                </div>
-              </div>
-              <div id="shell-panel" style="display: none">
-                <div id="shell-content" class="console-section">
-                  <div class="well thingy"> <span class="title"> Interactive Shell </span></div>
-                  <div class="console-section-contents">
-                    <div id="shell-input-div">
-                      <p>   Type "help" to view a list of the available commands.</p><hr />
-                      <span>&nbsp;&gt&gt; </span>
-                      <textarea id="shell-input" rows="2" autofocus="autofocus"></textarea>
-                    </div>
-                    <pre id="shell-output" class="prettyprint lang-js" style="overflow-x: auto; height: 400px;">
-                      <p>  Response:</p><hr />
-                    </pre>
-                  </div>
-                </div>
-                <a href="#" id="fixme">-</a>
-              </div>
-
-
-
-
-              <div id="notifications-panel" class="panel-buffer">
-                <div id="notifications-content" class="console-section"></div>
-              </div>
-
-              <div id="sendNotification-panel" class="panel-buffer" style="margin-top: 10px;">
-                <div class="alert" id="notification-scheduled-status" style="display:none;"></div>
-                <span class="title"> Compose Push Notification </span>
-                <div style="padding-top: 10px;">
-                  <form id="query-inputs" class="notifcations-form">
-                    <div class="well" style="padding: 0px; margin-bottom: 0px;">
-                      <span class="title">Notifier and Recipients</span>
-                    </div>
-                    Choose the Notifier (a configured notification service) to connect with for this push notification. Only users
-                    with devices registered with this notifier will receive the push notification. If a group is selected, only the users
-                    in the selected goup, with devices registered with this notifier, will receive the push notification.
-
-                    <label for="send-notification-notifier">Notifier:</label>
-                    <select id="send-notification-notifier">
-                       <option value="">Choose Notifier</option>
-                    </select>
-
-                    <div class="control-group">
-                      <input type="radio" name="notification-user-group" id="notification-user-group-all" value="all" checked> All Users
-                      <input type="radio" name="notification-user-group" id="notification-user-group-users" value="users"> User(s)
-                      <input type="radio" name="notification-user-group" id="notification-user-group-group" value="groups"> Groups
-                    </div>
-
-                    <div class="control-group">
-                      <div id="notificaitons-users-select-container" style="display: none">
-                        Enter the users manually:<br>
-                        <textarea id="user-list" placeholder="user1,user2,user3,etc..."  class="span6 pull-left" rows="5"></textarea>
-                        <br>
-                        <div class="thingy">
-                        Or, use a form to look them up:<br>
-                        <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-add-user-to-notification"> Add User</a>
-                        </div>
-                      </div>
-                      <div id="notificaitons-group-select-container" style="display: none">
-                        <textarea id="group-list" placeholder="group1,group2,group3,etc..."  class="span6 pull-left" rows="5"></textarea>
-                        <br>
-                        <div class="thingy">
-                        <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-add-group-to-notification"> Add Group</a>
-                        </div>
-                      </div>
-                    </div>
-
-                    <hr>
-                    <div class="well thingy">
-                      <span class="title">Notifier Message</span>
-                    </div>
-                    Edit the "alert" message in the JSON payload.
-                    <div class="controls">
-                      <div>
-                        <textarea id="notification-json" class="span6 pull-left" rows="3">Your text here</textarea>
-                        <br>
-                        <a href="" class="notifications-links">ADD LINK!!!! learn more about messages in our docs</a>
-                      </div>
-                    </div>
-                    <div style="display: none;">
-                      <a class="btn" id="reset-notifications-payload" >Reset Payload</a>
-                      <a class="btn" id="validate-notifications-json" >Validate JSON</a>
-                      <span id="notifications-json-status" class="alert" style="width: 400px;">Validate your JSON!</span>
-                    </div>
-                    <hr>
-                    <div class="well thingy">
-                      <span class="title">Delivery</span>
-                    </div>
-                    Select whether to schedule this push notification for immediate delivery or at a future date and time.
-
-                    <div class="control-group">
-                      <input type="radio" name="notification-schedule-time" id="notification-schedule-time-now"  value="now" checked> Now
-                      <input type="radio" name="notification-schedule-time" id="notification-schedule-time-later"  value="later"> Schedule for later
-                    </div>
-                    <div id="notification-schedule-time-controls" style="display: none;">
-                      <div id="notifications-start-time-span" class="control-group">
-                        <label class="control-label" for="notification-schedule-time-date">Start Date/Time:</label>
-                        <div class="controls">
-                          <input type="text" id="notification-schedule-time-date" class="fixSpan2"/>
-                          <input type="text" id="notification-schedule-time-time" value="12:00 AM" class="fixSpan2"/>
-                        </div>
-                      </div>
-                    </div>
-                    <div style="display:none;">
-                        <hr>
-                        <div class="well thingy">
-                          <span class="title">Push Notification API Preview</span>
-                        </div>
-                        Review the API call and payload that will be sent to the App Services Push Notification Scheduler.
-                        Advanced users can also send this command via <a href="">UGC (Usergrid Command Line)</a>.
-
-                        <div id="notifications-command" class="well">
-                          POST users/
-                        </div>
-                    </div>
-                    <a class="btn btn-primary" id="schedule-notification">Schedule Notification</a>
-                  </form>
-                </div>
-              </div>
-
-                <form id="dialog-form-add-user-to-notification" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Add a user to this Notification</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p class="validateTips">Search for the user you want to add to this notification.</p>
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="search-notification-user-name-input">User</label>
-                        <div class="controls">
-                          <input type="text" name="search-notification-user-name-input" id="search-notification-user-name-input" class="input-xlarge"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Add"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-
-                <form id="dialog-form-add-group-to-notification" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Add a group to this Notification</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p class="validateTips">Search for the group you want to add to this notification.</p>
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="search-notification-group-name-input">Group</label>
-                        <div class="controls">
-                          <input type="text" name="search-notification-group-name-input" id="search-notification-group-name-input" class="input-xlarge"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Add"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-
-              <div id="messageHistory-panel" class="panel-buffer">
-                <div class="well thingy">
-                  <span class="title">Notification History</span>
-                </div>
-                <div style="float: left">
-                  <ul class="nav nav-pills">
-                    <li class="active"><a href="#" id="view-notifications-all">All</a></li>
-                    <li><a href="#" id="view-notifications-scheduled">Scheduled</a></li>
-                    <li><a href="#" id="view-notifications-started">Started</a></li>
-                    <li><a href="#" id="view-notifications-sent">Sent</a></li>
-                    <li><a href="#" id="view-notifications-failed">Failed</a></li>
-                  </ul>
-                </div>
-                <!--
-                <input id="notifications-history-search" type="text" name="path" class="span6" autocomplete="off" placeholder="search"/>
-                <a class="btn" id="view-notifications-search">Search</a>
-                -->
-                <div style="margin-top:35px;">&nbsp;</div>
-                <div id="notifications-history-display">
-                  No Notifications found.
-                </div>
-
-                <ul id="notifications-history-pagination" class="pager">
-                  <li style="display: none" id="notifications-history-previous" class="previous"><a >&larr; Previous</a></li>
-                  <li style="display: none" id="notifications-history-next" class="next"><a >Next &rarr;</a></li>
-                </ul>
-              </div>
-
-              <div id="notificationsReceipt-panel" class="panel-buffer">
-                <div class="well thingy">
-                  <span class="title">Notification Receipts</span>
-                  <span style="float: right"><a href="#" class="notifications-links" id="return-to-notifications"><- Return to All Notifications</a></span>
-                </div>
-                <div style="float: left">
-                  <ul class="nav nav-pills">
-                    <li class="active"><a href="#" id="view-notification-receipt-all">All</a></li>
-                    <li><a href="#" id="view-notification-receipt-received">Received</a></li>
-                    <li><a href="#" id="view-notification-receipt-failed">Failed</a></li>
-                  </ul>
-                </div>
-                <!--
-                <input id="notifications-history-search" type="text" name="path" class="span6" autocomplete="off" placeholder="search"/>
-                <a class="btn" id="view-notifications-search">Search</a>
-                -->
-                <div style="margin-top:35px;">&nbsp;</div>
-                <div id="notification-receipts-display">
-                  No Notifications found.
-                </div>
-
-                <ul id="notification-receipt-pagination" class="pager">
-                  <li style="display: none" id="notification-receipt-previous" class="previous"><a >&larr; Previous</a></li>
-                  <li style="display: none" id="notification-receipt-next" class="next"><a >Next &rarr;</a></li>
-                </ul>
-
-              </div>
-
-
-
-              <div id="configuration-panel" class="panel-buffer" style="padding-top: 10px;">
-                <div id="cert-upload-message" class="alert alert-info" style="display:none"></div>
-                <span class="title">Configuration</span>
-                <div class="well thingy" id="cert-list-buttons" style="display: none;">
-                  <div style="float: left;margin-top:10px;">
-                    <span class="title" style="float: left">Notifiers</span>
-                  </div>
-                  <div style="float: right;">
-                    <a class="btn" style="float: right" id="delete-certs-link">Delete Notifier</a>
-                  </div>
-                </div>
-                <div id="notification-cert-list" style="padding-bottom: 10px"></div>
-
-                <ul id="user-panel-tab-bar" class="nav nav-tabs">
-                  <li class="active"><a id="button-notifications-apple-create-notifier">Apple</a></li>
-                  <li><a id="button-notifications-android-create-notifier">Android</a></li>
-                </ul>
-
-                <div id="notifications-apple-create-notifier">
-                  <div style="margin-top: 10px;">
-                    <span class="title">Apple Push Notification Service</span>
-                    <br>
-                    A Notifier allows App Services to connect to and deliver a message to a communication provider such as
-                    Apple's APNs. Upload Development and Production Certificates (.p12) to set up a bridge between your app
-                    and APNs for push notifications on iOS devices.
-
-
-                    <form id="query-inputs" class="notifcations-form">
-                      Before you get started: view our
-                      <a href="#" class="notifications-links" onclick="Usergrid.Navigation.router.navigateTo('getStarted'); return false;">getting started page</a>
-                      for more info on how to retrieve .p12 certificates from the Apple Developer Connection website.
-
-                      <fieldset>
-                      <div class="control-group">
-                        <label class="control-label" for="new-notifier-name"><strong>Name this notifier </strong></label>
-                        <div class="controls">
-                          <div class="input-append">
-                            <input id="new-notifier-name" type="text" name="path" class="span6" autocomplete="off" placeholder="ex: appledev"/>
-                          </div>
-                          The notifier name is used as the key for push data.  Give this a name that describes the certificate being uploaded.
-                        </div>
-                      </div>
-
-                      <div class="control-group">
-                        <label class="control-label" for="new-notifier-certificate"><strong>Certificate </strong></label>
-                        <div class="controls">
-                          <div class="input-append">
-                           <input id="new-notifier-certificate" name="new-notifier-certificate" type="file" multiple>
-                          </div>
-                        </div>
-                      </div>
-
-                      <div class="control-group">
-                        <label class="control-label" for="new-notification-environment"><strong>Environment </strong></label>
-                        <div class="controls">
-                          <div class="input-append">
-                            <select id="new-notification-environment">
-                              <option value="development">development</option>
-                              <option value="production">production</option>
-                            </select>
-                          </div>
-                        </div>
-                      </div>
-
-                      <div class="control-group">
-                        <label class="control-label" for="new-notifier-cert-password"><strong>Certificate Password</strong></label>
-                        <div class="controls">
-                          <div class="input-append">
-                            <input id="new-notifier-cert-password" type="text" name="path" class="span6" autocomplete="off" placeholder="ex: appledev"/>
-                          </div>
-                          Only applicable if your certificate is password protected
-                        </div>
-                      </div>
-
-
-                      <a class="btn btn-primary" id="save-certificate-btn">Create Notifier</a>
-                      </fieldset>
-
-                    </form>
-                  </div>
-                </div>
-
-                <div id="notifications-android-create-notifier" style="display:none;">
-                  <div style="margin-top: 10px;">
-                    <span class="title">Google Cloud Messaging</span>
-                    <br>
-                    A Notifier allows App Services to connect to and deliver a message to a communication provider such as
-                    Google Cloud Messaging (GCM). Copy and paste your API key to create a bridge between your app
-                    and GCM for push notifications on Android devices..
-
-
-                    <form id="android-create-notifier-form" class="notifcations-form">
-                      Before you get started: <a href="">see our getting started page</a>.
-
-                      <fieldset>
-                      <div class="control-group">
-                        <label class="control-label" for="android-new-notifier-name"><strong>Name this notifier </strong></label>
-                        <div class="controls">
-                          <div class="input-append">
-                            <input id="android-new-notifier-name" type="text" name="path" class="span6" autocomplete="off" placeholder="ex: appledev"/>
-                          </div>
-                          The notifier name is used as the key for push data.  Give this a name that describes the API key being uploaded.
-                        </div>
-                      </div>
-
-                      <div class="control-group">
-                        <label class="control-label" for="android-new-notifier-api-key"><strong>API Key </strong></label>
-                        <div class="controls">
-                          <div class="input-append">
-                           <input id="android-new-notifier-api-key" name="android-new-notifier-api-key" type="text" name="path" class="span6" autocomplete="off"/>
-                          </div>
-                        </div>
-                      </div>
-
-                      <a class="btn btn-primary" id="save-certificate-btn-android">Create Notifier</a>
-                      </fieldset>
-
-                    </form>
-                  </div>
-                </div>
-
-
-              </div>
-
-
-
-              <div id="getStarted-panel" class="panel-buffer">
-                <div class="well thingy" style="padding-bottom: 10px;">
-                  <span class="title">Getting Started with Push Notifications</span>
-                  <br>
-                  Before you can send a notification, you must follow these three steps to enable push notifications for your app.
-                  <br>
-                  <a href="" class="notifications-links">ADD LINK!! Learn more in our docs</a>
-                </div>
-
-                <ul id="user-panel-tab-bar" class="nav nav-tabs">
-                  <li class="active"><a id="button-notifications-apple-get-started">Apple</a></li>
-                  <li><a id="button-notifications-android-get-started">Android</a></li>
-                </ul>
-
-                <div id="notifications-apple-get-started">
-                  <span class="title">Set up Push Notifications for Apple iOS</span>
-                  <div class="notifications-get-started notifications-get-started-top">
-                    <div class="header">
-                      <img src="images/step_1.png" style="float: left;padding-right: 10px;">
-                      <div style="padding-top: 9px;">
-                        Retrieve your APNs .p12 certificate(s) from the <a href="https://developer.apple.com/ios/manage/overview/index.action">Apple Developer Connection website</a>
-                      </div>
-                    </div>
-                    <img style="margin-bottom: -9px;" src="images/APNS_cert_upload.png">
-                  </div>
-
-                  <div class="notifications-get-started">
-                    <div class="header">
-                      <img src="images/step_2.png" style="float: left;padding-right: 10px;">
-                      <div style="padding-top: 9px;">
-                        Add the certificates to set up your notifiers.
-                      </div>
-                    </div>
-                    <div style="">
-                      <a href="#" onclick="Usergrid.Navigation.router.navigateTo('configuration'); return false;">Upload a certificate and create the connection to APNs.</a>
-                    </div>
-                    <img style="margin-left: 50px; margin-bottom: -5px;" src="images/APNS_certification.png">
-                  </div>
-
-                  <div class="notifications-get-started">
-                    <div class="header">
-                      <img src="images/step_3.png" style="float: left;padding-right: 10px;">
-                      <div style="padding-top: 9px;">
-                        Compose and schedule a push notification.
-                      </div>
-                    </div>
-                    <div style="">
-                      <a href="#" onclick="Usergrid.Navigation.router.navigateTo('sendNotification'); return false;">Send a push notification.</a>
-                    </div>
-                    <br><br>
-                    <img style="margin-bottom: -5px;" src="images/iphone_message.png">
-                  </div>
-
-                </div>
-
-                <div id="notifications-android-get-started" style="display: none">
-                  <span class="title">Set up Push Notifications for Google Android

<TRUNCATED>

[08/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/unit-tests/qunit.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/unit-tests/qunit.js b/deleted/dist-cov/usergrid-portal/archive/js/unit-tests/qunit.js
deleted file mode 100644
index 6bec9d8..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/unit-tests/qunit.js
+++ /dev/null
@@ -1,1934 +0,0 @@
-/**
- * QUnit v1.10.0pre - A JavaScript Unit Testing Framework
- *
- * http://qunitjs.com
- *
- * Copyright 2012 jQuery Foundation and other contributors
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- */
-
-(function( window ) {
-
-var QUnit,
-	config,
-	onErrorFnPrev,
-	testId = 0,
-	fileName = (sourceFromStacktrace( 0 ) || "" ).replace(/(:\d+)+\)?/, "").replace(/.+\//, ""),
-	toString = Object.prototype.toString,
-	hasOwn = Object.prototype.hasOwnProperty,
-	// Keep a local reference to Date (GH-283)
-	Date = window.Date,
-	defined = {
-	setTimeout: typeof window.setTimeout !== "undefined",
-	sessionStorage: (function() {
-		var x = "qunit-test-string";
-		try {
-			sessionStorage.setItem( x, x );
-			sessionStorage.removeItem( x );
-			return true;
-		} catch( e ) {
-			return false;
-		}
-	}())
-};
-
-function Test( settings ) {
-	extend( this, settings );
-	this.assertions = [];
-	this.testNumber = ++Test.count;
-}
-
-Test.count = 0;
-
-Test.prototype = {
-	init: function() {
-		var a, b, li,
-        tests = id( "qunit-tests" );
-
-		if ( tests ) {
-			b = document.createElement( "strong" );
-			b.innerHTML = this.name;
-
-			// `a` initialized at top of scope
-			a = document.createElement( "a" );
-			a.innerHTML = "Rerun";
-			a.href = QUnit.url({ testNumber: this.testNumber });
-
-			li = document.createElement( "li" );
-			li.appendChild( b );
-			li.appendChild( a );
-			li.className = "running";
-			li.id = this.id = "qunit-test-output" + testId++;
-
-			tests.appendChild( li );
-		}
-	},
-	setup: function() {
-		if ( this.module !== config.previousModule ) {
-			if ( config.previousModule ) {
-				runLoggingCallbacks( "moduleDone", QUnit, {
-					name: config.previousModule,
-					failed: config.moduleStats.bad,
-					passed: config.moduleStats.all - config.moduleStats.bad,
-					total: config.moduleStats.all
-				});
-			}
-			config.previousModule = this.module;
-			config.moduleStats = { all: 0, bad: 0 };
-			runLoggingCallbacks( "moduleStart", QUnit, {
-				name: this.module
-			});
-		} else if ( config.autorun ) {
-			runLoggingCallbacks( "moduleStart", QUnit, {
-				name: this.module
-			});
-		}
-
-		config.current = this;
-
-		this.testEnvironment = extend({
-			setup: function() {},
-			teardown: function() {}
-		}, this.moduleTestEnvironment );
-
-		runLoggingCallbacks( "testStart", QUnit, {
-			name: this.testName,
-			module: this.module
-		});
-
-		// allow utility functions to access the current test environment
-		// TODO why??
-		QUnit.current_testEnvironment = this.testEnvironment;
-
-		if ( !config.pollution ) {
-			saveGlobal();
-		}
-		if ( config.notrycatch ) {
-			this.testEnvironment.setup.call( this.testEnvironment );
-			return;
-		}
-		try {
-			this.testEnvironment.setup.call( this.testEnvironment );
-		} catch( e ) {
-			QUnit.pushFailure( "Setup failed on " + this.testName + ": " + e.message, extractStacktrace( e, 1 ) );
-		}
-	},
-	run: function() {
-		config.current = this;
-
-		var running = id( "qunit-testresult" );
-
-		if ( running ) {
-			running.innerHTML = "Running: <br/>" + this.name;
-		}
-
-		if ( this.async ) {
-			QUnit.stop();
-		}
-
-		if ( config.notrycatch ) {
-			this.callback.call( this.testEnvironment, QUnit.assert );
-			return;
-		}
-
-		try {
-			this.callback.call( this.testEnvironment, QUnit.assert );
-		} catch( e ) {
-			QUnit.pushFailure( "Died on test #" + (this.assertions.length + 1) + " " + this.stack + ": " + e.message, extractStacktrace( e, 0 ) );
-			// else next test will carry the responsibility
-			saveGlobal();
-
-			// Restart the tests if they're blocking
-			if ( config.blocking ) {
-				QUnit.start();
-			}
-		}
-	},
-	teardown: function() {
-		config.current = this;
-		if ( config.notrycatch ) {
-			this.testEnvironment.teardown.call( this.testEnvironment );
-			return;
-		} else {
-			try {
-				this.testEnvironment.teardown.call( this.testEnvironment );
-			} catch( e ) {
-				QUnit.pushFailure( "Teardown failed on " + this.testName + ": " + e.message, extractStacktrace( e, 1 ) );
-			}
-		}
-		checkPollution();
-	},
-	finish: function() {
-		config.current = this;
-		if ( config.requireExpects && this.expected == null ) {
-			QUnit.pushFailure( "Expected number of assertions to be defined, but expect() was not called.", this.stack );
-		} else if ( this.expected != null && this.expected != this.assertions.length ) {
-			QUnit.pushFailure( "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run", this.stack );
-		} else if ( this.expected == null && !this.assertions.length ) {
-			QUnit.pushFailure( "Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.", this.stack );
-		}
-
-		var assertion, a, b, i, li, ol,
-			test = this,
-			good = 0,
-			bad = 0,
-			tests = id( "qunit-tests" );
-
-		config.stats.all += this.assertions.length;
-		config.moduleStats.all += this.assertions.length;
-
-		if ( tests ) {
-			ol = document.createElement( "ol" );
-
-			for ( i = 0; i < this.assertions.length; i++ ) {
-				assertion = this.assertions[i];
-
-				li = document.createElement( "li" );
-				li.className = assertion.result ? "pass" : "fail";
-				li.innerHTML = assertion.message || ( assertion.result ? "okay" : "failed" );
-				ol.appendChild( li );
-
-				if ( assertion.result ) {
-					good++;
-				} else {
-					bad++;
-					config.stats.bad++;
-					config.moduleStats.bad++;
-				}
-			}
-
-			// store result when possible
-			if ( QUnit.config.reorder && defined.sessionStorage ) {
-				if ( bad ) {
-					sessionStorage.setItem( "qunit-test-" + this.module + "-" + this.testName, bad );
-				} else {
-					sessionStorage.removeItem( "qunit-test-" + this.module + "-" + this.testName );
-				}
-			}
-
-			if ( bad === 0 ) {
-				ol.style.display = "none";
-			}
-
-			// `b` initialized at top of scope
-			b = document.createElement( "strong" );
-			b.innerHTML = this.name + " <b class='counts'>(<b class='failed'>" + bad + "</b>, <b class='passed'>" + good + "</b>, " + this.assertions.length + ")</b>";
-
-			addEvent(b, "click", function() {
-				var next = b.nextSibling.nextSibling,
-					display = next.style.display;
-				next.style.display = display === "none" ? "block" : "none";
-			});
-
-			addEvent(b, "dblclick", function( e ) {
-				var target = e && e.target ? e.target : window.event.srcElement;
-				if ( target.nodeName.toLowerCase() == "span" || target.nodeName.toLowerCase() == "b" ) {
-					target = target.parentNode;
-				}
-				if ( window.location && target.nodeName.toLowerCase() === "strong" ) {
-					window.location = QUnit.url({ testNumber: test.testNumber });
-				}
-			});
-
-			// `li` initialized at top of scope
-			li = id( this.id );
-			li.className = bad ? "fail" : "pass";
-			li.removeChild( li.firstChild );
-			a = li.firstChild;
-			li.appendChild( b );
-			li.appendChild ( a );
-			li.appendChild( ol );
-
-		} else {
-			for ( i = 0; i < this.assertions.length; i++ ) {
-				if ( !this.assertions[i].result ) {
-					bad++;
-					config.stats.bad++;
-					config.moduleStats.bad++;
-				}
-			}
-		}
-
-		runLoggingCallbacks( "testDone", QUnit, {
-			name: this.testName,
-			module: this.module,
-			failed: bad,
-			passed: this.assertions.length - bad,
-			total: this.assertions.length
-		});
-
-		QUnit.reset();
-
-		config.current = undefined;
-	},
-
-	queue: function() {
-		var bad,
-			test = this;
-
-		synchronize(function() {
-			test.init();
-		});
-		function run() {
-			// each of these can by async
-			synchronize(function() {
-				test.setup();
-			});
-			synchronize(function() {
-				test.run();
-			});
-			synchronize(function() {
-				test.teardown();
-			});
-			synchronize(function() {
-				test.finish();
-			});
-		}
-
-		// `bad` initialized at top of scope
-		// defer when previous test run passed, if storage is available
-		bad = QUnit.config.reorder && defined.sessionStorage &&
-						+sessionStorage.getItem( "qunit-test-" + this.module + "-" + this.testName );
-
-		if ( bad ) {
-			run();
-		} else {
-			synchronize( run, true );
-		}
-	}
-};
-
-// Root QUnit object.
-// `QUnit` initialized at top of scope
-QUnit = {
-
-	// call on start of module test to prepend name to all tests
-	module: function( name, testEnvironment ) {
-		config.currentModule = name;
-		config.currentModuleTestEnviroment = testEnvironment;
-	},
-
-	asyncTest: function( testName, expected, callback ) {
-		if ( arguments.length === 2 ) {
-			callback = expected;
-			expected = null;
-		}
-
-		QUnit.test( testName, expected, callback, true );
-	},
-
-	test: function( testName, expected, callback, async ) {
-		var test,
-			name = "<span class='test-name'>" + escapeInnerText( testName ) + "</span>";
-
-		if ( arguments.length === 2 ) {
-			callback = expected;
-			expected = null;
-		}
-
-		if ( config.currentModule ) {
-			name = "<span class='module-name'>" + config.currentModule + "</span>: " + name;
-		}
-
-		test = new Test({
-			name: name,
-			testName: testName,
-			expected: expected,
-			async: async,
-			callback: callback,
-			module: config.currentModule,
-			moduleTestEnvironment: config.currentModuleTestEnviroment,
-			stack: sourceFromStacktrace( 2 )
-		});
-
-		if ( !validTest( test ) ) {
-			return;
-		}
-
-		test.queue();
-	},
-
-	// Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
-	expect: function( asserts ) {
-		config.current.expected = asserts;
-	},
-
-	start: function( count ) {
-		config.semaphore -= count || 1;
-		// don't start until equal number of stop-calls
-		if ( config.semaphore > 0 ) {
-			return;
-		}
-		// ignore if start is called more often then stop
-		if ( config.semaphore < 0 ) {
-			config.semaphore = 0;
-		}
-		// A slight delay, to avoid any current callbacks
-		if ( defined.setTimeout ) {
-			window.setTimeout(function() {
-				if ( config.semaphore > 0 ) {
-					return;
-				}
-				if ( config.timeout ) {
-					clearTimeout( config.timeout );
-				}
-
-				config.blocking = false;
-				process( true );
-			}, 13);
-		} else {
-			config.blocking = false;
-			process( true );
-		}
-	},
-
-	stop: function( count ) {
-		config.semaphore += count || 1;
-		config.blocking = true;
-
-		if ( config.testTimeout && defined.setTimeout ) {
-			clearTimeout( config.timeout );
-			config.timeout = window.setTimeout(function() {
-				QUnit.ok( false, "Test timed out" );
-				config.semaphore = 1;
-				QUnit.start();
-			}, config.testTimeout );
-		}
-	}
-};
-
-// Asssert helpers
-// All of these must call either QUnit.push() or manually do:
-// - runLoggingCallbacks( "log", .. );
-// - config.current.assertions.push({ .. });
-QUnit.assert = {
-	/**
-	 * Asserts rough true-ish result.
-	 * @name ok
-	 * @function
-	 * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
-	 */
-	ok: function( result, msg ) {
-		if ( !config.current ) {
-			throw new Error( "ok() assertion outside test context, was " + sourceFromStacktrace(2) );
-		}
-		result = !!result;
-
-		var source,
-			details = {
-				result: result,
-				message: msg
-			};
-
-		msg = escapeInnerText( msg || (result ? "okay" : "failed" ) );
-		msg = "<span class='test-message'>" + msg + "</span>";
-
-		if ( !result ) {
-			source = sourceFromStacktrace( 2 );
-			if ( source ) {
-				details.source = source;
-				msg += "<table><tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr></table>";
-			}
-		}
-		runLoggingCallbacks( "log", QUnit, details );
-		config.current.assertions.push({
-			result: result,
-			message: msg
-		});
-	},
-
-	/**
-	 * Assert that the first two arguments are equal, with an optional message.
-	 * Prints out both actual and expected values.
-	 * @name equal
-	 * @function
-	 * @example equal( format( "Received {0} bytes.", 2), "Received 2 bytes.", "format() replaces {0} with next argument" );
-	 */
-	equal: function( actual, expected, message ) {
-		QUnit.push( expected == actual, actual, expected, message );
-	},
-
-	/**
-	 * @name notEqual
-	 * @function
-	 */
-	notEqual: function( actual, expected, message ) {
-		QUnit.push( expected != actual, actual, expected, message );
-	},
-
-	/**
-	 * @name deepEqual
-	 * @function
-	 */
-	deepEqual: function( actual, expected, message ) {
-		QUnit.push( QUnit.equiv(actual, expected), actual, expected, message );
-	},
-
-	/**
-	 * @name notDeepEqual
-	 * @function
-	 */
-	notDeepEqual: function( actual, expected, message ) {
-		QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message );
-	},
-
-	/**
-	 * @name strictEqual
-	 * @function
-	 */
-	strictEqual: function( actual, expected, message ) {
-		QUnit.push( expected === actual, actual, expected, message );
-	},
-
-	/**
-	 * @name notStrictEqual
-	 * @function
-	 */
-	notStrictEqual: function( actual, expected, message ) {
-		QUnit.push( expected !== actual, actual, expected, message );
-	},
-
-	throws: function( block, expected, message ) {
-		var actual,
-			ok = false;
-
-		// 'expected' is optional
-		if ( typeof expected === "string" ) {
-			message = expected;
-			expected = null;
-		}
-
-		config.current.ignoreGlobalErrors = true;
-		try {
-			block.call( config.current.testEnvironment );
-		} catch (e) {
-			actual = e;
-		}
-		config.current.ignoreGlobalErrors = false;
-
-		if ( actual ) {
-			// we don't want to validate thrown error
-			if ( !expected ) {
-				ok = true;
-			// expected is a regexp
-			} else if ( QUnit.objectType( expected ) === "regexp" ) {
-				ok = expected.test( actual );
-			// expected is a constructor
-			} else if ( actual instanceof expected ) {
-				ok = true;
-			// expected is a validation function which returns true is validation passed
-			} else if ( expected.call( {}, actual ) === true ) {
-				ok = true;
-			}
-
-			QUnit.push( ok, actual, null, message );
-		} else {
-			QUnit.pushFailure( message, null, 'No exception was thrown.' );
-		}
-	}
-};
-
-/**
- * @deprecate since 1.8.0
- * Kept assertion helpers in root for backwards compatibility
- */
-extend( QUnit, QUnit.assert );
-
-/**
- * @deprecated since 1.9.0
- * Kept global "raises()" for backwards compatibility
- */
-QUnit.raises = QUnit.assert.throws;
-
-/**
- * @deprecated since 1.0.0, replaced with error pushes since 1.3.0
- * Kept to avoid TypeErrors for undefined methods.
- */
-QUnit.equals = function() {
-	QUnit.push( false, false, false, "QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead" );
-};
-QUnit.same = function() {
-	QUnit.push( false, false, false, "QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead" );
-};
-
-// We want access to the constructor's prototype
-(function() {
-	function F() {}
-	F.prototype = QUnit;
-	QUnit = new F();
-	// Make F QUnit's constructor so that we can add to the prototype later
-	QUnit.constructor = F;
-}());
-
-/**
- * Config object: Maintain internal state
- * Later exposed as QUnit.config
- * `config` initialized at top of scope
- */
-config = {
-	// The queue of tests to run
-	queue: [],
-
-	// block until document ready
-	blocking: true,
-
-	// when enabled, show only failing tests
-	// gets persisted through sessionStorage and can be changed in UI via checkbox
-	hidepassed: false,
-
-	// by default, run previously failed tests first
-	// very useful in combination with "Hide passed tests" checked
-	reorder: true,
-
-	// by default, modify document.title when suite is done
-	altertitle: true,
-
-	// when enabled, all tests must call expect()
-	requireExpects: false,
-
-	// add checkboxes that are persisted in the query-string
-	// when enabled, the id is set to `true` as a `QUnit.config` property
-	urlConfig: [
-		{
-			id: "noglobals",
-			label: "Check for Globals",
-			tooltip: "Enabling this will test if any test introduces new properties on the `window` object. Stored as query-strings."
-		},
-		{
-			id: "notrycatch",
-			label: "No try-catch",
-			tooltip: "Enabling this will run tests outside of a try-catch block. Makes debugging exceptions in IE reasonable. Stored as query-strings."
-		}
-	],
-
-	// logging callback queues
-	begin: [],
-	done: [],
-	log: [],
-	testStart: [],
-	testDone: [],
-	moduleStart: [],
-	moduleDone: []
-};
-
-// Initialize more QUnit.config and QUnit.urlParams
-(function() {
-	var i,
-		location = window.location || { search: "", protocol: "file:" },
-		params = location.search.slice( 1 ).split( "&" ),
-		length = params.length,
-		urlParams = {},
-		current;
-
-	if ( params[ 0 ] ) {
-		for ( i = 0; i < length; i++ ) {
-			current = params[ i ].split( "=" );
-			current[ 0 ] = decodeURIComponent( current[ 0 ] );
-			// allow just a key to turn on a flag, e.g., test.html?noglobals
-			current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;
-			urlParams[ current[ 0 ] ] = current[ 1 ];
-		}
-	}
-
-	QUnit.urlParams = urlParams;
-
-	// String search anywhere in moduleName+testName
-	config.filter = urlParams.filter;
-
-	// Exact match of the module name
-	config.module = urlParams.module;
-
-	config.testNumber = parseInt( urlParams.testNumber, 10 ) || null;
-
-	// Figure out if we're running the tests from a server or not
-	QUnit.isLocal = location.protocol === "file:";
-}());
-
-// Export global variables, unless an 'exports' object exists,
-// in that case we assume we're in CommonJS (dealt with on the bottom of the script)
-if ( typeof exports === "undefined" ) {
-	extend( window, QUnit );
-
-	// Expose QUnit object
-	window.QUnit = QUnit;
-}
-
-// Extend QUnit object,
-// these after set here because they should not be exposed as global functions
-extend( QUnit, {
-	config: config,
-
-	// Initialize the configuration options
-	init: function() {
-		extend( config, {
-			stats: { all: 0, bad: 0 },
-			moduleStats: { all: 0, bad: 0 },
-			started: +new Date(),
-			updateRate: 1000,
-			blocking: false,
-			autostart: true,
-			autorun: false,
-			filter: "",
-			queue: [],
-			semaphore: 0
-		});
-
-		var tests, banner, result,
-			qunit = id( "qunit" );
-
-		if ( qunit ) {
-			qunit.innerHTML =
-				"<h1 id='qunit-header'>" + escapeInnerText( document.title ) + "</h1>" +
-				"<h2 id='qunit-banner'></h2>" +
-				"<div id='qunit-testrunner-toolbar'></div>" +
-				"<h2 id='qunit-userAgent'></h2>" +
-				"<ol id='qunit-tests'></ol>";
-		}
-
-		tests = id( "qunit-tests" );
-		banner = id( "qunit-banner" );
-		result = id( "qunit-testresult" );
-
-		if ( tests ) {
-			tests.innerHTML = "";
-		}
-
-		if ( banner ) {
-			banner.className = "";
-		}
-
-		if ( result ) {
-			result.parentNode.removeChild( result );
-		}
-
-		if ( tests ) {
-			result = document.createElement( "p" );
-			result.id = "qunit-testresult";
-			result.className = "result";
-			tests.parentNode.insertBefore( result, tests );
-			result.innerHTML = "Running...<br/>&nbsp;";
-		}
-	},
-
-	// Resets the test setup. Useful for tests that modify the DOM.
-	// If jQuery is available, uses jQuery's html(), otherwise just innerHTML.
-	reset: function() {
-		var fixture;
-
-		if ( window.jQuery ) {
-			jQuery( "#qunit-fixture" ).html( config.fixture );
-		} else {
-			fixture = id( "qunit-fixture" );
-			if ( fixture ) {
-				fixture.innerHTML = config.fixture;
-			}
-		}
-	},
-
-	// Trigger an event on an element.
-	// @example triggerEvent( document.body, "click" );
-	triggerEvent: function( elem, type, event ) {
-		if ( document.createEvent ) {
-			event = document.createEvent( "MouseEvents" );
-			event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
-				0, 0, 0, 0, 0, false, false, false, false, 0, null);
-
-			elem.dispatchEvent( event );
-		} else if ( elem.fireEvent ) {
-			elem.fireEvent( "on" + type );
-		}
-	},
-
-	// Safe object type checking
-	is: function( type, obj ) {
-		return QUnit.objectType( obj ) == type;
-	},
-
-	objectType: function( obj ) {
-		if ( typeof obj === "undefined" ) {
-				return "undefined";
-		// consider: typeof null === object
-		}
-		if ( obj === null ) {
-				return "null";
-		}
-
-		var type = toString.call( obj ).match(/^\[object\s(.*)\]$/)[1] || "";
-
-		switch ( type ) {
-			case "Number":
-				if ( isNaN(obj) ) {
-					return "nan";
-				}
-				return "number";
-			case "String":
-			case "Boolean":
-			case "Array":
-			case "Date":
-			case "RegExp":
-			case "Function":
-				return type.toLowerCase();
-		}
-		if ( typeof obj === "object" ) {
-			return "object";
-		}
-		return undefined;
-	},
-
-	push: function( result, actual, expected, message ) {
-		if ( !config.current ) {
-			throw new Error( "assertion outside test context, was " + sourceFromStacktrace() );
-		}
-
-		var output, source,
-			details = {
-				result: result,
-				message: message,
-				actual: actual,
-				expected: expected
-			};
-
-		message = escapeInnerText( message ) || ( result ? "okay" : "failed" );
-		message = "<span class='test-message'>" + message + "</span>";
-		output = message;
-
-		if ( !result ) {
-			expected = escapeInnerText( QUnit.jsDump.parse(expected) );
-			actual = escapeInnerText( QUnit.jsDump.parse(actual) );
-			output += "<table><tr class='test-expected'><th>Expected: </th><td><pre>" + expected + "</pre></td></tr>";
-
-			if ( actual != expected ) {
-				output += "<tr class='test-actual'><th>Result: </th><td><pre>" + actual + "</pre></td></tr>";
-				output += "<tr class='test-diff'><th>Diff: </th><td><pre>" + QUnit.diff( expected, actual ) + "</pre></td></tr>";
-			}
-
-			source = sourceFromStacktrace();
-
-			if ( source ) {
-				details.source = source;
-				output += "<tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr>";
-			}
-
-			output += "</table>";
-		}
-
-		runLoggingCallbacks( "log", QUnit, details );
-
-		config.current.assertions.push({
-			result: !!result,
-			message: output
-		});
-	},
-
-	pushFailure: function( message, source, actual ) {
-		if ( !config.current ) {
-			throw new Error( "pushFailure() assertion outside test context, was " + sourceFromStacktrace(2) );
-		}
-
-		var output,
-			details = {
-				result: false,
-				message: message
-			};
-
-		message = escapeInnerText( message ) || "error";
-		message = "<span class='test-message'>" + message + "</span>";
-		output = message;
-
-		output += "<table>";
-
-		if ( actual ) {
-			output += "<tr class='test-actual'><th>Result: </th><td><pre>" + escapeInnerText( actual ) + "</pre></td></tr>";
-		}
-
-		if ( source ) {
-			details.source = source;
-			output += "<tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr>";
-		}
-
-		output += "</table>";
-
-		runLoggingCallbacks( "log", QUnit, details );
-
-		config.current.assertions.push({
-			result: false,
-			message: output
-		});
-	},
-
-	url: function( params ) {
-		params = extend( extend( {}, QUnit.urlParams ), params );
-		var key,
-			querystring = "?";
-
-		for ( key in params ) {
-			if ( !hasOwn.call( params, key ) ) {
-				continue;
-			}
-			querystring += encodeURIComponent( key ) + "=" +
-				encodeURIComponent( params[ key ] ) + "&";
-		}
-		return window.location.pathname + querystring.slice( 0, -1 );
-	},
-
-	extend: extend,
-	id: id,
-	addEvent: addEvent
-	// load, equiv, jsDump, diff: Attached later
-});
-
-/**
- * @deprecated: Created for backwards compatibility with test runner that set the hook function
- * into QUnit.{hook}, instead of invoking it and passing the hook function.
- * QUnit.constructor is set to the empty F() above so that we can add to it's prototype here.
- * Doing this allows us to tell if the following methods have been overwritten on the actual
- * QUnit object.
- */
-extend( QUnit.constructor.prototype, {
-
-	// Logging callbacks; all receive a single argument with the listed properties
-	// run test/logs.html for any related changes
-	begin: registerLoggingCallback( "begin" ),
-
-	// done: { failed, passed, total, runtime }
-	done: registerLoggingCallback( "done" ),
-
-	// log: { result, actual, expected, message }
-	log: registerLoggingCallback( "log" ),
-
-	// testStart: { name }
-	testStart: registerLoggingCallback( "testStart" ),
-
-	// testDone: { name, failed, passed, total }
-	testDone: registerLoggingCallback( "testDone" ),
-
-	// moduleStart: { name }
-	moduleStart: registerLoggingCallback( "moduleStart" ),
-
-	// moduleDone: { name, failed, passed, total }
-	moduleDone: registerLoggingCallback( "moduleDone" )
-});
-
-if ( typeof document === "undefined" || document.readyState === "complete" ) {
-	config.autorun = true;
-}
-
-QUnit.load = function() {
-	runLoggingCallbacks( "begin", QUnit, {} );
-
-	// Initialize the config, saving the execution queue
-	var banner, filter, i, label, len, main, ol, toolbar, userAgent, val, urlConfigCheckboxes,
-		urlConfigHtml = "",
-		oldconfig = extend( {}, config );
-
-	QUnit.init();
-	extend(config, oldconfig);
-
-	config.blocking = false;
-
-	len = config.urlConfig.length;
-
-	for ( i = 0; i < len; i++ ) {
-		val = config.urlConfig[i];
-		if ( typeof val === "string" ) {
-			val = {
-				id: val,
-				label: val,
-				tooltip: "[no tooltip available]"
-			};
-		}
-		config[ val.id ] = QUnit.urlParams[ val.id ];
-		urlConfigHtml += "<input id='qunit-urlconfig-" + val.id + "' name='" + val.id + "' type='checkbox'" + ( config[ val.id ] ? " checked='checked'" : "" ) + " title='" + val.tooltip + "'><label for='qunit-urlconfig-" + val.id + "' title='" + val.tooltip + "'>" + val.label + "</label>";
-	}
-
-	// `userAgent` initialized at top of scope
-	userAgent = id( "qunit-userAgent" );
-	if ( userAgent ) {
-		userAgent.innerHTML = navigator.userAgent;
-	}
-
-	// `banner` initialized at top of scope
-	banner = id( "qunit-header" );
-	if ( banner ) {
-		banner.innerHTML = "<a href='" + QUnit.url({ filter: undefined, module: undefined, testNumber: undefined }) + "'>" + banner.innerHTML + "</a> ";
-	}
-
-	// `toolbar` initialized at top of scope
-	toolbar = id( "qunit-testrunner-toolbar" );
-	if ( toolbar ) {
-		// `filter` initialized at top of scope
-		filter = document.createElement( "input" );
-		filter.type = "checkbox";
-		filter.id = "qunit-filter-pass";
-
-		addEvent( filter, "click", function() {
-			var tmp,
-				ol = document.getElementById( "qunit-tests" );
-
-			if ( filter.checked ) {
-				ol.className = ol.className + " hidepass";
-			} else {
-				tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " ";
-				ol.className = tmp.replace( / hidepass /, " " );
-			}
-			if ( defined.sessionStorage ) {
-				if (filter.checked) {
-					sessionStorage.setItem( "qunit-filter-passed-tests", "true" );
-				} else {
-					sessionStorage.removeItem( "qunit-filter-passed-tests" );
-				}
-			}
-		});
-
-		if ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem( "qunit-filter-passed-tests" ) ) {
-			filter.checked = true;
-			// `ol` initialized at top of scope
-			ol = document.getElementById( "qunit-tests" );
-			ol.className = ol.className + " hidepass";
-		}
-		toolbar.appendChild( filter );
-
-		// `label` initialized at top of scope
-		label = document.createElement( "label" );
-		label.setAttribute( "for", "qunit-filter-pass" );
-		label.setAttribute( "title", "Only show tests and assertons that fail. Stored in sessionStorage." );
-		label.innerHTML = "Hide passed tests";
-		toolbar.appendChild( label );
-
-		urlConfigCheckboxes = document.createElement( 'span' );
-		urlConfigCheckboxes.innerHTML = urlConfigHtml;
-		addEvent( urlConfigCheckboxes, "change", function( event ) {
-			var params = {};
-			params[ event.target.name ] = event.target.checked ? true : undefined;
-			window.location = QUnit.url( params );
-		});
-		toolbar.appendChild( urlConfigCheckboxes );
-	}
-
-	// `main` initialized at top of scope
-	main = id( "qunit-fixture" );
-	if ( main ) {
-		config.fixture = main.innerHTML;
-	}
-
-	if ( config.autostart ) {
-		QUnit.start();
-	}
-};
-
-addEvent( window, "load", QUnit.load );
-
-// `onErrorFnPrev` initialized at top of scope
-// Preserve other handlers
-onErrorFnPrev = window.onerror;
-
-// Cover uncaught exceptions
-// Returning true will surpress the default browser handler,
-// returning false will let it run.
-window.onerror = function ( error, filePath, linerNr ) {
-	var ret = false;
-	if ( onErrorFnPrev ) {
-		ret = onErrorFnPrev( error, filePath, linerNr );
-	}
-
-	// Treat return value as window.onerror itself does,
-	// Only do our handling if not surpressed.
-	if ( ret !== true ) {
-		if ( QUnit.config.current ) {
-			if ( QUnit.config.current.ignoreGlobalErrors ) {
-				return true;
-			}
-			QUnit.pushFailure( error, filePath + ":" + linerNr );
-		} else {
-			QUnit.test( "global failure", function() {
-				QUnit.pushFailure( error, filePath + ":" + linerNr );
-			});
-		}
-		return false;
-	}
-
-	return ret;
-};
-
-function done() {
-	config.autorun = true;
-
-	// Log the last module results
-	if ( config.currentModule ) {
-		runLoggingCallbacks( "moduleDone", QUnit, {
-			name: config.currentModule,
-			failed: config.moduleStats.bad,
-			passed: config.moduleStats.all - config.moduleStats.bad,
-			total: config.moduleStats.all
-		});
-	}
-
-	var i, key,
-		banner = id( "qunit-banner" ),
-		tests = id( "qunit-tests" ),
-		runtime = +new Date() - config.started,
-		passed = config.stats.all - config.stats.bad,
-		html = [
-			"Tests completed in ",
-			runtime,
-			" milliseconds.<br/>",
-			"<span class='passed'>",
-			passed,
-			"</span> tests of <span class='total'>",
-			config.stats.all,
-			"</span> passed, <span class='failed'>",
-			config.stats.bad,
-			"</span> failed."
-		].join( "" );
-
-	if ( banner ) {
-		banner.className = ( config.stats.bad ? "qunit-fail" : "qunit-pass" );
-	}
-
-	if ( tests ) {
-		id( "qunit-testresult" ).innerHTML = html;
-	}
-
-	if ( config.altertitle && typeof document !== "undefined" && document.title ) {
-		// show ✖ for good, ✔ for bad suite result in title
-		// use escape sequences in case file gets loaded with non-utf-8-charset
-		document.title = [
-			( config.stats.bad ? "\u2716" : "\u2714" ),
-			document.title.replace( /^[\u2714\u2716] /i, "" )
-		].join( " " );
-	}
-
-	// clear own sessionStorage items if all tests passed
-	if ( config.reorder && defined.sessionStorage && config.stats.bad === 0 ) {
-		// `key` & `i` initialized at top of scope
-		for ( i = 0; i < sessionStorage.length; i++ ) {
-			key = sessionStorage.key( i++ );
-			if ( key.indexOf( "qunit-test-" ) === 0 ) {
-				sessionStorage.removeItem( key );
-			}
-		}
-	}
-
-	runLoggingCallbacks( "done", QUnit, {
-		failed: config.stats.bad,
-		passed: passed,
-		total: config.stats.all,
-		runtime: runtime
-	});
-}
-
-/** @return Boolean: true if this test should be ran */
-function validTest( test ) {
-	var include,
-		filter = config.filter && config.filter.toLowerCase(),
-		module = config.module && config.module.toLowerCase(),
-		fullName = (test.module + ": " + test.testName).toLowerCase();
-
-	if ( config.testNumber ) {
-		return test.testNumber === config.testNumber;
-	}
-
-	if ( module && ( !test.module || test.module.toLowerCase() !== module ) ) {
-		return false;
-	}
-
-	if ( !filter ) {
-		return true;
-	}
-
-	include = filter.charAt( 0 ) !== "!";
-	if ( !include ) {
-		filter = filter.slice( 1 );
-	}
-
-	// If the filter matches, we need to honour include
-	if ( fullName.indexOf( filter ) !== -1 ) {
-		return include;
-	}
-
-	// Otherwise, do the opposite
-	return !include;
-}
-
-// so far supports only Firefox, Chrome and Opera (buggy), Safari (for real exceptions)
-// Later Safari and IE10 are supposed to support error.stack as well
-// See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack
-function extractStacktrace( e, offset ) {
-	offset = offset === undefined ? 3 : offset;
-
-	var stack, include, i, regex;
-
-	if ( e.stacktrace ) {
-		// Opera
-		return e.stacktrace.split( "\n" )[ offset + 3 ];
-	} else if ( e.stack ) {
-		// Firefox, Chrome
-		stack = e.stack.split( "\n" );
-		if (/^error$/i.test( stack[0] ) ) {
-			stack.shift();
-		}
-		if ( fileName ) {
-			include = [];
-			for ( i = offset; i < stack.length; i++ ) {
-				if ( stack[ i ].indexOf( fileName ) != -1 ) {
-					break;
-				}
-				include.push( stack[ i ] );
-			}
-			if ( include.length ) {
-				return include.join( "\n" );
-			}
-		}
-		return stack[ offset ];
-	} else if ( e.sourceURL ) {
-		// Safari, PhantomJS
-		// hopefully one day Safari provides actual stacktraces
-		// exclude useless self-reference for generated Error objects
-		if ( /qunit.js$/.test( e.sourceURL ) ) {
-			return;
-		}
-		// for actual exceptions, this is useful
-		return e.sourceURL + ":" + e.line;
-	}
-}
-function sourceFromStacktrace( offset ) {
-	try {
-		throw new Error();
-	} catch ( e ) {
-		return extractStacktrace( e, offset );
-	}
-}
-
-function escapeInnerText( s ) {
-	if ( !s ) {
-		return "";
-	}
-	s = s + "";
-	return s.replace( /[\&<>]/g, function( s ) {
-		switch( s ) {
-			case "&": return "&amp;";
-			case "<": return "&lt;";
-			case ">": return "&gt;";
-			default: return s;
-		}
-	});
-}
-
-function synchronize( callback, last ) {
-	config.queue.push( callback );
-
-	if ( config.autorun && !config.blocking ) {
-		process( last );
-	}
-}
-
-function process( last ) {
-	function next() {
-		process( last );
-	}
-	var start = new Date().getTime();
-	config.depth = config.depth ? config.depth + 1 : 1;
-
-	while ( config.queue.length && !config.blocking ) {
-		if ( !defined.setTimeout || config.updateRate <= 0 || ( ( new Date().getTime() - start ) < config.updateRate ) ) {
-			config.queue.shift()();
-		} else {
-			window.setTimeout( next, 13 );
-			break;
-		}
-	}
-	config.depth--;
-	if ( last && !config.blocking && !config.queue.length && config.depth === 0 ) {
-		done();
-	}
-}
-
-function saveGlobal() {
-	config.pollution = [];
-
-	if ( config.noglobals ) {
-		for ( var key in window ) {
-			// in Opera sometimes DOM element ids show up here, ignore them
-			if ( !hasOwn.call( window, key ) || /^qunit-test-output/.test( key ) ) {
-				continue;
-			}
-			config.pollution.push( key );
-		}
-	}
-}
-
-function checkPollution( name ) {
-	var newGlobals,
-		deletedGlobals,
-		old = config.pollution;
-
-	saveGlobal();
-
-	newGlobals = diff( config.pollution, old );
-	if ( newGlobals.length > 0 ) {
-		QUnit.pushFailure( "Introduced global variable(s): " + newGlobals.join(", ") );
-	}
-
-	deletedGlobals = diff( old, config.pollution );
-	if ( deletedGlobals.length > 0 ) {
-		QUnit.pushFailure( "Deleted global variable(s): " + deletedGlobals.join(", ") );
-	}
-}
-
-// returns a new Array with the elements that are in a but not in b
-function diff( a, b ) {
-	var i, j,
-		result = a.slice();
-
-	for ( i = 0; i < result.length; i++ ) {
-		for ( j = 0; j < b.length; j++ ) {
-			if ( result[i] === b[j] ) {
-				result.splice( i, 1 );
-				i--;
-				break;
-			}
-		}
-	}
-	return result;
-}
-
-function extend( a, b ) {
-	for ( var prop in b ) {
-		if ( b[ prop ] === undefined ) {
-			delete a[ prop ];
-
-		// Avoid "Member not found" error in IE8 caused by setting window.constructor
-		} else if ( prop !== "constructor" || a !== window ) {
-			a[ prop ] = b[ prop ];
-		}
-	}
-
-	return a;
-}
-
-function addEvent( elem, type, fn ) {
-	if ( elem.addEventListener ) {
-		elem.addEventListener( type, fn, false );
-	} else if ( elem.attachEvent ) {
-		elem.attachEvent( "on" + type, fn );
-	} else {
-		fn();
-	}
-}
-
-function id( name ) {
-	return !!( typeof document !== "undefined" && document && document.getElementById ) &&
-		document.getElementById( name );
-}
-
-function registerLoggingCallback( key ) {
-	return function( callback ) {
-		config[key].push( callback );
-	};
-}
-
-// Supports deprecated method of completely overwriting logging callbacks
-function runLoggingCallbacks( key, scope, args ) {
-	//debugger;
-	var i, callbacks;
-	if ( QUnit.hasOwnProperty( key ) ) {
-		QUnit[ key ].call(scope, args );
-	} else {
-		callbacks = config[ key ];
-		for ( i = 0; i < callbacks.length; i++ ) {
-			callbacks[ i ].call( scope, args );
-		}
-	}
-}
-
-// Test for equality any JavaScript type.
-// Author: Philippe Rathé <pr...@gmail.com>
-QUnit.equiv = (function() {
-
-	// Call the o related callback with the given arguments.
-	function bindCallbacks( o, callbacks, args ) {
-		var prop = QUnit.objectType( o );
-		if ( prop ) {
-			if ( QUnit.objectType( callbacks[ prop ] ) === "function" ) {
-				return callbacks[ prop ].apply( callbacks, args );
-			} else {
-				return callbacks[ prop ]; // or undefined
-			}
-		}
-	}
-
-	// the real equiv function
-	var innerEquiv,
-		// stack to decide between skip/abort functions
-		callers = [],
-		// stack to avoiding loops from circular referencing
-		parents = [],
-
-		getProto = Object.getPrototypeOf || function ( obj ) {
-			return obj.__proto__;
-		},
-		callbacks = (function () {
-
-			// for string, boolean, number and null
-			function useStrictEquality( b, a ) {
-				if ( b instanceof a.constructor || a instanceof b.constructor ) {
-					// to catch short annotaion VS 'new' annotation of a
-					// declaration
-					// e.g. var i = 1;
-					// var j = new Number(1);
-					return a == b;
-				} else {
-					return a === b;
-				}
-			}
-
-			return {
-				"string": useStrictEquality,
-				"boolean": useStrictEquality,
-				"number": useStrictEquality,
-				"null": useStrictEquality,
-				"undefined": useStrictEquality,
-
-				"nan": function( b ) {
-					return isNaN( b );
-				},
-
-				"date": function( b, a ) {
-					return QUnit.objectType( b ) === "date" && a.valueOf() === b.valueOf();
-				},
-
-				"regexp": function( b, a ) {
-					return QUnit.objectType( b ) === "regexp" &&
-						// the regex itself
-						a.source === b.source &&
-						// and its modifers
-						a.global === b.global &&
-						// (gmi) ...
-						a.ignoreCase === b.ignoreCase &&
-						a.multiline === b.multiline;
-				},
-
-				// - skip when the property is a method of an instance (OOP)
-				// - abort otherwise,
-				// initial === would have catch identical references anyway
-				"function": function() {
-					var caller = callers[callers.length - 1];
-					return caller !== Object && typeof caller !== "undefined";
-				},
-
-				"array": function( b, a ) {
-					var i, j, len, loop;
-
-					// b could be an object literal here
-					if ( QUnit.objectType( b ) !== "array" ) {
-						return false;
-					}
-
-					len = a.length;
-					if ( len !== b.length ) {
-						// safe and faster
-						return false;
-					}
-
-					// track reference to avoid circular references
-					parents.push( a );
-					for ( i = 0; i < len; i++ ) {
-						loop = false;
-						for ( j = 0; j < parents.length; j++ ) {
-							if ( parents[j] === a[i] ) {
-								loop = true;// dont rewalk array
-							}
-						}
-						if ( !loop && !innerEquiv(a[i], b[i]) ) {
-							parents.pop();
-							return false;
-						}
-					}
-					parents.pop();
-					return true;
-				},
-
-				"object": function( b, a ) {
-					var i, j, loop,
-						// Default to true
-						eq = true,
-						aProperties = [],
-						bProperties = [];
-
-					// comparing constructors is more strict than using
-					// instanceof
-					if ( a.constructor !== b.constructor ) {
-						// Allow objects with no prototype to be equivalent to
-						// objects with Object as their constructor.
-						if ( !(( getProto(a) === null && getProto(b) === Object.prototype ) ||
-							( getProto(b) === null && getProto(a) === Object.prototype ) ) ) {
-								return false;
-						}
-					}
-
-					// stack constructor before traversing properties
-					callers.push( a.constructor );
-					// track reference to avoid circular references
-					parents.push( a );
-
-					for ( i in a ) { // be strict: don't ensures hasOwnProperty
-									// and go deep
-						loop = false;
-						for ( j = 0; j < parents.length; j++ ) {
-							if ( parents[j] === a[i] ) {
-								// don't go down the same path twice
-								loop = true;
-							}
-						}
-						aProperties.push(i); // collect a's properties
-
-						if (!loop && !innerEquiv( a[i], b[i] ) ) {
-							eq = false;
-							break;
-						}
-					}
-
-					callers.pop(); // unstack, we are done
-					parents.pop();
-
-					for ( i in b ) {
-						bProperties.push( i ); // collect b's properties
-					}
-
-					// Ensures identical properties name
-					return eq && innerEquiv( aProperties.sort(), bProperties.sort() );
-				}
-			};
-		}());
-
-	innerEquiv = function() { // can take multiple arguments
-		var args = [].slice.apply( arguments );
-		if ( args.length < 2 ) {
-			return true; // end transition
-		}
-
-		return (function( a, b ) {
-			if ( a === b ) {
-				return true; // catch the most you can
-			} else if ( a === null || b === null || typeof a === "undefined" ||
-					typeof b === "undefined" ||
-					QUnit.objectType(a) !== QUnit.objectType(b) ) {
-				return false; // don't lose time with error prone cases
-			} else {
-				return bindCallbacks(a, callbacks, [ b, a ]);
-			}
-
-			// apply transition with (1..n) arguments
-		}( args[0], args[1] ) && arguments.callee.apply( this, args.splice(1, args.length - 1 )) );
-	};
-
-	return innerEquiv;
-}());
-
-/**
- * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com |
- * http://flesler.blogspot.com Licensed under BSD
- * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008
- *
- * @projectDescription Advanced and extensible data dumping for Javascript.
- * @version 1.0.0
- * @author Ariel Flesler
- * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}
- */
-QUnit.jsDump = (function() {
-	function quote( str ) {
-		return '"' + str.toString().replace( /"/g, '\\"' ) + '"';
-	}
-	function literal( o ) {
-		return o + "";
-	}
-	function join( pre, arr, post ) {
-		var s = jsDump.separator(),
-			base = jsDump.indent(),
-			inner = jsDump.indent(1);
-		if ( arr.join ) {
-			arr = arr.join( "," + s + inner );
-		}
-		if ( !arr ) {
-			return pre + post;
-		}
-		return [ pre, inner + arr, base + post ].join(s);
-	}
-	function array( arr, stack ) {
-		var i = arr.length, ret = new Array(i);
-		this.up();
-		while ( i-- ) {
-			ret[i] = this.parse( arr[i] , undefined , stack);
-		}
-		this.down();
-		return join( "[", ret, "]" );
-	}
-
-	var reName = /^function (\w+)/,
-		jsDump = {
-			parse: function( obj, type, stack ) { //type is used mostly internally, you can fix a (custom)type in advance
-				stack = stack || [ ];
-				var inStack, res,
-					parser = this.parsers[ type || this.typeOf(obj) ];
-
-				type = typeof parser;
-				inStack = inArray( obj, stack );
-
-				if ( inStack != -1 ) {
-					return "recursion(" + (inStack - stack.length) + ")";
-				}
-				//else
-				if ( type == "function" )  {
-					stack.push( obj );
-					res = parser.call( this, obj, stack );
-					stack.pop();
-					return res;
-				}
-				// else
-				return ( type == "string" ) ? parser : this.parsers.error;
-			},
-			typeOf: function( obj ) {
-				var type;
-				if ( obj === null ) {
-					type = "null";
-				} else if ( typeof obj === "undefined" ) {
-					type = "undefined";
-				} else if ( QUnit.is( "regexp", obj) ) {
-					type = "regexp";
-				} else if ( QUnit.is( "date", obj) ) {
-					type = "date";
-				} else if ( QUnit.is( "function", obj) ) {
-					type = "function";
-				} else if ( typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined" ) {
-					type = "window";
-				} else if ( obj.nodeType === 9 ) {
-					type = "document";
-				} else if ( obj.nodeType ) {
-					type = "node";
-				} else if (
-					// native arrays
-					toString.call( obj ) === "[object Array]" ||
-					// NodeList objects
-					( typeof obj.length === "number" && typeof obj.item !== "undefined" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === "undefined" ) ) )
-				) {
-					type = "array";
-				} else {
-					type = typeof obj;
-				}
-				return type;
-			},
-			separator: function() {
-				return this.multiline ?	this.HTML ? "<br />" : "\n" : this.HTML ? "&nbsp;" : " ";
-			},
-			indent: function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing
-				if ( !this.multiline ) {
-					return "";
-				}
-				var chr = this.indentChar;
-				if ( this.HTML ) {
-					chr = chr.replace( /\t/g, "   " ).replace( / /g, "&nbsp;" );
-				}
-				return new Array( this._depth_ + (extra||0) ).join(chr);
-			},
-			up: function( a ) {
-				this._depth_ += a || 1;
-			},
-			down: function( a ) {
-				this._depth_ -= a || 1;
-			},
-			setParser: function( name, parser ) {
-				this.parsers[name] = parser;
-			},
-			// The next 3 are exposed so you can use them
-			quote: quote,
-			literal: literal,
-			join: join,
-			//
-			_depth_: 1,
-			// This is the list of parsers, to modify them, use jsDump.setParser
-			parsers: {
-				window: "[Window]",
-				document: "[Document]",
-				error: "[ERROR]", //when no parser is found, shouldn"t happen
-				unknown: "[Unknown]",
-				"null": "null",
-				"undefined": "undefined",
-				"function": function( fn ) {
-					var ret = "function",
-						name = "name" in fn ? fn.name : (reName.exec(fn) || [])[1];//functions never have name in IE
-
-					if ( name ) {
-						ret += " " + name;
-					}
-					ret += "( ";
-
-					ret = [ ret, QUnit.jsDump.parse( fn, "functionArgs" ), "){" ].join( "" );
-					return join( ret, QUnit.jsDump.parse(fn,"functionCode" ), "}" );
-				},
-				array: array,
-				nodelist: array,
-				"arguments": array,
-				object: function( map, stack ) {
-					var ret = [ ], keys, key, val, i;
-					QUnit.jsDump.up();
-					if ( Object.keys ) {
-						keys = Object.keys( map );
-					} else {
-						keys = [];
-						for ( key in map ) {
-							keys.push( key );
-						}
-					}
-					keys.sort();
-					for ( i = 0; i < keys.length; i++ ) {
-						key = keys[ i ];
-						val = map[ key ];
-						ret.push( QUnit.jsDump.parse( key, "key" ) + ": " + QUnit.jsDump.parse( val, undefined, stack ) );
-					}
-					QUnit.jsDump.down();
-					return join( "{", ret, "}" );
-				},
-				node: function( node ) {
-					var a, val,
-						open = QUnit.jsDump.HTML ? "&lt;" : "<",
-						close = QUnit.jsDump.HTML ? "&gt;" : ">",
-						tag = node.nodeName.toLowerCase(),
-						ret = open + tag;
-
-					for ( a in QUnit.jsDump.DOMAttrs ) {
-						val = node[ QUnit.jsDump.DOMAttrs[a] ];
-						if ( val ) {
-							ret += " " + a + "=" + QUnit.jsDump.parse( val, "attribute" );
-						}
-					}
-					return ret + close + open + "/" + tag + close;
-				},
-				functionArgs: function( fn ) {//function calls it internally, it's the arguments part of the function
-					var args,
-						l = fn.length;
-
-					if ( !l ) {
-						return "";
-					}
-
-					args = new Array(l);
-					while ( l-- ) {
-						args[l] = String.fromCharCode(97+l);//97 is 'a'
-					}
-					return " " + args.join( ", " ) + " ";
-				},
-				key: quote, //object calls it internally, the key part of an item in a map
-				functionCode: "[code]", //function calls it internally, it's the content of the function
-				attribute: quote, //node calls it internally, it's an html attribute value
-				string: quote,
-				date: quote,
-				regexp: literal, //regex
-				number: literal,
-				"boolean": literal
-			},
-			DOMAttrs: {
-				//attributes to dump from nodes, name=>realName
-				id: "id",
-				name: "name",
-				"class": "className"
-			},
-			HTML: false,//if true, entities are escaped ( <, >, \t, space and \n )
-			indentChar: "  ",//indentation unit
-			multiline: true //if true, items in a collection, are separated by a \n, else just a space.
-		};
-
-	return jsDump;
-}());
-
-// from Sizzle.js
-function getText( elems ) {
-	var i, elem,
-		ret = "";
-
-	for ( i = 0; elems[i]; i++ ) {
-		elem = elems[i];
-
-		// Get the text from text nodes and CDATA nodes
-		if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
-			ret += elem.nodeValue;
-
-		// Traverse everything else, except comment nodes
-		} else if ( elem.nodeType !== 8 ) {
-			ret += getText( elem.childNodes );
-		}
-	}
-
-	return ret;
-}
-
-// from jquery.js
-function inArray( elem, array ) {
-	if ( array.indexOf ) {
-		return array.indexOf( elem );
-	}
-
-	for ( var i = 0, length = array.length; i < length; i++ ) {
-		if ( array[ i ] === elem ) {
-			return i;
-		}
-	}
-
-	return -1;
-}
-
-/*
- * Javascript Diff Algorithm
- *  By John Resig (http://ejohn.org/)
- *  Modified by Chu Alan "sprite"
- *
- * Released under the MIT license.
- *
- * More Info:
- *  http://ejohn.org/projects/javascript-diff-algorithm/
- *
- * Usage: QUnit.diff(expected, actual)
- *
- * QUnit.diff( "the quick brown fox jumped over", "the quick fox jumps over" ) == "the  quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over"
- */
-QUnit.diff = (function() {
-	function diff( o, n ) {
-		var i,
-			ns = {},
-			os = {};
-
-		for ( i = 0; i < n.length; i++ ) {
-			if ( ns[ n[i] ] == null ) {
-				ns[ n[i] ] = {
-					rows: [],
-					o: null
-				};
-			}
-			ns[ n[i] ].rows.push( i );
-		}
-
-		for ( i = 0; i < o.length; i++ ) {
-			if ( os[ o[i] ] == null ) {
-				os[ o[i] ] = {
-					rows: [],
-					n: null
-				};
-			}
-			os[ o[i] ].rows.push( i );
-		}
-
-		for ( i in ns ) {
-			if ( !hasOwn.call( ns, i ) ) {
-				continue;
-			}
-			if ( ns[i].rows.length == 1 && typeof os[i] != "undefined" && os[i].rows.length == 1 ) {
-				n[ ns[i].rows[0] ] = {
-					text: n[ ns[i].rows[0] ],
-					row: os[i].rows[0]
-				};
-				o[ os[i].rows[0] ] = {
-					text: o[ os[i].rows[0] ],
-					row: ns[i].rows[0]
-				};
-			}
-		}
-
-		for ( i = 0; i < n.length - 1; i++ ) {
-			if ( n[i].text != null && n[ i + 1 ].text == null && n[i].row + 1 < o.length && o[ n[i].row + 1 ].text == null &&
-						n[ i + 1 ] == o[ n[i].row + 1 ] ) {
-
-				n[ i + 1 ] = {
-					text: n[ i + 1 ],
-					row: n[i].row + 1
-				};
-				o[ n[i].row + 1 ] = {
-					text: o[ n[i].row + 1 ],
-					row: i + 1
-				};
-			}
-		}
-
-		for ( i = n.length - 1; i > 0; i-- ) {
-			if ( n[i].text != null && n[ i - 1 ].text == null && n[i].row > 0 && o[ n[i].row - 1 ].text == null &&
-						n[ i - 1 ] == o[ n[i].row - 1 ]) {
-
-				n[ i - 1 ] = {
-					text: n[ i - 1 ],
-					row: n[i].row - 1
-				};
-				o[ n[i].row - 1 ] = {
-					text: o[ n[i].row - 1 ],
-					row: i - 1
-				};
-			}
-		}
-
-		return {
-			o: o,
-			n: n
-		};
-	}
-
-	return function( o, n ) {
-		o = o.replace( /\s+$/, "" );
-		n = n.replace( /\s+$/, "" );
-
-		var i, pre,
-			str = "",
-			out = diff( o === "" ? [] : o.split(/\s+/), n === "" ? [] : n.split(/\s+/) ),
-			oSpace = o.match(/\s+/g),
-			nSpace = n.match(/\s+/g);
-
-		if ( oSpace == null ) {
-			oSpace = [ " " ];
-		}
-		else {
-			oSpace.push( " " );
-		}
-
-		if ( nSpace == null ) {
-			nSpace = [ " " ];
-		}
-		else {
-			nSpace.push( " " );
-		}
-
-		if ( out.n.length === 0 ) {
-			for ( i = 0; i < out.o.length; i++ ) {
-				str += "<del>" + out.o[i] + oSpace[i] + "</del>";
-			}
-		}
-		else {
-			if ( out.n[0].text == null ) {
-				for ( n = 0; n < out.o.length && out.o[n].text == null; n++ ) {
-					str += "<del>" + out.o[n] + oSpace[n] + "</del>";
-				}
-			}
-
-			for ( i = 0; i < out.n.length; i++ ) {
-				if (out.n[i].text == null) {
-					str += "<ins>" + out.n[i] + nSpace[i] + "</ins>";
-				}
-				else {
-					// `pre` initialized at top of scope
-					pre = "";
-
-					for ( n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++ ) {
-						pre += "<del>" + out.o[n] + oSpace[n] + "</del>";
-					}
-					str += " " + out.n[i].text + nSpace[i] + pre;
-				}
-			}
-		}
-
-		return str;
-	};
-}());
-
-// for CommonJS enviroments, export everything
-if ( typeof exports !== "undefined" ) {
-	extend(exports, QUnit);
-}
-
-// get at whatever the global object is, like window in browsers
-}( (function() {return this;}.call()) ));
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/loading.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/loading.html b/deleted/dist-cov/usergrid-portal/archive/loading.html
deleted file mode 100644
index 6d407e4..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/loading.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-  <head>
-    <title></title>
-  </head>
-  <body>
-    aloading...
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/max/index.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/max/index.html b/deleted/dist-cov/usergrid-portal/archive/max/index.html
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/planned_outage.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/planned_outage.html b/deleted/dist-cov/usergrid-portal/archive/planned_outage.html
deleted file mode 100644
index d72dec0..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/planned_outage.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-  <title>App Services Admin Portal</title>
-  <link rel="stylesheet" type="text/css" href="css/usergrid.css"/>
-</head>
-
-<style type="text/css">
-  #fullContainer { background-image: url('/images/grid.png'); text-align: center;}
-  #coming_soon { position: absolute; left: 50%; margin-left: -500px; top: 20%; width: 1000px; }
-  .huge { color: black; font-size: 80px; padding: 30px; }
-  .bigbig { color: black; font-size: 30px; }
-  .big { color: #575560; font-size: 20px; padding-top: 50px;}
-  .big a { color: #FF4300 }
-</style>
-
-<body>
-<div id="fullContainer">
-  <div class="navbar navbar-fixed-top">
-    <h1 class="apigee"><a href="https://apigee.com" target="_blank"><img src="images/apigee-logo.png">apigee</a></h1>
-    <h2 id="ActualPage1">App Services Admin Portal</h2>
-    <ul id="loginMenu" class="nav secondary-nav">
-      <li><a id="login-link" href="#"><i class="icon-user"></i> Login</a></li>
-      <li><a id="signup-link" href="#">Sign Up</a></li>
-      <li><a id="forgot-password-link" href="#"><i class="icon-lock"></i> Forgot Password</a></li>
-    </ul>
-  </div>
-  <div id="coming_soon">
-    <div class="huge">
-      Planned outage
-    </div>
-    <br />
-    <div class="bigbig">
-      App Services  is temporarily down for routine maintence.  We will be back soon!
-    </div>
-    <div class="big">
-      Find out more about App Services <a href="http://apigee.com/docs"><strong>here</strong></a>
-    </div>
-  </div>
-  <footer>
-    <div class="container-fluid">
-      <span id="copyright" class="pull-right">&copy; 2012 Apigee Corp. All rights reserved.</span>
-    </div>
-  </footer>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/push/index.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/push/index.html b/deleted/dist-cov/usergrid-portal/archive/push/index.html
deleted file mode 100644
index c75e036..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/push/index.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html"
-      xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html">
-<html>
-<head>
-  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
-  <title>Apigee App Services Admin Portal </title>
-  <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
-  <script type="text/javascript">
-    localStorage.setItem('getStarted', 'yes');
-
-    var path = window.location.pathname;
-    path = path.replace(/^\/|\/$/g, '');
-    var pathArr = path.split('/');
-    var length = pathArr.length;
-    if (pathArr[length-1] === 'push') {
-      pathArr.pop(length-1);
-    }
-    path = pathArr.join("");
-    var protocol = window.location.protocol;
-    var host = window.location.host;
-    path = protocol+'//'+host+'/'+path;
-    var queryString = location.search.substring(1);
-    if (queryString) {
-      path = path + "?" + queryString;
-    }
-    window.location = path;
-
-  </script>
-</head>
-<body>
-  Loading...
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/service_down.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/service_down.html b/deleted/dist-cov/usergrid-portal/archive/service_down.html
deleted file mode 100644
index 432d1e1..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/service_down.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-  <title>App Services Admin Portal</title>
-  <link rel="stylesheet" type="text/css" href="css/usergrid.css"/>
-</head>
-
-<style type="text/css">
-  #fullContainer { background-image: url('/images/grid.png'); text-align: center;}
-  #coming_soon { position: absolute; left: 50%; margin-left: -500px; top: 20%; width: 1000px; }
-  .huge { color: black; font-size: 80px; padding: 30px; }
-  .bigbig { color: black; font-size: 30px; }
-  .big { color: #575560; font-size: 20px; padding-top: 50px;}
-  .big a { color: #FF4300 }
-</style>
-
-<body>
-<div id="fullContainer">
-  <div class="navbar navbar-fixed-top">
-    <h1 class="apigee"><a href="https://apigee.com" target="_blank"><img src="images/apigee-logo.png">apigee</a></h1>
-    <h2 id="ActualPage1">App Services Admin Portal</h2>
-    <ul id="loginMenu" class="nav secondary-nav">
-      <li><a id="login-link" href="#"><i class="icon-user"></i> Login</a></li>
-      <li><a id="signup-link" href="#">Sign Up</a></li>
-      <li><a id="forgot-password-link" href="#"><i class="icon-lock"></i> Forgot Password</a></li>
-    </ul>
-  </div>
-  <div id="coming_soon">
-    <div class="huge">
-      Temporarily Unavailable
-    </div>
-    <br />
-    <div class="bigbig">
-      Thanks for checking us out, we'll be back real soon!
-    </div>
-    <div class="big">
-      Find out more about App Services <a href="http://apigee.com/docs"><strong>here</strong></a>
-    </div>
-  </div>
-  <footer>
-    <div class="container-fluid">
-      <span id="copyright" class="pull-right">&copy; 2012 Apigee Corp. All rights reserved.</span>
-    </div>
-  </footer>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.activities.table_rows.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.activities.table_rows.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.activities.table_rows.html
deleted file mode 100644
index 36afbdf..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.activities.table_rows.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<tr class="zebraRows">
-  <td>
-    <a href="#" class="toggleableSP">${dateToString(created)}</a>
-    <a href="#" class="toggleableSP hide">${created}</a>
-  </td>
-  <td class="gravatar20">
-    <img src="${actor.picture}"/>
-  </td>
-  <td>
-    ${actor.displayName}
-  </td>
-  <td>{{if content}}${content}{{else}} {{/if}}</td>
-  <td>${verb}</td>
-</tr>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.admins.table_rows.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.admins.table_rows.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.admins.table_rows.html
deleted file mode 100644
index 3b34e75..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.admins.table_rows.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<tr class="zebraRows">
-  <td class="gravatar20">
-    <img src="${gravatar}"/>
-  </td>
-  <td>
-    <a href="mailto:${email}">${name} (${email})</a>
-  </td>
-</tr>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.applications.table_rows.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.applications.table_rows.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.applications.table_rows.html
deleted file mode 100644
index 88be0be..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.applications.table_rows.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<tr class="zebraRows">
-  <td><a>${name}</a></td>
-  <td><span class="monospace">${uuid}</span></td>
-</tr>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.collection.table_rows.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.collection.table_rows.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.collection.table_rows.html
deleted file mode 100644
index 31f295f..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.collection.table_rows.html
+++ /dev/null
@@ -1,67 +0,0 @@
-
-<tr class="zebraRows users-row">
-  <td class="checkboxo">
-    <input class="listItem" type="checkbox" name="${r.metadata.path}" value="${r.uuid}" />
-  </td>
-  {{if r.type == 'user'}}
-  <td class="gravatar50-td">
-    <img src="${r.picture}" class="gravatar50"/>
-  </td>
-  <td class="details">
-      <a onclick="Usergrid.console.getCollection('GET', '${path}/'+'${r.uuid}'); $('#data-explorer').show(); return false;" class="view-details">${r.username}</a>
-  </td>
-  <td class="details">
-     ${r.name}
-  </td>
-  {{else r.type == 'group'}}
-  <td class="details">
-     <a href="" onclick="Usergrid.console.getCollection('GET', '${path}/'+'${r.uuid}'); $('#data-explorer').show(); return false;" class="view-details">${r.path}</a>
-  </td>
-  <td class="details">
-     ${r.title}
-  </td>
-  {{else r.type == 'role'}}
-  <td class="details">
-    <a href="" onclick="Usergrid.console.getCollection('GET', '${path}/'+'${r.uuid}'); $('#data-explorer').show(); return false;" class="view-details">${r.title}</a>
-  </td>
-  <td class="details">
-     ${r.name}
-  </td>
-  {{else}}
-  <td class="details">
-    <a href="" onclick="Usergrid.console.getCollection('GET', '/${path}/'+'${r.uuid}'); $('#data-explorer').show(); return false;" class="view-details">${r.name}</a>
-  </td>
-  {{/if}}
-
-  <td class="details">
-    ${r.uuid}
-  </td>
-  <td class="view-details">
-    <a href="" onclick="$('#query-row-${r.uuid}').toggle(); $('#data-explorer').show(); return false;" class="view-details">Details</a>
-  </td>
-</tr>
-
-<tr id="query-row-${r.uuid}" style="display:none">
-  {{if r.type == 'user'}}
-  <td colspan="5">
-  {{else r.type == 'group'}}
-  <td colspan="4">
-  {{else r.type == 'role'}}
-  <td colspan="4">
-  {{else}}
-  <td colspan="3">
-  {{/if}}
-    <div>
-        <div style="padding-bottom: 10px;">
-          <button type="button" class="btn btn-small query-button active" id="button-query-show-row-JSON" onclick="Usergrid.console.activateQueryRowJSONButton(); $('#query-row-JSON-${r.uuid}').show(); $('#query-row-content-${r.uuid}').hide(); return false;">JSON</button>
-          <button type="button" class="btn btn-small query-button disabled" id="button-query-show-row-content" onclick="Usergrid.console.activateQueryRowContentButton();$('#query-row-content-${r.uuid}').show(); $('#query-row-JSON-${r.uuid}').hide(); return false;">Content</button>
-        </div>
-        <div id="query-row-JSON-${r.uuid}">
-          <pre>${json}</pre>
-        </div>
-         <div id="query-row-content-${r.uuid}" style="display:none">
-          {{html content}}
-        </div>
-    </div>
-  </td>
-</tr>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.collections.query.indexes.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.collections.query.indexes.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.collections.query.indexes.html
deleted file mode 100644
index ed33990..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.collections.query.indexes.html
+++ /dev/null
@@ -1,5 +0,0 @@
-{{each data}}
-<li>
-  <a href="#" onclick="Usergrid.console.appendToCollectionsQuery('${$value}'); return false;">${$value}</a>
-</li>
-{{/each}}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.collections.table_rows.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.collections.table_rows.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.collections.table_rows.html
deleted file mode 100644
index b36b6b5..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.collections.table_rows.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<tr class="zebraRows">
-
-  <td class="collection-column">
-    <a href="#" onclick="Usergrid.console.pageOpenQueryExplorer('/${name}'); return false;">/${name}</a>
-  </td>
-  <td>
-    (${count} entities)
-  </td>
-</tr>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.collections.user.header.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.collections.user.header.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.collections.user.header.html
deleted file mode 100644
index 11d0f29..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.collections.user.header.html
+++ /dev/null
@@ -1,21 +0,0 @@
-
-<td class="checkboxo">
-  <input class="queryResultItem" type="checkbox" name="entity" value="${uuid}" />
-</td>
-<td class="gravatar50-td">
-  <img class="gravatar50" src="{{if picture}}${picture}{{else}}images/user-photo.png{{/if}}" />
-</td>
-<td class="details">
-  {{if path}}
-  <a href="" onclick="Usergrid.console.pageOpenQueryExplorer('${path}'); return false;">
-    ${username}
-  </a>
-  {{/if}}
-</td>
-<td class="details">
-  ${name}
-</td>
-<td class="view-details">
-  <button class="query-result-header-toggle-json btn">JSON</button>
-</td>
-

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.curl.detail.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.curl.detail.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.curl.detail.html
deleted file mode 100644
index 91d0298..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.curl.detail.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<div class="curl-info">
-  Want to get the data above programmatically? You can retrieve it with <a style="color: #007CDC;" href="http://curl.haxx.se/" target="_blank">curl</a>. Copy-paste the command in a terminal window and you should see the same data come back as JSON.
-</div>
-<div class="input-append2">
-  <div id="${sectionName}-curl" class="alert alert-info curl-data">
-    ${curlData}
-  </div>
-</div>
-<div id="${sectionName}-curl-token" class="curl-token">
-  Not sure what "Authorization: Bearer” is, or how to get a token? We have a  <a style="color: #007CDC;" href="http://apigee.com/docs/usergrid/content/authentication-and-access-usergrid">documentation article about that</a>
-</div>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.feed.table_rows.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.feed.table_rows.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.feed.table_rows.html
deleted file mode 100644
index 4946514..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.feed.table_rows.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<tr class="zebraRows">
-  <td>
-    <a href="#" class="toggleableSP">${dateToString(created)}</a>
-    <a href="#" class="toggleableSP hide">${created}</a>
-  </td>
-  <td class="gravatar20">
-    <img src="${actor.gravatar}"/>
-  </td>
-  <td>
-    <a href="mailto:${actor.email}"> ${actor.displayName} (${actor.email})</a>
-  </td>
-  <td>
-    ${title}
-  </td>
-</tr>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.groups.table_rows.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.groups.table_rows.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.groups.table_rows.html
deleted file mode 100644
index 05ac965..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.groups.table_rows.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<tr class="zebraRows groups-row">
-  <td class="checkboxo">
-    <input class="listItem" type="checkbox" value="${uuid}" />
-  </td>
-  <td class="details">
-      <a href="" class="list-link" onclick="Usergrid.console.pageOpenGroupProfile('${path}'); return false;">${path}</a>
-  </td>
-  <td class="details">
-     <a href="" class="list-link" onclick="Usergrid.console.pageOpenGroupProfile('${path}'); return false;">${title}</a>
-  </td>
-  <td class="view-details">
-    <a href="" onclick="Usergrid.console.pageOpenGroupProfile('${path}'); return false;" class="view-details">View Details</a>
-  </td>
-</tr>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.group.activities.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.group.activities.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.group.activities.html
deleted file mode 100644
index 098e270..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.group.activities.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<div class="console-section">
-  <div class="well thingy">
-    {{if path}}<span class="title" href="" onclick="Usergrid.console.pageOpenQueryExplorer('${path}'); return false;">{{/if}}
-      ${name}
-    {{if path}}</span>{{/if}}
-  </div>
-  {{if activities}}
-  {{each activities}}
-  <table>
-    <tr>
-      <td>
-        ${$index + 1}: ${$value.actor.displayName} (${$value.actor.email})
-      </td>
-      <td>
-        ${$value.content}
-      </td>
-      <td>
-        ${$value.verb}:
-      </td>
-    </tr>
-  </table>
-  {{/each}}
-  {{else}}
-  <div class="panel-section-message">No Group Activities</div>
-  {{/if}}
-</div>
-<div id="group-panel-activities-curl-container" class="curl-container">
-</div>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.group.details.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.group.details.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.group.details.html
deleted file mode 100644
index aa62ae6..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.group.details.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<div class="alert messages" style="display: none;"></div>
-<div id="group-messages" class="alert" style="display: none;"></div>
-<div class="console-section">
-  <div class="well thingy">
-    {{if path}}<span class="title" href="" onclick="Usergrid.console.pageOpenQueryExplorer('${path}'); return false;">{{/if}}
-      ${name}
-    {{if path}}</span>{{/if}}
-    <div class="bar">
-      <a class="btn btn-primary" onclick="Usergrid.console.saveGroupProfile('${uuid}'); return false;"> Save Group </a>
-    </div>
-  </div>
-  <h3>Edit</h3>
-  <div class="query-result-form"></div>
-  <div class="content-container">
-    <h3>Contents</h3>
-    <table class="table">
-      <tbody>
-        <tr class="zebraRows">
-          <td>UUID</td>
-          <td>${entity.uuid}</td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Type</td>
-          <td>${entity.type}</td>
-        </tr>
-        <tr class="zebraRows">
-          <td>
-            Created
-          </td>
-          <td>
-            <a href="#" class="toggleableSP">${dateToString(entity.created)}</a>
-            <a href="#" class="toggleableSP hide">${entity.created}</a>
-          </td>
-        </tr>
-        <tr class="zebraRows">
-          <td>
-            Modified
-          </td>
-          <td>
-            <a href="#" class="toggleableSP">${dateToString(entity.modified)}</a>
-            <a href="#" class="toggleableSP hide">${entity.modified}</a>
-          </td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Title</td>
-          <td>${entity.title}</td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Path</td>
-          <td>${name}</td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Sets</td>
-          <td>
-            <table class="table table-striped">
-              <tbody>
-                {{each metadata.sets}}
-                <tr>
-                  <td>
-                    ${$index}
-                  </td>
-                  <td>
-                    <a href="#" onclick="Usergrid.console.pageOpenQueryExplorer('${$value}'); return false;">${$value}</a>
-                  </td>
-                </tr>
-                {{/each}}
-              <tbody>
-            </table>
-          </td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Collections</td>
-          <td>
-            <table class="table table-striped">
-              <tbody>
-                {{each metadata.collections}}
-                <tr>
-                  <td>
-                    ${$index}
-                  </td>
-                  <td>
-                    <a href="#" onclick="Usergrid.console.pageOpenQueryExplorer('${$value}'); return false;">${$value}</a>
-                  </td>
-                </tr>
-                {{/each}}
-              <tbody>
-            </table>
-          </td>
-        </tr>
-      </tbody>
-    </table>
-    <h3>JSON</h3>
-    <pre class="query-result-json-inner">${JSON.stringify(entity, null, "  ")}</pre>
-  </div>
-</div>
-<div id="group-panel-details-curl-container" class="curl-container">
-</div>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.group.memberships.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.group.memberships.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.group.memberships.html
deleted file mode 100644
index 5790c1e..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.group.memberships.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<div class="console-section">
-  <div class="well thingy">
-    {{if path}}<span class="title" href="" onclick="Usergrid.console.pageOpenQueryExplorer('${path}'); return false;">{{/if}}
-      ${name}
-    {{if path}}</span>{{/if}}
-
-    <div class="bar">
-      <a class="btn " data-toggle="modal" onclick="Usergrid.console.removeGroupFromUser('${uuid}'); return false;">Remove</a>
-      <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-add-user-to-group">Add user</a>
-      <input type="hidden" value="${uuid}" id="search-user-groupid" name="search-user-groupid">
-    </div>
-  </div>
-
-  {{if memberships}}
-  <table class="table" style="margin-top: 30px">
-    <tbody>
-      <tr class="zebraRows users-row">
-        <td class="checkboxo">
-          <input type="checkbox" onclick="Usergrid.console.selectAllEntities(this);" />
-        </td>
-        <td class="user-details bold-header">
-          User Name
-        </td>
-      </tr>
-      {{each memberships}}
-      <tr class="zebraRows users-row">
-        <td class="checkboxo"><input type="checkbox" name="${name}" class="listItem" value="${$value.uuid}" /></td>
-        <td class="details">
-          <a href="#" onclick="Usergrid.console.pageOpenUserProfile('${username}'); return false;">${username}:${name}</a>
-        </td>
-      </tr>
-      {{/each}}
-    </tbody>
-  </table>
-  {{else}}
-  <div class="panel-section-message">No Group Memberships</div>
-  {{/if}}
-</div>
-<div id="group-panel-memberships-curl-container" class="curl-container">
-</div>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.group.permissions.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.group.permissions.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.group.permissions.html
deleted file mode 100644
index 12c2f21..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.group.permissions.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<div class="console-section">
-  <div class="well thingy">
-    <span class="title">${name}</span>
-    <div class="bar">
-      <a class="btn" data-toggle="modal" href="#" onclick="Usergrid.console.deleteRolesFromGroup(''); return false;"> Remove </a>
-      <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-add-role-to-group"> Add role </a>
-    </div>
-  </div>
-  <div class="console-section-contents">
-    <div class="user-panel-section">
-      <div class="user-roles-title">Roles </div>
-      {{if roles}}
-      {{if roles.length > 0}}
-      <table class="table table-bordered groups-permissions-response-table">
-        <tbody>
-          <tr class="zebraRows users-row">
-            <td class="checkboxo">
-              <input type="checkbox" onclick="Usergrid.console.selectAllEntities(this);" />
-            </td>
-            <td class="user-details bold-header">
-              Group Name
-            </td>
-          </tr>
-          {{each roles}}
-          <tr class="zebraRows users-row">
-            <td class="checkboxo"><input type="checkbox" name="${name}" class="listItem" value="${name}" /></td>
-            <td class="details">
-              {{if path}}<a href="" onclick="Usergrid.console.pageOpenRole('${name}'); return false;">{{/if}}
-                ${title}
-                (${name})
-              {{if path}}</a>{{/if}}
-            </td>
-          </tr>
-          {{/each}}
-        </tbody>
-      </table>
-      {{else}}
-      <div class="panel-section-message">No Roles</div>
-      {{/if}}
-      {{/if}}
-      <div id="group-panel-roles-curl-container" class="curl-container">
-    </div>
-      <br/>
-      <div class="user-roles-title">Permissions </div>
-      <h4>Add Permission Rule</h4>
-      <form id="role-permissions-form" action="" onsubmit="Usergrid.console.addGroupPermission('${name}'); return false;" class="well form-inline" autocomplete="off">
-        Path: <input id="group-permission-path-entry-input" type="text" name="path" value="/" />
-        <label class="checkbox">
-          <input id="group-permission-op-get-checkbox" type="checkbox" name="get" value="get"/>
-          get </label>
-        <label class="checkbox">
-          <input id="group-permission-op-post-checkbox" type="checkbox" name="post" value="post"/>
-          post </label>
-        <label class="checkbox">
-          <input id="group-permission-op-put-checkbox" type="checkbox" name="put" value="put"/>
-          put </label>
-        <label class="checkbox">
-          <input id="group-permission-op-delete-checkbox" type="checkbox" name="delete" value="delete"/>
-          delete </label>
-        <button type="submit" class="btn btn-primary"><i class="icon-plus-sign icon-white"></i> Add</button >
-      </form>
-      <br/>
-      <h4>Permission Rules</h4>
-      {{if permissions}}
-      <table id="role-permissions-table" data-permission="${$index}" class="table table-striped table-bordered table-condensed">
-        <thead>
-          <tr>
-            <th>Path</th>
-            <th class="role-permission-op">Get</th>
-            <th class="role-permission-op">Post</th>
-            <th class="role-permission-op">Put</th>
-            <th class="role-permission-op">Delete</th>
-            <th></th>
-          </tr>
-        </thead>
-        <tbody>
-          {{each permissions}}
-          <tr>
-            <td class="role-permission-path">${$value.path}</td>
-            <td class="role-permission-op">{{if $value.ops.get}}<i class="icon-ok"></i>{{/if}}</td>
-            <td class="role-permission-op">{{if $value.ops.post}}<i class="icon-ok"></i>{{/if}}</td>
-            <td class="role-permission-op">{{if $value.ops.put}}<i class="icon-ok"></i>{{/if}}</td>
-            <td class="role-permission-op">{{if $value.ops.delete}}<i class="icon-ok"></i>{{/if}}</td>
-            <td class="role-permission-delete">
-              <a onclick="Usergrid.console.deleteGroupPermission('${name}', '${$value.perm}'); return false;" href="#" class="btn btn-danger"><i class="icon-trash icon-white"></i> Remove</a>
-            </td>
-          </tr>
-          {{/each}}
-        </tbody>
-      </table>
-      {{else}}
-      <div class="alert">No Permissions</div>
-      {{/if}}
-      <div id="group-panel-permissions-curl-container" class="curl-container">
-    </div>
-    </div>
-  </div>
-</div>
-<input type="hidden" name="role-form-groupname" id="role-form-groupname" value="${name}"/>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.notifications.configure.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.notifications.configure.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.notifications.configure.html
deleted file mode 100644
index ae2b840..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.notifications.configure.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<tr class="zebraRows users-row">
-  <td class="checkboxo">
-    <input class="listItem" type="checkbox" name="${metadata.path}" value="${uuid}"/>
-  </td>
-  <td class="details">
-    ${provider}
-  </td>
-  <td class="details">
-    ${name}
-  </td>
-  <td class="details">
-    ${created_date}
-  </td>
-</tr>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.role.permissions.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.role.permissions.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.role.permissions.html
deleted file mode 100644
index 69abcdd..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.role.permissions.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<h4>Inactivity</h4>
-<form id="role-inactivity-form" class="well form-inline" action="" onsubmit="Usergrid.console.editRoleInactivity(); return false;">
-  Seconds: <input type="text" name="role-inactivity" id="role-inactivity-input" /> &nbsp; Integer only. 0 (zero) means no expiration.
-  <button type="submit" id="role-inactivity-submit" class="btn btn-primary">Set</button>
-</form>
-<div class="alert alert-error" id="inactivity-integer-message" style="display: none;">
-  Only integers greater than 0 are accepted.
-</div>
-<br />
-<h4>Add Permission Rule</h4>
-<form id="role-permissions-form" action="" onsubmit="Usergrid.console.addRolePermission('${role}'); return false;" class="well form-inline" autocomplete="off">
-  Path: <input id="role-permission-path-entry-input" type="text" name="path" value="/" />
-  <label class="checkbox">
-    <input id="role-permission-op-get-checkbox" type="checkbox" name="get" value="get"/>
-    get </label>
-  <label class="checkbox">
-    <input id="role-permission-op-post-checkbox" type="checkbox" name="post" value="post"/>
-    post </label>
-  <label class="checkbox">
-    <input id="role-permission-op-put-checkbox" type="checkbox" name="put" value="put"/>
-    put </label>
-  <label class="checkbox">
-    <input id="role-permission-op-delete-checkbox" type="checkbox" name="delete" value="delete"/>
-    delete </label>
-  <button type="submit" class="btn btn-primary"><i class="icon-plus-sign icon-white"></i> Add</button>
-</form>
-<br/>
-<h4>Permission Rules</h4>
-{{if permissions}}
-<table id="role-permissions-table" data-permission="${$index}" class="table table-striped table-bordered table-condensed">
-  <thead>
-    <tr>
-      <th>Path</th>
-      <th class="role-permission-op">Get</th>
-      <th class="role-permission-op">Post</th>
-      <th class="role-permission-op">Put</th>
-      <th class="role-permission-op">Delete</th>
-      <th></th>
-    </tr>
-  </thead>
-  <tbody>
-    {{each permissions}}
-    <tr>
-      <td class="role-permission-path">${$value.path}</td>
-      <td class="role-permission-op">{{if $value.ops.get}}<i class="icon-ok"></i>{{/if}}</td>
-      <td class="role-permission-op">{{if $value.ops.post}}<i class="icon-ok"></i>{{/if}}</td>
-      <td class="role-permission-op">{{if $value.ops.put}}<i class="icon-ok"></i>{{/if}}</td>
-      <td class="role-permission-op">{{if $value.ops.delete}}<i class="icon-ok"></i>{{/if}}</td>
-      <td class="role-permission-delete">
-        <a onclick="Usergrid.console.deleteRolePermission('${role}', '${$value.perm}'); return false;" href="#" class="btn btn-danger"><i class="icon-trash icon-white"></i> Remove</a>
-      </td>
-    </tr>
-    {{/each}}
-  </tbody>
-</table>
-{{else}}
-<div class="alert">No Permissions</div>
-{{/if}}


[44/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/index-stripped2.html
----------------------------------------------------------------------
diff --git a/deleted/archive/index-stripped2.html b/deleted/archive/index-stripped2.html
deleted file mode 100644
index 19e9752..0000000
--- a/deleted/archive/index-stripped2.html
+++ /dev/null
@@ -1,1795 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html"
-      xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html">
-<html>
-  <head>
-  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
-  <title>Apigee App Services Admin Portal </title>
-    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
-    <link rel="stylesheet" type="text/css" href="css/usergrid-stripped.css"/>
-    <script src="config.js" type="text/javascript"></script>
-    <script src="js/app/usergrid.appSDK.js" type="text/javascript"></script>
-    <script src="js/app/session.js" type="text/javascript"></script>
-    <script src="js/app/quickLogin.js" type="text/javascript"></script>
-    <script src="js/app/params.js" type="text/javascript"></script>
-    <script src="js/app/sso.js" type="text/javascript"></script>
-    <script type="text/javascript">
-      /*
-      Quick Login: script loads the minimal amount of resources to be able to detect if the user is logged in
-      and if not, send him directly to the SSO page
-       */
-      Usergrid.Params.parseParams();
-      Usergrid.SSO.setUseSSO(Usergrid.Params.queryParams.use_sso);
-      Usergrid.QuickLogin.init(Usergrid.Params.queryParams,Usergrid.userSession.loggedIn(),
-      Usergrid.SSO.usingSSO());
-
-    </script>
-    <script src="js/lib/jquery-1.7.2.min.js" type="text/javascript"></script>
-    <script src="js/lib/underscore-min.js" type="text/javascript"></script>
-    <script src="js/lib/backbone.js" type="text/javascript"></script>
-    <script src="js/lib/jquery-ui-1.8.18.min.js" type="text/javascript"></script>
-    <script src="js/lib/jquery.jsonp-2.3.1.min.js" type="text/javascript"></script>
-    <script src="js/lib/jquery.dataset.min.js" type="text/javascript"></script>
-    <script src="js/lib/jquery.tmpl.min.js" type="text/javascript"></script>
-    <script src="js/lib/jquery.dform-0.1.3.min.js" type="text/javascript"></script>
-    <script src="js/lib/jquery.ui.timepicker.min.js" type="text/javascript"></script>
-    <script src="js/lib/jquery.ui.statusbar.min.js" type="text/javascript"></script>
-    <script src="js/lib/date.min.js" type="text/javascript"></script>
-    <script src="js/app/helpers.js" type="text/javascript"></script>
-    <script src="js/app/navigation.js" type="text/javascript"></script>
-    <script src="js/app/console.js" type="text/javascript"></script>
-    <script src="js/app/ui/ui.js" type="text/javascript"></script>
-
-<style type="text/css">
-
-
-</style>
-
-</head>
-<body>
-
-<div id="alert-error-message-container" class="alert alert-error" style="width:96.5%; z-index: 99; position: fixed; top: 84px;display: none;">
-  <a href="#" class="close" data-dismiss="alert">&times;</a>
-  <strong id="alert-error-header"></strong>
-  <span id="alert-error-message"></span>
-</div>
-
-<div id="pages">
-
-  <div id="message-page" class="container-fluid">
-    <div id="message-area" class="alert alert-info curl-data" style="padding: 20px;">
-      Whoops! We encounterd an error connecting to the API.  Press refresh to try loading the Admin Portal again.
-      <button id="reload-button" class="btn btn-primary" style="float: right; margin: -4px 30px;" onClick="window.location.reload()">Refresh</button>
-    </div>
-  </div>
-  <div id="login-page" class="container-fluid">
-    <div class="row">
-      <div id="login-area" class="span6 offset1">
-        <div id="login-message" class="alert alert-error">
-          <strong>ERROR</strong>: Your details were incorrect.<br/>
-        </div>
-        <div class="console-section">
-          <div class="well thingy"><span style="margin-left: 30px" class="title">Login</span></div>
-          <form name="login-form" id="login-form" class="form-horizontal">
-            <div class="control-group">
-              <label class="control-label" for="login-email">Email:</label>
-              <div class="controls">
-                <input type="text" name="login-email" id="login-email" class="" value="" size="20"/>
-              </div>
-
-            </div>
-            <div class="control-group">
-              <label class="control-label" for="login-password">Password:</label>
-              <div class="controls">
-                <input type="password" name="login-password" id="login-password" class="" value="" size="20"/>
-
-              </div>
-            </div>
-            <div class="control-group">
-              <div class="controls">
-                <input type="checkbox" value="true" id="remember" name="remember"/>
-                <span>Remember me</span>
-              </div>
-            </div>
-            <div class="form-actions">
-              <div class="submit">
-                <input type="submit" name="button-login" id="button-login" value="Log In" class="btn btn-usergrid"/>
-              </div>
-            </div>
-          </form>
-        </div>
-      </div>
-    </div>
-  </div>
-  <div id="post-signup-page" class="container-fluid">
-    <div class="row">
-      <div id="login-area" class="span6 offset1">
-        <div class="console-section well thingy">
-          <span class="title">We're holding a seat for you!</span>
-          <br /><br />
-          <p>Thanks for signing up for a spot on our private beta. We will send you an email as soon as we're ready for you!</p>
-          <p>In the mean time, you can stay up to date with App Services on our <a href="https://groups.google.com/forum/?fromgroups#!forum/usergrid">Google Group</a>.</p>
-        </div>
-      </div>
-    </div>
-  </div>
-  <div id="signup-page" class="container-fluid">
-    <div class="row">
-      <div id="signup-area" class="span6 offset1">
-        <div id="signup-message" class="alert alert-error"></div>
-        <div class="console-section">
-          <div class="well thingy"><span class="title">Register</span> </div>
-          <form name="signup-form" id="signup-form" onsubmit="return false;" class="form-horizontal">
-            <div class="control-group">
-              <label class="control-label" for="signup-organization-name">Organization Account</label>
-              <div class="controls">
-                <input type="text" name="signup-organization-name" id="signup-organization-name" class="" value="" size="20"/>
-              </div>
-            </div>
-            <div class="control-group">
-              <label class="control-label" for="signup-username">Username</label>
-              <div class="controls">
-                <input type="text" name="signup-username" id="signup-username" class="" value="" size="20"/>
-              </div>
-            </div>
-            <div class="control-group">
-              <label class="control-label" for="signup-name">Name </label>
-              <div class="controls">
-                <input type="text" name="signup-name" id="signup-name" class="" value="" size="20"/>
-              </div>
-            </div>
-            <div class="control-group">
-              <label class="control-label" for="signup-email">Email </label>
-              <div class="controls">
-                <input type="text" name="signup-email" id="signup-email" class="" value="" size="20"/>
-              </div>
-            </div>
-            <div class="control-group">
-              <label class="control-label" for="signup-password">Password </label>
-              <div class="controls">
-                <input type="password" name="signup-password" id="signup-password" class="" value="" size="20"/>
-              </div>
-            </div>
-            <div class="control-group">
-              <label class="control-label" for="signup-password-confirm">Confirm </label>
-              <div class="controls">
-                <input type="password" name="signup-password-confirm" id="signup-password-confirm" class="" value="" size="20"/>
-              </div>
-            </div>
-            <div class="form-actions">
-              <div class="submit">
-                <input type="button" name="button-signup" id="button-signup" value="Sign up" class="btn btn-usergrid"/>
-              </div>
-            </div>
-          </form>
-        </div>
-      </div>
-    </div>
-  </div>
-  <div id="forgot-password-page" class="container">
-    <iframe class="container"></iframe>
-  </div>
-
-  <div id="console-page" class="">
-    <div id="main1">
-      <div id="main2">
-
-        <div id="left2" style="display: none;">
-          <div id="left2-content" class="column-in">
-
-            <div id="sidebar-menu2" style="padding-top: 10px; display: none;">
-              <p class="panel-desc">Data related to your application end-users.</p>
-              <hr style="margin: 0 0 0 10px; width:130px;">
-              <ul id="app-end-users-buttons" class="nav nav-list">
-                <li><a href="#users" id="users-sublink"><span class="nav-menu-text">Users</span></a></li>
-                <li><a href="#groups" id="groups-sublink"><span class="nav-menu-text">Groups</span></a></li>
-                <li><a href="#roles" id="roles-sublink"> <span class="nav-menu-text">Roles</span></a></li>
-              </ul>
-            </div>
-
-            <div id="left-collections-menu" style="display: none;">
-                <p class="panel-desc">Explore your application's data collections.</p>
-                <hr class="col-divider">
-                <div id="collections-menu" style="padding: 10px">
-                 <a class="btn" data-toggle="modal" href="#dialog-form-new-collection">Add Collection</a>
-                </div>
-                <hr class="col-divider">
-                <div id="left-collections-content"></div>
-            </div>
-
-            <div id="left-notifications-menu" style="display: none;">
-              <p class="panel-desc">Configure and send push notifications to your app.</p>
-              <hr class="col-divider">
-
-              <ul id="notification-buttons" class="nav nav-list" style="margin-bottom: 5px;">
-                <li><a href="#sendNotification" id="sendNotification-sublink"><span class="nav-menu-text">Send Notification</span></a></li>
-                <li><a href="#messageHistory" id="messageHistory-sublink"><span class="nav-menu-text">Notification History</span></a></li>
-                <li><a href="#configuration" id="configuration-sublink"> <span class="nav-menu-text">Configuration</span></a></li>
-                <li><a href="#getStarted" id="getStarted-sublink"> <span class="nav-menu-text">Getting Started</span></a></li>
-              </ul>
-            </div>
-
-          </div>
-        </div>
-
-
-
-
-        <div id="middle">
-          <div class="column-in" style="padding-top: 10px;">
-
-
-            <div id="console-panels" class="container-fluid">
-              <div id="organization-panel" style="display: none">
-                <div id="console-panel-nav-bar"></div>
-                <div id="home-messages" class="alert" style="display: none;"></div>
-                <div class="console-section">
-                  <div class="well thingy"><span class="title"> Current Organization </span></div>
-                  <table id="organizations-table" class="hideable table">
-                    <tbody></tbody>
-                  </table>
-                </div>
-                <div class="org-page-sections">
-                  <div class="well thingy"><span class="title" style="float: left;"> Applications </span>
-                    <div class="bar">
-                      <a class="btn button bottom-space" data-toggle="modal" href="#dialog-form-new-application"> New Application</a>
-                    </div>
-                  </div>
-                  <table id="organization-applications-table" class="hideable table">
-                    <tbody></tbody>
-                  </table>
-                </div>
-                <div class="org-page-sections">
-                  <div class="well thingy">
-                    <span class="title"> Activities </span>
-                  </div>
-                  <table id="organization-feed-table" class="hideable table">
-                    <tbody></tbody>
-                  </table>
-                </div>
-                <div class="org-page-sections">
-                  <div class="well thingy"><span class="title" style="float: left;"> Organization's Administrators </span>
-                    <div class="bar">
-                      <a class="btn button bottom-space" data-toggle="modal" href="#dialog-form-new-admin"> New Administrator</a>
-                    </div>
-                  </div>
-                  <table id="organization-admins-table" class="hideable table">
-                    <tbody></tbody>
-                  </table>
-                </div>
-                <div class="org-page-sections">
-                  <div class="well thingy"><span class="title" style="float: left;"> Organization API Credentials </span>
-                    <div class="bar">
-                      <a class="btn button bottom-space" onclick="Usergrid.console.newOrganizationCredentials(); return false;"> Regenerate Credentials</a>
-                    </div>
-                  </div>
-                  <table class="hideable table">
-                    <tbody>
-                      <tr>
-                        <td>
-                          <span class="span2">Client ID</span>
-                        </td>
-                        <td>
-                          <span id="organization-panel-key">...</span>
-                        </td>
-                      </tr>
-                      <tr>
-                        <td>
-                          <span class="span2">Client Secret</span>
-                        </td>
-                        <td>
-                          <span id="organization-panel-secret">...</span>
-                        </td>
-                      </tr>
-                    </tbody>
-                  </table>
-                </div>
-                <form id="dialog-form-force-new-application" class="modal hide fade" action="#">
-                  <div class="modal-header">
-                    <h4>No applications for this organization</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p class="validateTips">All organizations require at least one application. Please create one.</p>
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="new-application-name">Name</label>
-                        <div class="controls">
-                          <input type="text" name="name" id="" value="" class="input-xlarge new-application-name"/>
-                          <p class="help-block">Length of name must be between 4 and 80</p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Create"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-                <form id="dialog-form-new-admin" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Create new administrator</h4>
-                  </div>
-                  <div class="modal-body">
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="new-admin-email">Email</label>
-                        <div class="controls">
-                          <input type="text" name="email" id="new-admin-email" value="" class="input-xlarge"/>
-                          <input type="hidden" name="password" id="new-admin-password" value=""/>
-                          <input type="hidden" name="" id="new-admin-password-confirm" value=""/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Create"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-              </div>
-
-              <div id="dashboard-panel" style="display: none">
-                <div class="console-section">
-                  <div class="well thingy">
-                    <span class="title"> Application Dashboard: <span class="app_title"></span> </span>
-                  </div>
-                  <div class="console-section-contents">
-                    <div id="application-panel-table" style="overflow: hidden;">
-                      <div id="application-panel-entity-graph" class="span graph"></div>
-                      <div id="application-panel-text" class="span">...</div>
-                    </div>
-
-                    <div style="max-width: 680px; overflow: hidden;">
-                    <div>
-                      <div id="application-entities-timeline" class="span graph"></div>
-                      <div id="application-cpu-time" class="span graph"></div>
-                    </div>
-                    <div>
-                      <div id="application-data-uploaded" class="span graph"></div>
-                      <div id="application-data-downloaded" class="span graph"></div>
-                    </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-              <div id="account-panel" class="container-fluid hide">
-                <div id="account-update-modal" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Account Settings</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p>Account settings updated.</p>
-                  </div>
-                  <div class="modal-footer">
-                    <button class="btn btn-usergrid" data-dismiss="modal">OK</button>
-                  </div>
-                </div>
-                <div class="span offset1">
-                  <h2>Account Settings </h2>
-                  <div id="account-panels">
-                    <div class="panel-content">
-                      <div class="console-section">
-                        <div class="well thingy"><span class="title"> Personal Account </span> </div>
-                        <div class="console-section-contents">
-                          <form name="update-account-form" id="update-account-form" class="form-horizontal">
-                            <fieldset>
-                              <div class="control-group">
-                                <label id="update-account-id-label" class="control-label" for="update-account-id">UUID</label>
-                                <div class="controls">
-                                  <span id="update-account-id" class="monospace"></span>
-                                </div>
-                              </div>
-                              <div class="control-group">
-                                <label class="control-label" for="update-account-username">Username </label>
-                                <div class="controls">
-                                  <input type="text" name="update-account-username" id="update-account-username" class="span4" value="" size="20"/>
-                                </div>
-                              </div>
-                              <div class="control-group">
-                                <label class="control-label" for="update-account-name">Name </label>
-                                <div class="controls">
-                                  <input type="text" name="update-account-name" id="update-account-name" class="span4" value="" size="20"/>
-                                </div>
-                              </div>
-                              <div class="control-group">
-                                <label class="control-label" for="update-account-email"> Email</label>
-                                <div class="controls">
-                                  <input type="text" name="update-account-email" id="update-account-email" class="span4" value="" size="20"/>
-                                </div>
-                              </div>
-                              <div class="control-group">
-                                <label class="control-label" for="update-account-picture-img">Picture <br />(from <a href="http://gravatar.com">gravatar.com</a>) </label>
-                                <div class="controls">
-                                  <img id="update-account-picture-img" src="" class="" width="50" />
-                                </div>
-                              </div>
-                              <span class="help-block">Leave blank any of the following to keep the current password unchanged</span>
-                              <br />
-                              <div class="control-group">
-                                <label class="control-label" for="old-account-password">Old Password</label>
-                                <div class="controls">
-                                  <input type="password" name="old-account-password" id="old-account-password" class="span4" value="" size="20"/>
-                                </div>
-                              </div>
-                              <div class="control-group">
-                                <label class="control-label" for="update-account-password">New Password</label>
-                                <div class="controls">
-                                  <input type="password" name="update-account-password" id="update-account-password" class="span4" value="" size="20"/>
-                                </div>
-                              </div>
-                              <div class="control-group">
-                                <label class="control-label" for="update-account-password-repeat">Confirm New Password</label>
-                                <div class="controls">
-                                  <input type="password" name="update-account-password-repeat" id="update-account-password-repeat" class="span4" value="" size="20"/>
-                                </div>
-                              </div>
-                            </fieldset>
-                            <div class="form-actions">
-                              <input type="button" name="button-update-account" id="button-update-account" value="Update" class="btn btn-usergrid span"/>
-                            </div>
-                          </form>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                  <div class="panel-content">
-                    <div class="console-section">
-                      <div class="well thingy"><span class="title"> Organizations </span>
-                        <div class="bar">
-                          <a class="" data-toggle="modal" href="#dialog-form-new-organization"> Add </a>
-                        </div>
-                      </div>
-                      <table class="table" id="organizations">
-                      </table>
-                    </div>
-                  </div>
-                  <form id="dialog-form-new-organization" class="modal hide fade">
-                    <div class="modal-header">
-                      <a class="close" data-dismiss="modal">&times</a>
-                      <h4>Create new organization</h4>
-                    </div>
-                    <div class="modal-body">
-                      <p class="validateTips">All form fields are required.</p>
-                      <fieldset>
-                        <div class="control-group">
-                          <label for="new-organization-name">Name</label>
-                          <div class="controls">
-                            <input type="text" name="organization" id="new-organization-name" class="input-xlarge"/>
-                            <p class="help-block hide"></p>
-                          </div>
-                        </div>
-                      </fieldset>
-                    </div>
-                    <div class="modal-footer">
-                      <input type="submit" class="btn btn-usergrid" value="Create"/>
-                      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                    </div>
-                  </form>
-                </div>
-              </div>
-              <div id="users-panel" class="panel-buffer">
-                 <ul id="users-panel-tab-bar" class="nav nav-tabs">
-                    <li class="active"><a id="button-users-list">List</a></li>
-                  </ul>
-                  <div id="users-panel-list" class="panel-content">
-                    <div id="users-messages" class="alert" style="display: none;"></div>
-
-                    <div class="console-section">
-                       <span class="title"> App Users </span>
-                      <div class="well thingy">
-                        <div class="bar">
-                          <input onkeyup="Usergrid.console.searchUsers();" type="text" name="search-user-username" id="search-user-username" class="input-small search" placeholder="Search"/>
-                          <select id="search-user-type" onChange="Usergrid.console.searchUsers();" class="input-medium search">
-                            <option value="username">Username</option>
-                            <option value="name">Full Name</option>
-                          </select>
-
-                          <a class="btn " data-toggle="modal" id="delete-users-link" > Delete</a>
-                          <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-new-user"> Create new user</a>
-
-
-
-                        </div>
-                      </div>
-                      <table id="users-table" class="table">
-                        <tbody></tbody>
-                      </table>
-                      <ul id="users-pagination" class="pager">
-                        <li id="users-previous" class="previous"><a >&larr; Previous</a></li>
-                        <li id="users-next" class="next"><a >Next &rarr;</a></li>
-                      </ul>
-                    </div>
-                    <div id="users-curl-container" class="row-fluid curl-container ">
-                    </div>
-                  </div>
-                  <form id="dialog-form-new-user" class="modal hide fade">
-                    <div class="modal-header">
-                      <a class="close" data-dismiss="modal">&times</a>
-                      <h4>Create new user</h4>
-                    </div>
-                    <div class="modal-body">
-                      <p class="validateTips">Username is required.</p>
-                      <fieldset>
-                        <div class="control-group">
-                          <label for="new-user-username">Username</label>
-                          <div class="controls">
-                            <input type="text" name="username" id="new-user-username" class="input-xlarge"/>
-                            <p class="help-block hide"></p>
-                          </div>
-                        </div>
-                        <div class="control-group">
-                          <label for="new-user-fullname">Full name</label>
-                          <div class="controls">
-                            <input type="text" name="name" id="new-user-fullname" class="input-xlarge"/>
-                            <p class="help-block hide"></p>
-                          </div>
-                        </div>
-                        <div class="control-group">
-                          <label for="new-user-email">Email</label>
-                          <div class="controls">
-                            <input type="text" name="email" id="new-user-email" class="input-xlarge"/>
-                            <p class="help-block hide"></p>
-                          </div>
-                        </div>
-                        <div class="control-group">
-                          <label for="new-user-password">Password</label>
-                          <div class="controls">
-                            <input type="password" name="password" id="new-user-password" class="input-xlarge"/>
-                            <p class="help-block hide"></p>
-                          </div>
-                        </div>
-                        <div class="control-group">
-                          <label for="new-user-validate-password">Confirm password</label>
-                          <div class="controls">
-                            <input type="password" name="validate-password" id="new-user-validate-password" class="input-xlarge"/>
-                            <p class="help-block hide"></p>
-                          </div>
-                        </div>
-                      </fieldset>
-                    </div>
-                    <div class="modal-footer">
-                      <input type="submit" class="btn btn-usergrid" value="Create"/>
-                      <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                    </div>
-                  </form>
-                </div>
-
-              <form id="confirmAction" class="modal hide fade">
-                <div class="modal-header">
-                  <a class="close" data-dismiss="modal">&times</a>
-                  <h4></h4>
-                </div>
-                <div class="modal-body">
-                  <p></p>
-                </div>
-                <div class="modal-footer">
-                  <input type="submit" class="btn btn-danger" value="Yes, continue"/>
-                  <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                </div>
-              </form>
-              <form id="confirmDialog" class="modal hide fade">
-                <div class="modal-header">
-                  <a class="close" data-dismiss="modal">&times</a>
-                  <h4>Are you sure?</h4>
-                </div>
-                <div class="modal-body">
-                  <p></p>
-                </div>
-                <div class="modal-footer">
-                  <input type="submit" class="btn btn-danger" value="Yes, delete"/>
-                  <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                </div>
-              </form>
-              <form id="alertModal" class="modal hide fade">
-                <div class="modal-header">
-                  <a class="close" data-dismiss="modal">&times</a>
-                  <h4></h4>
-                </div>
-                <div class="modal-body">
-                  <p></p>
-                </div>
-                <div class="modal-footer">
-                  <input type="reset" class="btn btn-usergrid" value="OK" data-dismiss="modal"/>
-                </div>
-              </form>
-
-              <form id="queryHelpModal" class="modal hide fade">
-                <div class="modal-header">
-                  <a class="close" data-dismiss="modal">&times</a>
-                  <h4>Making Queries</h4>
-                </div>
-                <div class="modal-body">
-                  <p><strong>Making Queries</strong></p>
-                  <p>Use the Query String field to enter SQL-style queries against your collections.  For example, to select
-                    all users whose name starts with <strong>fred</strong>:</p>
-                  <pre>select * where name = 'fred*'</pre>
-                  <p>To select all activities where a category is <strong>usermessage</strong> and content contains the word
-                    <strong>hello</strong> in a string:</p>
-                  <pre class="code-para">select * where category = 'usermessage' and content contains 'hello'</pre>
-                  <a class="outside-link" target="_blank" href="http://apigee.com/docs/usergrid/content/queries-and-parameters"><strong>Learn more about Queries and Parameters.</strong></a>
-                </div>
-                <div class="modal-footer">
-                  <input type="reset" class="btn btn-usergrid" value="close" data-dismiss="modal"/>
-                </div>
-              </form>
-
-              <form id="queryPathHelpModal" class="modal hide fade">
-                <div class="modal-header">
-                  <a class="close" data-dismiss="modal">&times</a>
-                  <h4>Query Path</h4>
-                </div>
-                <div class="modal-body">
-                  <p><strong>Query Path</strong></p>
-                  <p>The query path is typically just the name of the collection you want to access.  For example, if you want to work with a <strong>dogs</strong> collection,
-                    then your path will be:
-                  </p>
-                  <pre>/dogs</pre>
-                  <p>You may also have a more complex path, such as the case when you want to make a connection between two entities.
-                    To create a <strong>likes</strong> connection between a user named <strong>Fred</strong> and a dog named <strong>Dino</strong>,
-                    do a <strong>POST</strong> operation to:
-                   </p>
-                  <pre class="code-para">/users/fred/likes/dogs/dino</pre>
-                  <a class="outside-link" target="_blank" href="http://apigee.com/docs/usergrid/content/entity-relationships"><strong>Learn more about Entity Relationships.</strong></a>
-                </div>
-                <div class="modal-footer">
-                  <input type="reset" class="btn btn-usergrid" value="close" data-dismiss="modal"/>
-                </div>
-              </form>
-
-              <form id="queryLimitHelpModal" class="modal hide fade">
-                <div class="modal-header">
-                  <a class="close" data-dismiss="modal">&times</a>
-                  <h4>Limit</h4>
-                </div>
-                <div class="modal-body">
-                  <p><strong>Limit</strong></p>
-                  <p>The <strong>limit parameter</strong> is used to tell the API how many results you want to have returned from the API call.</p>
-                  <p>The <strong>default</strong> setting is <strong>10</strong>.</p>
-                  <p>The <strong>max</strong> setting is <strong>999</strong>.</p>
-                  <p>This parameter is appended to the end of the query string to be sent to the API.  For example, a limit of 100:</p>
-                  <pre>GET /dogs?limit=100</pre>
-                  <a class="outside-link" target="_blank" href="http://apigee.com/docs/usergrid/content/queries-and-parameters"><strong>Learn more about Queries and Parameters.</strong></a>
-                </div>
-                <div class="modal-footer">
-                  <input type="reset" class="btn btn-usergrid" value="close" data-dismiss="modal"/>
-                </div>
-              </form>
-
-              <form id="queryMethodHelpModal" class="modal hide fade">
-                <div class="modal-header">
-                  <a class="close" data-dismiss="modal">&times</a>
-                  <h4>Method</h4>
-                </div>
-                <div class="modal-body">
-                  <p><strong>Method</strong></p>
-                  <p>The <strong>Method</strong> is used to tell the API what type of operation you want to perform.
-                    These <strong>http methods</strong> map to the standard <strong>CRUD</strong> methods:</p>
-                  <p><strong>POST</strong> is used for <strong>CREATE</strong></p>
-                  <p><strong>GET</strong> is used for <strong>READ</strong></p>
-                  <p><strong>PUT</strong> is used for <strong>UPDATE</strong></p>
-                  <p><strong>DELETE</strong> is used for <strong>DELETE</strong></p>
-                  <p>Using these four methods, you can perform any type of operation against the API.  For example, to READ
-                    from a collection called <strong>/dogs</strong>:</p>
-                  <pre>GET /dogs</pre>
-                  <a class="outside-link" target="_blank" href="http://apigee.com/docs/usergrid/content/using-api"><strong>Learn more about using the API.</strong></a>
-                </div>
-                <div class="modal-footer">
-                  <input type="reset" class="btn btn-usergrid" value="close" data-dismiss="modal"/>
-                </div>
-              </form>
-
-
-               <form id="dialog-form-new-application" class="modal hide fade" action="#">
-                <div class="modal-header">
-                  <a class="close" data-dismiss="modal">&times</a>
-                  <h4>Create new application</h4>
-                </div>
-                <div class="modal-body">
-                  <p class="validateTips">All form fields are required.</p>
-                  <fieldset>
-                    <div class="control-group">
-                      <label for="new-application-name">Name</label>
-                      <div class="controls">
-                        <input type="text" name="name" id="" value="" class="input-xlarge new-application-name"/>
-                        <p class="help-block">Length of name must be between 4 and 80</p>
-                      </div>
-                    </div>
-                  </fieldset>
-                </div>
-                <div class="modal-footer">
-                  <input type="submit" class="btn btn-usergrid" value="Create"/>
-                  <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                </div>
-              </form>
-
-              <div id="user-panel" class="panel-buffer">
-                <ul id="user-panel-tab-bar" class="nav nav-tabs">
-                  <li><a id="button-user-list">List</a></li>
-                  <li class="active"><a id="button-user-profile">Profile</a></li>
-                  <li><a id="button-user-memberships">Groups</a></li>
-                  <li><a id="button-user-activities">Activities</a></li>
-                  <li><a id="button-user-graph">Graph</a></li>
-                  <li><a id="button-user-permissions">Roles &amp; Permissions</a></li>
-                </ul>
-                <!--
-                <div id="user-panel-tab-bar">
-                  <a class="tab-button btn" id="button-user-list" >List</a>
-                  <a class="tab-button btn active" id="button-user-profile" >Profile</a>
-                  <a class="tab-button btn" id="button-user-memberships" >Groups</a>
-                  <a class="tab-button btn" id="button-user-activities" >Activities</a>
-                  <a class="tab-button btn" id="button-user-graph" >Graph</a>
-                  <a class="tab-button btn" id="button-user-permissions" >Roles & Permissions</a>
-                </div>
-                -->
-                <div id="user-panel-profile" class="panel-content"></div>
-                <div id="user-panel-memberships" class="panel-content" style="display: none;"></div>
-                <div id="user-panel-activities" class="panel-content" style="display: none;"></div>
-                <div id="user-panel-graph" class="panel-content" style="display: none;"></div>
-                <div id="user-panel-permissions" class="panel-content" style="display: none;"></div>
-                <form id="dialog-form-add-user-to-role" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Add this user to a Role</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p class="validateTips">Search for the role you want to add to this user.</p>
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="search-role-name-input">Role</label>
-                        <div class="controls">
-                          <input type="text" name="search-role-name-input" id="search-role-name-input" class="input-xlarge"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Add"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-                <form id="dialog-form-add-group-to-user" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Add this user to a Group</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p class="validateTips">Search for the group you want to add this user to.</p>
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="search-group-name-input">Group</label>
-                        <div class="controls">
-                          <input type="text" name="search-group-name-input" id="search-group-name-input" class="input-xlarge"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Add"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-                <form id="dialog-form-follow-user" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Follow this User</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p class="validateTips">Search for the user you want to Follow.</p>
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="search-follow-username-input">User</label>
-                        <div class="controls">
-                          <input type="text" name="search-follow-username-input" id="search-follow-username-input"
-                                 class="input-xlarge"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Follow"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-              </div>
-
-
-
-              <div id="groups-panel" class="panel-buffer">
-                <ul class="nav nav-tabs">
-                    <li class="active"><a id="button-groups-list">List</a></li>
-                  </ul>
-                <div id="groups-panel-list" class="panel-content">
-                  <div id="groups-messages" class="alert" style="display: none;"></div>
-                  <div class="console-section">
-                      <span class="title"> App Groups </span>
-                      <div class="well thingy">
-                        <div class="bar">
-                        <input onkeyup="Usergrid.console.searchGroups();" type="text" name="search-user-groupname" id="search-user-groupname" class="input-small search" placeholder="Search"/>
-                        <select id="search-group-type" onChange="Usergrid.console.searchGroups();" class="input-medium search">
-                          <option value="path">Path</option>
-                          <option value="title">Group Name</option>
-                        </select>
-
-                        <a class="btn" id="delete-groups-link" > Delete</a>
-                        <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-new-group"> Create new group</a>
-
-                      </div>
-                    </div>
-                    <table id="groups-table" class="table">
-                      <tbody></tbody>
-                    </table>
-                    <ul id="groups-pagination" class="pager">
-                      <li id="groups-previous" class="previous"><a >&larr; Previous</a></li>
-                      <li id="groups-next" class="next"><a >Next &rarr;</a></li>
-                    </ul>
-                  </div>
-                  <div id="groups-curl-container" class="row-fluid curl-container ">
-                  </div>
-                </div>
-                <form id="dialog-form-new-group" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Create new group</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p class="validateTips">All form fields are required.</p>
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="new-group-title">Display Name</label>
-                        <div class="controls">
-                          <input type="text" name="title" id="new-group-title" value="" class="input-xlarge"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                      <div class="control-group">
-                        <label for="new-group-path">Group Path</label>
-                        <div class="controls">
-                          <input type="text" name="path" id="new-group-path" value="" class="input-xlarge"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Create"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-              </div>
-              <div id="group-panel" class="panel-buffer">
-                <ul id="group-panel-tab-bar" class="nav nav-tabs">
-                  <li><a id="button-group-list">List</a></li>
-                  <li class="active"><a id="button-group-details">Details</a></li>
-                  <li><a id="button-group-memberships">Members</a></li>
-                  <li><a id="button-group-activities">Activities</a></li>
-                  <li><a id="button-group-permissions">Roles &amp; Permissions</a></li>
-                </ul>
-                <!--
-                <div id="group-panel-tab-bar">
-                  <a class="tab-button btn" id="button-group-list" >List</a>
-                  <a class="tab-button btn active" id="button-group-details" >Details</a>
-                  <a class="tab-button btn" id="button-group-memberships" >Members</a>
-                  <a class="tab-button btn" id="button-group-activities" >Activities</a>
-                  <a class="tab-button btn" id="button-group-permissions" >Roles & Permissions</a>
-                </div-->
-                <div id="group-panel-details" class="panel-content"></div>
-                <div id="group-panel-memberships" class="panel-content" style="display: none;"></div>
-                <div id="group-panel-activities" class="panel-content" style="display: none;"></div>
-                <div id="group-panel-permissions" class="panel-content" style="display: none;"></div>
-                <form id="dialog-form-add-user-to-group" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Add a User to this Group</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p class="validateTips">Search for the user you want to add to this group.</p>
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="search-user-name-input">User</label>
-                        <div class="controls">
-                          <input type="text" name="search-user-name-input" id="search-user-name-input" class="input-xlarge" autocomplete="off"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Add"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-                <form id="dialog-form-add-role-to-group" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Add a Role to this Group</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p class="validateTips">Search for the role you want to add to this group.</p>
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="search-groups-role-name-input">Role</label>
-                        <div class="controls">
-                          <input type="text" name="search-groups-role-name-input" id="search-groups-role-name-input" class="input-xlarge" autocomplete="off"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Add"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-              </div>
-              <div id="roles-panel" class="panel-buffer">
-                <ul id="roles-panel-tab-bar" class="nav nav-tabs">
-                  <li class="active"><a id="button-roles-list">List</a></li>
-                </ul>
-                <div id="roles-panel-list" class="panel-content">
-                  <div id="roles-messages" class="alert" style="display: none;"></div>
-                  <div class="console-section">
-                    <span class="title"> App Roles </span>
-                    <div class="well thingy">
-                      <div class="bar">
-
-                        <a class="btn" id="delete-roles-link" > Delete</a>
-                        <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-new-role"> Add Role</a>
-
-
-                      </div>
-                    </div>
-                    <table id="roles-table" class="table">
-                      <tbody></tbody>
-                    </table>
-                    <ul id="roles-pagination" class="pager">
-                      <li id="roles-previous" class="previous"><a >&larr; Previous</a></li>
-                      <li id="roles-next" class="next"><a >Next &rarr;</a></li>
-                    </ul>
-                  </div>
-                  <div id="roles-curl-container" class="row-fluid curl-container ">
-                  </div>
-                </div>
-                <div id="roles-panel-search" class="panel-content" style="display: none;">
-                  <div class="console-section">
-                    <div class="well thingy"><span class="title"> Role Settings: <span class="app_title"></span></span></div>
-                    <div class="console-section-contents">
-                      <div id="roles-settings">
-                        <h2>No Permissions.</h2>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-                <form id="dialog-form-new-role" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Create new Role</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p class="validateTips">All form fields are required.</p>
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="new-role-title">Display Name</label>
-                        <div class="controls">
-                          <input type="text" name="title" id="new-role-title" class="input-xlarge"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                      <div class="control-group">
-                        <label for="new-role-name">Name</label>
-                        <div class="controls">
-                          <input type="text" name="name" id="new-role-name" class="input-xlarge"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Create"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-              </div>
-              <div id="role-panel" class="panel-buffer">
-                <ul id="role-panel-tab-bar" class="nav nav-tabs">
-                  <li><a id="button-role-list">List</a></li>
-                  <li class="active"><a id="button-role-settings">Settings</a></li>
-                  <li><a id="button-role-users">Users</a></li>
-                  <li><a id="button-role-groups">Groups</a></li>
-                </ul>
-
-                <!--div id="role-panel-tab-bar">
-                  <a class="tab-button btn" id="button-role-list" >List</a>
-                  <a class="tab-button btn active" id="button-role-settings" >Settings</a>
-                  <a class="tab-button btn" id="button-role-users" >Users</a>
-                  <a class="tab-button btn" id="button-role-groups" >Groups</a>
-                </div-->
-
-                <div id="role-panel-settings" class="panel-content">
-                  <div class="console-section">
-                    <div class="well thingy"> <span id="role-section-title" class="title">Role</span> </div>
-                    <div class="console-section-contents">
-                      <div id="role-permissions-messages" class="alert" style="display: none"></div>
-                      <div id="role-permissions">
-                        <h2>...</h2>
-                      </div>
-                    </div>
-                  </div>
-                  <div id="role-permissions-curl-container" class="curl-container">
-                  </div>
-                </div>
-                <div id="role-panel-users" class="panel-content">
-                  <div class="console-section" id="role-users"></div>
-                  <div id="role-users-curl-container" class="curl-container">
-                  </div>
-                </div>
-                <div id="role-panel-groups" class="panel-content"></div>
-                <form id="dialog-form-add-group-to-role" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Add a Group to this Role</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p class="validateTips">Search for the group you want to add to this role.</p>
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="search-roles-group-name-input">Group</label>
-                        <div class="controls">
-                          <input type="text" name="search-roles-group-name-input" id="search-roles-group-name-input" class="input-xlarge" autocomplete="off"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Add"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-                <form id="dialog-form-add-role-to-user" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Add a user to this Role</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p class="validateTips">Search for the user you want to add to this role.</p>
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="search-roles-user-name-input">User</label>
-                        <div class="controls">
-                          <input type="text" name="search-roles-user-name-input" id="search-roles-user-name-input" class="input-xlarge"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Add"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-              </div>
-              <div id="activities-panel" style="margin-top: 10px; display: none;">
-                <div id="activities-panel-list" class="panel-content">
-                  <div class="console-section">
-                    <span class="title"> Activities </span>
-                    <div class="well thingy">
-                      <div class="bar" style="margin-bottom: 25px;">
-                        <input onkeyup="Usergrid.console.searchActivities();" type="text" name="search-activities" id="search-activities" class="input-small search" placeholder="Search"/>
-                        <select id="search-activities-type" onChange="Usergrid.console.searchActivities();" class="input-medium search">
-                          <option value="content">Content</option>
-                          <option value="actor">Actor</option>
-                        </select>
-                        <a class="btn" onclick="Usergrid.console.requestActivities(); return false;">Update Activities</a>
-                      </div>
-                    </div>
-                    <table id="activities-table" class="table">
-                      <tbody></tbody>
-                    </table>
-                    <ul id="activities-pagination" class="pager">
-                      <li id="activities-previous" class="previous"><a >&larr; Previous</a></li>
-                      <li id="activities-next" class="next"><a >Next &rarr;</a></li>
-                    </ul>
-                  </div>
-                </div>
-              </div>
-              <div id="analytics-panel" style="display: none">
-                <div class="panel-content">
-                  <div class="console-section">
-                    <div class="well thingy"><span class="title"> Analytics </span></div>
-                    <div class="console-section-contents">
-                      <div id="analytics-time">
-                        <form id="resolutionSelectForm" action="" class="form-horizontal">
-                          <div class="row">
-                            <fieldset class="span">
-                              <div id="analytics-start-time-span" class="control-group">
-                                <label class="control-label" for="start-date">Start:</label>
-                                <div class="controls">
-                                  <input type="text" id="start-date" class="fixSpan2"/>
-                                  <input type="text" id="start-time" value="12:00 AM" class="fixSpan2"/>
-                                </div>
-                              </div>
-                              <div id="analytics-end-time-span" class="control-group" style="float: left">
-                                <label class="control-label" for="end-date">End:</label>
-                                <div class="controls">
-                                  <input type="text" id="end-date" class="fixSpan2"/>
-                                  <input type="text" id="end-time" value="12:00 AM" class="fixSpan2"/>
-                                </div>
-                              </div>
-                              <div class="control-group">
-                                <label class="control-label" for="resolutionSelect">Resolution</label>
-                                <div class="controls">
-                                  <select name="resolutionSelect" id="resolutionSelect">
-                                    <option value="all">All</option>
-                                    <option value="minute">Minute</option>
-                                    <option value="five_minutes">5 Minutes</option>
-                                    <option value="half_hour">30 Minutes</option>
-                                    <option value="hour">Hour</option>
-                                    <option value="six_hour">6 Hours</option>
-                                    <option value="half_day">Half Day</option>
-                                    <option value="day" selected="selected">Day</option>
-                                    <option value="week">Week</option>
-                                    <option value="month">Month</option>
-                                  </select>
-                                </div>
-                              </div>
-                            </fieldset>
-                            <fieldset class="span offset1">
-                              <div id="analytics-counter-names"></div>
-                            </fieldset>
-                          </div>
-                          <div class="form-actions">
-                            <button class="btn btn-primary" id="button-analytics-generate" style="margin-left: -80px">Generate</button>
-                          </div>
-                        </form>
-                      </div>
-                    </div>
-                  </div>
-                  <div class="console-section">
-                    <div class="well thingy"><span class="title"> Result Analytics <span class="app_title"></span></span></div>
-                    <div class="console-section-contents">
-                      <div id="analytics-graph"></div>
-                      <div id="analytics-graph-area" style="overflow-x: auto;"></div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-              <div id="properties-panel" style="display: none">
-                <div class="console-section">
-                  <div class="well thingy"><span class="title"> Application Properties: <span class="app_title"></span></span>
-                    <div class="bar" style="margin-bottom: 25px;">
-                      <a class="btn"  onclick="Usergrid.console.newApplicationCredentials(); return false;">Regenerate Credentials</a>
-                    </div>
-                  </div>
-                  <div class="console-section-contents">
-                    <table id="application-panel-key-table" class="table">
-                      <tr>
-                        <td>
-                          <span class="span3">Client ID</span>
-                        </td>
-                        <td>
-                          <span id="application-panel-key">...</span>
-                        </td>
-                      </tr>
-                      <tr>
-                        <td>
-                          <span class="span3">Client Secret</span>
-                        </td>
-                        <td>
-                          <span id="application-panel-secret">...</span>
-                        </td>
-                      </tr>
-                    </table>
-                  </div>
-                </div>
-              </div>
-              <div id="shell-panel" style="display: none">
-                <div id="shell-content" class="console-section">
-                  <div class="well thingy"> <span class="title"> Interactive Shell </span></div>
-                  <div class="console-section-contents">
-                    <div id="shell-input-div">
-                      <p>   Type "help" to view a list of the available commands.</p><hr />
-                      <span>&nbsp;&gt&gt; </span>
-                      <textarea id="shell-input" rows="2" autofocus="autofocus"></textarea>
-                    </div>
-                    <pre id="shell-output" class="prettyprint lang-js" style="overflow-x: auto; height: 400px;">
-                      <p>  Response:</p><hr />
-                    </pre>
-                  </div>
-                </div>
-                <a href="#" id="fixme">-</a>
-              </div>
-
-
-
-
-              <div id="notifications-panel" class="panel-buffer">
-                <div id="notifications-content" class="console-section"></div>
-              </div>
-
-              <div id="sendNotification-panel" class="panel-buffer" style="margin-top: 10px;">
-                <div class="alert" id="notification-scheduled-status" style="display:none;"></div>
-                <span class="title"> Compose Push Notification </span>
-                <div style="padding-top: 10px;">
-                  <form id="query-inputs" class="notifcations-form">
-                    <div class="well" style="padding: 0px; margin-bottom: 0px;">
-                      <span class="title">Notifier and Recipients</span>
-                    </div>
-                    Choose the Notifier (a configured notification service) to connect with for this push notification. Only users
-                    with devices registered with this notifier will receive the push notification. If a group is selected, only the users
-                    in the selected goup, with devices registered with this notifier, will receive the push notification.
-
-                    <label for="send-notification-notifier">Notifier:</label>
-                    <select id="send-notification-notifier">
-                       <option value="">Choose Notifier</option>
-                    </select>
-
-                    <div class="control-group">
-                      <input type="radio" name="notification-user-group" id="notification-user-group-all" value="all" checked> All Users
-                      <input type="radio" name="notification-user-group" id="notification-user-group-users" value="users"> User(s)
-                      <input type="radio" name="notification-user-group" id="notification-user-group-group" value="groups"> Groups
-                    </div>
-
-                    <div class="control-group">
-                      <div id="notificaitons-users-select-container" style="display: none">
-                        Enter the users manually:<br>
-                        <textarea id="user-list" placeholder="user1,user2,user3,etc..."  class="span6 pull-left" rows="5"></textarea>
-                        <br>
-                        <div class="thingy">
-                        Or, use a form to look them up:<br>
-                        <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-add-user-to-notification"> Add User</a>
-                        </div>
-                      </div>
-                      <div id="notificaitons-group-select-container" style="display: none">
-                        <textarea id="group-list" placeholder="group1,group2,group3,etc..."  class="span6 pull-left" rows="5"></textarea>
-                        <br>
-                        <div class="thingy">
-                        <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-add-group-to-notification"> Add Group</a>
-                        </div>
-                      </div>
-                    </div>
-
-                    <hr>
-                    <div class="well thingy">
-                      <span class="title">Notifier Message</span>
-                    </div>
-                    Edit the "alert" message in the JSON payload.
-                    <div class="controls">
-                      <div>
-                        <textarea id="notification-json" class="span6 pull-left" rows="3">Your text here</textarea>
-                        <br>
-                        <a href="" class="notifications-links">ADD LINK!!!! learn more about messages in our docs</a>
-                      </div>
-                    </div>
-                    <div style="display: none;">
-                      <a class="btn" id="reset-notifications-payload" >Reset Payload</a>
-                      <a class="btn" id="validate-notifications-json" >Validate JSON</a>
-                      <span id="notifications-json-status" class="alert" style="width: 400px;">Validate your JSON!</span>
-                    </div>
-                    <hr>
-                    <div class="well thingy">
-                      <span class="title">Delivery</span>
-                    </div>
-                    Select whether to schedule this push notification for immediate delivery or at a future date and time.
-
-                    <div class="control-group">
-                      <input type="radio" name="notification-schedule-time" id="notification-schedule-time-now"  value="now" checked> Now
-                      <input type="radio" name="notification-schedule-time" id="notification-schedule-time-later"  value="later"> Schedule for later
-                    </div>
-                    <div id="notification-schedule-time-controls" style="display: none;">
-                      <div id="notifications-start-time-span" class="control-group">
-                        <label class="control-label" for="notification-schedule-time-date">Start Date/Time:</label>
-                        <div class="controls">
-                          <input type="text" id="notification-schedule-time-date" class="fixSpan2"/>
-                          <input type="text" id="notification-schedule-time-time" value="12:00 AM" class="fixSpan2"/>
-                        </div>
-                      </div>
-                    </div>
-                    <div style="display:none;">
-                        <hr>
-                        <div class="well thingy">
-                          <span class="title">Push Notification API Preview</span>
-                        </div>
-                        Review the API call and payload that will be sent to the App Services Push Notification Scheduler.
-                        Advanced users can also send this command via <a href="">UGC (Usergrid Command Line)</a>.
-
-                        <div id="notifications-command" class="well">
-                          POST users/
-                        </div>
-                    </div>
-                    <a class="btn btn-primary" id="schedule-notification">Schedule Notification</a>
-                  </form>
-                </div>
-              </div>
-
-                <form id="dialog-form-add-user-to-notification" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Add a user to this Notification</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p class="validateTips">Search for the user you want to add to this notification.</p>
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="search-notification-user-name-input">User</label>
-                        <div class="controls">
-                          <input type="text" name="search-notification-user-name-input" id="search-notification-user-name-input" class="input-xlarge"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Add"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-
-                <form id="dialog-form-add-group-to-notification" class="modal hide fade">
-                  <div class="modal-header">
-                    <a class="close" data-dismiss="modal">&times</a>
-                    <h4>Add a group to this Notification</h4>
-                  </div>
-                  <div class="modal-body">
-                    <p class="validateTips">Search for the group you want to add to this notification.</p>
-                    <fieldset>
-                      <div class="control-group">
-                        <label for="search-notification-group-name-input">Group</label>
-                        <div class="controls">
-                          <input type="text" name="search-notification-group-name-input" id="search-notification-group-name-input" class="input-xlarge"/>
-                          <p class="help-block hide"></p>
-                        </div>
-                      </div>
-                    </fieldset>
-                  </div>
-                  <div class="modal-footer">
-                    <input type="submit" class="btn btn-usergrid" value="Add"/>
-                    <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-                  </div>
-                </form>
-
-              <div id="messageHistory-panel" class="panel-buffer">
-                <div class="well thingy">
-                  <span class="title">Notification History</span>
-                </div>
-                <div style="float: left">
-                  <ul class="nav nav-pills">
-                    <li class="active"><a href="#" id="view-notifications-all">All</a></li>
-                    <li><a href="#" id="view-notifications-scheduled">Scheduled</a></li>
-                    <li><a href="#" id="view-notifications-started">Started</a></li>
-                    <li><a href="#" id="view-notifications-sent">Sent</a></li>
-                    <li><a href="#" id="view-notifications-failed">Failed</a></li>
-                  </ul>
-                </div>
-                <!--
-                <input id="notifications-history-search" type="text" name="path" class="span6" autocomplete="off" placeholder="search"/>
-                <a class="btn" id="view-notifications-search">Search</a>
-                -->
-                <div style="margin-top:35px;">&nbsp;</div>
-                <div id="notifications-history-display">
-                  No Notifications found.
-                </div>
-
-                <ul id="notifications-history-pagination" class="pager">
-                  <li style="display: none" id="notifications-history-previous" class="previous"><a >&larr; Previous</a></li>
-                  <li style="display: none" id="notifications-history-next" class="next"><a >Next &rarr;</a></li>
-                </ul>
-              </div>
-
-              <div id="notificationsReceipt-panel" class="panel-buffer">
-                <div class="well thingy">
-                  <span class="title">Notification Receipts</span>
-                  <span style="float: right"><a href="#" class="notifications-links" id="return-to-notifications"><- Return to All Notifications</a></span>
-                </div>
-                <div style="float: left">
-                  <ul class="nav nav-pills">
-                    <li class="active"><a href="#" id="view-notification-receipt-all">All</a></li>
-                    <li><a href="#" id="view-notification-receipt-received">Received</a></li>
-                    <li><a href="#" id="view-notification-receipt-failed">Failed</a></li>
-                  </ul>
-                </div>
-                <!--
-                <input id="notifications-history-search" type="text" name="path" class="span6" autocomplete="off" placeholder="search"/>
-                <a class="btn" id="view-notifications-search">Search</a>
-                -->
-                <div style="margin-top:35px;">&nbsp;</div>
-                <div id="notification-receipts-display">
-                  No Notifications found.
-                </div>
-
-                <ul id="notification-receipt-pagination" class="pager">
-                  <li style="display: none" id="notification-receipt-previous" class="previous"><a >&larr; Previous</a></li>
-                  <li style="display: none" id="notification-receipt-next" class="next"><a >Next &rarr;</a></li>
-                </ul>
-
-              </div>
-
-
-
-              <div id="configuration-panel" class="panel-buffer" style="padding-top: 10px;">
-                <div id="cert-upload-message" class="alert alert-info" style="display:none"></div>
-                <span class="title">Configuration</span>
-                <div class="well thingy" id="cert-list-buttons" style="display: none;">
-                  <div style="float: left;margin-top:10px;">
-                    <span class="title" style="float: left">Notifiers</span>
-                  </div>
-                  <div style="float: right;">
-                    <a class="btn" style="float: right" id="delete-certs-link">Delete Notifier</a>
-                  </div>
-                </div>
-                <div id="notification-cert-list" style="padding-bottom: 10px"></div>
-
-                <ul id="user-panel-tab-bar" class="nav nav-tabs">
-                  <li class="active"><a id="button-notifications-apple-create-notifier">Apple</a></li>
-                  <li><a id="button-notifications-android-create-notifier">Android</a></li>
-                </ul>
-
-                <div id="notifications-apple-create-notifier">
-                  <div style="margin-top: 10px;">
-                    <span class="title">Apple Push Notification Service</span>
-                    <br>
-                    A Notifier allows App Services to connect to and deliver a message to a communication provider such as
-                    Apple's APNs. Upload Development and Production Certificates (.p12) to set up a bridge between your app
-                    and APNs for push notifications on iOS devices.
-
-
-                    <form id="query-inputs" class="notifcations-form">
-                      Before you get started: view our
-                      <a href="#" class="notifications-links" onclick="Usergrid.Navigation.router.navigateTo('getStarted'); return false;">getting started page</a>
-                      for more info on how to retrieve .p12 certificates from the Apple Developer Connection website.
-
-                      <fieldset>
-                      <div class="control-group">
-                        <label class="control-label" for="new-notifier-name"><strong>Name this notifier </strong></label>
-                        <div class="controls">
-                          <div class="input-append">
-                            <input id="new-notifier-name" type="text" name="path" class="span6" autocomplete="off" placeholder="ex: appledev"/>
-                          </div>
-                          The notifier name is used as the key for push data.  Give this a name that describes the certificate being uploaded.
-                        </div>
-                      </div>
-
-                      <div class="control-group">
-                        <label class="control-label" for="new-notifier-certificate"><strong>Certificate </strong></label>
-                        <div class="controls">
-                          <div class="input-append">
-                           <input id="new-notifier-certificate" name="new-notifier-certificate" type="file" multiple>
-                          </div>
-                        </div>
-                      </div>
-
-                      <div class="control-group">
-                        <label class="control-label" for="new-notification-environment"><strong>Environment </strong></label>
-                        <div class="controls">
-                          <div class="input-append">
-                            <select id="new-notification-environment">
-                              <option value="development">development</option>
-                              <option value="production">production</option>
-                            </select>
-                          </div>
-                        </div>
-                      </div>
-
-                      <div class="control-group">
-                        <label class="control-label" for="new-notifier-cert-password"><strong>Certificate Password</strong></label>
-                        <div class="controls">
-                          <div class="input-append">
-                            <input id="new-notifier-cert-password" type="text" name="path" class="span6" autocomplete="off" placeholder="ex: appledev"/>
-                          </div>
-                          Only applicable if your certificate is password protected
-                        </div>
-                      </div>
-
-
-                      <a class="btn btn-primary" id="save-certificate-btn">Create Notifier</a>
-                      </fieldset>
-
-                    </form>
-                  </div>
-                </div>
-
-                <div id="notifications-android-create-notifier" style="display:none;">
-                  <div style="margin-top: 10px;">
-                    <span class="title">Google Cloud Messaging</span>
-                    <br>
-                    A Notifier allows App Services to connect to and deliver a message to a communication provider such as
-                    Google Cloud Messaging (GCM). Copy and paste your API key to create a bridge between your app
-                    and GCM for push notifications on Android devices..
-
-
-                    <form id="android-create-notifier-form" class="notifcations-form">
-                      Before you get started: <a href="">see our getting started page</a>.
-
-                      <fieldset>
-                      <div class="control-group">
-                        <label class="control-label" for="android-new-notifier-name"><strong>Name this notifier </strong></label>
-                        <div class="controls">
-                          <div class="input-append">
-                            <input id="android-new-notifier-name" type="text" name="path" class="span6" autocomplete="off" placeholder="ex: appledev"/>
-                          </div>
-                          The notifier name is used as the key for push data.  Give this a name that describes the API key being uploaded.
-                        </div>
-                      </div>
-
-                      <div class="control-group">
-                        <label class="control-label" for="android-new-notifier-api-key"><strong>API Key </strong></label>
-                        <div class="controls">
-                          <div class="input-append">
-                           <input id="android-new-notifier-api-key" name="android-new-notifier-api-key" type="text" name="path" class="span6" autocomplete="off"/>
-                          </div>
-                        </div>
-                      </div>
-
-                      <a class="btn btn-primary" id="save-certificate-btn-android">Create Notifier</a>
-                      </fieldset>
-
-                    </form>
-                  </div>
-                </div>
-
-
-              </div>
-
-
-
-              <div id="getStarted-panel" class="panel-buffer">
-                <div class="well thingy" style="padding-bottom: 10px;">
-                  <span class="title">Getting Started with Push Notifications</span>
-                  <br>
-                  Before you can send a notification, you must follow these three steps to enable push notifications for your app.
-                  <br>
-                  <a href="" class="notifications-links">ADD LINK!! Learn more in our docs</a>
-                </div>
-
-                <ul id="user-panel-tab-bar" class="nav nav-tabs">
-                  <li class="active"><a id="button-notifications-apple-get-started">Apple</a></li>
-                  <li><a id="button-notifications-android-get-started">Android</a></li>
-                </ul>
-
-                <div id="notifications-apple-get-started">
-                  <span class="title">Set up Push Notifications for Apple iOS</span>
-                  <div class="notifications-get-started notifications-get-started-top">
-                    <div class="header">
-                      <img src="images/step_1.png" style="float: left;padding-right: 10px;">
-                      <div style="padding-top: 9px;">
-                        Retrieve your APNs .p12 certificate(s) from the <a href="https://developer.apple.com/ios/manage/overview/index.action">Apple Developer Connection website</a>
-                      </div>
-                    </div>
-                    <img style="margin-bottom: -9px;" src="images/APNS_cert_upload.png">
-                  </div>
-
-                  <div class="notifications-get-started">
-                    <div class="header">
-                      <img src="images/step_2.png" style="float: left;padding-right: 10px;">
-                      <div style="padding-top: 9px;">
-                        Add the certificates to set up your notifiers.
-                      </div>
-                    </div>
-                    <div style="">
-                      <a href="#" onclick="Usergrid.Navigation.router.navigateTo('configuration'); return false;">Upload a certificate and create the connection to APNs.</a>
-                    </div>
-                    <img style="margin-left: 50px; margin-bottom: -5px;" src="images/APNS_certification.png">
-                  </div>
-
-                  <div class="notifications-get-started">
-                    <div class="header">
-                      <img src="images/step_3.png" style="float: left;padding-right: 10px;">
-                      <div style="padding-top: 9px;">
-                        Compose and schedule a push notification.
-                      </div>
-                    </div>
-                    <div style="">
-                      <a href="#" onclick="Usergrid.Navigation.router.navigateTo('sendNotification'); return false;">Send a push notification.</a>
-                    </div>
-                    <br><br>
-                    <img style="margin-bottom: -5px;" src="images/iphone_message.png">
-                  </div>
-
-                </div>
-
-                <div id="notifications-android-get-started" style="display: none">
-                  <span class="title">Set up Push Notifications for Google Android</span>
-                  <div class="notifications-get-started notifications-get-started-top">
-  

<TRUNCATED>

[41/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/app/console.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/app/console.js b/deleted/archive/js/app/console.js
deleted file mode 100644
index cb6da03..0000000
--- a/deleted/archive/js/app/console.js
+++ /dev/null
@@ -1,5397 +0,0 @@
-function apigee_console_app(Pages, query_params) {
-  //This code block *WILL NOT* load before the document is complete
-  window.Usergrid = window.Usergrid || {};
-  Usergrid.console = Usergrid.console || {};
-
-  // for running Apigee App Services as a local server
-  var LOCAL_STANDALONE_API_URL = "http://localhost/usergrid";
-  var LOCAL_TOMCAT_API_URL = "http://localhost:8080/ROOT";
-  var LOCAL_API_URL = LOCAL_STANDALONE_API_URL;
-  var PUBLIC_API_URL = "https://api.usergrid.com/";
-  var FORCE_PUBLIC_API = true; // Always use public API
-  if (!FORCE_PUBLIC_API && (document.domain.substring(0,9) == "localhost")) {
-    Usergrid.ApiClient.setApiUrl(LOCAL_API_URL);
-  }
-
-  String.prototype.endsWith = function (s) {
-    return (this.length >= s.length && this.substr(this.length - s.length) == s);
-  };
-
-  if (query_params.api_url) {
-    if (!query_params.api_url.endsWith('/')) {
-      query_params.api_url += '/';
-    }
-    Usergrid.ApiClient.setApiUrl(query_params.api_url);
-  } else {
-    if(window.location.host === 'localhost'){
-      //local = DIT
-      Usergrid.ApiClient.setApiUrl('http://apigee-internal-prod.jupiter.apigee.net/');
-    }if(window.location.host === 'appservices.apigee.com' && location.pathname.indexOf('/dit') >= 0){
-      //DIT
-      Usergrid.ApiClient.setApiUrl('http://apigee-internal-prod.jupiter.apigee.net/');
-    }else if(window.location.host === 'appservices.apigee.com' && location.pathname.indexOf('/mars') >= 0 ){
-      //staging
-      Usergrid.ApiClient.setApiUrl('http://apigee-internal-prod.mars.apigee.net/');
-    }
-  }
-  //Display message page in case there is a a timeout to the API
-  Usergrid.ApiClient.setCallTimeoutCallback(function(){
-    showMessagePage();
-  });
-
-  var HIDE_CONSOLE = query_params.hide_console || "";
-
-  if (HIDE_CONSOLE.indexOf("true") >= 0) {
-    $('#sidebar-menu ul li a[href="#console"]').hide();
-  }
-
-  var OFFLINE = false;
-  var OFFLINE_PAGE = "#query-page";
-
-  var self = this;
-
-  var emailRegex = new RegExp("^(([0-9a-zA-Z]+[_\+.-]?)+@[0-9a-zA-Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+$");
-  var emailAllowedCharsMessage = 'eg. example@apigee.com';
-
-  var passwordRegex = new RegExp("^([0-9a-zA-Z@#$%^&!?<>;:.,'\"~*=+_\[\\](){}/\\ |-])+$");
-  var passwordAllowedCharsMessage = 'This field only allows: A-Z, a-z, 0-9, ~ @ # % ^ & * ( ) - _ = + [ ] { } \\ | ; : \' " , . < > / ? !';
-  var passwordMismatchMessage = 'Password must match';
-
-  var usernameRegex = new RegExp("^([0-9a-zA-Z\.\_-])+$");
-  var usernameAllowedCharsMessage = 'This field only allows : A-Z, a-z, 0-9, dot, underscore and dash';
-
-  var organizationNameRegex = new RegExp ("^([0-9a-zA-Z.-])+$");
-  var organizationNameAllowedCharsMessage = 'This field only allows : A-Z, a-z, 0-9, dot, and dash';
-
-  //Regex declared differently from al the others because of the use of ". Functions exacly as if it was called from new RegExp
-  var nameRegex = /[0-9a-zA-ZáéíóúÁÉÍÓÚÑñ@#$%\^&!\?;:\.,'\"~\*-=\+_\(\)\[\]\{\}\|\/\\]+/;
-  var nameAllowedCharsMessage = "This field only allows: A-Z, a-z, áéíóúÁÉÍÓÚÑñ, 0-9, ~ @ # % ^ & * ( ) - _ = + [ ] { } \\ | ; : \' \" , . / ? !";
-
-  var titleRegex = new RegExp("[a-zA-Z0-9.!-?]+[\/]?");
-  var titleAllowedCharsMessage = 'Title field only allows : space, A-Z, a-z, 0-9, dot, dash, /, !, and ?';
-
-  var alphaNumRegex = new RegExp("[0-9a-zA-Z]+");
-  var alphaNumAllowedCharsMessage = 'Collection name only allows : a-z A-Z 0-9';
-
-  var pathRegex = new RegExp("^[^\/]*([a-zA-Z0-9\.-]+[\/]{0,1})+[^\/]$");
-  var pathAllowedCharsMessage = 'Path only allows : /, a-z, 0-9, dot, and dash, paths of the format: /path, path/, or path//path are not allowed';
-
-  var roleRegex = new RegExp("^([0-9a-zA-Z./-])+$");
-  var roleAllowedCharsMessage = 'Role only allows : /, a-z, 0-9, dot, and dash';
-
-  var intRegex = new RegExp("^([0-9])+$");
-
-  var applications = {};
-  var applications_by_id = {};
-
-  var current_application_id = "";
-  var current_application_name = {};
-  var applicationData = {};
-
-  var query_entities = null;
-  var query_entities_by_id = null;
-
-  var query_history = [];
-
-  var indexes = [];
-  var backgroundGraphColor = '#ffffff';
-
-  String.prototype.startsWith = function(s) {
-    return this.lastIndexOf(s, 0) === 0;
-  };
-
-  String.prototype.endsWith = function(s) {
-    return this.length >= s.length
-      && this.substr(this.length - s.length) == s;
-  };
-
-  $("#fixme").click(function(e){
-    e.preventDefault();
-    $('#application-panel-buttons').css('position', 'relative');
-  });
-
-  function clearBackgroundImage(){
-    $('body').css({'background-image' : 'none'});
-  }
-  Usergrid.console.clearBackgroundImage = clearBackgroundImage;
-  function setColumnBackgroundImage(){
-//    $('body').css({background : 'url(images/background_one_col.png)  repeat-y'});
-  }
-  Usergrid.console.setColumnBackgroundImage = setColumnBackgroundImage;
-
-  function initOrganizationVars() {
-    applications = {};
-    applications_by_id = {};
-
-    current_application_id = "";
-    current_application_name = "";
-
-    query_entities = null;
-    query_entities_by_id = null;
-
-    query_history = [];
-
-    indexes = [];
-  }
-
-  function keys(o) {
-    var a = [];
-    for (var propertyName in o) {
-      a.push(propertyName);
-    }
-    return a;
-  }
-
-  $('#api-activity').ajaxStart( function() {
-    $(this).show();
-  });
-
-  $('#api-activity').ajaxComplete( function() {
-    $(this).hide();
-  });
-
-  function showPanel(page) {
-    var p = $(page);
-    $("#console-panels").children().each(function() {
-      if ($(this).attr("id") == p.attr("id")) {
-        $(this).show();
-      } else {
-        $(this).hide();
-      }
-    });
-  }
-
-  function initConsoleFrame(){
-    $("#console-panel iframe").attr("src", url);
-  }
-
-  function getAccessTokenURL(){
-    var bearerToken = Usergrid.ApiClient.getToken();
-    var app_name = Usergrid.ApiClient.getApplicationName();
-    if (typeof app_name != 'string') {
-      app_name = '';
-    }
-    var org_name = Usergrid.ApiClient.getOrganizationName();
-    if (typeof org_name != 'string') {
-      org_name = '';
-    }
-    var bearerTokenJson = JSON.stringify(
-      [{
-        "type":"custom_token",
-        "name":"Authorization",
-        "value":"Bearer " + bearerToken,
-        "style":"header"
-      }, {
-        "type":"custom_token",
-        "name":"app_name",
-        "value":app_name,
-        "style":"template"
-      }, {
-        "type":"custom_token",
-        "name":"org_name",
-        "value":org_name,
-        "style":"template"
-      }]
-    );
-    var bearerTokenString = encodeURIComponent(bearerTokenJson);
-    var url = 'https://apigee.com/apigeedev/console/usergrid?v=2&embedded=true&auth=' + bearerTokenString;
-    return url;
-  }
-  Usergrid.console.getAccessTokenURL = getAccessTokenURL;
-
-  function showPanelContent(panelDiv, contentDiv) {
-    var cdiv = $(contentDiv);
-    $(panelDiv).children(".panel-content").each(function() {
-      var el = $(this);
-      if (el.attr("id") == cdiv.attr("id")) {
-        el.show();
-      } else {
-        el.hide();
-      }
-    });
-  }
-
-  function selectTabButton(link) {
-    var tab = $(link).parent();
-    tab.parent().find("li.active").removeClass('active');
-    tab.addClass('active');
-  }
-
-  function selectPillButton(link) {
-    var tab = $(link);
-    tab.parent().find("a.active").removeClass('active');
-    tab.addClass('active');
-  }
-  function selectFirstTabButton(bar){
-    selectTabButton($(bar).find("li:first-child a"));
-  }
-
-  function setNavApplicationText() {
-    var name = Usergrid.ApiClient.getApplicationName();
-    if(!name) {
-      name = "Select an Application";
-    }
-    $('#current-app-name').html('<div class="app-menu">' + name + '</div>  <span class="caret"></span>');
-    //  $('.thingy span.title span.app_title').text(" " + name);
-    $('#nav-app-name').html(name);
-  }
-
-  function escapeMe(obj) {
-    for (var property in obj) {
-      if (obj.hasOwnProperty(property)){
-        if (obj[property] && obj[property].constructor == Object || obj[property] instanceof Array) {
-          var prop = encodeURIComponent(property);
-          var value = obj[property];
-          delete obj[property];
-          obj[prop] = value;
-          escapeMe(obj[prop]);
-        }
-        else {
-          if (property === 'picture') continue;
-          var prop = escapeString(property);
-          var value = escapeString(obj[property]);
-          delete obj[property];
-          obj[prop] = value;
-          if (property === 'created' || property === 'modified') {
-            try {
-              obj[property] = parseInt(obj[property]);
-            }catch(e){}
-          }
-        }
-      }
-    }
-    return obj;
-  }
-
-  function escapeString(str) {
-    return String(str)
-      .replace(/&/g, '&amp;')
-      .replace(/"/g, '&quot;')
-      .replace(/'/g, '&#39;')
-      .replace(/</g, '&lt;')
-      .replace(/>/g, '&gt;');
-  }
-
-  /*******************************************************************
-   *
-   * Collections
-   *
-   ******************************************************************/
-
-  function pageSelectCollections() {
-    hideModal(' #collections-messages')
-    getCollections();
-  }
-  window.Usergrid.console.pageSelectCollections = pageSelectCollections;
-
-  function getCollections() {
-    //clear out the table before we start
-    var output = $('#collections-table');
-    output.empty();
-    hideCurlCommand('collections');
-    var section =$('#application-collections');
-    section.empty().html('<div class="alert alert-info">Loading...</div>');
-
-    var queryObj = new Usergrid.Query("GET",'', null, null, getCollectionsCallback,
-      function() { alertModal("Error", "There was an error getting the collections"); }
-    );
-
-    runAppQuery(queryObj);
-    return false;
-  }
-
-  function compare(a,b) {
-    if (a.name < b.name)
-      return -1;
-    if (a.name > b.name)
-      return 1;
-    return 0;
-  }
-
-  function getCollectionsCallback(response) {
-    //response = escapeMe(response);
-
-    $('#collections-pagination').hide();
-    $('#collections-next').hide();
-    $('#collections-previous').hide();
-    showEntitySelectButton();
-    if (response.entities && response.entities[0] && response.entities[0].metadata && response.entities[0].metadata.collections) {
-      applicationData.Collections = response.entities[0].metadata.collections;
-      updateApplicationDashboard();
-      updateQueryAutocompleteCollections();
-    }
-
-    var data = response.entities[0].metadata.collections;
-    var output = $('#collections-table');
-
-    var elements = [];
-    for (var key in data) {
-      if (data.hasOwnProperty(key)) {
-        elements.push(data[key])
-      }
-    }
-    var currentPath = $("#query-path").val();
-    elements.sort(compare)
-    var r = {};
-    if ($.isEmptyObject(data)) {
-      output.replaceWith('<div id="collections-table" class="collection-panel-section-message">No collections found.</div>');
-    } else {
-      output.replaceWith('<table id="collections-table" class="table"><tbody></tbody></table>');
-      var leftMenuContent = '<ul id="collections-link-buttons" class="nav nav-list" style="margin-bottom: 5px;">';
-      for (var i=0;i<elements.length;i++) {
-        r.name = elements[i];
-        r.count = data[elements[i].count];
-        var name = escapeString(elements[i].name);
-        $.tmpl('apigee.ui.collections.table_rows.html', r).appendTo('#collections-table');
-        var active = (currentPath == "/"+name)?'class="active"':'';
-        var link = "Usergrid.console.pageOpenQueryExplorer('"+name+"'); return false;";
-        leftMenuContent += '<li id="collections-link-button-'+name+'" '+active+'><a href="#" onclick="'+link+'" class="collection-nav-links"><span class="nav-menu-text">/'+name+'</span></a></li>';
-      }
-
-      leftMenuContent += '</ul>';
-      $('#left-collections-content').html(leftMenuContent);
-    }
-    showCurlCommand('collections', this.getCurl(), this.getToken());
-  }
-
-  /*******************************************************************
-   *
-   * Query Explorer
-   *
-   ******************************************************************/
-
-  function pageOpenQueryExplorer(collection) {
-
-    collection = collection || "";
-    showPanel("#collections-panel");
-    hideMoreQueryOptions();
-    //reset the form fields
-    $("#query-path").val("");
-    $("#query-source").val("");
-    $("#query-ql").val("");
-    showQueryCollectionView();
-    query_history = [];
-    //Prepare Collection Index Dropdown Menu
-    requestIndexes(collection);
-    //bind events for previous and next buttons
-    bindPagingEvents('query-response');
-    //clear out the table before we start
-    var output = $('#query-response-table');
-    output.empty();
-    //if a collection was provided, go ahead and get the default data
-    if (collection) {
-      getCollection('GET', collection);
-    }
-  }
-  window.Usergrid.console.pageOpenQueryExplorer = pageOpenQueryExplorer;
-
-  $("#query-help").click(function(e){
-    e.preventDefault();
-    $('#queryHelpModal').modal('show');
-  });
-  $("#query-method-help").click(function(e){
-    e.preventDefault();
-    $('#queryMethodHelpModal').modal('show');
-  });
-  $("#query-path-help").click(function(e){
-    e.preventDefault();
-    $('#queryPathHelpModal').modal('show');
-  });
-  $("#query-limit-help").click(function(e){
-    e.preventDefault();
-    $('#queryLimitHelpModal').modal('show');
-  });
-  $("#query-json-help").click(function(e){
-    e.preventDefault();
-    $('#queryJsonHelpModal').modal('show');
-  });
-
-
-  //change contexts for REST operations
-  $("#button-query-get").click(function(){
-    $("#query-json-box").hide();
-    $("#query-query-box").show();
-    $("#query-limit-box").show();
-  });
-
-  $("#button-query-post").click(function(){
-    $("#query-json-box").show();
-    $("#query-query-box").hide();
-    $("#query-limit-box").hide();
-  });
-
-  $("#button-query-put").click(function(){
-    $("#query-json-box").show();
-    $("#query-query-box").show();
-    $("#query-limit-box").hide();
-  });
-
-  $("#button-query-delete").click(function(){
-    $("#query-json-box").hide();
-    $("#query-query-box").show();
-    $("#query-limit-box").hide();
-  });
-
-  $("#data-explorer-link").click(function(){
-    $('#data-explorer').show();
-    $('#query-path').val('');
-    $("#query-response-area").hide();
-  });
-
-  var queryPath = '';
-  function runCollectionQuery(){
-    var method;
-
-
-    //Select method to use
-    if($('#button-query-get').prop('checked') ){
-      method = 'GET';
-    } else if($('#button-query-post').prop('checked')){
-      method = 'POST';
-    } else if($('#button-query-put').prop('checked')){
-      method = 'PUT';
-    } else if($('#button-query-delete').prop('checked')){
-      method = 'DELETE';
-    } else {
-      alertModal("Notice", "Please select a method.");
-      return;
-    }
-
-
-    //If jsonBody is empty fill it with empty brackets
-    if($('#query-source').val() === '') {
-      $("#query-source").val('{"name":"value"}');
-    }
-    getCollection(method);
-  }
-
-  window.Usergrid.console.getCollection = getCollection;
-
-  function getCollection(method, path){
-    $("#data-explorer-status").html('Working...');
-    $("#data-explorer-status").show();
-
-    //get the data to run the query
-    if(!path){
-      var path = $("#query-path").val();
-    }
-    var path=path.replace("//","/");
-    if(method.toUpperCase() !== 'GET' && method.toUpperCase() !== 'DELETE'){
-      var data = $("#query-source").val();
-      try{
-        validateJson();
-        StatusBar.hideAlert();
-        data = JSON.parse(data);
-      } catch (e) {
-        alertModal("Error", "There is a problem with your JSON.");
-        return false;
-      }
-    }
-
-    var params = {};
-    var ql = $("#query-ql").val();
-    params.ql = ql;
-    if(method.toUpperCase() === 'GET'){
-      var limit = $("#query-limit").val();
-      params.limit = limit;
-    }
-
-    queryPath = path;
-
-    queryObj = new Usergrid.Query(method, path, data, params, getCollectionCallback, function(response) { alertModal("Error", response) });
-    runAppQuery(queryObj);
-  }
-
-  function getCollectionCallback(response) {
-    response = escapeMe(response);
-    setTimeout(function(){$("#data-explorer-status").hide();},3000);
-    $('body').scrollTop(0);
-    hidePagination('query-response');
-    $('#query-response-area').show();
-    if (response.action == 'post') {
-      pageSelectCollections();
-    }
-
-
-    $("#data-explorer-status").html('API call completed');
-
-    var path = response.path || "";
-    path = "" + path.match(/[^?]*/);
-    var path_no_slashes = "";
-    try {
-      path_no_slashes = response.path.replace(/\//g,'');
-    } catch(e) {}
-
-    $("#collections-link-buttons li").removeClass('active');
-    $("#collections-link-button-"+path_no_slashes).addClass('active');
-
-    if(response.action === ("delete")){
-      getCollection("GET", path);
-      return;
-    }
-
-    var slashes = (queryPath.split("/").length -1)
-    if (!slashes && queryPath.length > 0) {
-      queryPath = "/" + queryPath;
-    }
-    $('#query-path').val(queryPath);
-
-    $("#collection-type-field").html(response.path);
-    var output = $('#query-response-table');
-    if (response.entities) {
-      if (response.entities.length == 1 && slashes > 1){
-        generateBackToCollectionButton(response.path);
-      } else {
-        $('#back-to-collection').hide();
-      }
-      if (response.entities.length < 1) {
-        output.replaceWith('<table id="query-response-table" class="table"><tbody><tr class="zebraRows users-row"><td>No entities found</td></tr></table>');
-      } else {
-        //Inform the user of a valid query
-
-        var entity_type = response.entities [0].type;
-
-        var table = '<table id="query-response-table" class="table"><tbody><tr class="zebraRows users-row">' +
-          '<td class="checkboxo"><input type="checkbox" onclick="Usergrid.console.selectAllEntities(this);" /></td>';
-        if (entity_type === 'user') {
-          table += '<td class="gravatar50-td">&nbsp;</td>'+
-            '<td class="user-details bold-header">Username</td>'+
-            '<td class="user-details bold-header">Display Name</td>';
-        } else if (entity_type === 'group') {
-          table += '<td class="user-details bold-header">Path</td>'+
-            '<td class="user-details bold-header">Title</td>';
-        } else if (entity_type === 'role') {
-          table += '<td class="user-details bold-header">Title</td>'+
-            '<td class="user-details bold-header">Rolename</td>';
-        } else {
-          table += '<td class="user-details bold-header">Name</td>';
-        }
-        table += '<td class="user-details bold-header">UUID</td>';
-        table += '<td class="view-details">&nbsp;</td>' +
-          '</tr></tbody></table>';
-        output.replaceWith(table);
-        var this_data = {}
-        this_data.path = response.path;
-        for (i = 0; i < response.entities.length; i++) {
-          this_data.r = response.entities [i];
-          //next get a table view of the object
-          this_data.content = buildContentArea(response.entities [i]);
-
-
-          //get a json representation of the object
-          this_data.json = JSON.stringify(response.entities [i], null, 2);
-
-          if (this_data.type === 'user') {
-            if (!this_data.r.picture) {
-              this_data.r.picture = window.location.protocol+ "//" + window.location.host + window.location.pathname + "images/user-photo.png"
-            } else {
-              this_data.r.picture = get_replacementGravatar(this_data.r.picture);
-            }
-          } else {
-            if (!this_data.r.name) {
-              this_data.r.name = '[No value set]';
-            }
-          }
-          $.tmpl('apigee.ui.collection.table_rows.html', this_data).appendTo('#query-response-table');
-        }
-
-      }
-    } else if (response.list) {
-
-      var query = response.params.ql[0];
-      query = query.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
-      query = query.substr(6, query.length);
-      query = query.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
-      query = query.substring(0, query.indexOf("where"));
-      var params = query.split(",");
-
-      var table = '<table id="query-response-table" class="table"><tbody><tr class="zebraRows users-row">';
-
-      for (i = 0; i < params.length; i++) {
-        table +='<td class="user-details bold-header">'+params[i].replace(/^\s\s*/, '').replace(/\s\s*$/, '')+'</td>';
-      }
-      for (i = 0; i < response.list.length; i++) {
-        var list = response.list[i];
-        table += '<tr class="zebraRows users-row">';
-        for (j = 0; j < list.length; j++) {
-          var value = list[j];
-          if (!value) { value = '[no value]'; }
-          table +='<td class="details">'+value+'</td>';
-        }
-        table += '</tr>';
-      }
-
-      table += '</table>';
-      output.replaceWith(table);
-
-    } else {
-      output.replaceWith('<table id="query-response-table" class="table"><tbody><tr class="zebraRows users-row"><td>No entities found</td></tr></table>');
-    }
-
-    showPagination('query-response');
-  }
-
-
-  function buildContentArea(obj2) {
-    function getProperties(obj, keyType){
-      var output = '';
-      for (var property in obj) {
-        if (property == 'metadata') { keyType = 'metadata'; }
-        else if (property == 'collections') { keyType = 'collections'; }
-        else { keyType = ''; }
-
-        output += '<tr>';
-        if (obj.hasOwnProperty(property)){
-          if (obj[property] && obj[property].constructor == Object || obj[property] instanceof Array) {
-
-            var prop = (obj[property] instanceof Array)?property:'';
-            //console.log('**Object -> '+property+': ');
-            output += '<td>'+prop+'</td><td style="padding: 0"><table><tr>';
-            output += getProperties(obj[property], keyType);
-            output += '</td></tr></table>';
-          }
-          else {
-            //console.log(property + " " + obj[property]);
-            if (keyType == 'metadata' || keyType == 'collections') {
-              var link = '<a href="#" onclick="Usergrid.console.pageOpenQueryExplorer(\''+obj[property]+'\'); return false;">'+obj[property]+'</a>';
-              output += '<td>'+property+'</td><td>'+link+'</td>';
-            } else {
-              var htmlescaped = htmlEscape(obj[property]);
-              output += '<td>'+property+'</td><td>'+htmlescaped+'</td>';
-            }
-          }
-        }
-        output += '</tr>';
-      }
-      return output;
-    }
-    var output = getProperties(obj2, '');
-    return '<table>' + output + '</table>';
-  }
-  function htmlEscape(str) {
-    return String(str)
-      .replace(/&/g, '&amp;')
-      .replace(/"/g, '&quot;')
-      .replace(/'/g, '&#39;')
-      .replace(/</g, '&lt;')
-      .replace(/>/g, '&gt;');
-  }
-
-
-
-
-  function activateQueryRowJSONButton() {
-    $("#button-query-show-row-JSON").removeClass('disabled').addClass('active');
-    $("#button-query-show-row-content").removeClass('active').addClass('disabled');
-  }
-  window.Usergrid.console.activateQueryRowJSONButton = activateQueryRowJSONButton;
-
-  function activateQueryRowContentButton() {
-    $("#button-query-show-row-JSON").removeClass('active').addClass('disabled');
-    $("#button-query-show-row-content").removeClass('disabled').addClass('active');
-  }
-  window.Usergrid.console.activateQueryRowContentButton = activateQueryRowContentButton;
-
-  function showQueryCollectionView() {
-    $('#query-collection-info').show();
-    $('#query-detail-info').hide();
-    $('#query-ql-box').show();
-    $('#back-to-collection').hide();
-  }
-
-
-
-  function generateBackToCollectionButton(returnPath) {
-    var backButton = $('#back-to-collection');
-    if(backButton.attr('onclick')){
-      backButton.removeAttr('onclick');
-    }
-    backButton.attr('onclick',"Usergrid.console.getCollection('GET','" + returnPath+ "')");
-    $('#back-to-collection').show();
-  }
-
-  $.fn.loadEntityCollectionsListWidget = function() {
-    this.each(function() {
-      var entityType = $(this).dataset('entity-type');
-      var entityUIPlugin = "apigee_collections_" + entityType + "_list_item";
-      if (!$(this)[entityUIPlugin]) {
-        entityUIPlugin = "apigee_collections_entity_list_item";
-      }
-      $(this)[entityUIPlugin]();
-    });
-  };
-
-  $.fn.loadEntityCollectionsDetailWidget = function() {
-    this.each(function() {
-      var entityType = $(this).dataset('entity-type');
-      var entityUIPlugin = "apigee_collections_" + entityType + "_detail";
-      if (!$(this)[entityUIPlugin]) {
-        entityUIPlugin = "apigee_collections_entity_detail";
-      }
-      $(this)[entityUIPlugin]();
-    });
-    if (this.length === 1 ){
-      hideEntityCheckboxes();
-      hideEntitySelectButton();
-    }
-  };
-
-  function hideEntityCheckboxes(){
-    $(".listItem").hide();
-    $(".listItem").attr('checked', true);
-  }
-
-  function hideEntitySelectButton(){
-    $("#selectAllCollections").hide();
-  }
-  function showEntitySelectButton(){
-    $("#selectAllCollections").show();
-  }
-
-  function getQueryResultEntity(id) {
-    if (query_entities_by_id) {
-      return query_entities_by_id[id];
-    }
-    return null;
-  }
-  window.Usergrid.console.getQueryResultEntity = getQueryResultEntity;
-
-  function showQueryStatus(s, _type) {
-    StatusBar.showAlert(s, _type);
-  }
-
-  function expandQueryInput() {
-    $('#query-source').height(150);
-    $('#button-query-shrink').show();
-    $('#button-query-expand').hide();
-    return false;
-  }
-
-  function shrinkQueryInput() {
-    $('#query-source').height(60);
-    $('#button-query-shrink').hide();
-    $('#button-query-expand').show();
-    return false;
-  }
-
-  InitQueryPanel();
-  function InitQueryPanel(){
-    $('#query-source').focus(function(){
-      expandQueryInput();
-      prepareQueryInput(this);
-    });
-    //$('#query-source').keyup(function(){activateJSONValidator('#button-query-validate', '#query-source');})
-    $('#button-query-validate').click(function() {validateJson();return false;});
-    $('#button-query-shrink').click(shrinkQueryInput);
-    $('#button-query-expand').click(expandQueryInput);
-
-    $('#button-query').click(function(){runCollectionQuery(); return false;});
-
-  }
-
-  function prepareQueryInput(selector) {
-    var queryInput = $(selector);
-    if( queryInput.val() === ""){
-      queryInput.val("{\n\n}");
-    }
-  }
-
-  function activateJSONValidator(valButton, jsonArea) {
-    var validatorButton = $(valButton);
-    var textArea = $(jsonArea)
-    if(validatorButton.hasClass('disabled')){
-      validatorButton.removeClass('disabled');
-      validatorButton.click(function() {validateJson();return false;});
-    } else if(textArea.val() === "") {
-      validatorButton.addClass('disabled');
-      validatorButton.unbind('click');
-    }
-  }
-
-  function showMoreQueryOptions() {
-    $('.query-more-options').show();
-    $('.query-less-options').hide();
-    $('#query-ql').val("");
-    $('#query-source').val("{ }");
-  }
-
-  function hideMoreQueryOptions() {
-    $('.query-more-options').hide();
-    $('.query-less-options').show();
-    $('#query-ql').val("");
-    $('#query-source').val("");
-  }
-
-  function toggleMoreQueryOptions() {
-    $('.query-more-options').toggle();
-    $('.query-less-options').toggle();
-    $('#query-ql').val("");
-    $('#query-source').val("");
-  }
-
-  $('#button-query-more-options').click(function() {
-    toggleMoreQueryOptions();
-    return false;
-  });
-
-  $('#button-query-less-options').click(function() {
-    toggleMoreQueryOptions();
-    return false;
-  });
-
-  $('#query-source').keydown(function(e) {
-    var key = e.keyCode || e.which;
-
-    if ((key == 9 || key ===13)) {
-      e.preventDefault();
-      //Get cursor position
-      var start = this.selectionStart;
-      var end = this.selectionEnd;
-      var field = $(this);
-      var value = field.val();
-      //insert Text and indentation
-      field.val(value.substring(0, start) + '\r  ' + value.substring(end));
-      //return cursor to its position
-      this.selectionStart = this.selectionEnd = start + 1;
-    }
-  });
-
-  function validateJson() {
-    try {
-      var result = JSON.parse($('#query-source').val());
-      if (result) {
-        showQueryStatus('JSON is valid!');
-        $('#query-source').val(JSON.stringify(result, null, "  "));
-        return result;
-      }
-    } catch(e) {
-      showQueryStatus(e.toString(), "error");
-    }
-    return false;
-  };
-
-  window.Usergrid.console.doChildClick = function(event) {
-    var path = new String($('#query-path').val());
-    if (!path.endsWith("/")) {
-      path += "/";
-    }
-    path += event.target.innerText;
-    $('#query-path').val(path);
-  };
-
-  var queryQl = $('#query-ql');
-  queryQl.typeahead({source:indexes});
-
-  function doBuildIndexMenu() {
-    queryQl.data('typeahead').source = indexes;
-  }
-
-  $('#delete-entity-link').click(deleteEntity);
-
-  function deleteEntity(e) {
-    e.preventDefault();
-    var items = $('#query-response-table input[class=listItem]:checked');
-    if(!items.length){
-      alertModal("Please, first select the entities you want to delete.");
-      return;
-    }
-    var itemsCount = items.size();
-    confirmDelete(function(){
-      items.each(function() {
-        var path = $(this).attr('name');
-        runAppQuery(new Usergrid.Query("DELETE", path, null, null,
-          function(request) {
-            itemsCount--;
-            if(itemsCount==0){
-              $("#query-path").val(request.path);
-              getCollection('GET');
-            }},
-          function() { alertModal("Unable to delete: " + path); }
-        ));
-      });
-    });
-  }
-
-  function requestIndexes(path){
-    var data = {};
-    runAppQuery(new Usergrid.Query("GET", path + "/indexes", null, null,
-      function(response) {
-        if(response && response.data) {
-          data = response;
-        }
-        buildIndexDropdown('query-collections-indexes-list', data);
-
-      }));
-  }
-
-  function buildIndexDropdown(menuId, indexes) {
-    var menu = $("#" + menuId);
-    menu.empty();
-    $.tmpl('apigee.ui.collections.query.indexes.html', indexes).appendTo(menu);
-  }
-
-  function appendToCollectionsQuery(message){
-    var queryTextArea = $("#query-ql");
-    queryTextArea.val(queryTextArea.val()+ " " + message );
-  }
-  window.Usergrid.console.appendToCollectionsQuery = appendToCollectionsQuery;
-
-  /*******************************************************************
-   *
-   * Organization Home
-   *
-   ******************************************************************/
-
-
-  function pageSelectHome() {
-
-    requestAdmins();
-    displayOrganizationName(Usergrid.ApiClient.getOrganizationName());
-    requestOrganizationCredentials();
-    requestAdminFeed();
-  }
-  window.Usergrid.console.pageSelectHome = pageSelectHome;
-
-
-  function displayApplications(response) {
-    applications = {};
-    applications_by_id = {};
-    var appMenu = $('.applications-menu');
-    var appList = $('table#organization-applications-table');
-    appMenu.empty();
-    appList.empty();
-
-    if (response.data) {
-      applications = response.data;
-      var count = 0;
-      var applicationNames = keys(applications).sort();
-      var data = [];
-      var appMenuTmpl = $('<li><a >${name}</a></li>');
-
-      for (var i in applicationNames) {
-        var name = applicationNames[i];
-        var uuid = applications[name];
-        data.push({uuid:uuid, name:name.split("/")[1]});
-        count++;
-        applications_by_id[uuid] = name.split("/")[1];
-      }
-
-      if (count) {
-        $.tmpl('apigee.ui.applications.table_rows.html', data).appendTo(appList);
-        appMenuTmpl.tmpl(data).appendTo(appMenu);
-        appMenuTmpl.tmpl(data)
-        appMenu.find("a").click(function selectApp(e) {
-          var link = $(this);
-          pageSelect(link.tmplItem().data.name);
-          Usergrid.Navigation.router.navigateTo('dashboard');
-        });
-
-        appList.find("a").click(function selectApp(e) {
-          e.preventDefault();
-          var link = $(this);
-          pageSelect(link.tmplItem().data.name);
-          Usergrid.Navigation.router.navigateTo('dashboard');
-        });
-        enableApplicationPanelButtons();
-      }
-      appMenu.append('<li class="divider"></li>');
-      appMenu.append('<li><a class="" data-toggle="modal" href="#dialog-form-new-application"> <strong>+</strong> New Application</a></li>');
-    }
-
-    if(appList.is(":empty")){
-      appList.html('<div class="alert user-panel-section">No applications created.</div>');
-      appMenu.html('<li>--No Apps--</li>');
-      forceNewApp();
-    }
-
-    var appName = Usergrid.ApiClient.getApplicationName();
-    if (!appName) {
-      selectFirstApp();
-    } else {
-      setNavApplicationText();
-    }
-  }
-
-  function requestApplications() {
-    var sectionApps = $('#organization-applications-table');
-    sectionApps.empty().html('<div class="alert alert-info user-panel-section">Loading...</div>');
-    runManagementQuery(new Usergrid.Query("GET","organizations/" + Usergrid.ApiClient.getOrganizationName() + "/applications", null, null,
-      displayApplications,
-      function() {
-        sectionApps.html('<div class="alert user-panel-section">Unable to retrieve application list.</div>');
-      }
-    ));
-  }
-  Usergrid.console.requestApplications = requestApplications;
-
-  function selectFirstApp() {
-    //get the currently specified app name
-    var appName = Usergrid.ApiClient.getApplicationName();
-    //and make sure we it is in one of the current orgs
-    var app = Usergrid.organizations.getItemByName(appName);
-    if(appName && app) {
-      Usergrid.ApiClient.setApplicationName(appName);
-      pageSelect(appName);
-    } else {
-      //we need to select an app, so get the current org name
-      var orgName = Usergrid.ApiClient.getOrganizationName();
-      //get a reference to the org object by using the name
-      var org = Usergrid.organizations.getItemByName(orgName);
-      //get a handle to the first app in the org
-      app = org.getFirstItem();
-      //store the new app in the client
-      Usergrid.ApiClient.setApplicationName(app.getName());
-      pageSelect(app.getName());
-    }
-    setNavApplicationText();
-  }
-
-  function displayAdmins(response) {
-    var sectionAdmins = $('#organization-admins-table');
-    sectionAdmins.empty();
-    if (response.data) {
-      var admins = response.data;
-      admins = admins.sort();
-      for (var i in admins) {
-        var admin = admins[i];
-        admin.gravatar = get_gravatar(admin.email, 20);
-        $.tmpl('apigee.ui.admins.table_rows.html', admin).appendTo(sectionAdmins);
-      }
-    }
-    if(sectionAdmins.is(':empty')){
-      sectionAdmins.html('<div class="alert user-panel-section">No organization administrators.</div>');
-    }
-  }
-
-  function requestAdmins() {
-    var sectionAdmins =$('#organization-admins-table');
-    sectionAdmins.empty().html('<div class="alert alert-info user-panel-section">Loading...</div>');
-    runManagementQuery(new Usergrid.Query("GET","organizations/" + Usergrid.ApiClient.getOrganizationName()  + "/users", null, null,
-      displayAdmins,
-      function() {sectionAdmins.html('<div class="alert user-panel-section">Unable to retrieve admin list</div>');
-      }));
-  }
-
-  $(document).on('click', '.toggleableSP', function() {
-    $(this).parent().find('.toggleableSP').toggle();
-    return false
-  });
-
-  function get_gravatar(email, size) {
-    var size = size || 50;
-    return 'https://secure.gravatar.com/avatar/' + MD5(email) + '?s=' + size + encodeURI("&d=https://apigee.com/usergrid/img/user_profile.png");
-  }
-
-  function get_replacementGravatar(picture) {
-    picture = picture.replace(/^http:\/\/www.gravatar/i, 'https://secure.gravatar');
-    //note: changing this to use the image on apigee.com - since the gravatar default won't work on any non-public domains such as localhost
-    //this_data.picture = this_data.picture + encodeURI("?d="+window.location.protocol+"//" + window.location.host + window.location.pathname + "images/user_profile.png");
-    picture = picture + encodeURI("?d=https://apigee.com/usergrid/img/user_profile.png");
-    return picture;
-  }
-
-  function displayAdminFeed(response) {
-
-    var sectionActivities = $('#organization-feed-table');
-    sectionActivities.empty();
-
-    if (response.entities && (response.entities.length > 0)) {
-      var activities = response.entities;
-      for (var i in activities) {
-        var activity = activities[i];
-
-        // Next part is a hack. The API should return the email and title cleanly.
-        var title_tmp = $("<span/>", {html: activity.title});
-        activity.actor.email  = title_tmp.find('a').attr('mailto');
-        title_tmp.find('a').remove();
-        activity.title = title_tmp.text();
-        // hack ends here
-
-        activity.actor.gravatar = get_gravatar(activity.actor.email, 20);
-        $.tmpl('apigee.ui.feed.table_rows.html', activity).appendTo(sectionActivities);
-      }
-    }
-
-    if (sectionActivities.is(":empty")) {
-      sectionActivities.html('<div class="alert user-panel-section">No activities.</div>');
-    }
-  }
-
-  function requestAdminFeed() {
-    var section =$('#organization-activities');
-    section.empty().html('<div class="alert alert-info">Loading...</div>');
-    runManagementQuery(new Usergrid.Query("GET","orgs/" + Usergrid.ApiClient.getOrganizationName()  + "/feed", null, null, displayAdminFeed,
-      function() { section.html('<div class="alert">Unable to retrieve feed.</div>'); }));
-  }
-  window.Usergrid.console.requestAdminFeed = requestAdminFeed;
-
-  var organization_keys = { };
-
-  function requestOrganizationCredentials() {
-    $('#organization-panel-key').html('<div class="alert alert-info marginless">Loading...</div>');
-    $('#organization-panel-secret').html('<div class="alert alert-info marginless">Loading...</div>');
-    runManagementQuery(new Usergrid.Query("GET",'organizations/'+ Usergrid.ApiClient.getOrganizationName()  + "/credentials", null, null,
-      function(response) {
-        $('#organization-panel-key').html(response.credentials.client_id);
-        $('#organization-panel-secret').html(response.credentials.client_secret);
-        organization_keys = {client_id : response.credentials.client_id, client_secret : response.credentials.client_secret};
-      },
-      function() {
-        $('#organization-panel-key').html('<div class="alert marginless">Unable to load...</div>');
-        $('#organization-panel-secret').html('<div class="alert marginless">Unable to load...</div>');
-      }));
-  }
-
-  function newOrganizationCredentials() {
-    $('#organization-panel-key').html('<div class="alert alert-info marginless">Loading...</div>');
-    $('#organization-panel-secret').html('<div class="alert alert-info marginless">Loading...</div>');
-    runManagementQuery(new Usergrid.Query("POST",'organizations/' + Usergrid.ApiClient.getOrganizationName()   + "/credentials",null, null,
-      function(response) {
-        $('#organization-panel-key').html(response.credentials.client_id);
-        $('#organization-panel-secret').html(response.credentials.client_secret);
-        organization_keys = {client_id : response.credentials.client_id, client_secret : response.credentials.client_secret};
-      },
-      function() {
-        $('#organization-panel-key').html('<div class="alert marginless">Unable to load...</div>');
-        $('#organization-panel-secret').html('<div class="alert marginless">Unable to load...</div>');
-      }
-    ));
-  }
-  window.Usergrid.console.newOrganizationCredentials = newOrganizationCredentials;
-
-  function updateTips(t) {
-    tips.text(t).addClass('ui-state-highlight');
-    setTimeout(function() {
-        tips.removeClass('ui-state-highlight', 1500);
-      },
-      500);
-  }
-
-  function checkLength(o, n, min, max) {
-    if (o.val().length > max || o.val().length < min) {
-      o.addClass('ui-state-error');
-      updateTips("Length of " + n + " must be between " + min
-        + " and " + max + ".");
-      return false;
-    } else {
-      return true;
-    }
-  }
-
-  function checkRegexp(o, regexp, n) {
-    if (! (regexp.test(o.val()))) {
-      o.addClass('ui-state-error');
-      updateTips(n);
-      return false;
-    } else {
-      return true;
-    }
-  }
-
-  function checkTrue(o, t, n) {
-    if (!t) {
-      o.addClass('ui-state-error');
-      updateTips(n);
-    }
-    return t;
-  }
-
-  var tips = $('.validateTips');
-
-  /*******************************************************************
-   *
-   * Modals
-   *
-   ******************************************************************/
-
-  function alertModal(header,message) {
-    $('#alertModal h4').text(header);
-    $('#alertModal p').text(message);
-    $('#alertModal').modal('show');
-  }
-
-  //use like: alertBanner("Oh no!", "Say it isn't so!!");
-  //or like: alertBanner("Oh no!", "Say it isn't so!!", 5000); //will auto-close in 5 seconds
-  function alertBanner(header, message, timeout) {
-    $('#alert-error-header').html(header);
-    $('#alert-error-message').html(message);
-    $('#alert-error-message-container').show();
-    if (timeout) {
-      var alertTimer = setInterval(function(){
-        $('#alert-error-message-container').hide();
-        window.clearInterval(alertTimer);
-      },timeout);
-    }
-  }
-
-  function hideModal(id){
-    $(id).hide();
-  }
-
-  function confirmAction(header, message, callback){
-    var form = $('#confirmAction');
-
-    form.find('h4').text(header);
-    form.find('p').text(message);
-    form.unbind('submit');
-
-    form.submit(function(){
-      form.modal("hide");
-      callback();
-
-      return false;
-    });
-
-    form.modal('show');
-  }
-
-  function resetModal(){
-    this.reset();
-    var form = $(this);
-    formClearErrors(form);
-  }
-
-  function focusModal(){
-    $(this).find('input:first').focus();
-  }
-
-  function submitModal(e){
-    e.preventDefault();
-  }
-
-  $('form.modal').on('hidden',resetModal).on('shown',focusModal).submit(submitModal);
-  $('#dialog-form-new-application').submit(submitApplication);
-  $('#dialog-form-force-new-application').submit(submitApplication);
-  $('#dialog-form-new-admin').submit(submitNewAdmin);
-  $('#dialog-form-new-organization').submit(submitNewOrg);
-  $('#dialog-form-new-user').submit(submitNewUser);
-  $('#dialog-form-new-role').submit(submitNewRole);
-  $('#dialog-form-new-collection').submit(submitNewCollection);
-  $('#dialog-form-new-group').submit(submitNewGroup);
-  $('#dialog-form-add-group-to-user').submit(submitAddGroupToUser);
-  $('#dialog-form-add-user-to-group').submit(submitAddUserToGroup);
-  $('#dialog-form-add-user-to-role').submit(submitAddUserToRole);
-  $('#dialog-form-add-role-to-user').submit(function() { submitAddRoleToUser(current_roleName, current_roleTitle)});
-  $('#dialog-form-add-user-to-notification').submit(function() { addUserToNotification()});
-  $('#dialog-form-add-group-to-notification').submit(function() { addGroupToNotification()});
-  $('#dialog-form-add-group-to-role').submit(function() { submitAddGroupToRole(current_roleName, current_roleTitle)});
-  $('#dialog-form-add-role-to-group').submit(submitAddRoleToGroup);
-  $('#dialog-form-follow-user').submit(submitFollowUser);
-
-  function checkLength2(input, min, max) {
-    if (input.val().length > max || input.val().length < min) {
-      var tip = "Length must be between " + min + " and " + max + ".";
-      validationError(input,tip);
-      return false;
-    }
-
-    return true;
-  }
-
-  function checkRegexp2(input, regexp, tip) {
-    if (! (regexp.test(input.val()))) {
-      validationError(input,tip);
-      return false;
-    }
-    return true;
-  }
-
-  function checkTrue2(input, exp, tip) {
-    if (!exp) {
-      validationError(input,tip);
-      return false;
-    }
-
-    return true;
-  }
-
-  function confirmDelete(callback){
-    var form = $('#confirmDialog');
-    if (form.submit) {
-      form.unbind('submit');
-    }
-
-    form.submit(function(e){
-      e.preventDefault();
-      form.modal('hide');
-    }).submit(callback);
-
-    form.modal('show');
-  }
-
-  function validationError(input, tip){
-    input.focus();
-    input.parent().parent().addClass("error");
-    input.parent().parent().find(".help-block").text(tip).addClass("alert-error").addClass("alert").show();
-  }
-
-  $.fn.serializeObject = function() {
-    var o = {};
-    var a = this.serializeArray();
-
-    $.each(a, function() {
-      if (o[this.name]) {
-        if (!o[this.name].push) {
-          o[this.name] = [o[this.name]];
-        }
-        o[this.name].push(this.value || '');
-      } else {
-        o[this.name] = this.value || '';
-      }
-    });
-
-    return o;
-  };
-
-  function formClearErrors(form){
-    form.find('.ui-state-error').removeClass('ui-state-error');
-    form.find('.error').removeClass('error');
-    form.find('.help-block').empty().hide();
-  }
-
-  function submitApplication() {
-    var form = $(this);
-    formClearErrors(form);
-
-    var new_application_name = $(this).find('.new-application-name');
-
-    var bValid = checkLength2(new_application_name, 4, 80)
-      && checkRegexp2(new_application_name, usernameRegex, usernameAllowedCharsMessage);
-
-    if (bValid) {
-      runManagementQuery(new Usergrid.Query("POST","organizations/" + Usergrid.ApiClient.getOrganizationName()  + "/applications", form.serializeObject(), null,
-        function(response) {
-          for (var appName in response.data) { break; }
-          var appTitle = appName.split("/")[1];
-          var currentOrg = Usergrid.ApiClient.getOrganizationName();
-          Usergrid.organizations.getItemByName(currentOrg).addItem(new Usergrid.Application(appTitle, response.data[appName]));
-          pageSelect(appTitle);
-          requestApplications();
-        },
-        function() {
-          closeErrorMessage = function() {
-            $('#home-messages').hide();
-          };
-          var closebutton = '<a  onclick="closeErrorMessage();" class="close">&times;</a>'
-          $('#home-messages').text("Unable to create application: ").prepend(closebutton).addClass('alert-error').show();
-        }));
-      $(this).modal('hide');
-    }
-  }
-
-  function submitNewAdmin() {
-    var form = $(this);
-    formClearErrors(form);
-
-    var new_admin_email = $('#new-admin-email');
-    var bValid = checkLength2(new_admin_email, 6, 80)
-      && checkRegexp2(new_admin_email,emailRegex, emailAllowedCharsMessage);
-    if (bValid) {
-      var data = form.serializeObject();
-      runManagementQuery(new Usergrid.Query("POST","organizations/" + Usergrid.ApiClient.getOrganizationName() + "/users", data, null,
-        requestAdmins,
-        function () { alertModal("Error", "Unable to create admin"); }
-      ));
-      $(this).modal('hide');
-    }
-  }
-
-  function addOrganizationToList(orgName) {
-    runManagementQuery(new Usergrid.Query("GET","orgs/" + orgName, null, null,
-      function(response) {
-        var orgName = response.organization.name;
-        var orgUUID = response.organization.uuid;
-        organization = new Usergrid.Organization(orgName, orgUUID);
-        var apps = response.organization.applications;
-        for(app in apps) {
-          var appName = app.split("/")[1];
-          //grab the id
-          var appUUID = response.organization.applications[app];
-          //store in the new Application object
-          application = new Usergrid.Application(appName, appUUID);
-          organization.addItem(application);
-        }
-        //add organization to organizations list
-        Usergrid.organizations.addItem(organization);
-        requestAccountSettings();
-        setupOrganizationsMenu();
-      },
-      function() { alertModal("Error", "Unable to get organization" + orgName);
-      }
-    ));
-  }
-
-  function submitNewOrg() {
-    var form = $(this);
-    formClearErrors(form);
-
-    var new_organization_name = $('#new-organization-name');
-    var new_organization_name_val = $('#new-organization-name').val();
-    var bValid = checkLength2(new_organization_name, 4, 80)
-      && checkRegexp2(new_organization_name, organizationNameRegex, organizationNameAllowedCharsMessage);
-
-    if (bValid) {
-      var data = form.serializeObject();
-      runManagementQuery(new Usergrid.Query("POST","users/" + Usergrid.userSession.getUserUUID() + "/organizations", data, null,
-        function() {
-          addOrganizationToList(new_organization_name_val);
-        },
-        function() { alertModal("Error", "Unable to create organization"); }
-      ));
-      $(this).modal('hide');
-    }
-  }
-  //TODO: the organization, and required fields for this method, are hidden. There is no quick way to check variable names and order
-  /*
-   * Needed fields:
-   * username:
-   * name: FULL NAME
-   * email:
-   * password:
-   */
-  function submitNewUser() {
-    var form = $(this);
-    formClearErrors(form);
-
-    var email = $('#new-user-email');
-    var username = $('#new-user-username');
-    var fullname = $('#new-user-fullname');
-    var password = $('#new-user-password');
-    var validate_password = $('#new-user-validate-password');
-
-    var bValid =
-      //Fullname can is not required.
-      checkLength2(fullname , 0, 80)
-        && ( fullname.val() === "" || checkRegexp2(fullname, nameRegex, nameAllowedCharsMessage) )
-        //Username IS required
-        && checkRegexp2(username, usernameRegex, usernameAllowedCharsMessage)
-        //Email is NOT required
-        && ( checkLength2(email, 6, 80) )
-        && ( email.val() === "" || checkRegexp2(email,emailRegex, emailAllowedCharsMessage) )
-        && ( checkLength2(password ,0 ,0) || checkLength2(password, 1, 64) )
-        && ( password.val() === "" || checkRegexp2(password,passwordRegex, passwordAllowedCharsMessage) )
-        && ( checkTrue2(password, (password.val() === validate_password.val()), passwordMismatchMessage));
-
-    if (bValid) {
-      var data = {"email":email.val(), "username":username.val(),"name":fullname.val(), "password":password.val()}
-      runAppQuery(new Usergrid.Query("POST", 'users', data, null,
-        function() {
-          getUsers();
-          closeErrorMessage = function() {
-            $('#users-messages').hide();
-          };
-          var closebutton = '<a  onclick="closeErrorMessage();" class="close">&times;</a>';
-          $('#users-messages')
-            .text("User created successfully.")
-            .prepend(closebutton)
-            .removeClass()
-            .addClass('alert alert-warning')
-            .show();
-        },
-        function() {
-          closeErrorMessage = function() {
-            $('#users-messages').hide();
-          };
-          var closebutton = '<a  onclick="closeErrorMessage();" class="close">&times;</a>'
-          $('#users-messages')
-            .text("Unable to create user")
-            .prepend(closebutton)
-            .removeClass()
-            .addClass('alert alert-error')
-            .show();
-        }
-      ));
-
-      $(this).modal('hide');
-    }
-  }
-
-  function submitNewRole() {
-    var form = $(this);
-    formClearErrors(form);
-
-    var new_role_name = $('#new-role-name');
-    var new_role_title = $('#new-role-title');
-
-    var bValid = checkLength2(new_role_name, 1, 80)
-      && checkRegexp2(new_role_name, roleRegex, roleAllowedCharsMessage)
-      && checkLength2(new_role_title, 1, 80)
-      && checkRegexp2(new_role_title,titleRegex, titleAllowedCharsMessage);
-
-    if (bValid) {
-      var data = form.serializeObject();
-      runAppQuery(new Usergrid.Query("POST", "role", data, null,
-        function() {
-          getRoles();
-          closeErrorMessage = function() {
-            $('#roles-messages').hide();
-          };
-          var closebutton = '<a  onclick="closeErrorMessage();" class="close">&times;</a>'
-          $('#roles-messages')
-            .text("Role created successfully.")
-            .prepend(closebutton)
-            .removeClass()
-            .addClass('alert alert-warning')
-            .show();
-        },
-        function() {
-          closeErrorMessage = function() {
-            $('#roles-messages').hide();
-          };
-          var closebutton = '<a  onclick="closeErrorMessage();" class="close">&times;</a>'
-          $('#roles-messages')
-            .text("Unable to create user")
-            .prepend(closebutton)
-            .removeClass()
-            .addClass('alert alert-error')
-            .show();
-        }
-      ));
-
-      $(this).modal('hide');
-    }
-  }
-
-  function submitNewCollection() {
-    var form = $(this);
-    formClearErrors(form);
-
-    var new_collection_name = $('#new-collection-name');
-
-    var bValid = checkLength2(new_collection_name, 4, 80)
-      && checkRegexp2(new_collection_name, alphaNumRegex, alphaNumAllowedCharsMessage);
-
-    if (bValid) {
-      var data = form.serializeObject();
-      var collections = {};
-      collections[data.name] = {};
-      var metadata = {
-        metadata: {
-          collections: collections
-        }
-      }
-      runAppQuery(new Usergrid.Query("PUT", "", metadata, null,
-        function() {
-          getCollections();
-          closeErrorMessage = function() {
-            $('#collections-messages').hide();
-          };
-          var closebutton = '<a  onclick="closeErrorMessage();" class="close">&times;</a>'
-          $('#collections-messages')
-            .text("Collection created successfully.")
-            .prepend(closebutton)
-            .removeClass()
-            .addClass('alert alert-warning')
-            .show();
-          getCollection("get", data.name);
-        },
-        function() {
-          closeErrorMessage = function() {
-            $('#collections-messages').hide();
-          };
-          var closebutton = '<a  onclick="closeErrorMessage();" class="close">&times;</a>'
-          $('#collections-messages')
-            .text("Unable to create user")
-            .prepend(closebutton)
-            .removeClass()
-            .addClass('alert alert-error')
-            .show();
-        }
-      ));
-
-      $(this).modal('hide');
-    }
-  }
-
-  function submitNewGroup() {
-    var form = $(this);
-    formClearErrors(form);
-
-    var new_group_title = $('#new-group-title');
-    var new_group_path = $('#new-group-path');
-
-    var bValid = checkLength2(new_group_title, 1, 80)
-      && checkRegexp2(new_group_title, nameRegex, nameAllowedCharsMessage)
-      && checkLength2(new_group_path, 1, 80)
-      && checkRegexp2(new_group_path, pathRegex, pathAllowedCharsMessage);
-
-    if (bValid) {
-      var data = form.serializeObject();
-      runAppQuery(new Usergrid.Query("POST", "groups", data, null,
-        function() {
-          getGroups();
-          closeErrorMessage = function() {
-            $('#groups-messages').hide();
-          };
-          var closebutton = '<a  onclick="closeErrorMessage();" class="close">&times;</a>'
-          $('#groups-messages')
-            .text("Group created successfully.")
-            .prepend(closebutton)
-            .removeClass()
-            .addClass('alert alert-warning')
-            .show();
-        },
-        function() {
-          closeErrorMessage = function() {
-            $('#groups-messages').hide();
-          };
-          var closebutton = '<a  onclick="closeErrorMessage();" class="close">&times;</a>'
-          $('#groups-messages').text("Unable to create group").prepend(closebutton).addClass('alert-error').show();
-        }
-      ));
-
-      $(this).modal('hide');
-    }
-  }
-
-  function submitAddGroupToUser() {
-    var form = $(this);
-    formClearErrors(form);
-    var add_group_groupname = $('#search-group-name-input');
-    var bValid = checkLength2(add_group_groupname, 1, 80)
-      && checkRegexp2(add_group_groupname, usernameRegex, usernameAllowedCharsMessage);
-
-    if (bValid) {
-      userId = $('#search-group-userid').val();
-      groupId = $('#search-group-name-input').val();
-
-      runAppQuery(new Usergrid.Query("POST", "/groups/" + groupId + "/users/" + userId, null, null,
-        function() { requestUser(userId); },
-        function() { alertModal("Error", "Unable to add group to user"); }
-      ));
-
-      $(this).modal('hide');
-    }
-  }
-
-  function submitAddUserToGroup() {
-    var form = $(this);
-    formClearErrors(form);
-    var add_user_username = $('#search-user-name-input');
-    var bValid = checkLength2(add_user_username, 1, 80)
-      && checkRegexp2(add_user_username, usernameRegex, usernameAllowedCharsMessage);
-
-    if (bValid) {
-      userId = $('#search-user-name-input').val();
-      groupId = $('#search-user-groupid').val();
-      runAppQuery(new Usergrid.Query("POST", "/groups/" + groupId + "/users/" + userId, null, null,
-        function() { requestGroup(groupId); },
-        function() { alertModal("Error", "Unable to add user to group"); }
-      ));
-      $(this).modal('hide');
-    }
-  }
-
-  function submitFollowUser(){
-    var form = $(this);
-    formClearErrors(form);
-    var username = $('#search-follow-username-input');
-    var bValid = checkLength2(username, 1, 80) && checkRegexp2(username, usernameRegex, usernameAllowedCharsMessage);
-    if (bValid) {
-      var followingUserId = $('#search-follow-username').val();
-      var followedUserId = $('#search-follow-username-input').val();
-      runAppQuery(new Usergrid.Query("POST", "/users/" + followingUserId + "/following/user/" + followedUserId, null, null,
-        function() { pageSelectUserGraph(followingUserId)},
-        function() {alertModal("Error", "Unable to follow User");}
-      ));
-      $(this).modal('hide');
-    }
-  }
-
-  function submitAddRoleToUser(roleName, roleTitle) {
-    var form = $(this);
-    formClearErrors(form);
-    var roleIdField = $('#search-roles-user-name-input');
-    var bValid = checkLength2(roleIdField, 1, 80) && checkRegexp2(roleIdField, usernameRegex, usernameAllowedCharsMessage)
-    var username = $('#search-roles-user-name-input').val();
-    if (bValid) {
-      runAppQuery(new Usergrid.Query("POST", "/roles/" + roleName + "/users/" + username, null, null,
-        function() { pageSelectRoleUsers(roleName, roleTitle); },
-        function() { alertModal("Error", "Unable to add user to role"); }
-      ));
-      $('#dialog-form-add-role-to-user').modal('hide');
-    }
-  }
-
-  function submitAddUserToRole() {
-    var form = $(this);
-    formClearErrors(form);
-
-    var roleIdField = $('#search-role-name-input');
-    var bValid = checkLength2(roleIdField, 1, 80)
-      && checkRegexp2(roleIdField, roleRegex, roleAllowedCharsMessage)
-
-    var username = $('#role-form-username').val();
-    var roleId = $('#search-role-name-input').val();
-    // role may have a preceding or trailing slash, remove it
-    roleId = roleId.replace('/','');
-    if (bValid) {
-      runAppQuery(new Usergrid.Query("POST", "/roles/" + roleId + "/users/" + username, null, null,
-        function() { pageSelectUserPermissions(username); },
-        function() { alertModal("Error", "Unable to add user to role"); }
-      ));
-
-      $(this).modal('hide');
-    }
-  }
-
-  function deleteUsersFromRoles(username) {
-    var items = $('#users-permissions-response-table input[class^=listItem]:checked');
-    if(!items.length){
-      alertModal("Error", "Please, first select the roles you want to delete for this user.");
-      return;
-    }
-
-    confirmDelete(function(){
-      items.each(function() {
-        var roleName = $(this).attr("value");
-        runAppQuery(new Usergrid.Query("DELETE", "/roles/" + roleName + "/users/" + username, null, null,
-          function() { pageSelectUserPermissions (username); },
-          function() { alertModal("Error", "Unable to remove user from role"); }
-        ));
-      });
-    });
-  }
-  window.Usergrid.console.deleteUsersFromRoles = deleteUsersFromRoles;
-
-  function deleteRoleFromUser(roleName, roleTitle) {
-    var items = $('#role-users input[class^=listItem]:checked');
-    if(!items.length){
-      alertModal("Error", "Please, first select the users you want to delete from this role.");
-      return;
-    }
-
-    confirmDelete(function(){
-      items.each(function() {
-        var username = $(this).attr("value");
-        runAppQuery(new Usergrid.Query("DELETE", "/roles/" + roleName + "/users/" + username, null, null,
-          function() { pageSelectRoleUsers (roleName, roleTitle); },
-          function() { alertModal("Error", "Unable to remove user from role"); }
-        ));
-      });
-    });
-  }
-  window.Usergrid.console.deleteRoleFromUser = deleteRoleFromUser;
-
-  function removeUserFromGroup(userId) {
-    var items = $('#user-panel-memberships input[class^=listItem]:checked');
-    if(!items.length){
-      alertModal("Error", "Please, first select the groups you want to delete for this user.")
-      return;
-    }
-    confirmDelete(function(){
-      items.each(function() {
-        var groupId = $(this).attr("value");
-        runAppQuery(new Usergrid.Query("DELETE", "/groups/" + groupId + "/users/" + userId, null, null,
-          function() { pageSelectUserGroups (userId); },
-          function() { alertModal("Error", "Unable to remove user from group"); }
-        ));
-      });
-    });
-  }
-  window.Usergrid.console.removeUserFromGroup = removeUserFromGroup;
-
-  function removeGroupFromUser(groupId) {
-    var items = $('#group-panel-memberships input[class^=listItem]:checked');
-    if (!items.length) {
-      alertModal("Error", "Please, first select the users you want to from this group.");
-      return;
-    }
-
-    confirmDelete(function(){
-      items.each(function() {
-        var userId = $(this).attr("value");
-        runAppQuery(new Usergrid.Query("DELETE", "/groups/" + groupId + "/users/" + userId, null, null,
-          function() { pageSelectGroupMemberships (groupId); },
-          function() { alertModal("Error", "Unable to remove user from group"); }
-        ));
-      });
-    });
-  }
-  window.Usergrid.console.removeGroupFromUser = removeGroupFromUser;
-
-  function deleteRolesFromGroup(roleId, rolename) {
-    var items = $('#group-panel-permissions input[class^=listItem]:checked');
-    if(!items.length){
-      alertModal("Error", "Please, first select the roles you want to delete from this group.")
-      return;
-    }
-
-    confirmDelete(function(){
-      items.each(function() {
-        var roleId = $(this).attr("value");
-        var groupname = $('#role-form-groupname').val();
-        runAppQuery(new Usergrid.Query("DELETE", "/roles/" + roleId + "/groups/" + groupname, null, null,
-          function() { pageSelectGroupPermissions(groupname); },
-          function() { alertModal("Error", "Unable to remove role from group"); }
-        ));
-      });
-    });
-  }
-  window.Usergrid.console.deleteRolesFromGroup = deleteRolesFromGroup;
-
-  function submitAddRoleToGroup() {
-    var form = $(this);
-    formClearErrors(form);
-
-    var roleIdField = $('#search-groups-role-name-input');
-    var bValid = checkLength2(roleIdField, 1, 80)
-      && checkRegexp2(roleIdField, roleRegex, roleAllowedCharsMessage)
-
-    var groupname = $('#role-form-groupname').val();
-    var roleId = $('#search-groups-role-name-input').val();
-    // role may have a preceding or trailing slash, remove it
-    roleId = roleId.replace('/','');
-
-    if (bValid) {
-      runAppQuery(new Usergrid.Query("POST", "/groups/" + groupname + "/roles/" + roleId, null, null,
-        function() { pageSelectGroupPermissions(groupname); },
-        function() { alertModal("Error", "Unable to add user to role"); }
-      ));
-      $(this).modal('hide');
-    }
-  }
-
-  /*******************************************************************
-   *
-   * Generic page select
-   *
-   ******************************************************************/
-  function pageSelect(name) {
-    if (name) {
-      //the following 3 lines are just a safety check, we could just store the name
-      //get the current org name
-      var currentOrg = Usergrid.ApiClient.getOrganizationName();
-      //get a reference to the current org object by using the name
-      var org = Usergrid.organizations.getItemByName(currentOrg);
-      //get a reference to the specified app by name
-      var app = org.getItemByName(name);
-      //store the name
-      Usergrid.ApiClient.setApplicationName(app.getName());
-    }
-    setNavApplicationText();
-    getCollections();
-    query_history = [];
-  }
-  window.Usergrid.console.pageSelect = pageSelect;
-
-
-  /*******************************************************************
-   *
-   * Application
-   *
-   ******************************************************************/
-
-  function pageSelectApplication() {
-    pageSelect();
-    requestApplicationUsage();
-  }
-  window.Usergrid.console.pageSelectApplication = pageSelectApplication;
-
-  function updateApplicationDashboard(){
-    var data = new google.visualization.DataTable();
-    data.addColumn('string', 'Entity');
-    data.addColumn('number', 'Count');
-    var rows = [];
-    var t = '<table class="table table-bordered" id="application-panel-entity-counts">';
-    var collectionNames = keys(applicationData.Collections).sort();
-
-    var entity_count = 0;
-    for (var i in collectionNames) {
-      var collectionName = collectionNames[i];
-      var collection = applicationData.Collections[collectionName];
-      var row = [collectionName, {v: Math.abs(collection.count)}];
-      rows.push(row);
-      collectionName = escapeString(collectionName);
-      t += '<tr class="zebraRows"><td>' + collection.count + '</td><td>' + collectionName + '</td></tr>';
-      entity_count += collection.count;
-    }
-    t += '<tr id="application-panel-entity-total"><th>' + entity_count + '</th><th>entities total</th></tr>';
-    t += '</table>';
-    data.addRows(rows);
-
-    new google.visualization.PieChart(
-      document.getElementById('application-panel-entity-graph')).
-      draw(data, {
-        height: 200,
-        is3D: true,
-        backgroundColor: backgroundGraphColor
-      }
-    );
-
-    $('#dashboard-panel #application-panel-text').html(t);
-  }
-
-  function requestApplicationUsage() {
-    $('#application-entities-timeline').html("");
-    $('#application-cpu-time').html("");
-    $('#application-data-uploaded').html("");
-    $('#application-data-downloaded').html("");
-    var params = {};
-    params.start_time = Math.floor(new Date().getTime() / 1209600000) * 1209600000;
-    params.end_time = start_timestamp + 1209600000;
-    params.resolution = "day";
-    params.counter = ["application.entities", "application.request.download", "application.request.time", "application.request.upload"];
-    params.pad = true;
-
-    runAppQuery(new Usergrid.Query("GET", "counters", null, params,
-      function(response) {
-        var usage_counters = response.counters;
-
-        if (!usage_counters) {
-          $('#application-entities-timeline').html("");
-          $('#application-cpu-time').html("");
-          $('#application-data-uploaded').html("");
-          $('#application-data-downloaded').html("");
-          return;
-        }
-
-        var graph_width = 350;
-        var graph_height = 100;
-        var data = new google.visualization.DataTable();
-        data.addColumn('date', 'Time');
-        data.addColumn('number', 'Entities');
-        data.addRows(15);
-
-        for (var i in usage_counters[0].values) {
-          data.setCell(parseInt(i), 0, new Date(usage_counters[0].values[i].timestamp));
-          data.setCell(parseInt(i), 1, usage_counters[0].values[i].value);
-        }
-
-        new google.visualization.LineChart(document.getElementById('application-entities-timeline')).draw(data, {
-          title: "Entities",
-          titlePosition: "in",
-          titleTextStyle: {color: 'black', fontName: 'Arial', fontSize: 18},
-          width: graph_width,
-          height: graph_height,
-          backgroundColor: backgroundGraphColor,
-          legend: "none",
-          hAxis: {textStyle: {color:"transparent", fontSize: 1}},
-          vAxis: {textStyle: {color:"transparent", fontSize: 1}}
-        });
-
-        data = new google.visualization.DataTable();
-        data.addColumn('date', 'Time');
-        data.addColumn('number', 'CPU');
-        data.addRows(15);
-
-        for (var i in usage_counters[2].values) {
-          data.setCell(parseInt(i), 0, new Date(usage_counters[2].values[i].timestamp));
-          data.setCell(parseInt(i), 1, usage_counters[2].values[i].value);
-        }
-
-        new google.visualization.LineChart(document.getElementById('application-cpu-time')).draw(data, {
-          title: "CPU Time Used",
-          titlePosition: "in",
-          titleTextStyle: {color: 'black', fontName: 'Arial', fontSize: 18},
-          width: graph_width,
-          height: graph_height,
-          backgroundColor: backgroundGraphColor,
-          legend: "none",
-          hAxis: {textStyle: {color:"transparent", fontSize: 1}},
-          vAxis: {textStyle: {color:"transparent", fontSize: 1}}
-        });
-
-        data = new google.visualization.DataTable();
-        data.addColumn('date', 'Time');
-        data.addColumn('number', 'Uploaded');
-        data.addRows(15);
-
-        for (var i in usage_counters[3].values) {
-          data.setCell(parseInt(i), 0, new Date(usage_counters[3].values[i].timestamp));
-          data.setCell(parseInt(i), 1, usage_counters[3].values[i].value);
-        }
-
-        new google.visualization.LineChart(document.getElementById('application-data-uploaded')).draw(data, {
-          title: "Bytes Uploaded",
-          titlePosition: "in",
-          titleTextStyle: {color: 'black', fontName: 'Arial', fontSize: 18},
-          width: graph_width,
-          height: graph_height,
-          backgroundColor: backgroundGraphColor,
-          legend: "none",
-          hAxis: {textStyle: {color:"transparent", fontSize: 1}},
-          vAxis: {textStyle: {color:"transparent", fontSize: 1}}
-        });
-
-        data = new google.visualization.DataTable();
-        data.addColumn('date', 'Time');
-        data.addColumn('number', 'Downloaded');
-        data.addRows(15);
-
-        for (var i in usage_counters[1].values) {
-          data.setCell(parseInt(i), 0, new Date(usage_counters[1].values[i].timestamp));
-          data.setCell(parseInt(i), 1, usage_counters[1].values[i].value);
-        }
-
-        new google.visualization.LineChart(document.getElementById('application-data-downloaded')).draw(data, {
-          title: "Bytes Downloaded",
-          titlePosition: "in",
-          titleTextStyle: {color: 'black', fontName: 'Arial', fontSize: 18},
-          width: graph_width,
-          height: graph_height,
-          backgroundColor: backgroundGraphColor,
-          legend: "none",
-          hAxis: {textStyle: {color:"transparent", fontSize: 1}},
-          vAxis: {textStyle: {color:"transparent", fontSize: 1}}
-        });
-      },
-      function() {
-        $('#application-entities-timeline').html("");
-        $('#application-cpu-time').html("");
-        $('#application-data-uploaded').html("");
-        $('#application-data-downloaded').html("");
-      }
-    ));
-  }
-  window.Usergrid.console.requestApplicationUsage = requestApplicationUsage;
-
-  /*******************************************************************
-   *
-   * Query Object Setup
-   *
-   ******************************************************************/
-  var queryObj = {};
-
-  function hidePagination(section) {
-    $('#'+section+'-pagination').hide();
-    $('#'+section+'-next').hide();
-    $('#'+section+'-previous').hide();
-  }
-
-  function showPagination(section){
-    if (queryObj.hasNext()) {
-      $('#'+section+'-pagination').show();
-      $('#'+section+'-next').show();
-    }
-
-    if (queryObj.hasPrevious()) {
-      $('#'+section+'-pagination').show();
-      $('#'+section+'-previous').show();
-    }
-  }
-
-  function hideCurlCommand(section) {
-    $('#'+section+'-curl-container').hide();
-    $('#'+section+'-curl-token').hide();
-  }
-
-  function showCurlCommand(section, curl, token) {
-    var data = {
-      curlData: curl,
-      sectionName: section
-    };
-    var sectionId = $('#'+section+'-curl-container');
-    sectionId.html("");
-    $.tmpl('apigee.ui.curl.detail.html', data).appendTo(sectionId);
-    sectionId.show();
-    if (!token) {
-      $('#'+section+'-curl-token').hide();
-    }
-  }
-
-  function copyCurlCommand() {
-    $('#copypath', 'body')
-      .find('a')
-      .livequery('click', function() {
-        $(this)
-          .blur();
-        var nodetext = $('#'+section+'-curl').html();
-        $('#copypath input').focus();
-        $('#copypath input').select();
-        return false;
-      });
-
-  }
-
-  function bindPagingEvents(section) {
-    $(document).off('click', '#'+section+'-previous', getPrevious);
-    $(document).off('click', '#'+section+'-next', getNext);
-    //bind the click events
-    $(document).on('click', '#'+section+'-previous', getPrevious);
-    $(document).on('click', '#'+section+'-next', getNext);
-  }
-  Usergrid.console.bindPagingEvents = bindPagingEvents;
-
-  function getPrevious() { //called by a click event - for paging
-    queryObj.getPrevious();
-    runAppQuery();
-  }
-  function getNext() { //called by a click event - for paging
-    queryObj.getNext();
-    runAppQuery();
-  }
-
-  function runAppQuery(_queryObj) {
-    var obj = _queryObj || queryObj;
-    Usergrid.ApiClient.runAppQuery(obj);
-    return false;
-  }
-
-  function runManagementQuery(_queryObj) {
-    var obj = _queryObj || queryObj;
-    Usergrid.ApiClient.runManagementQuery(obj);
-    return false;
-  }
-
-  /*******************************************************************
-   *
-   * Users
-   *
-   ******************************************************************/
-  var userLetter = "*";
-  var userSortBy = "username";
-
-  function pageSelectUsers() {
-    //Hide old Alert Messages
-    hideModal('#users-messages');
-    //make a new query object
-    queryObj = new Usergrid.Query(null);
-    //bind events for previous and next buttons
-    bindPagingEvents('users');
-    //reset paging so we start at the first page
-    queryObj.resetPaging();
-    //the method to get the compile and call the query
-    getUsers();
-    //ui stuff
-    selectFirstTabButton('#users-panel-tab-bar');
-    showPanelList('users');
-    $('#search-user-username').val(''); //reset the search box
-  }
-  window.Usergrid.console.pageSelectUsers = pageSelectUsers;
-
-  function getUsers(search, searchType) {
-    //clear out the table before we start
-    hideCurlCommand('users');
-    var output = $('#users-table');
-    output.empty();
-    var query = {"ql" : "order by " + userSortBy}; //default to built in search
-    if (typeof search == 'string') {
-      if (search.length > 0) {
-        if (searchType == 'name') {
-          query = {"ql" : searchType + " contains '" + search + "*'"};
-        } else {
-          query = {"ql" : searchType + "='" + search + "*'"};
-        }
-      }
-    } else if (userLetter != "*") {
-      query = {"ql" : searchType + "='" + userLetter + "*'"};
-    }
-
-    queryObj = new Usergrid.Query("GET", "users", null, query, getUsersCallback, function() { alertModal("Error", "Unable to retrieve users."); });
-    runAppQuery(queryObj);
-  }
-
-  function getUsersCallback(response) {
-    response = escapeMe(response);
-    hidePagination('users');
-    var output = $('#users-table');
-    if (response.entities.length < 1) {
-      output.replaceWith('<div id="users-table" class="panel-section-message">No users found.</div>');
-    } else {
-      output.replaceWith('<table id="users-table" class="table"><tbody><tr class="zebraRows users-row"><td class="checkboxo"><input type="checkbox" onclick="Usergrid.console.selectAllEntities(this);" /></td><td class="gravatar50-td">&nbsp;</td><td class="user-details bold-header">username</td><td class="user-details bold-header">Display Name</td><td class="view-details">&nbsp;</td></tr></tbody></table>');
-      for (i = 0; i < response.entities.length; i++) {
-        var this_data = response.entities[i];
-        if (!this_data.picture) {
-          this_data.picture = window.location.protocol+ "//" + window.location.host + window.location.pathname + "images/user-photo.png"
-        } else {
-          this_data.picture = get_replacementGravatar(this_data.picture);
-        }
-        $.tmpl('apigee.ui.users.table_rows.html', this_data).appendTo('#users-table');
-      }
-    }
-    showPagination('users');
-    showCurlCommand('users', queryObj.getCurl(), queryObj.getToken());
-  }
-
-  function showUsersForSearch(search){
-    selectFirstTabButton('#users-panel-tab-bar');
-    $('#users-panel-search').hide();
-    selectTabButton('#button-users-list');
-    $('#users-panel-list').show();
-    userLetter = search;
-    getUsers();
-  }
-  Usergrid.console.showUsersForSearch = showUsersForSearch;
-
-  function searchUsers(){
-    var search = $('#search-user-username').val();
-    var searchType = ($('#search-user-type').val())?$('#search-user-type').val():userSortBy;
-    //make sure the input is valid:
-    if (searchType == 'name') {
-      searchType = 'name';
-    } else if (searchType == 'username') {searchType = 'username';}
-    getUsers(search, searchType);
-  }
-  Usergrid.console.searchUsers = searchUsers;
-
-  function selectAllEntities(checkbox){
-    if (checkbox.checked) {
-      $('[class=listItem]').attr('checked', true);
-    } else {
-      $('[class=listItem]').attr('checked', false);
-    }
-  }
-  window.Usergrid.console.selectAllEntities = selectAllEntities;
-
-  $('#delete-users-link').click(deleteUsers);
-  function deleteUsers(e) {
-    e.preventDefault();
-
-    var items = $('#users-table input[class^=listItem]:checked');
-    if(!items.length){
-      alertModal("Error", "Please, first select the users you want to delete.");
-      return;
-    }
-
-    confirmDelete(function(){
-      items.each(function() {
-        var userId = $(this).attr("value");
-        runAppQuery(new Usergrid.Query("DELETE", 'users/' + userId, null, null,
-          getUsers,
-          function() { alertModal("Error", "Unable to delete user - " + userId) }
-        ));
-      });
-    });
-  }
-
-  /*******************************************************************
-   *
-   * User
-   *
-   ******************************************************************/
-
-  function pageOpenUserProfile(userName) {
-    hideModal('.messages');
-    Pages.SelectPanel('user');
-    requestUser(userName);
-    selectTabButton('#button-user-profile');
-    showPanelContent('#user-panel', '#user-panel-profile');
-  }
-  window.Usergrid.console.pageOpenUserProfile = pageOpenUserProfile;
-
-  function pageOpenUserActivities(userId) {
-    Pages.SelectPanel('user');
-    requestUser(userId);
-    selectTabButton('#button-user-activities');
-    showPanelContent('#user-panel', '#user-panel-activities');
-  }
-  window.Usergrid.console.pageOpenUserActivities = pageOpenUserActivities;
-
-  function pageSelectUserPermissions(userId) {
-    Pages.SelectPanel('user');
-    requestUser(userId);
-    selectTabButton('#button-user-permissions');
-    showPanelContent('#user-panel', '#user-panel-permissions');
-  }
-  window.Usergrid.console.pageSelectUserPermissions = pageSelectUserPermissions;
-
-  function pageSelectUserGroups(userId) {
-    Pages.SelectPanel('user');
-    requestUser(userId);
-    selectTabButton('#button-user-memberships');
-    showPanelContent('#user-panel', '#user-panel-memberships');
-  }
-
-  function pageSelectUserGraph(userId) {
-    Pages.SelectPanel('user');
-    requestUser(userId);
-    selectTabButton('#button-user-graph');
-    showPanelContent('#user-panel', '#user-panel-graph');
-  }
-
-  window.Usergrid.console.pageSelectUserGroups = pageSelectUserGroups;
-
-  function saveUserProfile(uuid){
-    var payload = Usergrid.console.ui.jsonSchemaToPayload(Usergrid.console.ui.collections.vcard_schema);
-    runAppQuery(new Usergrid.Query("PUT", "users/"+uuid, payload, null,
-      completeSave,
-      function() { alertModal("Error", "Unable to update User"); }
-    ));
-  }
-  window.Usergrid.console.saveUserProfile = saveUserProfile;
-
-  function completeSave(){
-    closeMessage = function() {
-      $('.messages').hide();
-    };
-    var closebutton = '<a  onclick="closeMessage();" class="close">&times;</a>'
-    $('.messages').text("Information Saved.").prepend(closebutton).show();
-  }
-
-  function redrawUserProfile(data, curl){
-    redrawFormPanel('user-panel-profile', 'apigee.ui.panels.user.profile.html', data);
-    showCurlCommand('user-panel-profile', curl);
-  };
-
-  function redrawUserMemberships(data, curl){
-    redrawPanel('user-panel-memberships', 'apigee.ui.panels.user.memberships.html', data);
-    showCurlCommand('user-panel-memberships', curl);
-    updateGroupsAutocomplete();
-  };
-
-  function redrawUserActivities(data, curl){
-    redrawPanel('user-panel-activities', 'apigee.ui.panels.user.activities.html', data);
-    showCurlCommand('user-panel-activities', curl);
-  };
-
-  function redrawUserGraph(data, curlFollowing, curlFollowers){
-    redrawPanel('user-panel-graph', 'apigee.ui.panels.user.graph.html', data);
-    showCurlCommand('user-panel-following', curlFollowing);
-    showCurlCommand('user-panel-followers', curlFollowers);
-    updateFollowUserAutocomplete();
-  };
-
-  function redrawUserPermissions(data, curlRoles, curlPermissions){
-    redrawPanel('user-panel-permissions', 'apigee.ui.panels.user.permissions.html', data);
-    showCurlCommand('user-panel-roles', curlRoles);
-    showCurlCommand('user-panel-permissions', curlPermissions);
-    updateRolesAutocomplete();
-    updateQueryAutocompleteCollectionsUsers();
-  };
-
-  function redrawPanel(panelDiv, panelTemplate, data){
-    $("#"+panelDiv).html("");
-    $.tmpl(panelTemplate, data).appendTo($("#"+panelDiv));
-  };
-
-  function redrawGroupForm(panelDiv, panelTemplate, data){
-    $("#"+panelDiv).html("");
-    var details = $.tmpl(panelTemplate, data);
-    var formDiv = details.find('.query-result-form');
-    $(formDiv).buildForm(Usergrid.console.ui.jsonSchemaToDForm(Usergrid.console.ui.collections.group_schema, data.entity));
-    details.appendTo($("#"+panelDiv));
-    details.find('.button').button();
-  }
-
-  function redrawFormPanel(panelDiv, panelTemplate, data){
-    $("#"+panelDiv).html("");
-    var details = $.tmpl(panelTemplate, data);
-    var formDiv = details.find('.query-result-form');
-    $(formDiv).buildForm(Usergrid.console.ui.jsonSchemaToDForm(Usergrid.console.ui.collections.vcard_schema, data.entity));
-    details.appendTo($("#"+panelDiv));
-  };
-
-  function saveUserData(){
-    Usergrid.console.ui.jsonSchemaToPayload(schema, obj);
-  }
-
-  var user_data = null;
-
-  function handleUserResponse(response) {
-    if (response.entities && (response.entities.length > 0)) {
-      var entity = response.entities[0];
-      var path = response.path || "";
-      path = "" + path.match(/[^?]*/);
-      var username = entity.username;
-      var name = entity.uuid + " : " + entity.type;
-
-      if (entity.username) {
-        name = entity.username;
-      }
-
-      if (entity.name) {
-        name = name + " : " + entity.name;
-      }
-
-      var collections = $.extend({ }, (entity.metadata || { }).collections, (entity.metadata || { }).connections);
-      if ($.isEmptyObject(collections)){
-        collections = null;
-      }
-
-      var entity_contents = $.extend( false, { }, entity);
-      delete entity_contents['metadata'];
-
-      var metadata = entity.metadata;
-      if ($.isEmptyObject(metadata)){
-        metadata = null;
-      }
-
-      var entity_path = (entity.metadata || {}).path;
-      if ($.isEmptyObject(entity_path)) {
-        entity_path = path + "/" + entity.uuid;
-      }
-
-      var picture = window.location.protocol+ "//" + window.location.host + window.location.pathname + "images/user_profile.png";
-      if (entity.picture) {
-        entity.picture = entity.picture.replace(/^http:\/\/www.gravatar/i, 'https://secure.gravatar');
-        //note: changing this to use the image on apigee.com - since the gravatar default won't work on any non-public domains such as localhost
-        //this_data.picture = this_data.picture + encodeURI("?d="+window.location.protocol+"//" + window.location.host + window.location.pathname + "images/user_profile.png");
-        picture = entity.picture + encodeURI("?d=https://apigee.com/usergrid/img/user_profile.png");
-      }
-
-      var data = {
-        entity: entity_contents,
-        picture: picture,
-        name: name,
-        username: username,
-        path: entity_path,
-        collections: collections,
-        metadata: metadata,
-        uri: (entity.metadata || { }).uri,
-        followingCurl: "",
-        followersCurl: "",
-        rolesCurl: "",
-        permissionsCurl: ""
-      }
-
-      redrawUserProfile(data, this.getCurl());
-
-      //TODO: This block and the subsequent blocks could all be methods of their own
-      runAppQuery(new Usergrid.Query("GET", 'users/' + entity.username + '/groups', null, null,
-        function(response) {
-          if (data && response.entities && (response.entities.length > 0)) {
-            data.memberships = response.entities;
-          }
-          redrawUserMemberships(data, this.getCurl());
-        },
-        function() { alertModal("Error", "Unable to retrieve user's groups."); }
-      ));
-
-      runAppQuery(new Usergrid.Query("GET", 'users/' + entity.username + '/activities', null, null,
-        function(response) {
-          if (data && response.entities && (response.entities.length > 0)) {
-            data.activities = response.entities;
-            data.curl = this.getCurl();
-            $('span[id^=activities-date-field]').each( function() {
-              var created = dateToString(parseInt($(this).html()))
-              $(this).html(created);
-            });
-          }
-          redrawUserActivities(data, this.getCurl());
-        },
-        function() { alertModal("Error", "Unable to retrieve user's activities.");}
-      ));
-
-      runAppQuery(new Usergrid.Query("GET", 'users/' + entity.username + '/roles', null, null,
-        function(response) {
-          response = escapeMe(response);
-          if (data && response.entities && (response.entities.length > 0)) {
-            data.roles = response.entities;
-          } else {
-            data.roles = null;
-          }
-          data.rolesCurl = this.getCurl();
-          //Run Permissions query after roles query has been handled
-          runAppQuery(new Usergrid.Query("GET", 'users/' + entity.username + '/permissions', null, null,
-            function(response) {
-              var permissions = {};
-              if (data && response.data && (response.data.length > 0)) {
-
-                if (response.data) {
-                  var perms = response.data;
-                  var count = 0;
-
-                  for (var i in perms) {
-                    count++;
-                    var perm = perms[i];
-                    var parts = perm.split(':');
-                    var ops_part = "";
-                    var path_part = parts[0];
-
-                    if (parts.length > 1) {
-                      ops_part = parts[0];
-                      path_part = parts[1];
-                    }
-
-                    ops_part.replace("*", "get,post,put,delete")
-                    var ops = ops_part.split(',');
-                    permissions[perm] = {ops : {}, path : path_part, perm : perm};
-
-                    for (var j in o

<TRUNCATED>

[46/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/dash/test/lib/angular/angular-scenario.js
----------------------------------------------------------------------
diff --git a/deleted/archive/dash/test/lib/angular/angular-scenario.js b/deleted/archive/dash/test/lib/angular/angular-scenario.js
deleted file mode 100644
index 538a799..0000000
--- a/deleted/archive/dash/test/lib/angular/angular-scenario.js
+++ /dev/null
@@ -1,26195 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.7.2
- * http://jquery.com/
- *
- * Copyright 2011, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2011, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Wed Mar 21 12:46:34 2012 -0700
- */
-(function( window, undefined ) {
-'use strict';
-
-// Use the correct document accordingly with window argument (sandbox)
-var document = window.document,
-	navigator = window.navigator,
-	location = window.location;
-var jQuery = (function() {
-
-// Define a local copy of jQuery
-var jQuery = function( selector, context ) {
-		// The jQuery object is actually just the init constructor 'enhanced'
-		return new jQuery.fn.init( selector, context, rootjQuery );
-	},
-
-	// Map over jQuery in case of overwrite
-	_jQuery = window.jQuery,
-
-	// Map over the $ in case of overwrite
-	_$ = window.$,
-
-	// A central reference to the root jQuery(document)
-	rootjQuery,
-
-	// A simple way to check for HTML strings or ID strings
-	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
-	quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
-
-	// Check if a string has a non-whitespace character in it
-	rnotwhite = /\S/,
-
-	// Used for trimming whitespace
-	trimLeft = /^\s+/,
-	trimRight = /\s+$/,
-
-	// Match a standalone tag
-	rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
-
-	// JSON RegExp
-	rvalidchars = /^[\],:{}\s]*$/,
-	rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
-	rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
-	rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
-
-	// Useragent RegExp
-	rwebkit = /(webkit)[ \/]([\w.]+)/,
-	ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
-	rmsie = /(msie) ([\w.]+)/,
-	rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
-
-	// Matches dashed string for camelizing
-	rdashAlpha = /-([a-z]|[0-9])/ig,
-	rmsPrefix = /^-ms-/,
-
-	// Used by jQuery.camelCase as callback to replace()
-	fcamelCase = function( all, letter ) {
-		return ( letter + "" ).toUpperCase();
-	},
-
-	// Keep a UserAgent string for use with jQuery.browser
-	userAgent = navigator.userAgent,
-
-	// For matching the engine and version of the browser
-	browserMatch,
-
-	// The deferred used on DOM ready
-	readyList,
-
-	// The ready event handler
-	DOMContentLoaded,
-
-	// Save a reference to some core methods
-	toString = Object.prototype.toString,
-	hasOwn = Object.prototype.hasOwnProperty,
-	push = Array.prototype.push,
-	slice = Array.prototype.slice,
-	trim = String.prototype.trim,
-	indexOf = Array.prototype.indexOf,
-
-	// [[Class]] -> type pairs
-	class2type = {};
-
-jQuery.fn = jQuery.prototype = {
-	constructor: jQuery,
-	init: function( selector, context, rootjQuery ) {
-		var match, elem, ret, doc;
-
-		// Handle $(""), $(null), or $(undefined)
-		if ( !selector ) {
-			return this;
-		}
-
-		// Handle $(DOMElement)
-		if ( selector.nodeType ) {
-			this.context = this[0] = selector;
-			this.length = 1;
-			return this;
-		}
-
-		// The body element only exists once, optimize finding it
-		if ( selector === "body" && !context && document.body ) {
-			this.context = document;
-			this[0] = document.body;
-			this.selector = selector;
-			this.length = 1;
-			return this;
-		}
-
-		// Handle HTML strings
-		if ( typeof selector === "string" ) {
-			// Are we dealing with HTML string or an ID?
-			if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
-				// Assume that strings that start and end with <> are HTML and skip the regex check
-				match = [ null, selector, null ];
-
-			} else {
-				match = quickExpr.exec( selector );
-			}
-
-			// Verify a match, and that no context was specified for #id
-			if ( match && (match[1] || !context) ) {
-
-				// HANDLE: $(html) -> $(array)
-				if ( match[1] ) {
-					context = context instanceof jQuery ? context[0] : context;
-					doc = ( context ? context.ownerDocument || context : document );
-
-					// If a single string is passed in and it's a single tag
-					// just do a createElement and skip the rest
-					ret = rsingleTag.exec( selector );
-
-					if ( ret ) {
-						if ( jQuery.isPlainObject( context ) ) {
-							selector = [ document.createElement( ret[1] ) ];
-							jQuery.fn.attr.call( selector, context, true );
-
-						} else {
-							selector = [ doc.createElement( ret[1] ) ];
-						}
-
-					} else {
-						ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
-						selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes;
-					}
-
-					return jQuery.merge( this, selector );
-
-				// HANDLE: $("#id")
-				} else {
-					elem = document.getElementById( match[2] );
-
-					// Check parentNode to catch when Blackberry 4.6 returns
-					// nodes that are no longer in the document #6963
-					if ( elem && elem.parentNode ) {
-						// Handle the case where IE and Opera return items
-						// by name instead of ID
-						if ( elem.id !== match[2] ) {
-							return rootjQuery.find( selector );
-						}
-
-						// Otherwise, we inject the element directly into the jQuery object
-						this.length = 1;
-						this[0] = elem;
-					}
-
-					this.context = document;
-					this.selector = selector;
-					return this;
-				}
-
-			// HANDLE: $(expr, $(...))
-			} else if ( !context || context.jquery ) {
-				return ( context || rootjQuery ).find( selector );
-
-			// HANDLE: $(expr, context)
-			// (which is just equivalent to: $(context).find(expr)
-			} else {
-				return this.constructor( context ).find( selector );
-			}
-
-		// HANDLE: $(function)
-		// Shortcut for document ready
-		} else if ( jQuery.isFunction( selector ) ) {
-			return rootjQuery.ready( selector );
-		}
-
-		if ( selector.selector !== undefined ) {
-			this.selector = selector.selector;
-			this.context = selector.context;
-		}
-
-		return jQuery.makeArray( selector, this );
-	},
-
-	// Start with an empty selector
-	selector: "",
-
-	// The current version of jQuery being used
-	jquery: "1.7.2",
-
-	// The default length of a jQuery object is 0
-	length: 0,
-
-	// The number of elements contained in the matched element set
-	size: function() {
-		return this.length;
-	},
-
-	toArray: function() {
-		return slice.call( this, 0 );
-	},
-
-	// Get the Nth element in the matched element set OR
-	// Get the whole matched element set as a clean array
-	get: function( num ) {
-		return num == null ?
-
-			// Return a 'clean' array
-			this.toArray() :
-
-			// Return just the object
-			( num < 0 ? this[ this.length + num ] : this[ num ] );
-	},
-
-	// Take an array of elements and push it onto the stack
-	// (returning the new matched element set)
-	pushStack: function( elems, name, selector ) {
-		// Build a new jQuery matched element set
-		var ret = this.constructor();
-
-		if ( jQuery.isArray( elems ) ) {
-			push.apply( ret, elems );
-
-		} else {
-			jQuery.merge( ret, elems );
-		}
-
-		// Add the old object onto the stack (as a reference)
-		ret.prevObject = this;
-
-		ret.context = this.context;
-
-		if ( name === "find" ) {
-			ret.selector = this.selector + ( this.selector ? " " : "" ) + selector;
-		} else if ( name ) {
-			ret.selector = this.selector + "." + name + "(" + selector + ")";
-		}
-
-		// Return the newly-formed element set
-		return ret;
-	},
-
-	// Execute a callback for every element in the matched set.
-	// (You can seed the arguments with an array of args, but this is
-	// only used internally.)
-	each: function( callback, args ) {
-		return jQuery.each( this, callback, args );
-	},
-
-	ready: function( fn ) {
-		// Attach the listeners
-		jQuery.bindReady();
-
-		// Add the callback
-		readyList.add( fn );
-
-		return this;
-	},
-
-	eq: function( i ) {
-		i = +i;
-		return i === -1 ?
-			this.slice( i ) :
-			this.slice( i, i + 1 );
-	},
-
-	first: function() {
-		return this.eq( 0 );
-	},
-
-	last: function() {
-		return this.eq( -1 );
-	},
-
-	slice: function() {
-		return this.pushStack( slice.apply( this, arguments ),
-			"slice", slice.call(arguments).join(",") );
-	},
-
-	map: function( callback ) {
-		return this.pushStack( jQuery.map(this, function( elem, i ) {
-			return callback.call( elem, i, elem );
-		}));
-	},
-
-	end: function() {
-		return this.prevObject || this.constructor(null);
-	},
-
-	// For internal use only.
-	// Behaves like an Array's method, not like a jQuery method.
-	push: push,
-	sort: [].sort,
-	splice: [].splice
-};
-
-// Give the init function the jQuery prototype for later instantiation
-jQuery.fn.init.prototype = jQuery.fn;
-
-jQuery.extend = jQuery.fn.extend = function() {
-	var options, name, src, copy, copyIsArray, clone,
-		target = arguments[0] || {},
-		i = 1,
-		length = arguments.length,
-		deep = false;
-
-	// Handle a deep copy situation
-	if ( typeof target === "boolean" ) {
-		deep = target;
-		target = arguments[1] || {};
-		// skip the boolean and the target
-		i = 2;
-	}
-
-	// Handle case when target is a string or something (possible in deep copy)
-	if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
-		target = {};
-	}
-
-	// extend jQuery itself if only one argument is passed
-	if ( length === i ) {
-		target = this;
-		--i;
-	}
-
-	for ( ; i < length; i++ ) {
-		// Only deal with non-null/undefined values
-		if ( (options = arguments[ i ]) != null ) {
-			// Extend the base object
-			for ( name in options ) {
-				src = target[ name ];
-				copy = options[ name ];
-
-				// Prevent never-ending loop
-				if ( target === copy ) {
-					continue;
-				}
-
-				// Recurse if we're merging plain objects or arrays
-				if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
-					if ( copyIsArray ) {
-						copyIsArray = false;
-						clone = src && jQuery.isArray(src) ? src : [];
-
-					} else {
-						clone = src && jQuery.isPlainObject(src) ? src : {};
-					}
-
-					// Never move original objects, clone them
-					target[ name ] = jQuery.extend( deep, clone, copy );
-
-				// Don't bring in undefined values
-				} else if ( copy !== undefined ) {
-					target[ name ] = copy;
-				}
-			}
-		}
-	}
-
-	// Return the modified object
-	return target;
-};
-
-jQuery.extend({
-	noConflict: function( deep ) {
-		if ( window.$ === jQuery ) {
-			window.$ = _$;
-		}
-
-		if ( deep && window.jQuery === jQuery ) {
-			window.jQuery = _jQuery;
-		}
-
-		return jQuery;
-	},
-
-	// Is the DOM ready to be used? Set to true once it occurs.
-	isReady: false,
-
-	// A counter to track how many items to wait for before
-	// the ready event fires. See #6781
-	readyWait: 1,
-
-	// Hold (or release) the ready event
-	holdReady: function( hold ) {
-		if ( hold ) {
-			jQuery.readyWait++;
-		} else {
-			jQuery.ready( true );
-		}
-	},
-
-	// Handle when the DOM is ready
-	ready: function( wait ) {
-		// Either a released hold or an DOMready/load event and not yet ready
-		if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
-			// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
-			if ( !document.body ) {
-				return setTimeout( jQuery.ready, 1 );
-			}
-
-			// Remember that the DOM is ready
-			jQuery.isReady = true;
-
-			// If a normal DOM Ready event fired, decrement, and wait if need be
-			if ( wait !== true && --jQuery.readyWait > 0 ) {
-				return;
-			}
-
-			// If there are functions bound, to execute
-			readyList.fireWith( document, [ jQuery ] );
-
-			// Trigger any bound ready events
-			if ( jQuery.fn.trigger ) {
-				jQuery( document ).trigger( "ready" ).off( "ready" );
-			}
-		}
-	},
-
-	bindReady: function() {
-		if ( readyList ) {
-			return;
-		}
-
-		readyList = jQuery.Callbacks( "once memory" );
-
-		// Catch cases where $(document).ready() is called after the
-		// browser event has already occurred.
-		if ( document.readyState === "complete" ) {
-			// Handle it asynchronously to allow scripts the opportunity to delay ready
-			return setTimeout( jQuery.ready, 1 );
-		}
-
-		// Mozilla, Opera and webkit nightlies currently support this event
-		if ( document.addEventListener ) {
-			// Use the handy event callback
-			document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
-
-			// A fallback to window.onload, that will always work
-			window.addEventListener( "load", jQuery.ready, false );
-
-		// If IE event model is used
-		} else if ( document.attachEvent ) {
-			// ensure firing before onload,
-			// maybe late but safe also for iframes
-			document.attachEvent( "onreadystatechange", DOMContentLoaded );
-
-			// A fallback to window.onload, that will always work
-			window.attachEvent( "onload", jQuery.ready );
-
-			// If IE and not a frame
-			// continually check to see if the document is ready
-			var toplevel = false;
-
-			try {
-				toplevel = window.frameElement == null;
-			} catch(e) {}
-
-			if ( document.documentElement.doScroll && toplevel ) {
-				doScrollCheck();
-			}
-		}
-	},
-
-	// See test/unit/core.js for details concerning isFunction.
-	// Since version 1.3, DOM methods and functions like alert
-	// aren't supported. They return false on IE (#2968).
-	isFunction: function( obj ) {
-		return jQuery.type(obj) === "function";
-	},
-
-	isArray: Array.isArray || function( obj ) {
-		return jQuery.type(obj) === "array";
-	},
-
-	isWindow: function( obj ) {
-		return obj != null && obj == obj.window;
-	},
-
-	isNumeric: function( obj ) {
-		return !isNaN( parseFloat(obj) ) && isFinite( obj );
-	},
-
-	type: function( obj ) {
-		return obj == null ?
-			String( obj ) :
-			class2type[ toString.call(obj) ] || "object";
-	},
-
-	isPlainObject: function( obj ) {
-		// Must be an Object.
-		// Because of IE, we also have to check the presence of the constructor property.
-		// Make sure that DOM nodes and window objects don't pass through, as well
-		if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
-			return false;
-		}
-
-		try {
-			// Not own constructor property must be Object
-			if ( obj.constructor &&
-				!hasOwn.call(obj, "constructor") &&
-				!hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
-				return false;
-			}
-		} catch ( e ) {
-			// IE8,9 Will throw exceptions on certain host objects #9897
-			return false;
-		}
-
-		// Own properties are enumerated firstly, so to speed up,
-		// if last one is own, then all properties are own.
-
-		var key;
-		for ( key in obj ) {}
-
-		return key === undefined || hasOwn.call( obj, key );
-	},
-
-	isEmptyObject: function( obj ) {
-		for ( var name in obj ) {
-			return false;
-		}
-		return true;
-	},
-
-	error: function( msg ) {
-		throw new Error( msg );
-	},
-
-	parseJSON: function( data ) {
-		if ( typeof data !== "string" || !data ) {
-			return null;
-		}
-
-		// Make sure leading/trailing whitespace is removed (IE can't handle it)
-		data = jQuery.trim( data );
-
-		// Attempt to parse using the native JSON parser first
-		if ( window.JSON && window.JSON.parse ) {
-			return window.JSON.parse( data );
-		}
-
-		// Make sure the incoming data is actual JSON
-		// Logic borrowed from http://json.org/json2.js
-		if ( rvalidchars.test( data.replace( rvalidescape, "@" )
-			.replace( rvalidtokens, "]" )
-			.replace( rvalidbraces, "")) ) {
-
-			return ( new Function( "return " + data ) )();
-
-		}
-		jQuery.error( "Invalid JSON: " + data );
-	},
-
-	// Cross-browser xml parsing
-	parseXML: function( data ) {
-		if ( typeof data !== "string" || !data ) {
-			return null;
-		}
-		var xml, tmp;
-		try {
-			if ( window.DOMParser ) { // Standard
-				tmp = new DOMParser();
-				xml = tmp.parseFromString( data , "text/xml" );
-			} else { // IE
-				xml = new ActiveXObject( "Microsoft.XMLDOM" );
-				xml.async = "false";
-				xml.loadXML( data );
-			}
-		} catch( e ) {
-			xml = undefined;
-		}
-		if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
-			jQuery.error( "Invalid XML: " + data );
-		}
-		return xml;
-	},
-
-	noop: function() {},
-
-	// Evaluates a script in a global context
-	// Workarounds based on findings by Jim Driscoll
-	// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
-	globalEval: function( data ) {
-		if ( data && rnotwhite.test( data ) ) {
-			// We use execScript on Internet Explorer
-			// We use an anonymous function so that context is window
-			// rather than jQuery in Firefox
-			( window.execScript || function( data ) {
-				window[ "eval" ].call( window, data );
-			} )( data );
-		}
-	},
-
-	// Convert dashed to camelCase; used by the css and data modules
-	// Microsoft forgot to hump their vendor prefix (#9572)
-	camelCase: function( string ) {
-		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
-	},
-
-	nodeName: function( elem, name ) {
-		return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
-	},
-
-	// args is for internal usage only
-	each: function( object, callback, args ) {
-		var name, i = 0,
-			length = object.length,
-			isObj = length === undefined || jQuery.isFunction( object );
-
-		if ( args ) {
-			if ( isObj ) {
-				for ( name in object ) {
-					if ( callback.apply( object[ name ], args ) === false ) {
-						break;
-					}
-				}
-			} else {
-				for ( ; i < length; ) {
-					if ( callback.apply( object[ i++ ], args ) === false ) {
-						break;
-					}
-				}
-			}
-
-		// A special, fast, case for the most common use of each
-		} else {
-			if ( isObj ) {
-				for ( name in object ) {
-					if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
-						break;
-					}
-				}
-			} else {
-				for ( ; i < length; ) {
-					if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
-						break;
-					}
-				}
-			}
-		}
-
-		return object;
-	},
-
-	// Use native String.trim function wherever possible
-	trim: trim ?
-		function( text ) {
-			return text == null ?
-				"" :
-				trim.call( text );
-		} :
-
-		// Otherwise use our own trimming functionality
-		function( text ) {
-			return text == null ?
-				"" :
-				text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
-		},
-
-	// results is for internal usage only
-	makeArray: function( array, results ) {
-		var ret = results || [];
-
-		if ( array != null ) {
-			// The window, strings (and functions) also have 'length'
-			// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
-			var type = jQuery.type( array );
-
-			if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
-				push.call( ret, array );
-			} else {
-				jQuery.merge( ret, array );
-			}
-		}
-
-		return ret;
-	},
-
-	inArray: function( elem, array, i ) {
-		var len;
-
-		if ( array ) {
-			if ( indexOf ) {
-				return indexOf.call( array, elem, i );
-			}
-
-			len = array.length;
-			i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
-
-			for ( ; i < len; i++ ) {
-				// Skip accessing in sparse arrays
-				if ( i in array && array[ i ] === elem ) {
-					return i;
-				}
-			}
-		}
-
-		return -1;
-	},
-
-	merge: function( first, second ) {
-		var i = first.length,
-			j = 0;
-
-		if ( typeof second.length === "number" ) {
-			for ( var l = second.length; j < l; j++ ) {
-				first[ i++ ] = second[ j ];
-			}
-
-		} else {
-			while ( second[j] !== undefined ) {
-				first[ i++ ] = second[ j++ ];
-			}
-		}
-
-		first.length = i;
-
-		return first;
-	},
-
-	grep: function( elems, callback, inv ) {
-		var ret = [], retVal;
-		inv = !!inv;
-
-		// Go through the array, only saving the items
-		// that pass the validator function
-		for ( var i = 0, length = elems.length; i < length; i++ ) {
-			retVal = !!callback( elems[ i ], i );
-			if ( inv !== retVal ) {
-				ret.push( elems[ i ] );
-			}
-		}
-
-		return ret;
-	},
-
-	// arg is for internal usage only
-	map: function( elems, callback, arg ) {
-		var value, key, ret = [],
-			i = 0,
-			length = elems.length,
-			// jquery objects are treated as arrays
-			isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
-
-		// Go through the array, translating each of the items to their
-		if ( isArray ) {
-			for ( ; i < length; i++ ) {
-				value = callback( elems[ i ], i, arg );
-
-				if ( value != null ) {
-					ret[ ret.length ] = value;
-				}
-			}
-
-		// Go through every key on the object,
-		} else {
-			for ( key in elems ) {
-				value = callback( elems[ key ], key, arg );
-
-				if ( value != null ) {
-					ret[ ret.length ] = value;
-				}
-			}
-		}
-
-		// Flatten any nested arrays
-		return ret.concat.apply( [], ret );
-	},
-
-	// A global GUID counter for objects
-	guid: 1,
-
-	// Bind a function to a context, optionally partially applying any
-	// arguments.
-	proxy: function( fn, context ) {
-		if ( typeof context === "string" ) {
-			var tmp = fn[ context ];
-			context = fn;
-			fn = tmp;
-		}
-
-		// Quick check to determine if target is callable, in the spec
-		// this throws a TypeError, but we will just return undefined.
-		if ( !jQuery.isFunction( fn ) ) {
-			return undefined;
-		}
-
-		// Simulated bind
-		var args = slice.call( arguments, 2 ),
-			proxy = function() {
-				return fn.apply( context, args.concat( slice.call( arguments ) ) );
-			};
-
-		// Set the guid of unique handler to the same of original handler, so it can be removed
-		proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
-
-		return proxy;
-	},
-
-	// Mutifunctional method to get and set values to a collection
-	// The value/s can optionally be executed if it's a function
-	access: function( elems, fn, key, value, chainable, emptyGet, pass ) {
-		var exec,
-			bulk = key == null,
-			i = 0,
-			length = elems.length;
-
-		// Sets many values
-		if ( key && typeof key === "object" ) {
-			for ( i in key ) {
-				jQuery.access( elems, fn, i, key[i], 1, emptyGet, value );
-			}
-			chainable = 1;
-
-		// Sets one value
-		} else if ( value !== undefined ) {
-			// Optionally, function values get executed if exec is true
-			exec = pass === undefined && jQuery.isFunction( value );
-
-			if ( bulk ) {
-				// Bulk operations only iterate when executing function values
-				if ( exec ) {
-					exec = fn;
-					fn = function( elem, key, value ) {
-						return exec.call( jQuery( elem ), value );
-					};
-
-				// Otherwise they run against the entire set
-				} else {
-					fn.call( elems, value );
-					fn = null;
-				}
-			}
-
-			if ( fn ) {
-				for (; i < length; i++ ) {
-					fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
-				}
-			}
-
-			chainable = 1;
-		}
-
-		return chainable ?
-			elems :
-
-			// Gets
-			bulk ?
-				fn.call( elems ) :
-				length ? fn( elems[0], key ) : emptyGet;
-	},
-
-	now: function() {
-		return ( new Date() ).getTime();
-	},
-
-	// Use of jQuery.browser is frowned upon.
-	// More details: http://docs.jquery.com/Utilities/jQuery.browser
-	uaMatch: function( ua ) {
-		ua = ua.toLowerCase();
-
-		var match = rwebkit.exec( ua ) ||
-			ropera.exec( ua ) ||
-			rmsie.exec( ua ) ||
-			ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
-			[];
-
-		return { browser: match[1] || "", version: match[2] || "0" };
-	},
-
-	sub: function() {
-		function jQuerySub( selector, context ) {
-			return new jQuerySub.fn.init( selector, context );
-		}
-		jQuery.extend( true, jQuerySub, this );
-		jQuerySub.superclass = this;
-		jQuerySub.fn = jQuerySub.prototype = this();
-		jQuerySub.fn.constructor = jQuerySub;
-		jQuerySub.sub = this.sub;
-		jQuerySub.fn.init = function init( selector, context ) {
-			if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
-				context = jQuerySub( context );
-			}
-
-			return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
-		};
-		jQuerySub.fn.init.prototype = jQuerySub.fn;
-		var rootjQuerySub = jQuerySub(document);
-		return jQuerySub;
-	},
-
-	browser: {}
-});
-
-// Populate the class2type map
-jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
-	class2type[ "[object " + name + "]" ] = name.toLowerCase();
-});
-
-browserMatch = jQuery.uaMatch( userAgent );
-if ( browserMatch.browser ) {
-	jQuery.browser[ browserMatch.browser ] = true;
-	jQuery.browser.version = browserMatch.version;
-}
-
-// Deprecated, use jQuery.browser.webkit instead
-if ( jQuery.browser.webkit ) {
-	jQuery.browser.safari = true;
-}
-
-// IE doesn't match non-breaking spaces with \s
-if ( rnotwhite.test( "\xA0" ) ) {
-	trimLeft = /^[\s\xA0]+/;
-	trimRight = /[\s\xA0]+$/;
-}
-
-// All jQuery objects should point back to these
-rootjQuery = jQuery(document);
-
-// Cleanup functions for the document ready method
-if ( document.addEventListener ) {
-	DOMContentLoaded = function() {
-		document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
-		jQuery.ready();
-	};
-
-} else if ( document.attachEvent ) {
-	DOMContentLoaded = function() {
-		// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
-		if ( document.readyState === "complete" ) {
-			document.detachEvent( "onreadystatechange", DOMContentLoaded );
-			jQuery.ready();
-		}
-	};
-}
-
-// The DOM ready check for Internet Explorer
-function doScrollCheck() {
-	if ( jQuery.isReady ) {
-		return;
-	}
-
-	try {
-		// If IE is used, use the trick by Diego Perini
-		// http://javascript.nwbox.com/IEContentLoaded/
-		document.documentElement.doScroll("left");
-	} catch(e) {
-		setTimeout( doScrollCheck, 1 );
-		return;
-	}
-
-	// and execute any waiting functions
-	jQuery.ready();
-}
-
-return jQuery;
-
-})();
-
-
-// String to Object flags format cache
-var flagsCache = {};
-
-// Convert String-formatted flags into Object-formatted ones and store in cache
-function createFlags( flags ) {
-	var object = flagsCache[ flags ] = {},
-		i, length;
-	flags = flags.split( /\s+/ );
-	for ( i = 0, length = flags.length; i < length; i++ ) {
-		object[ flags[i] ] = true;
-	}
-	return object;
-}
-
-/*
- * Create a callback list using the following parameters:
- *
- *	flags:	an optional list of space-separated flags that will change how
- *			the callback list behaves
- *
- * By default a callback list will act like an event callback list and can be
- * "fired" multiple times.
- *
- * Possible flags:
- *
- *	once:			will ensure the callback list can only be fired once (like a Deferred)
- *
- *	memory:			will keep track of previous values and will call any callback added
- *					after the list has been fired right away with the latest "memorized"
- *					values (like a Deferred)
- *
- *	unique:			will ensure a callback can only be added once (no duplicate in the list)
- *
- *	stopOnFalse:	interrupt callings when a callback returns false
- *
- */
-jQuery.Callbacks = function( flags ) {
-
-	// Convert flags from String-formatted to Object-formatted
-	// (we check in cache first)
-	flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};
-
-	var // Actual callback list
-		list = [],
-		// Stack of fire calls for repeatable lists
-		stack = [],
-		// Last fire value (for non-forgettable lists)
-		memory,
-		// Flag to know if list was already fired
-		fired,
-		// Flag to know if list is currently firing
-		firing,
-		// First callback to fire (used internally by add and fireWith)
-		firingStart,
-		// End of the loop when firing
-		firingLength,
-		// Index of currently firing callback (modified by remove if needed)
-		firingIndex,
-		// Add one or several callbacks to the list
-		add = function( args ) {
-			var i,
-				length,
-				elem,
-				type,
-				actual;
-			for ( i = 0, length = args.length; i < length; i++ ) {
-				elem = args[ i ];
-				type = jQuery.type( elem );
-				if ( type === "array" ) {
-					// Inspect recursively
-					add( elem );
-				} else if ( type === "function" ) {
-					// Add if not in unique mode and callback is not in
-					if ( !flags.unique || !self.has( elem ) ) {
-						list.push( elem );
-					}
-				}
-			}
-		},
-		// Fire callbacks
-		fire = function( context, args ) {
-			args = args || [];
-			memory = !flags.memory || [ context, args ];
-			fired = true;
-			firing = true;
-			firingIndex = firingStart || 0;
-			firingStart = 0;
-			firingLength = list.length;
-			for ( ; list && firingIndex < firingLength; firingIndex++ ) {
-				if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {
-					memory = true; // Mark as halted
-					break;
-				}
-			}
-			firing = false;
-			if ( list ) {
-				if ( !flags.once ) {
-					if ( stack && stack.length ) {
-						memory = stack.shift();
-						self.fireWith( memory[ 0 ], memory[ 1 ] );
-					}
-				} else if ( memory === true ) {
-					self.disable();
-				} else {
-					list = [];
-				}
-			}
-		},
-		// Actual Callbacks object
-		self = {
-			// Add a callback or a collection of callbacks to the list
-			add: function() {
-				if ( list ) {
-					var length = list.length;
-					add( arguments );
-					// Do we need to add the callbacks to the
-					// current firing batch?
-					if ( firing ) {
-						firingLength = list.length;
-					// With memory, if we're not firing then
-					// we should call right away, unless previous
-					// firing was halted (stopOnFalse)
-					} else if ( memory && memory !== true ) {
-						firingStart = length;
-						fire( memory[ 0 ], memory[ 1 ] );
-					}
-				}
-				return this;
-			},
-			// Remove a callback from the list
-			remove: function() {
-				if ( list ) {
-					var args = arguments,
-						argIndex = 0,
-						argLength = args.length;
-					for ( ; argIndex < argLength ; argIndex++ ) {
-						for ( var i = 0; i < list.length; i++ ) {
-							if ( args[ argIndex ] === list[ i ] ) {
-								// Handle firingIndex and firingLength
-								if ( firing ) {
-									if ( i <= firingLength ) {
-										firingLength--;
-										if ( i <= firingIndex ) {
-											firingIndex--;
-										}
-									}
-								}
-								// Remove the element
-								list.splice( i--, 1 );
-								// If we have some unicity property then
-								// we only need to do this once
-								if ( flags.unique ) {
-									break;
-								}
-							}
-						}
-					}
-				}
-				return this;
-			},
-			// Control if a given callback is in the list
-			has: function( fn ) {
-				if ( list ) {
-					var i = 0,
-						length = list.length;
-					for ( ; i < length; i++ ) {
-						if ( fn === list[ i ] ) {
-							return true;
-						}
-					}
-				}
-				return false;
-			},
-			// Remove all callbacks from the list
-			empty: function() {
-				list = [];
-				return this;
-			},
-			// Have the list do nothing anymore
-			disable: function() {
-				list = stack = memory = undefined;
-				return this;
-			},
-			// Is it disabled?
-			disabled: function() {
-				return !list;
-			},
-			// Lock the list in its current state
-			lock: function() {
-				stack = undefined;
-				if ( !memory || memory === true ) {
-					self.disable();
-				}
-				return this;
-			},
-			// Is it locked?
-			locked: function() {
-				return !stack;
-			},
-			// Call all callbacks with the given context and arguments
-			fireWith: function( context, args ) {
-				if ( stack ) {
-					if ( firing ) {
-						if ( !flags.once ) {
-							stack.push( [ context, args ] );
-						}
-					} else if ( !( flags.once && memory ) ) {
-						fire( context, args );
-					}
-				}
-				return this;
-			},
-			// Call all the callbacks with the given arguments
-			fire: function() {
-				self.fireWith( this, arguments );
-				return this;
-			},
-			// To know if the callbacks have already been called at least once
-			fired: function() {
-				return !!fired;
-			}
-		};
-
-	return self;
-};
-
-
-
-
-var // Static reference to slice
-	sliceDeferred = [].slice;
-
-jQuery.extend({
-
-	Deferred: function( func ) {
-		var doneList = jQuery.Callbacks( "once memory" ),
-			failList = jQuery.Callbacks( "once memory" ),
-			progressList = jQuery.Callbacks( "memory" ),
-			state = "pending",
-			lists = {
-				resolve: doneList,
-				reject: failList,
-				notify: progressList
-			},
-			promise = {
-				done: doneList.add,
-				fail: failList.add,
-				progress: progressList.add,
-
-				state: function() {
-					return state;
-				},
-
-				// Deprecated
-				isResolved: doneList.fired,
-				isRejected: failList.fired,
-
-				then: function( doneCallbacks, failCallbacks, progressCallbacks ) {
-					deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );
-					return this;
-				},
-				always: function() {
-					deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments );
-					return this;
-				},
-				pipe: function( fnDone, fnFail, fnProgress ) {
-					return jQuery.Deferred(function( newDefer ) {
-						jQuery.each( {
-							done: [ fnDone, "resolve" ],
-							fail: [ fnFail, "reject" ],
-							progress: [ fnProgress, "notify" ]
-						}, function( handler, data ) {
-							var fn = data[ 0 ],
-								action = data[ 1 ],
-								returned;
-							if ( jQuery.isFunction( fn ) ) {
-								deferred[ handler ](function() {
-									returned = fn.apply( this, arguments );
-									if ( returned && jQuery.isFunction( returned.promise ) ) {
-										returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify );
-									} else {
-										newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
-									}
-								});
-							} else {
-								deferred[ handler ]( newDefer[ action ] );
-							}
-						});
-					}).promise();
-				},
-				// Get a promise for this deferred
-				// If obj is provided, the promise aspect is added to the object
-				promise: function( obj ) {
-					if ( obj == null ) {
-						obj = promise;
-					} else {
-						for ( var key in promise ) {
-							obj[ key ] = promise[ key ];
-						}
-					}
-					return obj;
-				}
-			},
-			deferred = promise.promise({}),
-			key;
-
-		for ( key in lists ) {
-			deferred[ key ] = lists[ key ].fire;
-			deferred[ key + "With" ] = lists[ key ].fireWith;
-		}
-
-		// Handle state
-		deferred.done( function() {
-			state = "resolved";
-		}, failList.disable, progressList.lock ).fail( function() {
-			state = "rejected";
-		}, doneList.disable, progressList.lock );
-
-		// Call given func if any
-		if ( func ) {
-			func.call( deferred, deferred );
-		}
-
-		// All done!
-		return deferred;
-	},
-
-	// Deferred helper
-	when: function( firstParam ) {
-		var args = sliceDeferred.call( arguments, 0 ),
-			i = 0,
-			length = args.length,
-			pValues = new Array( length ),
-			count = length,
-			pCount = length,
-			deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?
-				firstParam :
-				jQuery.Deferred(),
-			promise = deferred.promise();
-		function resolveFunc( i ) {
-			return function( value ) {
-				args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
-				if ( !( --count ) ) {
-					deferred.resolveWith( deferred, args );
-				}
-			};
-		}
-		function progressFunc( i ) {
-			return function( value ) {
-				pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
-				deferred.notifyWith( promise, pValues );
-			};
-		}
-		if ( length > 1 ) {
-			for ( ; i < length; i++ ) {
-				if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) {
-					args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) );
-				} else {
-					--count;
-				}
-			}
-			if ( !count ) {
-				deferred.resolveWith( deferred, args );
-			}
-		} else if ( deferred !== firstParam ) {
-			deferred.resolveWith( deferred, length ? [ firstParam ] : [] );
-		}
-		return promise;
-	}
-});
-
-
-
-
-jQuery.support = (function() {
-
-	var support,
-		all,
-		a,
-		select,
-		opt,
-		input,
-		fragment,
-		tds,
-		events,
-		eventName,
-		i,
-		isSupported,
-		div = document.createElement( "div" ),
-		documentElement = document.documentElement;
-
-	// Preliminary tests
-	div.setAttribute("className", "t");
-	div.innerHTML = "   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
-
-	all = div.getElementsByTagName( "*" );
-	a = div.getElementsByTagName( "a" )[ 0 ];
-
-	// Can't get basic test support
-	if ( !all || !all.length || !a ) {
-		return {};
-	}
-
-	// First batch of supports tests
-	select = document.createElement( "select" );
-	opt = select.appendChild( document.createElement("option") );
-	input = div.getElementsByTagName( "input" )[ 0 ];
-
-	support = {
-		// IE strips leading whitespace when .innerHTML is used
-		leadingWhitespace: ( div.firstChild.nodeType === 3 ),
-
-		// Make sure that tbody elements aren't automatically inserted
-		// IE will insert them into empty tables
-		tbody: !div.getElementsByTagName("tbody").length,
-
-		// Make sure that link elements get serialized correctly by innerHTML
-		// This requires a wrapper element in IE
-		htmlSerialize: !!div.getElementsByTagName("link").length,
-
-		// Get the style information from getAttribute
-		// (IE uses .cssText instead)
-		style: /top/.test( a.getAttribute("style") ),
-
-		// Make sure that URLs aren't manipulated
-		// (IE normalizes it by default)
-		hrefNormalized: ( a.getAttribute("href") === "/a" ),
-
-		// Make sure that element opacity exists
-		// (IE uses filter instead)
-		// Use a regex to work around a WebKit issue. See #5145
-		opacity: /^0.55/.test( a.style.opacity ),
-
-		// Verify style float existence
-		// (IE uses styleFloat instead of cssFloat)
-		cssFloat: !!a.style.cssFloat,
-
-		// Make sure that if no value is specified for a checkbox
-		// that it defaults to "on".
-		// (WebKit defaults to "" instead)
-		checkOn: ( input.value === "on" ),
-
-		// Make sure that a selected-by-default option has a working selected property.
-		// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
-		optSelected: opt.selected,
-
-		// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
-		getSetAttribute: div.className !== "t",
-
-		// Tests for enctype support on a form(#6743)
-		enctype: !!document.createElement("form").enctype,
-
-		// Makes sure cloning an html5 element does not cause problems
-		// Where outerHTML is undefined, this still works
-		html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",
-
-		// Will be defined later
-		submitBubbles: true,
-		changeBubbles: true,
-		focusinBubbles: false,
-		deleteExpando: true,
-		noCloneEvent: true,
-		inlineBlockNeedsLayout: false,
-		shrinkWrapBlocks: false,
-		reliableMarginRight: true,
-		pixelMargin: true
-	};
-
-	// jQuery.boxModel DEPRECATED in 1.3, use jQuery.support.boxModel instead
-	jQuery.boxModel = support.boxModel = (document.compatMode === "CSS1Compat");
-
-	// Make sure checked status is properly cloned
-	input.checked = true;
-	support.noCloneChecked = input.cloneNode( true ).checked;
-
-	// Make sure that the options inside disabled selects aren't marked as disabled
-	// (WebKit marks them as disabled)
-	select.disabled = true;
-	support.optDisabled = !opt.disabled;
-
-	// Test to see if it's possible to delete an expando from an element
-	// Fails in Internet Explorer
-	try {
-		delete div.test;
-	} catch( e ) {
-		support.deleteExpando = false;
-	}
-
-	if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
-		div.attachEvent( "onclick", function() {
-			// Cloning a node shouldn't copy over any
-			// bound event handlers (IE does this)
-			support.noCloneEvent = false;
-		});
-		div.cloneNode( true ).fireEvent( "onclick" );
-	}
-
-	// Check if a radio maintains its value
-	// after being appended to the DOM
-	input = document.createElement("input");
-	input.value = "t";
-	input.setAttribute("type", "radio");
-	support.radioValue = input.value === "t";
-
-	input.setAttribute("checked", "checked");
-
-	// #11217 - WebKit loses check when the name is after the checked attribute
-	input.setAttribute( "name", "t" );
-
-	div.appendChild( input );
-	fragment = document.createDocumentFragment();
-	fragment.appendChild( div.lastChild );
-
-	// WebKit doesn't clone checked state correctly in fragments
-	support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
-
-	// Check if a disconnected checkbox will retain its checked
-	// value of true after appended to the DOM (IE6/7)
-	support.appendChecked = input.checked;
-
-	fragment.removeChild( input );
-	fragment.appendChild( div );
-
-	// Technique from Juriy Zaytsev
-	// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
-	// We only care about the case where non-standard event systems
-	// are used, namely in IE. Short-circuiting here helps us to
-	// avoid an eval call (in setAttribute) which can cause CSP
-	// to go haywire. See: https://developer.mozilla.org/en/Security/CSP
-	if ( div.attachEvent ) {
-		for ( i in {
-			submit: 1,
-			change: 1,
-			focusin: 1
-		}) {
-			eventName = "on" + i;
-			isSupported = ( eventName in div );
-			if ( !isSupported ) {
-				div.setAttribute( eventName, "return;" );
-				isSupported = ( typeof div[ eventName ] === "function" );
-			}
-			support[ i + "Bubbles" ] = isSupported;
-		}
-	}
-
-	fragment.removeChild( div );
-
-	// Null elements to avoid leaks in IE
-	fragment = select = opt = div = input = null;
-
-	// Run tests that need a body at doc ready
-	jQuery(function() {
-		var container, outer, inner, table, td, offsetSupport,
-			marginDiv, conMarginTop, style, html, positionTopLeftWidthHeight,
-			paddingMarginBorderVisibility, paddingMarginBorder,
-			body = document.getElementsByTagName("body")[0];
-
-		if ( !body ) {
-			// Return for frameset docs that don't have a body
-			return;
-		}
-
-		conMarginTop = 1;
-		paddingMarginBorder = "padding:0;margin:0;border:";
-		positionTopLeftWidthHeight = "position:absolute;top:0;left:0;width:1px;height:1px;";
-		paddingMarginBorderVisibility = paddingMarginBorder + "0;visibility:hidden;";
-		style = "style='" + positionTopLeftWidthHeight + paddingMarginBorder + "5px solid #000;";
-		html = "<div " + style + "display:block;'><div style='" + paddingMarginBorder + "0;display:block;overflow:hidden;'></div></div>" +
-			"<table " + style + "' cellpadding='0' cellspacing='0'>" +
-			"<tr><td></td></tr></table>";
-
-		container = document.createElement("div");
-		container.style.cssText = paddingMarginBorderVisibility + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px";
-		body.insertBefore( container, body.firstChild );
-
-		// Construct the test element
-		div = document.createElement("div");
-		container.appendChild( div );
-
-		// Check if table cells still have offsetWidth/Height when they are set
-		// to display:none and there are still other visible table cells in a
-		// table row; if so, offsetWidth/Height are not reliable for use when
-		// determining if an element has been hidden directly using
-		// display:none (it is still safe to use offsets if a parent element is
-		// hidden; don safety goggles and see bug #4512 for more information).
-		// (only IE 8 fails this test)
-		div.innerHTML = "<table><tr><td style='" + paddingMarginBorder + "0;display:none'></td><td>t</td></tr></table>";
-		tds = div.getElementsByTagName( "td" );
-		isSupported = ( tds[ 0 ].offsetHeight === 0 );
-
-		tds[ 0 ].style.display = "";
-		tds[ 1 ].style.display = "none";
-
-		// Check if empty table cells still have offsetWidth/Height
-		// (IE <= 8 fail this test)
-		support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
-
-		// Check if div with explicit width and no margin-right incorrectly
-		// gets computed margin-right based on width of container. For more
-		// info see bug #3333
-		// Fails in WebKit before Feb 2011 nightlies
-		// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
-		if ( window.getComputedStyle ) {
-			div.innerHTML = "";
-			marginDiv = document.createElement( "div" );
-			marginDiv.style.width = "0";
-			marginDiv.style.marginRight = "0";
-			div.style.width = "2px";
-			div.appendChild( marginDiv );
-			support.reliableMarginRight =
-				( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;
-		}
-
-		if ( typeof div.style.zoom !== "undefined" ) {
-			// Check if natively block-level elements act like inline-block
-			// elements when setting their display to 'inline' and giving
-			// them layout
-			// (IE < 8 does this)
-			div.innerHTML = "";
-			div.style.width = div.style.padding = "1px";
-			div.style.border = 0;
-			div.style.overflow = "hidden";
-			div.style.display = "inline";
-			div.style.zoom = 1;
-			support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
-
-			// Check if elements with layout shrink-wrap their children
-			// (IE 6 does this)
-			div.style.display = "block";
-			div.style.overflow = "visible";
-			div.innerHTML = "<div style='width:5px;'></div>";
-			support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
-		}
-
-		div.style.cssText = positionTopLeftWidthHeight + paddingMarginBorderVisibility;
-		div.innerHTML = html;
-
-		outer = div.firstChild;
-		inner = outer.firstChild;
-		td = outer.nextSibling.firstChild.firstChild;
-
-		offsetSupport = {
-			doesNotAddBorder: ( inner.offsetTop !== 5 ),
-			doesAddBorderForTableAndCells: ( td.offsetTop === 5 )
-		};
-
-		inner.style.position = "fixed";
-		inner.style.top = "20px";
-
-		// safari subtracts parent border width here which is 5px
-		offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 );
-		inner.style.position = inner.style.top = "";
-
-		outer.style.overflow = "hidden";
-		outer.style.position = "relative";
-
-		offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 );
-		offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop );
-
-		if ( window.getComputedStyle ) {
-			div.style.marginTop = "1%";
-			support.pixelMargin = ( window.getComputedStyle( div, null ) || { marginTop: 0 } ).marginTop !== "1%";
-		}
-
-		if ( typeof container.style.zoom !== "undefined" ) {
-			container.style.zoom = 1;
-		}
-
-		body.removeChild( container );
-		marginDiv = div = container = null;
-
-		jQuery.extend( support, offsetSupport );
-	});
-
-	return support;
-})();
-
-
-
-
-var rbrace = /^(?:\{.*\}|\[.*\])$/,
-	rmultiDash = /([A-Z])/g;
-
-jQuery.extend({
-	cache: {},
-
-	// Please use with caution
-	uuid: 0,
-
-	// Unique for each copy of jQuery on the page
-	// Non-digits removed to match rinlinejQuery
-	expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
-
-	// The following elements throw uncatchable exceptions if you
-	// attempt to add expando properties to them.
-	noData: {
-		"embed": true,
-		// Ban all objects except for Flash (which handle expandos)
-		"object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
-		"applet": true
-	},
-
-	hasData: function( elem ) {
-		elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
-		return !!elem && !isEmptyDataObject( elem );
-	},
-
-	data: function( elem, name, data, pvt /* Internal Use Only */ ) {
-		if ( !jQuery.acceptData( elem ) ) {
-			return;
-		}
-
-		var privateCache, thisCache, ret,
-			internalKey = jQuery.expando,
-			getByName = typeof name === "string",
-
-			// We have to handle DOM nodes and JS objects differently because IE6-7
-			// can't GC object references properly across the DOM-JS boundary
-			isNode = elem.nodeType,
-
-			// Only DOM nodes need the global jQuery cache; JS object data is
-			// attached directly to the object so GC can occur automatically
-			cache = isNode ? jQuery.cache : elem,
-
-			// Only defining an ID for JS objects if its cache already exists allows
-			// the code to shortcut on the same path as a DOM node with no cache
-			id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey,
-			isEvents = name === "events";
-
-		// Avoid doing any more work than we need to when trying to get data on an
-		// object that has no data at all
-		if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) {
-			return;
-		}
-
-		if ( !id ) {
-			// Only DOM nodes need a new unique ID for each element since their data
-			// ends up in the global cache
-			if ( isNode ) {
-				elem[ internalKey ] = id = ++jQuery.uuid;
-			} else {
-				id = internalKey;
-			}
-		}
-
-		if ( !cache[ id ] ) {
-			cache[ id ] = {};
-
-			// Avoids exposing jQuery metadata on plain JS objects when the object
-			// is serialized using JSON.stringify
-			if ( !isNode ) {
-				cache[ id ].toJSON = jQuery.noop;
-			}
-		}
-
-		// An object can be passed to jQuery.data instead of a key/value pair; this gets
-		// shallow copied over onto the existing cache
-		if ( typeof name === "object" || typeof name === "function" ) {
-			if ( pvt ) {
-				cache[ id ] = jQuery.extend( cache[ id ], name );
-			} else {
-				cache[ id ].data = jQuery.extend( cache[ id ].data, name );
-			}
-		}
-
-		privateCache = thisCache = cache[ id ];
-
-		// jQuery data() is stored in a separate object inside the object's internal data
-		// cache in order to avoid key collisions between internal data and user-defined
-		// data.
-		if ( !pvt ) {
-			if ( !thisCache.data ) {
-				thisCache.data = {};
-			}
-
-			thisCache = thisCache.data;
-		}
-
-		if ( data !== undefined ) {
-			thisCache[ jQuery.camelCase( name ) ] = data;
-		}
-
-		// Users should not attempt to inspect the internal events object using jQuery.data,
-		// it is undocumented and subject to change. But does anyone listen? No.
-		if ( isEvents && !thisCache[ name ] ) {
-			return privateCache.events;
-		}
-
-		// Check for both converted-to-camel and non-converted data property names
-		// If a data property was specified
-		if ( getByName ) {
-
-			// First Try to find as-is property data
-			ret = thisCache[ name ];
-
-			// Test for null|undefined property data
-			if ( ret == null ) {
-
-				// Try to find the camelCased property
-				ret = thisCache[ jQuery.camelCase( name ) ];
-			}
-		} else {
-			ret = thisCache;
-		}
-
-		return ret;
-	},
-
-	removeData: function( elem, name, pvt /* Internal Use Only */ ) {
-		if ( !jQuery.acceptData( elem ) ) {
-			return;
-		}
-
-		var thisCache, i, l,
-
-			// Reference to internal data cache key
-			internalKey = jQuery.expando,
-
-			isNode = elem.nodeType,
-
-			// See jQuery.data for more information
-			cache = isNode ? jQuery.cache : elem,
-
-			// See jQuery.data for more information
-			id = isNode ? elem[ internalKey ] : internalKey;
-
-		// If there is already no cache entry for this object, there is no
-		// purpose in continuing
-		if ( !cache[ id ] ) {
-			return;
-		}
-
-		if ( name ) {
-
-			thisCache = pvt ? cache[ id ] : cache[ id ].data;
-
-			if ( thisCache ) {
-
-				// Support array or space separated string names for data keys
-				if ( !jQuery.isArray( name ) ) {
-
-					// try the string as a key before any manipulation
-					if ( name in thisCache ) {
-						name = [ name ];
-					} else {
-
-						// split the camel cased version by spaces unless a key with the spaces exists
-						name = jQuery.camelCase( name );
-						if ( name in thisCache ) {
-							name = [ name ];
-						} else {
-							name = name.split( " " );
-						}
-					}
-				}
-
-				for ( i = 0, l = name.length; i < l; i++ ) {
-					delete thisCache[ name[i] ];
-				}
-
-				// If there is no data left in the cache, we want to continue
-				// and let the cache object itself get destroyed
-				if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
-					return;
-				}
-			}
-		}
-
-		// See jQuery.data for more information
-		if ( !pvt ) {
-			delete cache[ id ].data;
-
-			// Don't destroy the parent cache unless the internal data object
-			// had been the only thing left in it
-			if ( !isEmptyDataObject(cache[ id ]) ) {
-				return;
-			}
-		}
-
-		// Browsers that fail expando deletion also refuse to delete expandos on
-		// the window, but it will allow it on all other JS objects; other browsers
-		// don't care
-		// Ensure that `cache` is not a window object #10080
-		if ( jQuery.support.deleteExpando || !cache.setInterval ) {
-			delete cache[ id ];
-		} else {
-			cache[ id ] = null;
-		}
-
-		// We destroyed the cache and need to eliminate the expando on the node to avoid
-		// false lookups in the cache for entries that no longer exist
-		if ( isNode ) {
-			// IE does not allow us to delete expando properties from nodes,
-			// nor does it have a removeAttribute function on Document nodes;
-			// we must handle all of these cases
-			if ( jQuery.support.deleteExpando ) {
-				delete elem[ internalKey ];
-			} else if ( elem.removeAttribute ) {
-				elem.removeAttribute( internalKey );
-			} else {
-				elem[ internalKey ] = null;
-			}
-		}
-	},
-
-	// For internal use only.
-	_data: function( elem, name, data ) {
-		return jQuery.data( elem, name, data, true );
-	},
-
-	// A method for determining if a DOM node can handle the data expando
-	acceptData: function( elem ) {
-		if ( elem.nodeName ) {
-			var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
-
-			if ( match ) {
-				return !(match === true || elem.getAttribute("classid") !== match);
-			}
-		}
-
-		return true;
-	}
-});
-
-jQuery.fn.extend({
-	data: function( key, value ) {
-		var parts, part, attr, name, l,
-			elem = this[0],
-			i = 0,
-			data = null;
-
-		// Gets all values
-		if ( key === undefined ) {
-			if ( this.length ) {
-				data = jQuery.data( elem );
-
-				if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
-					attr = elem.attributes;
-					for ( l = attr.length; i < l; i++ ) {
-						name = attr[i].name;
-
-						if ( name.indexOf( "data-" ) === 0 ) {
-							name = jQuery.camelCase( name.substring(5) );
-
-							dataAttr( elem, name, data[ name ] );
-						}
-					}
-					jQuery._data( elem, "parsedAttrs", true );
-				}
-			}
-
-			return data;
-		}
-
-		// Sets multiple values
-		if ( typeof key === "object" ) {
-			return this.each(function() {
-				jQuery.data( this, key );
-			});
-		}
-
-		parts = key.split( ".", 2 );
-		parts[1] = parts[1] ? "." + parts[1] : "";
-		part = parts[1] + "!";
-
-		return jQuery.access( this, function( value ) {
-
-			if ( value === undefined ) {
-				data = this.triggerHandler( "getData" + part, [ parts[0] ] );
-
-				// Try to fetch any internally stored data first
-				if ( data === undefined && elem ) {
-					data = jQuery.data( elem, key );
-					data = dataAttr( elem, key, data );
-				}
-
-				return data === undefined && parts[1] ?
-					this.data( parts[0] ) :
-					data;
-			}
-
-			parts[1] = value;
-			this.each(function() {
-				var self = jQuery( this );
-
-				self.triggerHandler( "setData" + part, parts );
-				jQuery.data( this, key, value );
-				self.triggerHandler( "changeData" + part, parts );
-			});
-		}, null, value, arguments.length > 1, null, false );
-	},
-
-	removeData: function( key ) {
-		return this.each(function() {
-			jQuery.removeData( this, key );
-		});
-	}
-});
-
-function dataAttr( elem, key, data ) {
-	// If nothing was found internally, try to fetch any
-	// data from the HTML5 data-* attribute
-	if ( data === undefined && elem.nodeType === 1 ) {
-
-		var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
-
-		data = elem.getAttribute( name );
-
-		if ( typeof data === "string" ) {
-			try {
-				data = data === "true" ? true :
-				data === "false" ? false :
-				data === "null" ? null :
-				jQuery.isNumeric( data ) ? +data :
-					rbrace.test( data ) ? jQuery.parseJSON( data ) :
-					data;
-			} catch( e ) {}
-
-			// Make sure we set the data so it isn't changed later
-			jQuery.data( elem, key, data );
-
-		} else {
-			data = undefined;
-		}
-	}
-
-	return data;
-}
-
-// checks a cache object for emptiness
-function isEmptyDataObject( obj ) {
-	for ( var name in obj ) {
-
-		// if the public data object is empty, the private is still empty
-		if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
-			continue;
-		}
-		if ( name !== "toJSON" ) {
-			return false;
-		}
-	}
-
-	return true;
-}
-
-
-
-
-function handleQueueMarkDefer( elem, type, src ) {
-	var deferDataKey = type + "defer",
-		queueDataKey = type + "queue",
-		markDataKey = type + "mark",
-		defer = jQuery._data( elem, deferDataKey );
-	if ( defer &&
-		( src === "queue" || !jQuery._data(elem, queueDataKey) ) &&
-		( src === "mark" || !jQuery._data(elem, markDataKey) ) ) {
-		// Give room for hard-coded callbacks to fire first
-		// and eventually mark/queue something else on the element
-		setTimeout( function() {
-			if ( !jQuery._data( elem, queueDataKey ) &&
-				!jQuery._data( elem, markDataKey ) ) {
-				jQuery.removeData( elem, deferDataKey, true );
-				defer.fire();
-			}
-		}, 0 );
-	}
-}
-
-jQuery.extend({
-
-	_mark: function( elem, type ) {
-		if ( elem ) {
-			type = ( type || "fx" ) + "mark";
-			jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 );
-		}
-	},
-
-	_unmark: function( force, elem, type ) {
-		if ( force !== true ) {
-			type = elem;
-			elem = force;
-			force = false;
-		}
-		if ( elem ) {
-			type = type || "fx";
-			var key = type + "mark",
-				count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 );
-			if ( count ) {
-				jQuery._data( elem, key, count );
-			} else {
-				jQuery.removeData( elem, key, true );
-				handleQueueMarkDefer( elem, type, "mark" );
-			}
-		}
-	},
-
-	queue: function( elem, type, data ) {
-		var q;
-		if ( elem ) {
-			type = ( type || "fx" ) + "queue";
-			q = jQuery._data( elem, type );
-
-			// Speed up dequeue by getting out quickly if this is just a lookup
-			if ( data ) {
-				if ( !q || jQuery.isArray(data) ) {
-					q = jQuery._data( elem, type, jQuery.makeArray(data) );
-				} else {
-					q.push( data );
-				}
-			}
-			return q || [];
-		}
-	},
-
-	dequeue: function( elem, type ) {
-		type = type || "fx";
-
-		var queue = jQuery.queue( elem, type ),
-			fn = queue.shift(),
-			hooks = {};
-
-		// If the fx queue is dequeued, always remove the progress sentinel
-		if ( fn === "inprogress" ) {
-			fn = queue.shift();
-		}
-
-		if ( fn ) {
-			// Add a progress sentinel to prevent the fx queue from being
-			// automatically dequeued
-			if ( type === "fx" ) {
-				queue.unshift( "inprogress" );
-			}
-
-			jQuery._data( elem, type + ".run", hooks );
-			fn.call( elem, function() {
-				jQuery.dequeue( elem, type );
-			}, hooks );
-		}
-
-		if ( !queue.length ) {
-			jQuery.removeData( elem, type + "queue " + type + ".run", true );
-			handleQueueMarkDefer( elem, type, "queue" );
-		}
-	}
-});
-
-jQuery.fn.extend({
-	queue: function( type, data ) {
-		var setter = 2;
-
-		if ( typeof type !== "string" ) {
-			data = type;
-			type = "fx";
-			setter--;
-		}
-
-		if ( arguments.length < setter ) {
-			return jQuery.queue( this[0], type );
-		}
-
-		return data === undefined ?
-			this :
-			this.each(function() {
-				var queue = jQuery.queue( this, type, data );
-
-				if ( type === "fx" && queue[0] !== "inprogress" ) {
-					jQuery.dequeue( this, type );
-				}
-			});
-	},
-	dequeue: function( type ) {
-		return this.each(function() {
-			jQuery.dequeue( this, type );
-		});
-	},
-	// Based off of the plugin by Clint Helfers, with permission.
-	// http://blindsignals.com/index.php/2009/07/jquery-delay/
-	delay: function( time, type ) {
-		time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
-		type = type || "fx";
-
-		return this.queue( type, function( next, hooks ) {
-			var timeout = setTimeout( next, time );
-			hooks.stop = function() {
-				clearTimeout( timeout );
-			};
-		});
-	},
-	clearQueue: function( type ) {
-		return this.queue( type || "fx", [] );
-	},
-	// Get a promise resolved when queues of a certain type
-	// are emptied (fx is the type by default)
-	promise: function( type, object ) {
-		if ( typeof type !== "string" ) {
-			object = type;
-			type = undefined;
-		}
-		type = type || "fx";
-		var defer = jQuery.Deferred(),
-			elements = this,
-			i = elements.length,
-			count = 1,
-			deferDataKey = type + "defer",
-			queueDataKey = type + "queue",
-			markDataKey = type + "mark",
-			tmp;
-		function resolve() {
-			if ( !( --count ) ) {
-				defer.resolveWith( elements, [ elements ] );
-			}
-		}
-		while( i-- ) {
-			if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||
-					( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||
-						jQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&
-					jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) {
-				count++;
-				tmp.add( resolve );
-			}
-		}
-		resolve();
-		return defer.promise( object );
-	}
-});
-
-
-
-
-var rclass = /[\n\t\r]/g,
-	rspace = /\s+/,
-	rreturn = /\r/g,
-	rtype = /^(?:button|input)$/i,
-	rfocusable = /^(?:button|input|object|select|textarea)$/i,
-	rclickable = /^a(?:rea)?$/i,
-	rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
-	getSetAttribute = jQuery.support.getSetAttribute,
-	nodeHook, boolHook, fixSpecified;
-
-jQuery.fn.extend({
-	attr: function( name, value ) {
-		return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
-	},
-
-	removeAttr: function( name ) {
-		return this.each(function() {
-			jQuery.removeAttr( this, name );
-		});
-	},
-
-	prop: function( name, value ) {
-		return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
-	},
-
-	removeProp: function( name ) {
-		name = jQuery.propFix[ name ] || name;
-		return this.each(function() {
-			// try/catch handles cases where IE balks (such as removing a property on window)
-			try {
-				this[ name ] = undefined;
-				delete this[ name ];
-			} catch( e ) {}
-		});
-	},
-
-	addClass: function( value ) {
-		var classNames, i, l, elem,
-			setClass, c, cl;
-
-		if ( jQuery.isFunction( value ) ) {
-			return this.each(function( j ) {
-				jQuery( this ).addClass( value.call(this, j, this.className) );
-			});
-		}
-
-		if ( value && typeof value === "string" ) {
-			classNames = value.split( rspace );
-
-			for ( i = 0, l = this.length; i < l; i++ ) {
-				elem = this[ i ];
-
-				if ( elem.nodeType === 1 ) {
-					if ( !elem.className && classNames.length === 1 ) {
-						elem.className = value;
-
-					} else {
-						setClass = " " + elem.className + " ";
-
-						for ( c = 0, cl = classNames.length; c < cl; c++ ) {
-							if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {
-								setClass += classNames[ c ] + " ";
-							}
-						}
-						elem.className = jQuery.trim( setClass );
-					}
-				}
-			}
-		}
-
-		return this;
-	},
-
-	removeClass: function( value ) {
-		var classNames, i, l, elem, className, c, cl;
-
-		if ( jQuery.isFunction( value ) ) {
-			return this.each(function( j ) {
-				jQuery( this ).removeClass( value.call(this, j, this.className) );
-			});
-		}
-
-		if ( (value && typeof value === "string") || value === undefined ) {
-			classNames = ( value || "" ).split( rspace );
-
-			for ( i = 0, l = this.length; i < l; i++ ) {
-				elem = this[ i ];
-
-				if ( elem.nodeType === 1 && elem.className ) {
-					if ( value ) {
-						className = (" " + elem.className + " ").replace( rclass, " " );
-						for ( c = 0, cl = classNames.length; c < cl; c++ ) {
-							className = className.replace(" " + classNames[ c ] + " ", " ");
-						}
-						elem.className = jQuery.trim( className );
-
-					} else {
-						elem.className = "";
-					}
-				}
-			}
-		}
-
-		return this;
-	},
-
-	toggleClass: function( value, stateVal ) {
-		var type = typeof value,
-			isBool = typeof stateVal === "boolean";
-
-		if ( jQuery.isFunction( value ) ) {
-			return this.each(function( i ) {
-				jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
-			});
-		}
-
-		return this.each(function() {
-			if ( type === "string" ) {
-				// toggle individual class names
-				var className,
-					i = 0,
-					self = jQuery( this ),
-					state = stateVal,
-					classNames = value.split( rspace );
-
-				while ( (className = classNames[ i++ ]) ) {
-					// check each className given, space seperated list
-					state = isBool ? state : !self.hasClass( className );
-					self[ state ? "addClass" : "removeClass" ]( className );
-				}
-
-			} else if ( type === "undefined" || type === "boolean" ) {
-				if ( this.className ) {
-					// store className if set
-					jQuery._data( this, "__className__", this.className );
-				}
-
-				// toggle whole className
-				this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
-			}
-		});
-	},
-
-	hasClass: function( selector ) {
-		var className = " " + selector + " ",
-			i = 0,
-			l = this.length;
-		for ( ; i < l; i++ ) {
-			if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
-				return true;
-			}
-		}
-
-		return false;
-	},
-
-	val: function( value ) {
-		var hooks, ret, isFunction,
-			elem = this[0];
-
-		if ( !arguments.length ) {
-			if ( elem ) {
-				hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
-
-				if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
-					return ret;
-				}
-
-				ret = elem.value;
-
-				return typeof ret === "string" ?
-					// handle most common string cases
-					ret.replace(rreturn, "") :
-					// handle cases where value is null/undef or number
-					ret == null ? "" : ret;
-			}
-
-			return;
-		}
-
-		isFunction = jQuery.isFunction( value );
-
-		return this.each(function( i ) {
-			var self = jQuery(this), val;
-
-			if ( this.nodeType !== 1 ) {
-				return;
-			}
-
-			if ( isFunction ) {
-				val = value.call( this, i, self.val() );
-			} else {
-				val = value;
-			}
-
-			// Treat null/undefined as ""; convert numbers to string
-			if ( val == null ) {
-				val = "";
-			} else if ( typeof val === "number" ) {
-				val += "";
-			} else if ( jQuery.isArray( val ) ) {
-				val = jQuery.map(val, function ( value ) {
-					return value == null ? "" : value + "";
-				});
-			}
-
-			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
-
-			// If set returns undefined, fall back to normal setting
-			if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
-				this.value = val;
-			}
-		});
-	}
-});
-
-jQuery.extend({
-	valHooks: {
-		option: {
-			get: function( elem ) {
-				// attributes.value is undefined in Blackberry 4.7 but
-				// uses .value. See #6932
-				var val = elem.attributes.value;
-				return !val || val.specified ? elem.value : elem.text;
-			}
-		},
-		select: {
-			get: function( elem ) {
-				var value, i, max, option,
-					index = elem.selectedIndex,
-					values = [],
-					options = elem.options,
-					one = elem.type === "select-one";
-
-				// Nothing was selected
-				if ( index < 0 ) {
-					return null;
-				}
-
-				// Loop through all the selected options
-				i = one ? index : 0;
-				max = one ? index + 1 : options.length;
-				for ( ; i < max; i++ ) {
-					option = options[ i ];
-
-					// Don't return options that are disabled or in a disabled optgroup
-					if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
-							(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
-
-						// Get the specific value for the option
-						value = jQuery( option ).val();
-
-						// We don't need an array for one selects
-						if ( one ) {
-							return value;
-						}
-
-						// Multi-Selects return an array
-						values.push( value );
-					}
-				}
-
-				// Fixes Bug #2551 -- select.val() broken in IE after form.reset()
-				if ( one && !values.length && options.length ) {
-					return jQuery( options[ index ] ).val();
-				}
-
-				return values;
-			},
-
-			set: function( elem, value ) {
-				var values = jQuery.makeArray( value );
-
-				jQuery(elem).find("option").each(function() {
-					this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
-				});
-
-				if ( !values.length ) {
-					elem.selectedIndex = -1;
-				}
-				return values;
-			}
-		}
-	},
-
-	attrFn: {
-		val: true,
-		css: true,
-		html: true,
-		text: true,
-		data: true,
-		width: true,
-		height: true,
-		offset: true
-	},
-
-	attr: function( elem, name, value, pass ) {
-		var ret, hooks, notxml,
-			nType = elem.nodeType;
-
-		// don't get/set attributes on text, comment and attribute nodes
-		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
-			return;
-		}
-
-		if ( pass && name in jQuery.attrFn ) {
-			return jQuery( elem )[ name ]( value );
-		}
-
-		// Fallback to prop when attributes are not supported
-		if ( typeof elem.getAttribute === "undefined" ) {
-			return jQuery.prop( elem, name, value );
-		}
-
-		notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
-
-		// All attributes are lowercase
-		// Grab necessary hook if one is defined
-		if ( notxml ) {
-			name = name.toLowerCase();
-			hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );
-		}
-
-		if ( value !== undefined ) {
-
-			if ( value === null ) {
-				jQuery.removeAttr( elem, name );
-				return;
-
-			} else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
-				return ret;
-
-			} else {
-				elem.setAttribute( name, "" + value );
-				return value;
-			}
-
-		} else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
-			return ret;
-
-		} else {
-
-			ret = elem.getAttribute( name );
-
-			// Non-existent attributes return null, we normalize to undefined
-			return ret === null ?
-				undefined :
-				ret;
-		}
-	},
-
-	removeAttr: function( elem, value ) {
-		var propName, attrNames, name, l, isBool,
-			i = 0;
-
-		if ( value && elem.nodeType === 1 ) {
-			attrNames = value.toLowerCase().split( rspace );
-			l = attrNames.length;
-
-			for ( ; i < l; i++ ) {
-				name = attrNames[ i ];
-
-				if ( name ) {
-					propName = jQuery.propFix[ name ] || name;
-					isBool = rboolean.test( name );
-
-					// See #9699 for explanation of this approach (setting first, then removal)
-					// Do not do this for boolean attributes (see #10870)
-					if ( !isBool ) {
-						jQuery.attr( elem, name, "" );
-					}
-					elem.removeAttribute( getSetAttribute ? name : propName );
-
-					// Set corresponding property to false for boolean attributes
-					if ( isBool && propName in elem ) {
-						elem[ propName ] = false;
-					}
-				}
-			}
-		}
-	},
-
-	attrHooks: {
-		type: {
-			set: function( elem, value ) {
-				// We can't allow the type property to be changed (since it causes problems in IE)
-				if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
-					jQuery.error( "type property can't be changed" );
-				} else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
-					// Setting the type on a radio button after the value resets the value in IE6-9
-					// Reset value to it's default in case type is set after value
-					// This is for element creation
-					var val = elem.value;
-					elem.setAttribute( "type", value );
-					if ( val ) {
-						elem.value = val;
-					}
-					return value;
-				}
-			}
-		},
-		// Use the value property for back compat
-		// Use the nodeHook for button elements in IE6/7 (#1954)
-		value: {
-			get: function( elem, name ) {
-				if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
-					return nodeHook.get( elem, name );
-				}
-				return name in elem ?
-					elem.value :
-					null;
-			},
-			set: function( elem, value, name ) {
-				if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
-					return nodeHook.set( elem, value, name );
-				}
-				// Does not return so that setAttribute is also used
-				elem.value = value;
-			}
-		}
-	},
-
-	propFix: {
-		tabindex: "tabIndex",
-		readonly: "readOnly",
-		"for": "htmlFor",
-		"class": "className",
-		maxlength: "maxLength",
-		cellspacing: "cellSpacing",
-		cellpadding: "cellPadding",
-		rowspan: "rowSpan",
-		colspan: "colSpan",
-		usemap: "useMap",
-		frameborder: "frameBorder",
-		contenteditable: "contentEditable"
-	},
-
-	prop: function( elem, name, value ) {
-		var ret, hooks, notxml,
-			nType = elem.nodeType;
-
-		// don't get/set properties on text, comment and attribute nodes
-		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
-			return;
-		}
-
-		notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
-
-		if ( notxml ) {
-			// Fix name and attach hooks
-			name = jQuery.propFix[ name ] || name;
-			hooks = jQuery.propHooks[ name ];
-		}
-
-		if ( value !== undefined ) {
-			if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
-				return ret;
-
-			} else {
-				return ( elem[ name ] = value );
-			}
-
-		} else {
-			if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
-				return ret;
-
-			} else {
-				return elem[ name ];
-			}
-		}
-	},
-
-	propHooks: {
-		tabIndex: {
-			get: function( elem ) {
-				// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
-				// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
-				var attributeNode = elem.getAttributeNode("tabindex");
-
-				return attributeNode && attributeNode.specified ?
-					parseInt( attributeNode.value, 10 ) :
-					rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
-						0 :
-						undefined;
-			}
-		}
-	}
-});
-
-// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional)
-jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex;
-
-// Hook for boolean attributes
-boolHook = {
-	get: function( elem, name ) {
-		// Align boolean attributes with corresponding properties
-		// Fall back to attribute presence where some booleans are not supported
-		var attrNode,
-			property = jQuery.prop( elem, name );
-		return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
-			name.toLowerCase() :
-			undefined;
-	},
-	set: function( elem, value, name ) {
-		var propName;
-		if ( value === false ) {
-			// Remove boolean attributes when set to false
-			jQuery.removeAttr( elem, name );
-		} else {
-			// value is true since we know at this point it's type boolean and not false
-			// Set boolean attributes to the same name and set the DOM property
-			propName = jQuery.propFix[ name ] || name;
-			if ( propName in elem ) {
-				// Only set the IDL specifically if it already exists on the element
-				elem[ propName ] = true;
-			}
-
-			elem.setAttribute( name, name.toLowerCase() );
-		}
-		return name;
-	}
-};
-
-// IE6/7 do not support getting/setting some attributes with get/setAttribute
-if ( !getSetAttribute ) {
-
-	fixSpecified = {
-		name: true,
-		id: true,
-		coords: true
-	};
-
-	// Use this for any attribute in IE6/7
-	// This fixes almost every IE6/7 issue
-	nodeHook = jQuery.valHooks.button = {
-		get: function( elem, name ) {
-			var ret;
-			ret = elem.getAttributeNode( name );
-			return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ?
-				ret.nodeValue :
-				undefined;
-		},
-		set: function( elem, value, name ) {
-			// Set the existing or create a new attribute node
-			var ret = elem.getAttributeNode( name );
-			if ( !ret ) {
-				ret = document.createAttribute( name );
-				elem.setAttributeNode( ret );
-			}
-			return ( ret.nodeValue = value + "" );
-		}
-	};
-
-	// Apply the nodeHook to tabindex
-	jQuery.attrHooks.tabindex.set = nodeHook.set;
-
-	// Set width and height to auto instead of 0 on empty string( Bug #8150 )
-	// This is for removals
-	jQuery.each([ "width", "height" ], function( i, name ) {
-		jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
-			set: function( elem, value ) {
-				if ( value === "" ) {
-					elem.setAttribute( name, "auto" );
-					return value;
-				}
-			}
-		});
-	});
-
-	// Set contenteditable to false on removals(#10429)
-	// Setting to empty string throws an error as an invalid value
-	jQuery.attrHooks.contenteditable = {
-		get: nodeHook.get,
-		set: function( elem, value, name ) {
-			if ( value === "" ) {
-				value = "false";
-			}
-			nodeHook.set( elem, value, name );
-		}
-	};
-}
-
-
-// Some attributes require a special call on IE
-if ( !jQuery.support.hrefNormalized ) {
-	jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
-		jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
-			get: function( elem ) {
-				var ret = elem.getAttribute( name, 2 );
-				return ret === null ? undefined : ret;
-			}
-		});
-	});
-}
-
-if ( !jQuery.support.style ) {
-	jQuery.attrHooks.style = {
-		get: function( elem ) {
-			// Return undefined in the case of empty string
-			// Normalize to lowercase since IE uppercases css property names
-			return elem.style.cssText.toLowerCase() || undefined;
-		},
-		set: function( elem, value ) {
-			return ( elem.style.cssText = "" + value );
-		}
-	};
-}
-
-// Safari mis-reports the default selected property of an option
-// Accessing the parent's selectedIndex property fixes it
-if ( !jQuery.support.optSelected ) {
-	jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
-		get: function( elem ) {
-			var parent = elem.parentNode;
-
-			if ( parent ) {
-				parent.selectedIndex;
-
-				// Make sure that it also works with optgroups, see #5701
-				if ( parent.parentNode ) {
-					parent.parentNode.selectedIndex;
-				}
-			}
-			return null;
-		}
-	});
-}
-
-// IE6/7 call enctype encoding
-if ( !jQuery.support.enctype ) {
-	jQuery.propFix.enctype = "encoding";
-}
-
-// Radios and checkboxes getter/setter
-if ( !jQuery.support.checkOn ) {
-	jQuery.each([ "radio", "checkbox" ], function() {
-		jQuery.valHooks[ this ] = {
-			get: function( elem ) {
-				// Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
-				return elem.getAttribute("value") === null ? "on" : elem.value;
-			}
-		};
-	});
-}
-jQuery.each([ "radio", "checkbox" ], function() {
-	jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
-		set: function( elem, value ) {
-			if ( jQuery.isArray( value ) ) {
-				return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
-			}
-		}
-	});
-});
-
-
-
-
-var rformElems = /^(?:textarea|input|select)$/i,
-	rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/,
-	rhoverHack = /(?:^|\s)hover(\.\S+)?\b/,
-	rkeyEvent = /^key/,
-	rmouseEvent = /^(?:mouse|contextmenu)|click/,
-	rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
-	rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,
-	quickParse = function( selector ) {
-		var quick = rquickIs.exec( selector );
-		if ( quick ) {
-			//   0  1    2   3
-			// [ _, tag, id, class ]
-			quick[1] = ( quick[1] || "" ).toLowerCase();
-			quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" );
-		}
-		return quick;
-	},
-	quickIs = function( elem, m ) {
-		var attrs = elem.attributes || {};
-		return (
-			(!m[1] || elem.nodeName.toLowerCase() === m[1]) &&
-			(!m[2] || (attrs.id || {}).value === m[2]) &&
-			(!m[3] || m[3].test( (attrs[ "class" ] || {}).value ))
-		);
-	},
-	hoverHack = function( events ) {
-		return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
-	};
-
-/*
- * Helper functions for managing events -- not part of the public interface.
- * Props to Dean Edwards' addEvent library for many of the ideas.
- */
-jQuery.event = {
-
-	add: function( elem, types, handler, data, selector ) {
-
-		var elemData, eventHandle, events,
-			t, tns, type, namespaces, handleObj,
-			handleObjIn, quick, handlers, special;
-
-		// Don't attach events to noData or text/comment nodes (allow plain objects tho)
-		if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {
-			return;
-		}
-
-		// Caller can pass in an object of custom data in lieu of the handler
-		if ( handler.handler ) {
-			handleObjIn = handler;
-			handler = handleObjIn.handler;
-			selector = handleObjIn.selector;
-		}
-
-		// Make sure that the handler has a unique ID, used to find/remove it later
-		if ( !handler.guid ) {
-			handler.guid = jQuery.guid++;
-		}
-
-		// Init the element's event structure and main handler, if this is the first
-		events = elemData.events;
-		if ( !events ) {
-			elemData.events = events = {};
-		}
-		eventHandle = elemData.handle;
-		if ( !eventHandle ) {
-			elemData.handle = eventHandle = function( e ) {
-				// Discard the second event of a jQuery.event.trigger() and
-				// when an event is called after a page has unloaded
-				return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
-					jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
-					undefined;
-			};
-			// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
-			eventHandle.elem = elem;
-		}
-
-		// Handle multiple events separated by a space
-		// jQuery(...).bind("mouseover mouseout", fn);
-		types = jQuery.trim( hoverHack(types) ).split( " " );
-		for ( t = 0; t < types.length; t++ ) {
-
-			tns = rtypenamespace.exec( types[t] ) || [];
-			type = tns[1];
-			namespaces = ( tns[2] || "" ).split( "." ).sort();
-
-			// If event changes its type, use the special event handlers for the changed type
-			special = jQuery.event.special[ type ] || {};
-
-			// If selector defined, determine special event api type, otherwise given type
-			type = ( selector ? special.delegateType : special.bindType ) || type;
-
-			// Update special based on newly reset type
-			special = jQuery.event.special[ type ] || {};
-
-			// handleObj is passed to all event handlers
-			handleObj = jQuery.extend({
-				type: type,
-				origType: tns[1],
-				data: data,
-				handler: handler,
-				guid: handler.guid,
-				selector: selector,
-				quick: selector && quickParse( selector ),
-				namespace: namespaces.join(".")
-			}, handleObjIn );
-
-			// Init the event handler queue if we're the first
-			handlers = events[ type ];
-			if ( !handlers ) {
-				handlers = events[ type ] = [];
-				handlers.delegateCount = 0;
-
-				// Only use addEventListener/attachEvent if the special events handler returns false
-				if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
-					// Bind the global event handler to the element
-					if ( elem.addEventListener ) {
-						elem.addEventListener( type, eventHandle, false );
-
-					} else if ( elem.attachEvent ) {
-						elem.attachEvent( "on" + type, eventHandle );
-					}
-				}
-			}
-
-			if ( special.add ) {
-				special.add.call( elem, handleObj );
-
-				if ( !handleObj.handler.guid ) {
-					handleObj.handler.guid = handler.guid;
-				}
-			}
-
-			// Add to the element's handler list, delegates in front
-			if ( selector ) {
-				handlers.splice( handlers.delegateCount++, 0, handleObj );
-			} else {
-				handlers.push( handleObj );
-			}
-
-			// Keep track of which events have ever been used, for event optimization
-			jQuery.event.global[ type ] = true;
-		}
-
-		// Nullify elem to prevent memory leaks in IE
-		elem = null;
-	},
-
-	global: {},
-
-	// Detach an event or set of events from an element
-	remove: function( elem, types, handler, selector, mappedTypes ) {
-
-		var elemData = jQuery.hasData( elem ) && jQuery._data( elem ),
-			t, tns, type, origType, namespaces, origCount,
-			j, events, special, handle, eventType, handleObj;
-
-		if ( !elemData || !(events = elemData.events) ) {
-			return;
-		}
-
-		// Once for each type.namespace in types; type may be omitted
-		types = jQuery.trim( hoverHack( types || "" ) ).split(" ");
-		for ( t = 0; t < types.length; t++ ) {
-			tns = rtypenamespace.exec( types[t] ) || [];
-			type = origType = tns[1];
-			namespaces = tns[2];
-
-			// Unbind all events (on this namespace, if provided) for the element
-			if ( !type ) {
-				for ( type in events ) {
-					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
-				}
-				continue;
-			}
-
-			special = jQuery.event.special[ type ] || {};
-			type = ( selector? special.delegateType : special.bindType ) || type;
-			eventType = events[ type ] || [];
-			origCount = eventType.length;
-			namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
-
-			// Remove matching events
-			for ( j = 0; j < eventType.length; j++ ) {
-				handleObj = eventType[ j ];
-
-				if ( ( mappedTypes || origType === handleObj.origType ) &&
-					 ( !handler || handler.guid === handleObj.guid ) &&
-					 ( !namespaces || namespaces.test( handleObj.namespace ) ) &&
-					 ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
-					eventType.splice( j--, 1 );
-
-					if ( handleObj.selector ) {
-						eventType.delegateCount--;
-					}
-					if ( special.remove ) {
-						special.remove.call( elem, handleObj );
-					}
-				}
-			}
-
-			// Remove generic event handler if we removed something and no more handlers exist
-			// (avoids potential for endless recursion during removal of special event handlers)
-			if ( eventType.length === 0 && origCount !== eventType.length ) {
-				if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
-					jQuery.removeEvent( elem, type, elemData.handle );
-				}
-
-				delete events[ type ];
-			}
-		}
-
-		// Remove the expando if it's no longer used
-		if ( jQuery.isEmptyObject( events ) ) {
-			handle = elemData.handle;
-			if ( handle ) {
-				handle.elem = null;
-			}
-
-			// removeData also checks for emptiness and clears the expando if empty
-			// so use it instead of delete
-			jQuery.removeData( elem, [ "events", "handle" ], true );
-		}
-	},
-
-	// Events that are safe to short-circuit if no handlers are attached.
-	// Native DOM events should not be added, they may have inline handlers.
-	customEvent: {
-		"getData": true,
-		"setData": true,
-		"changeData": true
-	},
-
-	trigger: function( event, data, elem, onlyHandlers ) {
-		// Don't do events on text and comment nodes
-		if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {
-			return;
-		}
-
-		// Event object or event type
-		var type = event.type || event,
-			namespaces = [],
-			cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType;
-
-		// focus/blur morphs to focusin/out; ensure we're not firing them right now
-		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
-			return;
-		}
-
-		if ( type.indexOf( "!" ) >= 0 ) {
-			// Exclusive events trigger only for the exact event (no namespaces)
-			type = type.slice(0, -1);
-			exclusive = true;
-		}
-
-		if ( type.indexOf( "." ) >= 0 ) {
-			// Namespaced trigger; create a regexp to match event type in handle()
-			namespaces = type.split(".");
-			type = namespaces.shift();
-			namespaces.sort();
-		}
-
-		if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
-			// No jQuery handlers for this event type, and it can't have inline handlers
-			return;
-		}
-
-		// Caller can pass in an Event, Object, or just an event type string
-		event = typeof event === "object" ?
-			// jQuery.Event object
-			event[ jQuery.expando ] ? event :
-			// Object literal
-			new jQuery.Event( type, event ) :
-			// Just the event type (string)
-			new jQuery.Event( type );
-
-		event.type = type;
-		event.isTrigger = true;
-		event.exclusive = exclusive;
-		event.namespace = namespaces.join( "." );
-		event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
-		ontype = type.indexOf( ":" ) < 0 ? "on" + type : "";
-
-		// Handle a global trigger
-		if ( !elem ) {
-
-			// TODO: Stop taunting the data cache; remove global events and always attach to document
-			cache = jQuery.cache;
-			for ( i in cache ) {
-				if ( cache[ i ].events && cache[ i ].events[ type ] ) {
-					jQuery.event.trigger( event, data, cache[ i ].handle.elem

<TRUNCATED>
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/dash/test/lib/angular/version.txt
----------------------------------------------------------------------
diff --git a/deleted/archive/dash/test/lib/angular/version.txt b/deleted/archive/dash/test/lib/angular/version.txt
deleted file mode 100644
index 90a27f9..0000000
--- a/deleted/archive/dash/test/lib/angular/version.txt
+++ /dev/null
@@ -1 +0,0 @@
-1.0.5


[50/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/css/custom-theme/jquery-ui-1.8.9.custom.css
----------------------------------------------------------------------
diff --git a/deleted/archive/css/custom-theme/jquery-ui-1.8.9.custom.css b/deleted/archive/css/custom-theme/jquery-ui-1.8.9.custom.css
deleted file mode 100755
index 044734a..0000000
--- a/deleted/archive/css/custom-theme/jquery-ui-1.8.9.custom.css
+++ /dev/null
@@ -1,573 +0,0 @@
-/*
- * jQuery UI CSS Framework 1.8.9
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- */
-
-/* Layout helpers
-----------------------------------*/
-.ui-helper-hidden { display: none; }
-.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
-.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
-.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
-.ui-helper-clearfix { display: inline-block; }
-/* required comment for clearfix to work in Opera \*/
-* html .ui-helper-clearfix { height:1%; }
-.ui-helper-clearfix { display:block; }
-/* end clearfix */
-.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
-
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-disabled { cursor: default !important; }
-
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Overlays */
-.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
-
-
-/*
- * jQuery UI CSS Framework 1.8.9
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- *
- * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande,%20Lucida%20Sans,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=deedf7&bgTextureHeader=01_flat.png&bgImgOpacityHeader=100&borderColorHeader=aed0ea&fcHeader=222222&iconColorHeader=72a7cf&bgColorContent=f2f5f7&bgTextureContent=01_flat.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=362b36&iconColorContent=72a7cf&bgColorDefault=d7ebf9&bgTextureDefault=01_flat.png&bgImgOpacityDefault=80&borderColorDefault=aed0ea&fcDefault=2779aa&iconColorDefault=3d80b3&bgColorHover=e4f1fb&bgTextureHover=01_flat.png&bgImgOpacityHover=100&borderColorHover=74b2e2&fcHover=0070a3&iconColorHover=2694e8&bgColorActive=3baae3&bgTextureActive=01_flat.png&bgImgOpacityActive=50&borderColorActive=2694e8&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=ffef8f&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=25&borderColorHighlight=f9dd34&fcHighli
 ght=363636&iconColorHighlight=2e83ff&bgColorError=cd0a0a&bgTextureError=01_flat.png&bgImgOpacityError=15&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=eeeeee&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=90&opacityOverlay=80&bgColorShadow=000000&bgTextureShadow=04_highlight_hard.png&bgImgOpacityShadow=70&opacityShadow=30&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
- */
-
-
-/* Component containers
-----------------------------------*/
-.ui-widget { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1.1em; }
-.ui-widget .ui-widget { font-size: 1em; }
-.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1em; }
-.ui-widget-content { border: 1px solid #dddddd; background: #f2f5f7 url(images/ui-bg_flat_100_f2f5f7_40x100.png) 50% 50% repeat-x; color: #362b36; }
-.ui-widget-content a { color: #362b36; }
-.ui-widget-header { border: 1px solid #aed0ea; background: #deedf7 url(images/ui-bg_flat_100_deedf7_40x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
-.ui-widget-header a { color: #222222; }
-
-/* Interaction states
-----------------------------------*/
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #aed0ea; background: #d7ebf9 url(images/ui-bg_flat_80_d7ebf9_40x100.png) 50% 50% repeat-x; font-weight: bold; color: #2779aa; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #2779aa; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #74b2e2; background: #e4f1fb url(images/ui-bg_flat_100_e4f1fb_40x100.png) 50% 50% repeat-x; font-weight: bold; color: #0070a3; }
-.ui-state-hover a, .ui-state-hover a:hover { color: #0070a3; text-decoration: none; }
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #2694e8; background: #3baae3 url(images/ui-bg_flat_50_3baae3_40x100.png) 50% 50% repeat-x; font-weight: bold; color: #ffffff; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; text-decoration: none; }
-.ui-widget :active { outline: none; }
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #f9dd34; background: #ffef8f url(images/ui-bg_highlight-soft_25_ffef8f_1x100.png) 50% top repeat-x; color: #363636; }
-.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
-.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #cd0a0a url(images/ui-bg_flat_15_cd0a0a_40x100.png) 50% 50% repeat-x; color: #ffffff; }
-.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }
-.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }
-.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
-.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
-.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_72a7cf_256x240.png); }
-.ui-widget-content .ui-icon {background-image: url(images/ui-icons_72a7cf_256x240.png); }
-.ui-widget-header .ui-icon {background-image: url(images/ui-icons_72a7cf_256x240.png); }
-.ui-state-default .ui-icon { background-image: url(images/ui-icons_3d80b3_256x240.png); }
-.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_2694e8_256x240.png); }
-.ui-state-active .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
-.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
-.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
-
-/* positioning */
-.ui-icon-carat-1-n { background-position: 0 0; }
-.ui-icon-carat-1-ne { background-position: -16px 0; }
-.ui-icon-carat-1-e { background-position: -32px 0; }
-.ui-icon-carat-1-se { background-position: -48px 0; }
-.ui-icon-carat-1-s { background-position: -64px 0; }
-.ui-icon-carat-1-sw { background-position: -80px 0; }
-.ui-icon-carat-1-w { background-position: -96px 0; }
-.ui-icon-carat-1-nw { background-position: -112px 0; }
-.ui-icon-carat-2-n-s { background-position: -128px 0; }
-.ui-icon-carat-2-e-w { background-position: -144px 0; }
-.ui-icon-triangle-1-n { background-position: 0 -16px; }
-.ui-icon-triangle-1-ne { background-position: -16px -16px; }
-.ui-icon-triangle-1-e { background-position: -32px -16px; }
-.ui-icon-triangle-1-se { background-position: -48px -16px; }
-.ui-icon-triangle-1-s { background-position: -64px -16px; }
-.ui-icon-triangle-1-sw { background-position: -80px -16px; }
-.ui-icon-triangle-1-w { background-position: -96px -16px; }
-.ui-icon-triangle-1-nw { background-position: -112px -16px; }
-.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
-.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
-.ui-icon-arrow-1-n { background-position: 0 -32px; }
-.ui-icon-arrow-1-ne { background-position: -16px -32px; }
-.ui-icon-arrow-1-e { background-position: -32px -32px; }
-.ui-icon-arrow-1-se { background-position: -48px -32px; }
-.ui-icon-arrow-1-s { background-position: -64px -32px; }
-.ui-icon-arrow-1-sw { background-position: -80px -32px; }
-.ui-icon-arrow-1-w { background-position: -96px -32px; }
-.ui-icon-arrow-1-nw { background-position: -112px -32px; }
-.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
-.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
-.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
-.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
-.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
-.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
-.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
-.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
-.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
-.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
-.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
-.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
-.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
-.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
-.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
-.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
-.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
-.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
-.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
-.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
-.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
-.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
-.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
-.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
-.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
-.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
-.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
-.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
-.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
-.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
-.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
-.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
-.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
-.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
-.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
-.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
-.ui-icon-arrow-4 { background-position: 0 -80px; }
-.ui-icon-arrow-4-diag { background-position: -16px -80px; }
-.ui-icon-extlink { background-position: -32px -80px; }
-.ui-icon-newwin { background-position: -48px -80px; }
-.ui-icon-refresh { background-position: -64px -80px; }
-.ui-icon-shuffle { background-position: -80px -80px; }
-.ui-icon-transfer-e-w { background-position: -96px -80px; }
-.ui-icon-transferthick-e-w { background-position: -112px -80px; }
-.ui-icon-folder-collapsed { background-position: 0 -96px; }
-.ui-icon-folder-open { background-position: -16px -96px; }
-.ui-icon-document { background-position: -32px -96px; }
-.ui-icon-document-b { background-position: -48px -96px; }
-.ui-icon-note { background-position: -64px -96px; }
-.ui-icon-mail-closed { background-position: -80px -96px; }
-.ui-icon-mail-open { background-position: -96px -96px; }
-.ui-icon-suitcase { background-position: -112px -96px; }
-.ui-icon-comment { background-position: -128px -96px; }
-.ui-icon-person { background-position: -144px -96px; }
-.ui-icon-print { background-position: -160px -96px; }
-.ui-icon-trash { background-position: -176px -96px; }
-.ui-icon-locked { background-position: -192px -96px; }
-.ui-icon-unlocked { background-position: -208px -96px; }
-.ui-icon-bookmark { background-position: -224px -96px; }
-.ui-icon-tag { background-position: -240px -96px; }
-.ui-icon-home { background-position: 0 -112px; }
-.ui-icon-flag { background-position: -16px -112px; }
-.ui-icon-calendar { background-position: -32px -112px; }
-.ui-icon-cart { background-position: -48px -112px; }
-.ui-icon-pencil { background-position: -64px -112px; }
-.ui-icon-clock { background-position: -80px -112px; }
-.ui-icon-disk { background-position: -96px -112px; }
-.ui-icon-calculator { background-position: -112px -112px; }
-.ui-icon-zoomin { background-position: -128px -112px; }
-.ui-icon-zoomout { background-position: -144px -112px; }
-.ui-icon-search { background-position: -160px -112px; }
-.ui-icon-wrench { background-position: -176px -112px; }
-.ui-icon-gear { background-position: -192px -112px; }
-.ui-icon-heart { background-position: -208px -112px; }
-.ui-icon-star { background-position: -224px -112px; }
-.ui-icon-link { background-position: -240px -112px; }
-.ui-icon-cancel { background-position: 0 -128px; }
-.ui-icon-plus { background-position: -16px -128px; }
-.ui-icon-plusthick { background-position: -32px -128px; }
-.ui-icon-minus { background-position: -48px -128px; }
-.ui-icon-minusthick { background-position: -64px -128px; }
-.ui-icon-close { background-position: -80px -128px; }
-.ui-icon-closethick { background-position: -96px -128px; }
-.ui-icon-key { background-position: -112px -128px; }
-.ui-icon-lightbulb { background-position: -128px -128px; }
-.ui-icon-scissors { background-position: -144px -128px; }
-.ui-icon-clipboard { background-position: -160px -128px; }
-.ui-icon-copy { background-position: -176px -128px; }
-.ui-icon-contact { background-position: -192px -128px; }
-.ui-icon-image { background-position: -208px -128px; }
-.ui-icon-video { background-position: -224px -128px; }
-.ui-icon-script { background-position: -240px -128px; }
-.ui-icon-alert { background-position: 0 -144px; }
-.ui-icon-info { background-position: -16px -144px; }
-.ui-icon-notice { background-position: -32px -144px; }
-.ui-icon-help { background-position: -48px -144px; }
-.ui-icon-check { background-position: -64px -144px; }
-.ui-icon-bullet { background-position: -80px -144px; }
-.ui-icon-radio-off { background-position: -96px -144px; }
-.ui-icon-radio-on { background-position: -112px -144px; }
-.ui-icon-pin-w { background-position: -128px -144px; }
-.ui-icon-pin-s { background-position: -144px -144px; }
-.ui-icon-play { background-position: 0 -160px; }
-.ui-icon-pause { background-position: -16px -160px; }
-.ui-icon-seek-next { background-position: -32px -160px; }
-.ui-icon-seek-prev { background-position: -48px -160px; }
-.ui-icon-seek-end { background-position: -64px -160px; }
-.ui-icon-seek-start { background-position: -80px -160px; }
-/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
-.ui-icon-seek-first { background-position: -80px -160px; }
-.ui-icon-stop { background-position: -96px -160px; }
-.ui-icon-eject { background-position: -112px -160px; }
-.ui-icon-volume-off { background-position: -128px -160px; }
-.ui-icon-volume-on { background-position: -144px -160px; }
-.ui-icon-power { background-position: 0 -176px; }
-.ui-icon-signal-diag { background-position: -16px -176px; }
-.ui-icon-signal { background-position: -32px -176px; }
-.ui-icon-battery-0 { background-position: -48px -176px; }
-.ui-icon-battery-1 { background-position: -64px -176px; }
-.ui-icon-battery-2 { background-position: -80px -176px; }
-.ui-icon-battery-3 { background-position: -96px -176px; }
-.ui-icon-circle-plus { background-position: 0 -192px; }
-.ui-icon-circle-minus { background-position: -16px -192px; }
-.ui-icon-circle-close { background-position: -32px -192px; }
-.ui-icon-circle-triangle-e { background-position: -48px -192px; }
-.ui-icon-circle-triangle-s { background-position: -64px -192px; }
-.ui-icon-circle-triangle-w { background-position: -80px -192px; }
-.ui-icon-circle-triangle-n { background-position: -96px -192px; }
-.ui-icon-circle-arrow-e { background-position: -112px -192px; }
-.ui-icon-circle-arrow-s { background-position: -128px -192px; }
-.ui-icon-circle-arrow-w { background-position: -144px -192px; }
-.ui-icon-circle-arrow-n { background-position: -160px -192px; }
-.ui-icon-circle-zoomin { background-position: -176px -192px; }
-.ui-icon-circle-zoomout { background-position: -192px -192px; }
-.ui-icon-circle-check { background-position: -208px -192px; }
-.ui-icon-circlesmall-plus { background-position: 0 -208px; }
-.ui-icon-circlesmall-minus { background-position: -16px -208px; }
-.ui-icon-circlesmall-close { background-position: -32px -208px; }
-.ui-icon-squaresmall-plus { background-position: -48px -208px; }
-.ui-icon-squaresmall-minus { background-position: -64px -208px; }
-.ui-icon-squaresmall-close { background-position: -80px -208px; }
-.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
-.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
-.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
-.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
-.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
-.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Corner radius */
-.ui-corner-tl { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; }
-.ui-corner-tr { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; }
-.ui-corner-bl { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; }
-.ui-corner-br { -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
-.ui-corner-top { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; }
-.ui-corner-bottom { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
-.ui-corner-right {  -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
-.ui-corner-left { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; }
-.ui-corner-all { -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; }
-
-/* Overlays */
-.ui-widget-overlay { background: #eeeeee url(images/ui-bg_diagonals-thick_90_eeeeee_40x40.png) 50% 50% repeat; opacity: .80;filter:Alpha(Opacity=80); }
-.ui-widget-shadow { margin: -7px 0 0 -7px; padding: 7px; background: #000000 url(images/ui-bg_highlight-hard_70_000000_1x100.png) 50% top repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
- * jQuery UI Resizable 1.8.9
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Resizable#theming
- */
-.ui-resizable { position: relative;}
-.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
-.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
-.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
-.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
-.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
-.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
-.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
-.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
-.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
-.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
- * jQuery UI Selectable 1.8.9
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Selectable#theming
- */
-.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
-/*
- * jQuery UI Accordion 1.8.9
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Accordion#theming
- */
-/* IE/Win - Fix animation bug - #4615 */
-.ui-accordion { width: 100%; }
-.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
-.ui-accordion .ui-accordion-li-fix { display: inline; }
-.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
-.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
-.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
-.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
-.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
-.ui-accordion .ui-accordion-content-active { display: block; }
-/*
- * jQuery UI Autocomplete 1.8.9
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Autocomplete#theming
- */
-.ui-autocomplete { position: absolute; cursor: default; }	
-
-/* workarounds */
-* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
-
-/*
- * jQuery UI Menu 1.8.9
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Menu#theming
- */
-.ui-menu {
-	list-style:none;
-	padding: 2px;
-	margin: 0;
-	display:block;
-	float: left;
-}
-.ui-menu .ui-menu {
-	margin-top: -3px;
-}
-.ui-menu .ui-menu-item {
-	margin:0;
-	padding: 0;
-	zoom: 1;
-	float: left;
-	clear: left;
-	width: 100%;
-}
-.ui-menu .ui-menu-item a {
-	text-decoration:none;
-	display:block;
-	padding:.2em .4em;
-	line-height:1.5;
-	zoom:1;
-}
-.ui-menu .ui-menu-item a.ui-state-hover,
-.ui-menu .ui-menu-item a.ui-state-active {
-	font-weight: normal;
-	margin: -1px;
-}
-/*
- * jQuery UI Button 1.8.9
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Button#theming
- */
-.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
-.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
-button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
-.ui-button-icons-only { width: 3.4em; } 
-button.ui-button-icons-only { width: 3.7em; } 
-
-/*button text element */
-.ui-button .ui-button-text { display: block; line-height: 1.4;  }
-.ui-button-text-only .ui-button-text { padding: .4em 1em; }
-.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
-.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
-.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
-.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
-/* no icon support for input elements, provide padding by default */
-input.ui-button { padding: .4em 1em; }
-
-/*button icon element(s) */
-.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
-.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
-.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
-.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
-.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
-
-/*button sets*/
-.ui-buttonset { margin-right: 7px; }
-.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
-
-/* workarounds */
-button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
-/*
- * jQuery UI Dialog 1.8.9
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Dialog#theming
- */
-.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
-.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
-.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
-.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
-.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
-.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
-.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
-.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
-.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
-.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
-.ui-draggable .ui-dialog-titlebar { cursor: move; }
-/*
- * jQuery UI Slider 1.8.9
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Slider#theming
- */
-.ui-slider { position: relative; text-align: left; }
-.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
-.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
-
-.ui-slider-horizontal { height: .8em; }
-.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
-.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
-.ui-slider-horizontal .ui-slider-range-min { left: 0; }
-.ui-slider-horizontal .ui-slider-range-max { right: 0; }
-
-.ui-slider-vertical { width: .8em; height: 100px; }
-.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
-.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
-.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
-.ui-slider-vertical .ui-slider-range-max { top: 0; }/*
- * jQuery UI Tabs 1.8.9
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Tabs#theming
- */
-.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
-.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
-.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
-.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
-.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
-.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
-.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
-.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
-.ui-tabs .ui-tabs-hide { display: none !important; }
-/*
- * jQuery UI Datepicker 1.8.9
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Datepicker#theming
- */
-.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
-.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
-.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
-.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
-.ui-datepicker .ui-datepicker-prev { left:2px; }
-.ui-datepicker .ui-datepicker-next { right:2px; }
-.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
-.ui-datepicker .ui-datepicker-next-hover { right:1px; }
-.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
-.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
-.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
-.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
-.ui-datepicker select.ui-datepicker-month, 
-.ui-datepicker select.ui-datepicker-year { width: 49%;}
-.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
-.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
-.ui-datepicker td { border: 0; padding: 1px; }
-.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
-.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
-.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
-.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
-
-/* with multiple calendars */
-.ui-datepicker.ui-datepicker-multi { width:auto; }
-.ui-datepicker-multi .ui-datepicker-group { float:left; }
-.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
-.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
-.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
-.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
-.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
-.ui-datepicker-row-break { clear:both; width:100%; }
-
-/* RTL support */
-.ui-datepicker-rtl { direction: rtl; }
-.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-
-/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
-.ui-datepicker-cover {
-    display: none; /*sorry for IE5*/
-    display/**/: block; /*sorry for IE5*/
-    position: absolute; /*must have*/
-    z-index: -1; /*must have*/
-    filter: mask(); /*must have*/
-    top: -4px; /*must have*/
-    left: -4px; /*must have*/
-    width: 200px; /*must have*/
-    height: 200px; /*must have*/
-}/*
- * jQuery UI Progressbar 1.8.9
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Progressbar#theming
- */
-.ui-progressbar { height:2em; text-align: left; }
-.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/css/jquery-ui-timepicker.css
----------------------------------------------------------------------
diff --git a/deleted/archive/css/jquery-ui-timepicker.css b/deleted/archive/css/jquery-ui-timepicker.css
deleted file mode 100644
index d72d486..0000000
--- a/deleted/archive/css/jquery-ui-timepicker.css
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Timepicker stylesheet
- * Highly inspired from datepicker
- * FG - Nov 2010 - Web3R 
- *
- * version 0.0.3 : Fixed some settings, more dynamic
- * version 0.0.4 : Removed width:100% on tables
- * version 0.1.1 : set width 0 on tables to fix an ie6 bug
- */
-
-.ui-timepicker-inline { display: inline; }
-
-#ui-timepicker-div { padding: 0.2em }
-.ui-timepicker-table { display: inline-table; width: 0; }
-.ui-timepicker-table table { margin:0.15em 0 0 0; border-collapse: collapse; }
-
-.ui-timepicker-hours, .ui-timepicker-minutes { padding: 0.2em;  }
-
-.ui-timepicker-table .ui-timepicker-title { line-height: 1.8em; text-align: center; }
-.ui-timepicker-table td { padding: 0.1em; width: 2.2em; }
-.ui-timepicker-table th.periods { padding: 0.1em; width: 2.2em; }
-
-/* span for disabled cells */
-.ui-timepicker-table td span {
-	display:block;
-    padding:0.2em 0.3em 0.2em 0.5em;
-    width: 1.2em;
-
-    text-align:right;
-    text-decoration:none;
-}
-/* anchors for clickable cells */
-.ui-timepicker-table td a {
-    display:block;
-    padding:0.2em 0.3em 0.2em 0.5em;
-    width: 1.2em;
-
-    text-align:right;
-    text-decoration:none;
-}
-
-/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
-.ui-timepicker-cover {
-    display: none; /*sorry for IE5*/
-    display/**/: block; /*sorry for IE5*/
-    position: absolute; /*must have*/
-    z-index: -1; /*must have*/
-    filter: mask(); /*must have*/
-    top: -4px; /*must have*/
-    left: -4px; /*must have*/
-    width: 200px; /*must have*/
-    height: 200px; /*must have*/
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/css/jquery.ui.statusbar.css
----------------------------------------------------------------------
diff --git a/deleted/archive/css/jquery.ui.statusbar.css b/deleted/archive/css/jquery.ui.statusbar.css
deleted file mode 100644
index 3b45b7e..0000000
--- a/deleted/archive/css/jquery.ui.statusbar.css
+++ /dev/null
@@ -1,25 +0,0 @@
-.ui-statusbar {
-    background-color: white;
-    position: fixed;
-    bottom: 0em;
-    left: 0.5em;
-    right: 0.5em;
-    width: auto;
-    height: auto;
-    padding: 0.5em;
-    /*opacity: .80;
-    filter: alpha(opacity="80");*/
-    z-index: 999;
-    overflow: auto;
-}
-
-.ui-statusbar ul {
-    list-style: none;
-    margin-left: 0em;
-    padding-left: 0.5em;
-}
-
-.ui-statusbar ul li {
-    margin-top: 0.2em;
-    padding: 0.2em;
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/css/prettify.css
----------------------------------------------------------------------
diff --git a/deleted/archive/css/prettify.css b/deleted/archive/css/prettify.css
deleted file mode 100644
index 400fd74..0000000
--- a/deleted/archive/css/prettify.css
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Pretty printing styles. Used with prettify.js. */
-
-/* SPAN elements with the classes below are added by prettyprint. */
-.pln { color: #000 }  /* plain text */
-
-@media screen {
-  .str { color: #080 }  /* string content */
-  .kwd { color: #008 }  /* a keyword */
-  .com { color: #800 }  /* a comment */
-  .typ { color: #606 }  /* a type name */
-  .lit { color: #066 }  /* a literal value */
-  /* punctuation, lisp open bracket, lisp close bracket */
-  .pun, .opn, .clo { color: #660 }
-  .tag { color: #008 }  /* a markup tag name */
-  .atn { color: #606 }  /* a markup attribute name */
-  .atv { color: #080 }  /* a markup attribute value */
-  .dec, .var { color: #606 }  /* a declaration; a variable name */
-  .fun { color: red }  /* a function name */
-}
-
-/* Use higher contrast and text-weight for printable form. */
-@media print, projection {
-  .str { color: #060 }
-  .kwd { color: #006; font-weight: bold }
-  .com { color: #600; font-style: italic }
-  .typ { color: #404; font-weight: bold }
-  .lit { color: #044 }
-  .pun, .opn, .clo { color: #440 }
-  .tag { color: #006; font-weight: bold }
-  .atn { color: #404 }
-  .atv { color: #060 }
-}
-
-/* Put a border around prettyprinted code snippets. */
-pre.prettyprint { padding: 2px; border: 1px solid #888 }
-
-/* Specify class=linenums on a pre to get line numbering */
-ol.linenums { margin-top: 0; margin-bottom: 0 } /* IE indents via margin-left */
-li.L0,
-li.L1,
-li.L2,
-li.L3,
-li.L5,
-li.L6,
-li.L7,
-li.L8 { list-style-type: none }
-/* Alternate shading for lines */
-li.L1,
-li.L3,
-li.L5,
-li.L7,
-li.L9 { background: #eee }


[13/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery-1.7.2.min.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery-1.7.2.min.js b/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery-1.7.2.min.js
deleted file mode 100644
index 16ad06c..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/lib/jquery-1.7.2.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! jQuery v1.7.2 jquery.com | jquery.org/license */
-(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;
 g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);e
 lse d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return l}function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0){if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="margin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d
 =parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+"px"}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?c==="option"?b.selected=a.defaul
 tSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typ
 eof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c
 =a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;r
 eturn this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==nu
 ll?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),t
 ypeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready
 );var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:functio
 n(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[
 ];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f
 .concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date 
 RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?n(g):h==="function"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],
 e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);re
 turn this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f
 .isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.va
 lue==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecke
 d=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="<div "+n+"display:block;'><div style='"+t+"0;display:block;overflow:hidden;'></div></div>"+"<table "+n+"' cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><td style='"+t+"0;display:none'></td><td>t</td></tr></table>",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="no
 ne",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style='width:5px;'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position=
 "relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[
 n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&&!f._data(
 j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return m}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f
 ._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=th
 is,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof
  a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeCla
 ss"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a
 .attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);r
 eturn}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowsp
 an:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b}
 ,set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["r
 adio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(
-a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.gui
 d,selector:g,quick:g&&G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remov
 e.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=
 f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.na
 mespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);return c.result}},props:"attrChange attr
 Name relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.prop
 s?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.
 type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.
 type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("ch
 ange",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e=
 =null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:funct
 ion(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.tes
 t(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,
 l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[
 t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFi
 lter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9||d===11){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]
 |\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode=
 ==b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG
 :function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.
 parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a)
 {var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nod
 eType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p
 =o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,
 e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElemen
 t("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]
 );if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}
 }(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.select
 ors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.c
 ontext).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({p
 arent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P
 .call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")[\\s/>]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^
 \s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChi
 ld;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f
-.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;
 if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(functi
 on(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({type:"GET",global:!1,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h))
 ,e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.
 createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;
 i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\([^)]*\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\-+]?(?:\d*\.)?\d+$/i,bt=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,bu=/^([\-+])=([\-+.\de]+)/,bv=/^margin/,bw={position:"absolute",vi
 sibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f
 .cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f
 ===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.su
 pport.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:f
 unction(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.e
 ach("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},
 ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if
 (!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.
 toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d
 .async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.json
 p!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||
 /loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{i
 f(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),(e===""&&f.
 css(d,"display")==="none"||!f.contains(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(ct("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark
 (this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"
 ),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("toggle",1),fadeIn:{
 opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=nul
 l&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.options.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fxshow"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!

<TRUNCATED>

[39/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/app/usergrid.appSDK.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/app/usergrid.appSDK.js b/deleted/archive/js/app/usergrid.appSDK.js
deleted file mode 100644
index 84bf33f..0000000
--- a/deleted/archive/js/app/usergrid.appSDK.js
+++ /dev/null
@@ -1,2097 +0,0 @@
-/**
- *  App SDK is a collection of classes designed to make working with
- *  the Appigee App Services API as easy as possible.
- *  Learn more at http://apigee.com/docs
- *
- *   Copyright 2012 Apigee Corporation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-//define the console.log for IE
-window.console = window.console || {};
-window.console.log = window.console.log || function() {};
-
-//Usergrid namespace encapsulates this SDK
-window.Usergrid = window.Usergrid || {};
-Usergrid = Usergrid || {};
-Usergrid.SDK_VERSION = '0.9.9';
-
-/**
- *  Usergrid.Query is a class for holding all query information and paging state
- *
- *  @class Query
- *  @author Rod Simpson (rod@apigee.com)
- */
-
-(function () {
-
-  /**
-   *  @constructor
-   *  @param {string} method
-   *  @param {string} path
-   *  @param {object} jsonObj
-   *  @param {object} paramsObj
-   *  @param {function} successCallback
-   *  @param {function} failureCallback
-   */
-  Usergrid.Query = function(method, resource, jsonObj, paramsObj, successCallback, failureCallback) {
-    //query vars
-    this._method = method;
-    this._resource = resource;
-    this._jsonObj = jsonObj;
-    this._paramsObj = paramsObj;
-    this._successCallback = successCallback;
-    this._failureCallback = failureCallback;
-    this._filePost = false;
-    //curl command - will be populated by runQuery function
-    this._curl = '';
-    this._token = false;
-
-    //paging vars
-    this._cursor = null;
-    this._next = null;
-    this._previous = [];
-    this._start = 0;
-    this._end = 0;
-  };
-
-  Usergrid.Query.prototype = {
-     setQueryStartTime: function() {
-       this._start = new Date().getTime();
-     },
-
-     setQueryEndTime: function() {
-       this._end = new Date().getTime();
-     },
-
-     getQueryTotalTime: function() {
-       var seconds = 0;
-       var time = this._end - this._start;
-       try {
-          seconds = ((time/10) / 60).toFixed(2);
-       } catch(e){ return 0; }
-       return this.getMethod() + " " + this.getResource() + " - " + seconds + " seconds";
-     },
-    /**
-     *  A method to set all settable parameters of the Query at one time
-     *
-     *  @public
-     *  @method validateUsername
-     *  @param {string} method
-     *  @param {string} path
-     *  @param {object} jsonObj
-     *  @param {object} paramsObj
-     *  @param {function} successCallback
-     *  @param {function} failureCallback
-     *  @return none
-     */
-    setAllQueryParams: function(method, resource, jsonObj, paramsObj, successCallback, failureCallback) {
-      this._method = method;
-      this._resource = resource;
-      this._jsonObj = jsonObj;
-      this._paramsObj = paramsObj;
-      this._successCallback = successCallback;
-      this._failureCallback = failureCallback;
-    },
-
-    /**
-     *  A method to reset all the parameters in one call
-     *
-     *  @public
-     *  @return none
-     */
-    clearAll: function() {
-      this._method = null;
-      this._resource = null;
-      this._jsonObj = {};
-      this._paramsObj = {};
-      this._successCallback = null;
-      this._failureCallback = null;
-    },
-    /**
-    * Returns the method
-    *
-    * @public
-    * @method getMethod
-    * @return {string} Returns method
-    */
-    getMethod: function() {
-      return this._method;
-    },
-
-    /**
-    * sets the method (POST, PUT, DELETE, GET)
-    *
-    * @public
-    * @method setMethod
-    * @return none
-    */
-    setMethod: function(method) {
-      this._method = method;
-    },
-
-    /**
-    * Returns the resource
-    *
-    * @public
-    * @method getResource
-    * @return {string} the resource
-    */
-    getResource: function() {
-      return this._resource;
-    },
-
-    /**
-    * sets the resource
-    *
-    * @public
-    * @method setResource
-    * @return none
-    */
-    setResource: function(resource) {
-      this._resource = resource;
-    },
-
-    /**
-    * Returns the json Object
-    *
-    * @public
-    * @method getJsonObj
-    * @return {object} Returns the json Object
-    */
-    getJsonObj: function() {
-      return this._jsonObj;
-    },
-
-    /**
-    * sets the json object
-    *
-    * @public
-    * @method setJsonObj
-    * @return none
-    */
-    setJsonObj: function(jsonObj) {
-      this._jsonObj = jsonObj;
-    },
-    /**
-    * Returns the Query Parameters object
-    *
-    * @public
-    * @method getQueryParams
-    * @return {object} Returns Query Parameters object
-    */
-    getQueryParams: function() {
-      return this._paramsObj;
-    },
-
-    /**
-    * sets the query parameter object
-    *
-    * @public
-    * @method setQueryParams
-    * @return none
-    */
-    setQueryParams: function(paramsObj) {
-      this._paramsObj = paramsObj;
-    },
-
-    /**
-    * Returns the success callback function
-    *
-    * @public
-    * @method getSuccessCallback
-    * @return {function} Returns the successCallback
-    */
-    getSuccessCallback: function() {
-      return this._successCallback;
-    },
-
-    /**
-    * sets the success callback function
-    *
-    * @public
-    * @method setSuccessCallback
-    * @return none
-    */
-    setSuccessCallback: function(successCallback) {
-      this._successCallback = successCallback;
-    },
-
-    /**
-    * Calls the success callback function
-    *
-    * @public
-    * @method callSuccessCallback
-    * @return {boolean} Returns true or false based on if there was a callback to call
-    */
-    callSuccessCallback: function(response) {
-      if (this._successCallback && typeof(this._successCallback ) === "function") {
-        this._successCallback(response);
-        return true;
-      } else {
-        return false;
-      }
-    },
-
-    /**
-    * Returns the failure callback function
-    *
-    * @public
-    * @method getFailureCallback
-    * @return {function} Returns the failureCallback
-    */
-    getFailureCallback: function() {
-      return this._failureCallback;
-    },
-
-    /**
-    * sets the failure callback function
-    *
-    * @public
-    * @method setFailureCallback
-    * @return none
-    */
-    setFailureCallback: function(failureCallback) {
-      this._failureCallback = failureCallback;
-    },
-
-    /**
-    * Calls the failure callback function
-    *
-    * @public
-    * @method callFailureCallback
-    * @return {boolean} Returns true or false based on if there was a callback to call
-    */
-    callFailureCallback: function(response) {
-      if (this._failureCallback && typeof(this._failureCallback) === "function") {
-        this._failureCallback(response);
-        return true;
-      } else {
-        return false;
-      }
-    },
-
-    /**
-    * Returns the curl call
-    *
-    * @public
-    * @method getCurl
-    * @return {function} Returns the curl call
-    */
-    getCurl: function() {
-      return this._curl;
-    },
-
-    /**
-    * sets the curl call
-    *
-    * @public
-    * @method setCurl
-    * @return none
-    */
-    setCurl: function(curl) {
-      this._curl = curl;
-    },
-
-    /**
-    * Returns the Token
-    *
-    * @public
-    * @method getToken
-    * @return {function} Returns the Token
-    */
-    getToken: function() {
-      return this._token;
-    },
-
-    /**
-    * Method to set
-    *
-    * @public
-    * @method setToken
-    * @return none
-    */
-    setToken: function(token) {
-      this._token = token;
-    },
-
-    /**
-    * Resets the paging pointer (back to original page)
-    *
-    * @public
-    * @method resetPaging
-    * @return none
-    */
-    resetPaging: function() {
-      this._previous = [];
-      this._next = null;
-      this._cursor = null;
-    },
-
-    /**
-    * Method to determine if there is a previous page of data
-    *
-    * @public
-    * @method hasPrevious
-    * @return {boolean} true or false based on if there is a previous page
-    */
-    hasPrevious: function() {
-      return (this._previous.length > 0);
-    },
-
-    /**
-    * Method to set the paging object to get the previous page of data
-    *
-    * @public
-    * @method getPrevious
-    * @return none
-    */
-    getPrevious: function() {
-      this._next=null; //clear out next so the comparison will find the next item
-      this._cursor = this._previous.pop();
-    },
-
-    /**
-    * Method to determine if there is a next page of data
-    *
-    * @public
-    * @method hasNext
-    * @return {boolean} true or false based on if there is a next page
-    */
-    hasNext: function(){
-      return (this._next);
-    },
-
-    /**
-    * Method to set the paging object to get the next page of data
-    *
-    * @public
-    * @method getNext
-    * @return none
-    */
-    getNext: function() {
-      this._previous.push(this._cursor);
-      this._cursor = this._next;
-    },
-
-    /**
-    * Method to save off the cursor just returned by the last API call
-    *
-    * @public
-    * @method saveCursor
-    * @return none
-    */
-    saveCursor: function(cursor) {
-      //if current cursor is different, grab it for next cursor
-      if (this._next !== cursor) {
-        this._next = cursor;
-      }
-    },
-
-    /**
-    * Method to determine if there is a next page of data
-    *
-    * @public
-    * @method getCursor
-    * @return {string} the current cursor
-    */
-    getCursor: function() {
-      return this._cursor;
-    },
-
-    getFilePost: function() {
-      return this._filePost;
-    },
-    setFilePost: function(filePost) {
-      this._filePost = filePost;
-    }
-  };
-})(Usergrid);
-
-
-/**
- *  A class to Model a Usergrid Entity.
- *
- *  @class Entity
- *  @author Rod Simpson (rod@apigee.com)
- */
-(function () {
-  /**
-   *  Constructor for initializing an entity
-   *
-   *  @constructor
-   *  @param {string} collectionType - the type of collection to model
-   *  @param {uuid} uuid - (optional), the UUID of the collection if it is known
-   */
-  Usergrid.Entity = function(collectionType, uuid) {
-    this._collectionType = collectionType;
-    this._data = {};
-    this._uuid = uuid;
-  };
-
-  //inherit prototype from Query
-  Usergrid.Entity.prototype = new Usergrid.Query();
-
-  /**
-   *  gets the current Entity type
-   *
-   *  @method getCollectionType
-   *  @return {string} collection type
-   */
-  Usergrid.Entity.prototype.getCollectionType = function (){
-    return this._collectionType;
-  }
-
-  /**
-   *  sets the current Entity type
-   *
-   *  @method setCollectionType
-   *  @param {string} collectionType
-   *  @return none
-   */
-  Usergrid.Entity.prototype.setCollectionType = function (collectionType){
-    this._collectionType = collectionType;
-  }
-
-  /**
-   *  gets a specific field or the entire data object. If null or no argument
-   *  passed, will return all data, else, will return a specific field
-   *
-   *  @method get
-   *  @param {string} field
-   *  @return {string} || {object} data
-   */
-  Usergrid.Entity.prototype.get = function (field){
-    if (field) {
-      return this._data[field];
-    } else {
-      return this._data;
-    }
-  },
-
-  /**
-   *  adds a specific field or object to the Entity's data
-   *
-   *  @method set
-   *  @param {string} item || {object}
-   *  @param {string} value
-   *  @return none
-   */
-  Usergrid.Entity.prototype.set = function (item, value){
-    if (typeof item === 'object') {
-      for(field in item) {
-        this._data[field] = item[field];
-      }
-    } else if (typeof item === 'string') {
-      this._data[item] = value;
-    } else {
-      this._data = null;
-    }
-  }
-
-  /**
-   *  Saves the entity back to the database
-   *
-   *  @method save
-   *  @public
-   *  @param {function} successCallback
-   *  @param {function} errorCallback
-   *  @return none
-   */
-  Usergrid.Entity.prototype.save = function (successCallback, errorCallback){
-    var path = this.getCollectionType();
-    //TODO:  API will be changed soon to accomodate PUTs via name which create new entities
-    //       This function should be changed to PUT only at that time, and updated to use
-    //       either uuid or name
-    var method = 'POST';
-    if (this.get('uuid')) {
-      method = 'PUT';
-      if (Usergrid.validation.isUUID(this.get('uuid'))) {
-        path += "/" + this.get('uuid');
-      }
-    }
-
-    //if this is a user, update the password if it has been specified
-    var data = {};
-    if (path == 'users') {
-      data = this.get();
-      var pwdata = {};
-      //Note: we have a ticket in to change PUT calls to /users to accept the password change
-      //      once that is done, we will remove this call and merge it all into one
-      if (data.oldpassword && data.newpassword) {
-        pwdata.oldpassword = data.oldpassword;
-        pwdata.newpassword = data.newpassword;
-        this.runAppQuery(new Usergrid.Query('PUT', 'users/'+uuid+'/password', pwdata, null,
-          function (response) {
-            //not calling any callbacks - this section will be merged as soon as API supports
-            //   updating passwords in general PUT call
-          },
-          function (response) {
-
-          }
-        ));
-      }
-      //remove old and new password fields so they don't end up as part of the entity object
-      delete data.oldpassword;
-      delete data.newpassword;
-    }
-
-    //update the entity
-    var self = this;
-
-    data = {};
-    var entityData = this.get();
-    //remove system specific properties
-    for (var item in entityData) {
-      if (item == 'metadata' || item == 'created' || item == 'modified' ||
-          item == 'type' || item == 'activatted' ) { continue; }
-      data[item] = entityData[item];
-    }
-
-    this.setAllQueryParams(method, path, data, null,
-      function(response) {
-        try {
-          var entity = response.entities[0];
-          self.set(entity);
-          if (typeof(successCallback) === "function"){
-            successCallback(response);
-          }
-        } catch (e) {
-          if (typeof(errorCallback) === "function"){
-            errorCallback(response);
-          }
-        }
-      },
-      function(response) {
-        if (typeof(errorCallback) === "function"){
-          errorCallback(response);
-        }
-      }
-    );
-    Usergrid.ApiClient.runAppQuery(this);
-  }
-
-  /**
-   *  refreshes the entity by making a GET call back to the database
-   *
-   *  @method fetch
-   *  @public
-   *  @param {function} successCallback
-   *  @param {function} errorCallback
-   *  @return none
-   */
-  Usergrid.Entity.prototype.fetch = function (successCallback, errorCallback){
-    var path = this.getCollectionType();
-    //if a uuid is available, use that, otherwise, use the name
-    if (this.get('uuid')) {
-      path += "/" + this.get('uuid');
-    } else {
-      if (path == "users") {
-        if (this.get("username")) {
-          path += "/" + this.get("username");
-        } else {
-          console.log('no username specified');
-          if (typeof(errorCallback) === "function"){
-            console.log('no username specified');
-          }
-        }
-      } else {
-        if (this.get()) {
-          path += "/" + this.get();
-        } else {
-          console.log('no entity identifier specified');
-          if (typeof(errorCallback) === "function"){
-            console.log('no entity identifier specified');
-          }
-        }
-      }
-    }
-    var self = this;
-    this.setAllQueryParams('GET', path, null, null,
-      function(response) {
-        try {
-          if (response.user) {
-            self.set(response.user);
-          }
-          var entity = response.entities[0];
-          self.set(entity);
-          if (typeof(successCallback) === "function"){
-            successCallback(response);
-          }
-        } catch (e) {
-          if (typeof(errorCallback) === "function"){
-            errorCallback(response);
-          }
-        }
-      },
-      function(response) {
-        if (typeof(errorCallback) === "function"){
-            errorCallback(response);
-        }
-      }
-    );
-    Usergrid.ApiClient.runAppQuery(this);
-  }
-
-  /**
-   *  deletes the entity from the database - will only delete
-   *  if the object has a valid uuid
-   *
-   *  @method destroy
-   *  @public
-   *  @param {function} successCallback
-   *  @param {function} errorCallback
-   *  @return none
-   *
-   */
-  Usergrid.Entity.prototype.destroy = function (successCallback, errorCallback){
-    var path = this.getCollectionType();
-    if (this.get('uuid')) {
-      path += "/" + this.get('uuid');
-    } else {
-      console.log('Error trying to delete object - no uuid specified.');
-      if (typeof(errorCallback) === "function"){
-        errorCallback('Error trying to delete object - no uuid specified.');
-      }
-    }
-    var self = this;
-    this.setAllQueryParams('DELETE', path, null, null,
-      function(response) {
-        //clear out this object
-        self.set(null);
-        if (typeof(successCallback) === "function"){
-          successCallback(response);
-        }
-      },
-      function(response) {
-        if (typeof(errorCallback) === "function"){
-            errorCallback(response);
-        }
-      }
-    );
-    Usergrid.ApiClient.runAppQuery(this);
-  }
-
-})(Usergrid);
-
-
-/**
- *  The Collection class models Usergrid Collections.  It essentially
- *  acts as a container for holding Entity objects, while providing
- *  additional funcitonality such as paging, and saving
- *
- *  @class Collection
- *  @author Rod Simpson (rod@apigee.com)
- */
-(function () {
-  /**
-   *  Collection is a container class for holding entities
-   *
-   *  @constructor
-   *  @param {string} collectionPath - the type of collection to model
-   *  @param {uuid} uuid - (optional), the UUID of the collection if it is known
-   */
-  Usergrid.Collection = function(path, uuid) {
-    this._path = path;
-    this._uuid = uuid;
-    this._list = [];
-    this._Query = new Usergrid.Query();
-    this._iterator = -1; //first thing we do is increment, so set to -1
-  };
-
-  Usergrid.Collection.prototype = new Usergrid.Query();
-
-  /**
-   *  gets the current Collection path
-   *
-   *  @method getPath
-   *  @return {string} path
-   */
-  Usergrid.Collection.prototype.getPath = function (){
-    return this._path;
-  }
-
-  /**
-   *  sets the Collection path
-   *
-   *  @method setPath
-   *  @param {string} path
-   *  @return none
-   */
-  Usergrid.Collection.prototype.setPath = function (path){
-    this._path = path;
-  }
-
-  /**
-   *  gets the current Collection UUID
-   *
-   *  @method getUUID
-   *  @return {string} the uuid
-   */
-  Usergrid.Collection.prototype.getUUID = function (){
-    return this._uuid;
-  }
-
-  /**
-   *  sets the current Collection UUID
-   *  @method setUUID
-   *  @param {string} uuid
-   *  @return none
-   */
-  Usergrid.Collection.prototype.setUUID = function (uuid){
-    this._uuid = uuid;
-  }
-
-  /**
-   *  Adds an Entity to the collection (adds to the local object)
-   *
-   *  @method addEntity
-   *  @param {object} entity
-   *  @param {function} successCallback
-   *  @param {function} errorCallback
-   *  @return none
-   */
-  Usergrid.Collection.prototype.addEntity = function (entity){
-    //then add it to the list
-    var count = this._list.length;
-    this._list[count] = entity;
-  }
-
-  /**
-   *  Adds a new Entity to the collection (saves, then adds to the local object)
-   *
-   *  @method addNewEntity
-   *  @param {object} entity
-   *  @return none
-   */
-  Usergrid.Collection.prototype.addNewEntity = function (entity,successCallback, errorCallback) {
-    //add the entity to the list
-    this.addEntity(entity);
-    //then save the entity
-    entity.save(successCallback, errorCallback);
-  }
-
-  Usergrid.Collection.prototype.destroyEntity = function (entity) {
-    //first get the entities uuid
-    var uuid = entity.get('uuid');
-    //if the entity has a uuid, delete it
-    if (Usergrid.validation.isUUID(uuid)) {
-      //then remove it from the list
-      var count = this._list.length;
-      var i=0;
-      var reorder = false;
-      for (i=0; i<count; i++) {
-        if(reorder) {
-          this._list[i-1] = this._list[i];
-          this._list[i] = null;
-        }
-        if (this._list[i].get('uuid') == uuid) {
-          this._list[i] = null;
-          reorder=true;
-        }
-      }
-    }
-    //first destroy the entity on the server
-    entity.destroy();
-  }
-
-  /**
-   *  Looks up an Entity by a specific field - will return the first Entity that
-   *  has a matching field
-   *
-   *  @method getEntityByField
-   *  @param {string} field
-   *  @param {string} value
-   *  @return {object} returns an entity object, or null if it is not found
-   */
-  Usergrid.Collection.prototype.getEntityByField = function (field, value){
-    var count = this._list.length;
-    var i=0;
-    for (i=0; i<count; i++) {
-      if (this._list[i].getField(field) == value) {
-        return this._list[i];
-      }
-    }
-    return null;
-  }
-
-  /**
-   *  Looks up an Entity by UUID
-   *
-   *  @method getEntityByUUID
-   *  @param {string} UUID
-   *  @return {object} returns an entity object, or null if it is not found
-   */
-  Usergrid.Collection.prototype.getEntityByUUID = function (UUID){
-    var count = this._list.length;
-    var i=0;
-    for (i=0; i<count; i++) {
-      if (this._list[i].get('uuid') == UUID) {
-        return this._list[i];
-      }
-    }
-    return null;
-  }
-
-  /**
-   *  Returns the first Entity of the Entity list - does not affect the iterator
-   *
-   *  @method getFirstEntity
-   *  @return {object} returns an entity object
-   */
-  Usergrid.Collection.prototype.getFirstEntity = function (){
-    var count = this._list.length;
-      if (count > 0) {
-        return this._list[0];
-      }
-      return null;
-  }
-
-  /**
-   *  Returns the last Entity of the Entity list - does not affect the iterator
-   *
-   *  @method getLastEntity
-   *  @return {object} returns an entity object
-   */
-  Usergrid.Collection.prototype.getLastEntity = function (){
-    var count = this._list.length;
-      if (count > 0) {
-        return this._list[count-1];
-      }
-      return null;
-  }
-
-  /**
-   *  Entity iteration -Checks to see if there is a "next" entity
-   *  in the list.  The first time this method is called on an entity
-   *  list, or after the resetEntityPointer method is called, it will
-   *  return true referencing the first entity in the list
-   *
-   *  @method hasNextEntity
-   *  @return {boolean} true if there is a next entity, false if not
-   */
-  Usergrid.Collection.prototype.hasNextEntity = function (){
-    var next = this._iterator + 1;
-      if(next >=0 && next < this._list.length) {
-        return true;
-      }
-      return false;
-  }
-
-  /**
-   *  Entity iteration - Gets the "next" entity in the list.  The first
-   *  time this method is called on an entity list, or after the method
-   *  resetEntityPointer is called, it will return the,
-   *  first entity in the list
-   *
-   *  @method hasNextEntity
-   *  @return {object} entity
-   */
-  Usergrid.Collection.prototype.getNextEntity = function (){
-    this._iterator++;
-      if(this._iterator >= 0 && this._iterator <= this._list.length) {
-        return this._list[this._iterator];
-      }
-      return false;
-  }
-
-  /**
-   *  Entity iteration - Checks to see if there is a "previous"
-   *  entity in the list.
-   *
-   *  @method hasPreviousEntity
-   *  @return {boolean} true if there is a previous entity, false if not
-   */
-  Usergrid.Collection.prototype.hasPreviousEntity = function (){
-    var previous = this._iterator - 1;
-      if(previous >=0 && previous < this._list.length) {
-        return true;
-      }
-      return false;
-  }
-
-  /**
-   *  Entity iteration - Gets the "previous" entity in the list.
-   *
-   *  @method getPreviousEntity
-   *  @return {object} entity
-   */
-  Usergrid.Collection.prototype.getPreviousEntity = function (){
-     this._iterator--;
-      if(this._iterator >= 0 && this._iterator <= this._list.length) {
-        return this.list[this._iterator];
-      }
-      return false;
-  }
-
-  /**
-   *  Entity iteration - Resets the iterator back to the beginning
-   *  of the list
-   *
-   *  @method resetEntityPointer
-   *  @return none
-   */
-  Usergrid.Collection.prototype.resetEntityPointer = function (){
-     this._iterator  = -1;
-  }
-
-  /**
-   *  gets and array of all entities currently in the colleciton object
-   *
-   *  @method getEntityList
-   *  @return {array} returns an array of entity objects
-   */
-  Usergrid.Collection.prototype.getEntityList = function (){
-     return this._list;
-  }
-
-  /**
-   *  sets the entity list
-   *
-   *  @method setEntityList
-   *  @param {array} list - an array of Entity objects
-   *  @return none
-   */
-  Usergrid.Collection.prototype.setEntityList = function (list){
-    this._list = list;
-  }
-
-  /**
-   *  Paging -  checks to see if there is a next page od data
-   *
-   *  @method hasNextPage
-   *  @return {boolean} returns true if there is a next page of data, false otherwise
-   */
-  Usergrid.Collection.prototype.hasNextPage = function (){
-    return this.hasNext();
-  }
-
-  /**
-   *  Paging - advances the cursor and gets the next
-   *  page of data from the API.  Stores returned entities
-   *  in the Entity list.
-   *
-   *  @method getNextPage
-   *  @return none
-   */
-  Usergrid.Collection.prototype.getNextPage = function (){
-    if (this.hasNext()) {
-        //set the cursor to the next page of data
-        this.getNext();
-        //empty the list
-        this.setEntityList([]);
-        Usergrid.ApiClient.runAppQuery(this);
-      }
-  }
-
-  /**
-   *  Paging -  checks to see if there is a previous page od data
-   *
-   *  @method hasPreviousPage
-   *  @return {boolean} returns true if there is a previous page of data, false otherwise
-   */
-  Usergrid.Collection.prototype.hasPreviousPage = function (){
-    return this.hasPrevious();
-  }
-
-  /**
-   *  Paging - reverts the cursor and gets the previous
-   *  page of data from the API.  Stores returned entities
-   *  in the Entity list.
-   *
-   *  @method getPreviousPage
-   *  @return none
-   */
-  Usergrid.Collection.prototype.getPreviousPage = function (){
-    if (this.hasPrevious()) {
-        this.getPrevious();
-        //empty the list
-        this.setEntityList([]);
-        Usergrid.ApiClient.runAppQuery(this);
-      }
-  }
-
-  /**
-   *  clears the query parameters object
-   *
-   *  @method clearQuery
-   *  @return none
-   */
-  Usergrid.Collection.prototype.clearQuery = function (){
-    this.clearAll();
-  }
-
-  //The get() function is deprecated.  Including here for backwards compatibility
-  //with previous versions of the SDK
-  Usergrid.Collection.prototype.get = function (successCallback, errorCallback){
-    Usergrid.Collection.fetch(successCallback, errorCallback);
-  }
-
-  /**
-   *  A method to get all items in the collection, as dictated by the
-   *  cursor and the query.  By default, the API returns 10 items in
-   *  a given call.  This can be overriden so that more or fewer items
-   *  are returned.  The entities returned are all stored in the colleciton
-   *  object's entity list, and can be retrieved by calling getEntityList()
-   *
-   *  @method get
-   *  @param {function} successCallback
-   *  @param {function} errorCallback
-   *  @return none
-   */
-  Usergrid.Collection.prototype.fetch = function (successCallback, errorCallback){
-    var self = this;
-    var queryParams = this.getQueryParams();
-    //empty the list
-    this.setEntityList([]);
-    this.setAllQueryParams('GET', this.getPath(), null, queryParams,
-      function(response) {
-        if (response.entities) {
-          this.resetEntityPointer();
-          var count = response.entities.length;
-          for (var i=0;i<count;i++) {
-            var uuid = response.entities[i].uuid;
-            if (uuid) {
-              var entity = new Usergrid.Entity(self.getPath(), uuid);
-              //store the data in the entity
-              var data = response.entities[i] || {};
-              delete data.uuid; //remove uuid from the object
-              entity.set(data);
-              //store the new entity in this collection
-              self.addEntity(entity);
-            }
-          }
-          if (typeof(successCallback) === "function"){
-            successCallback(response);
-          }
-        } else {
-          if (typeof(errorCallback) === "function"){
-              errorCallback(response);
-          }
-        }
-      },
-      function(response) {
-        if (typeof(errorCallback) === "function"){
-            errorCallback(response);
-        }
-      }
-    );
-    Usergrid.ApiClient.runAppQuery(this);
-  }
-
-  /**
-   *  A method to save all items currently stored in the collection object
-   *  caveat with this method: we can't update anything except the items
-   *  currently stored in the collection.
-   *
-   *  @method save
-   *  @param {function} successCallback
-   *  @param {function} errorCallback
-   *  @return none
-   */
-  Usergrid.Collection.prototype.save = function (successCallback, errorCallback){
-    //loop across all entities and save each one
-    var entities = this.getEntityList();
-    var count = entities.length;
-    var jsonObj = [];
-    for (var i=0;i<count;i++) {
-      entity = entities[i];
-      data = entity.get();
-      if (entity.get('uuid')) {
-        data.uuid = entity.get('uuid');
-        jsonObj.push(data);
-      }
-      entity.save();
-    }
-    this.setAllQueryParams('PUT', this.getPath(), jsonObj, null,successCallback, errorCallback);
-    Usergrid.ApiClient.runAppQuery(this);
-  }
-})(Usergrid);
-
-
-/*
- *  Usergrid.ApiClient
- *
- *  A Singleton that is the main client for making calls to the API. Maintains
- *  state between calls for the following items:
- *
- *  Token
- *  User (username, email, name, uuid)
- *
- *  Main methods for making calls to the API are:
- *
- *  runAppQuery (Query)
- *  runManagementQuery(Query)
- *
- *  Create a new Usergrid.Query object and then pass it to either of these
- *  two methods for making calls directly to the API.
- *
- *  A method for logging in an app user (to get a OAuth token) also exists:
- *
- *  logInAppUser (username, password, successCallback, failureCallback)
- *
- *  @class Usergrid.ApiClient
- *  @author Rod Simpson (rod@apigee.com)
- *
- */
-Usergrid.M = 'ManagementQuery';
-Usergrid.A = 'ApplicationQuery';
-Usergrid.ApiClient = (function () {
-  //API endpoint
-  var _apiUrl = "https://api.usergrid.com/";
-  var _orgName = null;
-  var _appName = null;
-  var _token = null;
-  var _callTimeout = 30000;
-  var _queryType = null;
-  var _loggedInUser = null;
-  var _logoutCallback = null;
-  var _callTimeoutCallback = null;
-
-
-  /*
-   *  A method to set up the ApiClient with orgname and appname
-   *
-   *  @method init
-   *  @public
-   *  @param {string} orgName
-   *  @param {string} appName
-   *  @return none
-   *
-   */
-  function init(orgName, appName){
-    this.setOrganizationName(orgName);
-    this.setApplicationName(appName);
-  }
-
-  /*
-  *  Public method to run calls against the app endpoint
-  *
-  *  @method runAppQuery
-  *  @public
-  *  @params {object} Usergrid.Query - {method, path, jsonObj, params, successCallback, failureCallback}
-  *  @return none
-  */
-  function runAppQuery (Query) {
-    var endpoint = "/" + this.getOrganizationName() + "/" + this.getApplicationName() + "/";
-    setQueryType(Usergrid.A);
-    run(Query, endpoint);
-  }
-
-  /*
-  *  Public method to run calls against the management endpoint
-  *
-  *  @method runManagementQuery
-  *  @public
-  *  @params {object} Usergrid.Query - {method, path, jsonObj, params, successCallback, failureCallback}
-  *  @return none
-  */
-  function runManagementQuery (Query) {
-    var endpoint = "/management/";
-    setQueryType(Usergrid.M);
-    run(Query, endpoint)
-  }
-
-  /*
-    *  A public method to get the organization name to be used by the client
-    *
-    *  @method getOrganizationName
-    *  @public
-    *  @return {string} the organization name
-    */
-  function getOrganizationName() {
-    return _orgName;
-  }
-
-  /*
-    *  A public method to set the organization name to be used by the client
-    *
-    *  @method setOrganizationName
-    *  @param orgName - the organization name
-    *  @return none
-    */
-  function setOrganizationName(orgName) {
-    _orgName = orgName;
-  }
-
-  /*
-  *  A public method to get the application name to be used by the client
-  *
-  *  @method getApplicationName
-  *  @public
-  *  @return {string} the application name
-  */
-  function getApplicationName() {
-    return _appName;
-  }
-
-  /*
-  *  A public method to set the application name to be used by the client
-  *
-  *  @method setApplicationName
-  *  @public
-  *  @param appName - the application name
-  *  @return none
-  */
-  function setApplicationName(appName) {
-    _appName = appName;
-  }
-
-  /*
-  *  A public method to get current OAuth token
-  *
-  *  @method getToken
-  *  @public
-  *  @return {string} the current token
-  */
-  function getToken() {
-    return _token;
-  }
-
-  /*
-  *  A public method to set the current Oauth token
-  *
-  *  @method setToken
-  *  @public
-  *  @param token - the bearer token
-  *  @return none
-  */
-  function setToken(token) {
-    _token = token;
-  }
-
-  /*
-   *  A public method to return the API URL
-   *
-   *  @method getApiUrl
-   *  @public
-   *  @return {string} the API url
-   */
-  function getApiUrl() {
-    return _apiUrl;
-  }
-
-  /*
-   *  A public method to overide the API url
-   *
-   *  @method setApiUrl
-   *  @public
-   *  @return none
-   */
-  function setApiUrl(apiUrl) {
-    _apiUrl = apiUrl;
-  }
-
-  /*
-   *  A public method to return the call timeout amount
-   *
-   *  @method getCallTimeout
-   *  @public
-   *  @return {string} the timeout value (an integer) 30000 = 30 seconds
-   */
-  function getCallTimeout() {
-    return _callTimeout;
-  }
-
-  /*
-   *  A public method to override the call timeout amount
-   *
-   *  @method setCallTimeout
-   *  @public
-   *  @return none
-   */
-  function setCallTimeout(callTimeout) {
-    _callTimeout = callTimeout;
-  }
-
-  /*
-   * Returns the call timeout callback function
-   *
-   * @public
-   * @method setCallTimeoutCallback
-   * @return none
-   */
-  function setCallTimeoutCallback(callback) {
-    _callTimeoutCallback = callback;
-  }
-
-  /*
-   * Returns the call timeout callback function
-   *
-   * @public
-   * @method getCallTimeoutCallback
-   * @return {function} Returns the callTimeoutCallback
-   */
-  function getCallTimeoutCallback() {
-    return _callTimeoutCallback;
-  }
-
-  /*
-   * Calls the call timeout callback function
-   *
-   * @public
-   * @method callTimeoutCallback
-   * @return {boolean} Returns true or false based on if there was a callback to call
-   */
-  function callTimeoutCallback(response) {
-    if (_callTimeoutCallback && typeof(_callTimeoutCallback) === "function") {
-      _callTimeoutCallback(response);
-      return true;
-    } else {
-      return false;
-    }
-  }
-
-  /*
-   *  A public method to get the api url of the reset pasword endpoint
-   *
-   *  @method getResetPasswordUrl
-   *  @public
-   *  @return {string} the api rul of the reset password endpoint
-   */
-  function getResetPasswordUrl() {
-    return getApiUrl() + "management/users/resetpw"
-  }
-
-  /*
-   *  A public method to get an Entity object for the current logged in user
-   *
-   *  @method getLoggedInUser
-   *  @public
-   *  @return {object} user - Entity object of type user
-   */
-  function getLoggedInUser() {
-    return this._loggedInUser;
-  }
-
-  /*
-   *  A public method to set an Entity object for the current logged in user
-   *
-   *  @method setLoggedInUser
-   *  @public
-   *  @param {object} user - Entity object of type user
-   *  @return none
-   */
-  function setLoggedInUser(user) {
-    this._loggedInUser = user;
-  }
-
-  /*
-  *  A public method to log in an app user - stores the token for later use
-  *
-  *  @method logInAppUser
-  *  @public
-  *  @params {string} username
-  *  @params {string} password
-  *  @params {function} successCallback
-  *  @params {function} failureCallback
-  *  @return {response} callback functions return API response object
-  */
-  function logInAppUser (username, password, successCallback, failureCallback) {
-    var self = this;
-    var data = {"username": username, "password": password, "grant_type": "password"};
-    this.runAppQuery(new Usergrid.Query('POST', 'token', data, null,
-      function (response) {
-        var user = new Usergrid.Entity('users');
-        user.set('username', response.user.username);
-        user.set('name', response.user.name);
-        user.set('email', response.user.email);
-        user.set('uuid', response.user.uuid);
-        self.setLoggedInUser(user);
-        self.setToken(response.access_token);
-        if (successCallback && typeof(successCallback) === "function") {
-          successCallback(response);
-        }
-      },
-      function (response) {
-        if (failureCallback && typeof(failureCallback) === "function") {
-          failureCallback(response);
-        }
-      }
-     ));
-  }
-
-  /*
-   *  TODO:  NOT IMPLEMENTED YET - A method to renew an app user's token
-   *  Note: waiting for API implementation
-   *  @method renewAppUserToken
-   *  @public
-   *  @return none
-   */
-  function renewAppUserToken() {
-
-  }
-
-  /**
-   *  A public method to log out an app user - clears all user fields from client
-   *
-   *  @method logoutAppUser
-   *  @public
-   *  @return none
-   */
-  function logoutAppUser() {
-    this.setLoggedInUser(null);
-    this.setToken(null);
-  }
-
-  /**
-   *  A public method to test if a user is logged in - does not guarantee that the token is still valid,
-   *  but rather that one exists, and that there is a valid UUID
-   *
-   *  @method isLoggedInAppUser
-   *  @public
-   *  @params {object} Usergrid.Query - {method, path, jsonObj, params, successCallback, failureCallback}
-   *  @return {boolean} Returns true the user is logged in (has token and uuid), false if not
-   */
-  function isLoggedInAppUser() {
-    var user = this.getLoggedInUser();
-    return (this.getToken() && Usergrid.validation.isUUID(user.get('uuid')));
-  }
-
-   /*
-   *  A public method to get the logout callback, which is called
-   *
-   *  when the token is found to be invalid
-   *  @method getLogoutCallback
-   *  @public
-   *  @return {string} the api rul of the reset password endpoint
-   */
-  function getLogoutCallback() {
-    return _logoutCallback;
-  }
-
-  /*
-   *  A public method to set the logout callback, which is called
-   *
-   *  when the token is found to be invalid
-   *  @method setLogoutCallback
-   *  @public
-   *  @param {function} logoutCallback
-   *  @return none
-   */
-  function setLogoutCallback(logoutCallback) {
-    _logoutCallback = logoutCallback;
-  }
-
-  /*
-   *  A public method to call the logout callback, which is called
-   *
-   *  when the token is found to be invalid
-   *  @method callLogoutCallback
-   *  @public
-   *  @return none
-   */
-  function callLogoutCallback() {
-    if (_logoutCallback && typeof(_logoutCallback ) === "function") {
-      _logoutCallback();
-      return true;
-    } else {
-      return false;
-    }
-  }
-
-  /**
-   *  Private helper method to encode the query string parameters
-   *
-   *  @method encodeParams
-   *  @public
-   *  @params {object} params - an object of name value pairs that will be urlencoded
-   *  @return {string} Returns the encoded string
-   */
-  function encodeParams (params) {
-    tail = [];
-    var item = [];
-    if (params instanceof Array) {
-      for (i in params) {
-        item = params[i];
-        if ((item instanceof Array) && (item.length > 1)) {
-          tail.push(item[0] + "=" + encodeURIComponent(item[1]));
-        }
-      }
-    } else {
-      for (var key in params) {
-        if (params.hasOwnProperty(key)) {
-          var value = params[key];
-          if (value instanceof Array) {
-            for (i in value) {
-              item = value[i];
-              tail.push(key + "=" + encodeURIComponent(item));
-            }
-          } else {
-            tail.push(key + "=" + encodeURIComponent(value));
-          }
-        }
-      }
-    }
-    return tail.join("&");
-  }
-
-  /*
-   *  A private method to get the type of the current api call - (Management or Application)
-   *
-   *  @method getQueryType
-   *  @private
-   *  @return {string} the call type
-   */
-  function getQueryType() {
-    return _queryType;
-  }
-  /*
-   *  A private method to set the type of the current api call - (Management or Application)
-   *
-   *  @method setQueryType
-   *  @private
-   *  @param {string} call type
-   *  @return none
-   */
-  function setQueryType(type) {
-    _queryType = type;
-  }
-
-  /**
-   *  A private method to validate, prepare,, and make the calls to the API
-   *  Use runAppQuery or runManagementQuery to make your calls!
-   *
-   *  @method run
-   *  @private
-   *  @params {object} Usergrid.Query - {method, path, jsonObj, params, successCallback, failureCallback}
-   *  @params {string} endpoint - used to differentiate between management and app queries
-   *  @return {response} callback functions return API response object
-   */
-  function run (Query, endpoint) {
-    var curl = "curl";
-    //validate parameters
-    try {
-      //verify that the query object is valid
-      if(!(Query instanceof Usergrid.Query)) {
-        throw(new Error('Query is not a valid object.'));
-      }
-      //for timing, call start
-      Query.setQueryStartTime();
-      //peel the data out of the query object
-      var method = Query.getMethod().toUpperCase();
-      var path = Query.getResource();
-      var jsonObj = Query.getJsonObj() || {};
-      var params = Query.getQueryParams() || {};
-
-      var formData = Query.getJsonObj();
-
-      //method - should be GET, POST, PUT, or DELETE only
-      if (method != 'GET' && method != 'POST' && method != 'PUT' && method != 'DELETE') {
-        throw(new Error('Invalid method - should be GET, POST, PUT, or DELETE.'));
-      }
-      //curl - add the method to the command (no need to add anything for GET)
-      if (method == "POST") {curl += " -X POST"; }
-      else if (method == "PUT") { curl += " -X PUT"; }
-      else if (method == "DELETE") { curl += " -X DELETE"; }
-      else { curl += " -X GET"; }
-
-      //curl - append the bearer token if this is not the sandbox app
-      var application_name = Usergrid.ApiClient.getApplicationName();
-      if (application_name) {
-        application_name = application_name.toUpperCase();
-      }
-      //if (application_name != 'SANDBOX' && Usergrid.ApiClient.getToken()) {
-      if ( Usergrid.ApiClient.getToken() ) { // || (getQueryType() == Usergrid.M && Usergrid.ApiClient.getToken())) {
-        curl += ' -i -H "Authorization: Bearer ' + Usergrid.ApiClient.getToken() + '"';
-        Query.setToken(true);
-      }
-
-      //params - make sure we have a valid json object
-      _params = JSON.stringify(params);
-      if (!JSON.parse(_params)) {
-        throw(new Error('Params object is not valid.'));
-      }
-
-      //add in the cursor if one is available
-      if (Query.getCursor()) {
-        params.cursor = Query.getCursor();
-      } else {
-        delete params.cursor;
-      }
-
-      //strip off the leading slash of the endpoint if there is one
-      endpoint = endpoint.indexOf('/') == 0 ? endpoint.substring(1) : endpoint;
-
-      //add the endpoint to the path
-      path = endpoint + path;
-
-      //make sure path never has more than one / together
-      if (path) {
-        //regex to strip multiple slashes
-        while(path.indexOf('//') != -1){
-          path = path.replace('//', '/');
-        }
-      }
-
-      //add the http:// bit on the front
-      path = Usergrid.ApiClient.getApiUrl() + path;
-
-      //curl - append the path
-      curl += ' "' + path;
-
-      //curl - append params to the path for curl prior to adding the timestamp
-      var curl_encoded_params = encodeParams(params);
-      if (curl_encoded_params) {
-        curl += "?" + curl_encoded_params;
-      }
-      curl += '"';
-
-      //add in a timestamp for gets and deletes - to avoid caching by the browser
-      if ((method == "GET") || (method == "DELETE")) {
-        params['_'] = new Date().getTime();
-      }
-
-      if (Usergrid.ApiClient.getToken() && Query.getToken()) {
-        params['access_token'] = Usergrid.ApiClient.getToken();
-      }
-
-      //append params to the path
-      var encoded_params = encodeParams(params);
-      if (encoded_params) {
-        path += "?" + encoded_params;
-      }
-
-      //jsonObj - make sure we have a valid json object
-      jsonObj = JSON.stringify(jsonObj)
-      if (!JSON.parse(jsonObj)) {
-        throw(new Error('JSON object is not valid.'));
-      }
-      if (jsonObj == '{}') {
-        jsonObj = null;
-      } else {
-        //curl - add in the json obj
-        curl += " -d '" + jsonObj + "'";
-      }
-
-    } catch (e) {
-      //parameter was invalid
-      console.log('error occured running query -' + e.message);
-      return false;
-    }
-    //log the curl command to the console
-    console.log(curl);
-    //store the curl command back in the object
-    Query.setCurl(curl);
-
-    var filePost = Query.getFilePost();
-    
-    //so far so good, so run the query
-    var xD = window.XDomainRequest ? true : false;
-    var xhr = getXHR(method, path, jsonObj, filePost);
-
-    // Handle response.
-    /*
-    xhr.onerror = function() {
-      //for timing, call end
-      Query.setQueryEndTime();
-      //for timing, log the total call time
-      console.log(Query.getQueryTotalTime());
-      //network error
-      clearTimeout(timeout);
-      console.log('API call failed at the network level.');
-      //send back an error (best we can do with what ie gives back)
-      Query.callFailureCallback(response.innerText);
-    };*/
-    xhr.xdomainOnload = function (response) {
-      //for timing, call end
-      Query.setQueryEndTime();
-      //for timing, log the total call time
-      console.log('Call timing: ' + Query.getQueryTotalTime());
-      //call completed
-      clearTimeout(timeout);
-      //decode the response
-      response = JSON.parse(xhr.responseText);
-      //if a cursor was present, grab it
-      try {
-        var cursor = response.cursor || null;
-        Query.saveCursor(cursor);
-      }catch(e) {}
-      Query.callSuccessCallback(response);
-    };
-    xhr.onload = function(response) {
-      //for timing, call end
-      Query.setQueryEndTime();
-      //for timing, log the total call time
-      console.log('Call timing: ' + Query.getQueryTotalTime());
-      //call completed
-      clearTimeout(timeout);
-      //decode the response
-      response = JSON.parse(xhr.responseText);
-      if (xhr.status != 200 && !xD)   {
-        //there was an api error
-        try {
-          var error = response.error;
-          console.log('API call failed: (status: '+xhr.status+') ' + response.error_description);
-          if ( (error == "auth_expired_session_token") ||
-               (error == "auth_missing_credentials")   ||
-               (error == "auth_unverified_oath")       ||
-               (error == "expired_token")              ||
-               (error == "unauthorized")               ||
-               (error == "auth_invalid")) {
-            //this error type means the user is not authorized. If a logout function is defined, call it
-            console.log('Auth error: ' + error);
-            callLogoutCallback();
-          }
-        } catch(e){}
-        //otherwise, just call the failure callback
-        Query.callFailureCallback(response.error);
-        return;
-      } else {
-        //query completed succesfully, so store cursor
-        var cursor = response.cursor || null;
-        Query.saveCursor(cursor);
-        //then call the original callback
-        Query.callSuccessCallback(response);
-     }
-    };
-
-    var timeout = setTimeout(
-      function() {
-        xhr.abort();
-        if ( typeof(Usergrid.ApiClient.getCallTimeoutCallback()) === 'function') {
-          Usergrid.ApiClient.callTimeoutCallback('API CALL TIMEOUT');
-        } else if (typeof(Query.getFailureCallback()) === 'function'){
-          Query.callFailureCallback('API CALL TIMEOUT');
-        }
-      },
-      Usergrid.ApiClient.getCallTimeout()); //set for 30 seconds
-
-
-    if (filePost) {
-      xhr.send(formData);
-    } else {
-      xhr.send(jsonObj);
-    }
-  }
-
-   /**
-   *  A private method to return the XHR object
-   *
-   *  @method getXHR
-   *  @private
-   *  @params {string} method (GET,POST,PUT,DELETE)
-   *  @params {string} path - api endpoint to call
-   *  @return {object} jsonObj - the json object if there is one
-   */
-  function getXHR(method, path, jsonObj, filePost) {
-    var xhr;
-    if(window.XDomainRequest)
-    {
-      xhr = new window.XDomainRequest();
-      if (Usergrid.ApiClient.getToken()) {
-        if (path.indexOf("?")) {
-          path += '&access_token='+Usergrid.ApiClient.getToken();
-        } else {
-          path = '?access_token='+Usergrid.ApiClient.getToken();
-        }
-      }
-      xhr.open(method, path, true);
-    }
-    else
-    {
-      xhr = new XMLHttpRequest();
-      xhr.open(method, path, true);
-      //add content type = json if there is a json payload
-      if (!filePost) {
-        xhr.setRequestHeader("Content-Type", "application/json");
-        xhr.setRequestHeader("Accept", "application/json");
-      }
-      /*
-      if (Usergrid.ApiClient.getToken()) {
-        xhr.setRequestHeader("Authorization", "Bearer " + Usergrid.ApiClient.getToken());
-        xhr.withCredentials = true;
-      }*/
-    }
-    return xhr;
-  }
-
-  return {
-    init:init,
-    runAppQuery:runAppQuery,
-    runManagementQuery:runManagementQuery,
-    getOrganizationName:getOrganizationName,
-    setOrganizationName:setOrganizationName,
-    getApplicationName:getApplicationName,
-    setApplicationName:setApplicationName,
-    getToken:getToken,
-    setToken:setToken,
-    getCallTimeout:getCallTimeout,
-    setCallTimeout:setCallTimeout,
-    getCallTimeoutCallback:getCallTimeoutCallback,
-    setCallTimeoutCallback:setCallTimeoutCallback,
-    callTimeoutCallback:callTimeoutCallback,
-    getApiUrl:getApiUrl,
-    setApiUrl:setApiUrl,
-    getResetPasswordUrl:getResetPasswordUrl,
-    getLoggedInUser:getLoggedInUser,
-    setLoggedInUser:setLoggedInUser,
-    logInAppUser:logInAppUser,
-    renewAppUserToken:renewAppUserToken,
-    logoutAppUser:logoutAppUser,
-    isLoggedInAppUser:isLoggedInAppUser,
-    getLogoutCallback:getLogoutCallback,
-    setLogoutCallback:setLogoutCallback,
-    callLogoutCallback:callLogoutCallback
-  }
-})();
-
-/**
- * validation is a Singleton that provides methods for validating common field types
- *
- * @class Usergrid.validation
- * @author Rod Simpson (rod@apigee.com)
-**/
-Usergrid.validation = (function () {
-
-  var usernameRegex = new RegExp("^([0-9a-zA-Z\.\-])+$");
-  var nameRegex     = new RegExp("^([0-9a-zA-Z@#$%^&!?;:.,'\"~*-=+_\[\\](){}/\\ |])+$");
-  var emailRegex    = new RegExp("^(([0-9a-zA-Z]+[_\+.-]?)+@[0-9a-zA-Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+$");
-  var passwordRegex = new RegExp("^([0-9a-zA-Z@#$%^&!?<>;:.,'\"~*-=+_\[\\](){}/\\ |])+$");
-  var pathRegex     = new RegExp("^([0-9a-z./-])+$");
-  var titleRegex    = new RegExp("^([0-9a-zA-Z.!-?/])+$");
-
-  /**
-    * Tests the string against the allowed chars regex
-    *
-    * @public
-    * @method validateUsername
-    * @param {string} username - The string to test
-    * @param {function} failureCallback - (optional), the function to call on a failure
-    * @return {boolean} Returns true if string passes regex, false if not
-    */
-  function validateUsername(username, failureCallback) {
-    if (usernameRegex.test(username) && checkLength(username, 4, 80)) {
-      return true;
-    } else {
-      if (failureCallback && typeof(failureCallback) === "function") {
-        failureCallback(this.getUsernameAllowedChars());
-      }
-      return false;
-    }
-  }
-
-  /**
-    * Returns the regex of allowed chars
-    *
-    * @public
-    * @method getUsernameAllowedChars
-    * @return {string} Returns a string with the allowed chars
-    */
-  function getUsernameAllowedChars(){
-    return 'Length: min 4, max 80. Allowed: A-Z, a-z, 0-9, dot, and dash';
-  }
-
-  /**
-    * Tests the string against the allowed chars regex
-    *
-    * @public
-    * @method validateName
-    * @param {string} name - The string to test
-    * @param {function} failureCallback - (optional), the function to call on a failure
-    * @return {boolean} Returns true if string passes regex, false if not
-    */
-  function validateName(name, failureCallback) {
-    if (nameRegex.test(name) && checkLength(name, 4, 16)) {
-      return true;
-    } else {
-      if (failureCallback && typeof(failureCallback) === "function") {
-        failureCallback(this.getNameAllowedChars());
-      }
-      return false;
-    }
-  }
-
-  /**
-    * Returns the regex of allowed chars
-    *
-    * @public
-    * @method getNameAllowedChars
-    * @return {string} Returns a string with the allowed chars
-    */
-  function getNameAllowedChars(){
-    return 'Length: min 4, max 80. Allowed: A-Z, a-z, 0-9, ~ @ # % ^ & * ( ) - _ = + [ ] { } \\ | ; : \' " , . / ? !';
-  }
-
-  /**
-    * Tests the string against the allowed chars regex
-    *
-    * @public
-    * @method validatePassword
-    * @param {string} password - The string to test
-    * @param {function} failureCallback - (optional), the function to call on a failure
-    * @return {boolean} Returns true if string passes regex, false if not
-    */
-  function validatePassword(password, failureCallback) {
-    if (passwordRegex.test(password) && checkLength(password, 5, 16)) {
-      return true;
-    } else {
-      if (failureCallback && typeof(failureCallback) === "function") {
-        failureCallback(this.getPasswordAllowedChars());
-      }
-      return false;
-    }
-  }
-
-  /**
-    * Returns the regex of allowed chars
-    *
-    * @public
-    * @method getPasswordAllowedChars
-    * @return {string} Returns a string with the allowed chars
-    */
-  function getPasswordAllowedChars(){
-    return 'Length: min 5, max 16. Allowed: A-Z, a-z, 0-9, ~ @ # % ^ & * ( ) - _ = + [ ] { } \\ | ; : \' " , . < > / ? !';
-  }
-
-  /**
-    * Tests the string against the allowed chars regex
-    *
-    * @public
-    * @method validateEmail
-    * @param {string} email - The string to test
-    * @param {function} failureCallback - (optional), the function to call on a failure
-    * @return {boolean} Returns true if string passes regex, false if not
-    */
-  function validateEmail(email, failureCallback) {
-    if (emailRegex.test(email) && checkLength(email, 4, 80)) {
-      return true;
-    } else {
-      if (failureCallback && typeof(failureCallback) === "function") {
-        failureCallback(this.getEmailAllowedChars());
-      }
-      return false;
-    }
-  }
-
-  /**
-    * Returns the regex of allowed chars
-    *
-    * @public
-    * @method getEmailAllowedChars
-    * @return {string} Returns a string with the allowed chars
-    */
-  function getEmailAllowedChars(){
-    return 'Email must be in standard form: e.g. example@Usergrid.com';
-  }
-
-  /**
-    * Tests the string against the allowed chars regex
-    *
-    * @public
-    * @method validatePath
-    * @param {string} path - The string to test
-    * @param {function} failureCallback - (optional), the function to call on a failure
-    * @return {boolean} Returns true if string passes regex, false if not
-    */
-  function validatePath(path, failureCallback) {
-    if (pathRegex.test(path) && checkLength(path, 4, 80)) {
-      return true;
-    } else {
-      if (failureCallback && typeof(failureCallback) === "function") {
-        failureCallback(this.getPathAllowedChars());
-      }
-      return false;
-    }
-  }
-
-  /**
-    * Returns the regex of allowed chars
-    *
-    * @public
-    * @method getPathAllowedChars
-    * @return {string} Returns a string with the allowed chars
-    */
-  function getPathAllowedChars(){
-    return 'Length: min 4, max 80. Allowed: /, a-z, 0-9, dot, and dash';
-  }
-
-  /**
-    * Tests the string against the allowed chars regex
-    *
-    * @public
-    * @method validateTitle
-    * @param {string} title - The string to test
-    * @param {function} failureCallback - (optional), the function to call on a failure
-    * @return {boolean} Returns true if string passes regex, false if not
-    */
-  function validateTitle(title, failureCallback) {
-    if (titleRegex.test(title) && checkLength(title, 4, 80)) {
-      return true;
-    } else {
-      if (failureCallback && typeof(failureCallback) === "function") {
-        failureCallback(this.getTitleAllowedChars());
-      }
-      return false;
-    }
-  }
-
-  /**
-    * Returns the regex of allowed chars
-    *
-    * @public
-    * @method getTitleAllowedChars
-    * @return {string} Returns a string with the allowed chars
-    */
-  function getTitleAllowedChars(){
-    return 'Length: min 4, max 80. Allowed: space, A-Z, a-z, 0-9, dot, dash, /, !, and ?';
-  }
-
-  /**
-    * Tests if the string is the correct length
-    *
-    * @public
-    * @method checkLength
-    * @param {string} string - The string to test
-    * @param {integer} min - the lower bound
-    * @param {integer} max - the upper bound
-    * @return {boolean} Returns true if string is correct length, false if not
-    */
-  function checkLength(string, min, max) {
-    if (string.length > max || string.length < min) {
-      return false;
-    }
-    return true;
-  }
-
-  /**
-    * Tests if the string is a uuid
-    *
-    * @public
-    * @method isUUID
-    * @param {string} uuid The string to test
-    * @returns {Boolean} true if string is uuid
-    */
-  function isUUID (uuid) {
-    var uuidValueRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;
-    if (!uuid) return false;
-    return uuidValueRegex.test(uuid);
-  }
-
-  return {
-    validateUsername:validateUsername,
-    getUsernameAllowedChars:getUsernameAllowedChars,
-    validateName:validateName,
-    getNameAllowedChars:getNameAllowedChars,
-    validatePassword:validatePassword,
-    getPasswordAllowedChars:getPasswordAllowedChars,
-    validateEmail:validateEmail,
-    getEmailAllowedChars:getEmailAllowedChars,
-    validatePath:validatePath,
-    getPathAllowedChars:getPathAllowedChars,
-    validateTitle:validateTitle,
-    getTitleAllowedChars:getTitleAllowedChars,
-    isUUID:isUUID
-  }
-})();


[33/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/lib/jquery.dataset.min.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/lib/jquery.dataset.min.js b/deleted/archive/js/lib/jquery.dataset.min.js
deleted file mode 100644
index 4dc2168..0000000
--- a/deleted/archive/js/lib/jquery.dataset.min.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(a){function h(a){var c,d=a&&a.length;if(d===undefined){for(c in a){this.removeAttr(b+c)}}else{for(c=0;c<d;c++){this.removeAttr(b+a[c])}}return this}function g(a){if(typeof a=="string"){return this.removeAttr(b+a)}return h(a)}function f(a){for(var c in a){this.attr(b+c,a[c])}return this}function e(){return this.foldAttr(function(a,b,d){var e=c.exec(this.name);if(e)d[e[1]]=this.value})}function d(a,c){if(c!==undefined){return this.attr(b+a,c)}switch(typeof a){case"string":return this.attr(b+a);case"object":return f.call(this,a);case"undefined":return e.call(this);default:throw"dataset: invalid argument "+a}}var b="data-",c=/^data\-(.*)$/;a.fn.dataset=d;a.fn.removeDataset=h})(jQuery);(function(a){function e(a,b){if(b===undefined)b=[];return d(this,a,b)}function d(a,b,c){var d=a&&a.length;if(c===undefined)c={};if(!a)return c;if(d!==undefined){for(var e=0,f=a[e];e<d&&b.call(f,e,f,c)!==false;f=a[++e]){};}else{for(var g in a){if(b.call(a[g],g,a[g],c)===false)break}}return c}funct
 ion c(a,b){return d(this.length>0&&this[0].attributes,a,b)}function b(b){if(this.length>0){a.each(this[0].attributes,b)}return this}a.fn.eachAttr=b;a.fn.foldAttr=c;a.fn.fold=e;a.fold=d})(jQuery)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/lib/jquery.dform-0.1.3.min.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/lib/jquery.dform-0.1.3.min.js b/deleted/archive/js/lib/jquery.dform-0.1.3.min.js
deleted file mode 100644
index 3d1c3ec..0000000
--- a/deleted/archive/js/lib/jquery.dform-0.1.3.min.js
+++ /dev/null
@@ -1,16 +0,0 @@
-(function(a){function h(b,c,e){if(typeof c=="string"){a.isArray(b[c])||(b[c]=[]);b[c].push(e)}else typeof c=="object"&&a.each(c,function(g,i){h(b,g,i)})}var f={},d={};a.fn.extend({runSubscription:function(b,c,e){var g=this;a.dform.hasSubscription(b)&&a.each(f[b],function(i,j){j.call(g,c,e)});return this},runAll:function(b){var c=b.type,e=this;this.runSubscription("[pre]",b,c);a.each(b,function(g,i){a(e).runSubscription(g,i,c)});this.runSubscription("[post]",b,c);return this},formElement:function(b){var c=
-a.dform.createElement(b);this.append(a(c));a(c).runAll(b);return this},buildForm:function(b,c,e){if(typeof b=="string"){var g=a(this);a.get(b,c,function(i,j,k){a(g).buildForm(i);a.isFunction(e)&&e(i,j,k)},a.dform.options.ajaxFormat)}else if(b.type)this.formElement(b);else{c=this.is("form")?this:this.append("<form>").children("form:last");b=a.extend({type:"form"},b);a(c).dformAttr(b);a(c).runAll(b)}return this},dformAttr:function(b,c){var e=a.keyset(f);a.isArray(c)&&a.merge(e,c);this.attr(a.withoutKeys(b,
-e));return this}});a.extend(a,{keyset:function(b){var c=[];a.each(b,function(e){c.push(e)});return c},withKeys:function(b,c){var e={};a.each(c,function(g,i){if(b[i])e[i]=b[i]});return e},withoutKeys:function(b,c){var e={};a.each(b,function(g,i){if(a.inArray(g,c)==-1)e[g]=i});return e},getValueAt:function(b,c){for(var e=a.isArray(c)?c:c.split("."),g=b,i=0;i<e.length;i++){var j=e[i];if(!g[j])return false;g=g[j]}return g}});a.dform={options:{prefix:"ui-dform-",ajaxFormat:"json",defaultType:function(b){return a("<"+
-b.type+">").dformAttr(b)}},removeType:function(b){delete d[b]},typeNames:function(){return a.keyset(d)},addType:function(b,c){h(d,b,c)},addTypeIf:function(b,c,e){b&&a.dform.addType(c,e)},subscriberNames:function(){return a.keyset(f)},subscribe:function(b,c){h(f,b,c)},subscribeIf:function(b,c,e){b&&a.dform.subscribe(c,e)},removeSubscription:function(b){delete f[b]},hasSubscription:function(b){return f[b]?true:false},createElement:function(b){var c=b.type;if(!c)throw"No element type given! Must always exist.";
-var e=null;if(d[c]){var g=a.withoutKeys(b,"type");a.each(d[c],function(i,j){e=j.call(e,g)})}else e=a.dform.options.defaultType(b);return a(e)}}})(jQuery);
-(function(a){a.fn.placeholder=function(h){var f=this;a(this).data("placeholder",h);a(this).val(h);a(this).focus(function(){a(this).val()==a(this).data("placeholder")&&a(this).val("")});a(this).blur(function(){a(this).val()==""&&a(this).val(a(this).data("placeholder"))});a(this).parents("form").submit(function(){a(f).val()==a(f).data("placeholder")&&a(f).val("")});return this}})(jQuery);
-(function(a){function h(f,d){return function(b){return a(f).dformAttr(b,d)}}a.dform.addType({text:h('<input type="text" />'),password:h('<input type="password" />'),submit:h('<input type="submit" />'),reset:h('<input type="reset" />'),hidden:h('<input type="hidden" />'),radio:h('<input type="radio" />'),checkbox:h('<input type="checkbox" />'),checkboxes:h("<div>",["name"]),radiobuttons:h("<div>",["name"]),container:h("<div>"),file:h('<input type="file" />')});a.dform.subscribe({"class":function(f){this.addClass(f)},
-html:function(f){this.html(f)},elements:function(f){var d=a(this);a.each(f,function(b,c){if(typeof b=="string")c.name=name;a(d).formElement(c)})},value:function(f){this.val(f)},options:function(f,d){var b=a(this);if(d=="select")a.each(f,function(c,e){var g;if(typeof e=="string")g=a("<option>").attr("value",c).html(e);if(typeof e=="object")g=h("<option>",{})(a.withoutKeys(e,["value"])).html(e.value);a(b).append(g)});else if(d=="checkboxes"||d=="radiobuttons"){b=this;a.each(f,function(c,e){var g=d==
-"radiobuttons"?{type:"radio"}:{type:"checkbox"};if(typeof e=="string")g.caption=e;else a.extend(g,e);g.value=c;a(b).formElement(g)})}},caption:function(f,d){var b={};if(typeof f=="string")b.html=f;else a.extend(b,f);if(d=="fieldset"){b.type="legend";var c=a.dform.createElement(b);this.prepend(c);a(c).runAll(b)}else{b.type="label";if(this.attr("id"))b["for"]=this.attr("id");c=a.dform.createElement(b);d=="checkbox"||d=="radio"?this.parent().append(a(c)):a(c).insertBefore(a(this));a(c).runAll(b)}},type:function(f,
-d){a.dform.options.prefix&&this.addClass(a.dform.options.prefix+d)},"[post]":function(f,d){if(d=="checkboxes"||d=="radiobuttons")this.children("[type="+(d=="checkboxes"?"checkbox":"radio")+"]").each(function(){a(this).attr("name",f.name)})}})})(jQuery);
-(function(a){function h(d,b){var c=a.keyset(a.ui[d].prototype.options);return a.withKeys(b,c)}function f(d){d=d.split(".");if(d.length>1){var b=d.shift();if(b=jQuery.global.localize(b))return a.getValueAt(b,d)}return false}a.dform.subscribeIf(a.isFunction(a.fn.placeholder),"placeholder",function(d,b){if(b=="text"||b=="textarea")a(this).placeholder(d)});a.dform.addTypeIf(a.isFunction(a.fn.progressbar),"progressbar",function(d){return a("<div>").dformAttr(d).progressbar(h("progressbar",d))});a.dform.addTypeIf(a.isFunction(a.fn.slider),
-"slider",function(d){return a("<div>").dformAttr(d).slider(h("slider",d))});a.dform.addTypeIf(a.isFunction(a.fn.accordion),"accordion",function(d){return a("<div>").dformAttr(d)});a.dform.addTypeIf(a.isFunction(a.fn.tabs),"tabs",function(d){return a("<div>").dformAttr(d)});a.dform.subscribeIf(a.isFunction(a.fn.accordion),"entries",function(d,b){var c=this;b=="accordion"&&a.each(d,function(e,g){a.extend(g,{type:"container"});a(c).formElement(g);a(c).children("div:last").prev().wrapInner(a("<a>").attr("href",
-"#"))})});a.dform.subscribeIf(a.isFunction(a.fn.tabs),"entries",function(d,b){var c=this;if(b=="tabs"){this.append("<ul>");var e=a(c).children("ul:first");a.each(d,function(g,i){var j=i.id?i.id:g;a.extend(i,{type:"container",id:j});a(c).formElement(i);var k=a(c).children("div:last").prev();a(k).wrapInner(a("<a>").attr("href","#"+j));a(e).append(a("<li>").wrapInner(k))})}});a.dform.subscribeIf(a.isFunction(a.fn.dialog),"dialog",function(d,b){if(b=="form"||b=="fieldset")this.dialog(d)});a.dform.subscribeIf(a.isFunction(a.fn.resizable),
-"resizable",function(d){this.resizable(d)});a.dform.subscribeIf(a.isFunction(a.fn.datepicker),"datepicker",function(d,b){b=="text"&&this.datepicker(d)});a.dform.subscribeIf(a.isFunction(a.fn.autocomplete),"autocomplete",function(d,b){b=="text"&&this.autocomplete(d)});a.dform.subscribe("[post]",function(d,b){if(this.parents("form").hasClass("ui-widget")){if((b=="button"||b=="submit")&&a.isFunction(a.fn.button))this.button();a.inArray(b,["text","textarea","password","fieldset"])!=-1&&this.addClass("ui-widget-content ui-corner-all")}if(b==
-"accordion"){var c=h(b,d);a.extend(c,{header:"label"});this.accordion(c)}else if(b=="tabs"){c=h(b,d);this.tabs(c)}});a.dform.subscribeIf(a.isFunction(a.fn.validate),{"[pre]":function(d,b){if(b=="form"){var c={};if(this.hasClass("ui-widget"))c={highlight:function(e){a(e).addClass("ui-state-highlight")},unhighlight:function(e){a(e).removeClass("ui-state-highlight")}};this.validate(c)}},validate:function(d){this.rules("add",d)}});a.dform.subscribeIf(a.isFunction(a.fn.ajaxForm),"ajax",function(d,b){b==
-"form"&&this.ajaxForm(d)});a.dform.subscribeIf(a.global&&a.isFunction(a.global.localize),"html",function(d){(d=f(d))&&a(this).html(d)});a.dform.subscribeIf(a.global,"options",function(d,b){if(b=="select"&&typeof d=="string"){a(this).html("");var c=f(d);c&&a(this).runSubscription("options",c,b)}});a.dform.subscribeIf(a.isFunction(a.fn.wysiwyg),"wysiwyg",function(){})})(jQuery);

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/lib/jquery.jsonp-2.3.1.min.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/lib/jquery.jsonp-2.3.1.min.js b/deleted/archive/js/lib/jquery.jsonp-2.3.1.min.js
deleted file mode 100644
index 25a6997..0000000
--- a/deleted/archive/js/lib/jquery.jsonp-2.3.1.min.js
+++ /dev/null
@@ -1,3 +0,0 @@
-// jquery.jsonp 2.3.1 (c)2012 Julian Aubourg | MIT License
-// https://github.com/jaubourg/jquery-jsonp
-(function(a){function b(){}function c(a){A=[a]}function d(a,b,c,d){try{d=a&&a.apply(b.context||b,c)}catch(e){d=!1}return d}function e(a){return/\?/.test(a)?"&":"?"}function D(l){function Y(a){Q++||(R(),K&&(y[M]={s:[a]}),G&&(a=G.apply(l,[a])),d(D,l,[a,t]),d(F,l,[l,t]))}function Z(a){Q++||(R(),K&&a!=u&&(y[M]=a),d(E,l,[l,a]),d(F,l,[l,a]))}l=a.extend({},B,l);var D=l.success,E=l.error,F=l.complete,G=l.dataFilter,H=l.callbackParameter,I=l.callback,J=l.cache,K=l.pageCache,L=l.charset,M=l.url,N=l.data,O=l.timeout,P,Q=0,R=b,S,T,U,V,W,X;return w&&w(function(a){a.done(D).fail(E),D=a.resolve,E=a.reject}).promise(l),l.abort=function(){!(Q++)&&R()},d(l.beforeSend,l,[l])===!1||Q?l:(M=M||h,N=N?typeof N=="string"?N:a.param(N,l.traditional):h,M+=N?e(M)+N:h,H&&(M+=e(M)+encodeURIComponent(H)+"=?"),!J&&!K&&(M+=e(M)+"_"+(new Date).getTime()+"="),M=M.replace(/=\?(&|$)/,"="+I+"$1"),K&&(P=y[M])?P.s?Y(P.s[0]):Z(P):(v[I]=c,V=a(s)[0],V.id=k+z++,L&&(V[g]=L),C&&C.version()<11.6?(W=a(s)[0]).text="document.getElem
 entById('"+V.id+"')."+n+"()":V[f]=f,p in V&&(V.htmlFor=V.id,V.event=m),V[o]=V[n]=V[p]=function(a){if(!V[q]||!/i/.test(V[q])){try{V[m]&&V[m]()}catch(b){}a=A,A=0,a?Y(a[0]):Z(i)}},V.src=M,R=function(a){X&&clearTimeout(X),V[p]=V[o]=V[n]=null,x[r](V),W&&x[r](W)},x[j](V,U=x.firstChild),W&&x[j](W,U),X=O>0&&setTimeout(function(){Z(u)},O)),l)}var f="async",g="charset",h="",i="error",j="insertBefore",k="_jqjsp",l="on",m=l+"click",n=l+i,o=l+"load",p=l+"readystatechange",q="readyState",r="removeChild",s="<script>",t="success",u="timeout",v=window,w=a.Deferred,x=a("head")[0]||document.documentElement,y={},z=0,A,B={callback:k,url:location.href},C=v.opera;D.setup=function(b){a.extend(B,b)},a.jsonp=D})(jQuery)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/lib/jquery.tmpl.min.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/lib/jquery.tmpl.min.js b/deleted/archive/js/lib/jquery.tmpl.min.js
deleted file mode 100644
index 5d61533..0000000
--- a/deleted/archive/js/lib/jquery.tmpl.min.js
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
- * jQuery Templates Plugin 1.0.0pre
- * http://github.com/jquery/jquery-tmpl
- * Requires jQuery 1.4.2
- *
- * Copyright Software Freedom Conservancy, Inc.
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- */
-(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0
 ])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,
 "tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.child
 Nodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d
 ?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAt
 tribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/lib/jquery.ui.statusbar.min.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/lib/jquery.ui.statusbar.min.js b/deleted/archive/js/lib/jquery.ui.statusbar.min.js
deleted file mode 100644
index e9b149b..0000000
--- a/deleted/archive/js/lib/jquery.ui.statusbar.min.js
+++ /dev/null
@@ -1 +0,0 @@
-$.widget("ui.statusbar",{options:{hideAfter:10,hidden:true},_create:function(){this.element.html("<ul></ul>");this.element.addClass("ui-statusbar");if(this.options.hidden){this.element.hide()}else{this.element.show()}this._init()},_init:function(){},add:function(a,b,c){var d="ui-state-default";var e="ui-icon-info";if(c=="alert"){d="ui-state-highlight";e="ui-icon-notice"}else if(c=="error"){d="ui-state-error";e="ui-icon-alert"}var f="<span class='ui-icon "+e+"' style='float:left;margin-right:0.3em;'></span> ";var g=$("<li class='"+d+"'>"+f+a+"</li>");this.element.find("ul").prepend(g);this._trigger("messageadd",{},a);this.element.show();var h=this;var i=(b||h.options.hideAfter)*1e3;setTimeout(function(){g.fadeOut("slow",function(){g.remove();h._trigger("messageremove",{},a)})},i)},destroy:function(){$.Widget.prototype.destroy.apply(this,arguments);this.element.empty()}})
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/lib/jquery.ui.timepicker.min.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/lib/jquery.ui.timepicker.min.js b/deleted/archive/js/lib/jquery.ui.timepicker.min.js
deleted file mode 100644
index 64946b5..0000000
--- a/deleted/archive/js/lib/jquery.ui.timepicker.min.js
+++ /dev/null
@@ -1 +0,0 @@
-(function($,undefined){function extendRemove(a,b){$.extend(a,b);for(var c in b)if(b[c]==null||b[c]==undefined)a[c]=b[c];return a}function Timepicker(){this.debug=true;this._curInst=null;this._isInline=false;this._disabledInputs=[];this._timepickerShowing=false;this._inDialog=false;this._dialogClass="ui-timepicker-dialog";this._mainDivId="ui-timepicker-div";this._inlineClass="ui-timepicker-inline";this._currentClass="ui-timepicker-current";this._dayOverClass="ui-timepicker-days-cell-over";this.regional=[];this.regional[""]={hourText:"Hour",minuteText:"Minute",amPmText:["AM","PM"]};this._defaults={showOn:"focus",button:null,showAnim:"fadeIn",showOptions:{},appendText:"",onSelect:null,onClose:null,timeSeparator:":",showPeriod:false,showPeriodLabels:true,showLeadingZero:true,showMinutesLeadingZero:true,altField:"",defaultTime:"now",onHourShow:null,onMinuteShow:null,zIndex:null,hours:{starts:0,ends:23},minutes:{starts:0,ends:55,interval:5},rows:4};$.extend(this._defaults,this.regional[""
 ]);this.tpDiv=$('<div id="'+this._mainDivId+'" class="ui-timepicker ui-widget ui-helper-clearfix ui-corner-all " style="display: none"></div>')}$.extend($.ui,{timepicker:{version:"0.2.3"}});var PROP_NAME="timepicker";var tpuuid=(new Date).getTime();$.extend(Timepicker.prototype,{markerClassName:"hasTimepicker",log:function(){if(this.debug)console.log.apply("",arguments)},_widgetTimepicker:function(){return this.tpDiv},_getTimeTimepicker:function(a){return a?a.value:""},setDefaults:function(a){extendRemove(this._defaults,a||{});return this},_attachTimepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("time:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase();var inline=nodeName=="div"||nodeName=="span";if(!target.id){this.uuid+=1;target.id="tp"+this.uuid}var inst=this
 ._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{});if(nodeName=="input"){this._connectTimepicker(target,inst)}else if(inline){this._inlineTimepicker(target,inst)}},_newInst:function(a,b){var c=a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1");return{id:c,input:a,inline:b,tpDiv:!b?this.tpDiv:$('<div class="'+this._inlineClass+' ui-timepicker ui-widget  ui-helper-clearfix"></div>')}},_connectTimepicker:function(a,b){var c=$(a);b.append=$([]);b.trigger=$([]);if(c.hasClass(this.markerClassName)){return}this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keyup(this._doKeyUp).bind("setData.timepicker",function(a,c,d){b.settings[c]=d}).bind("getData.timepicker",function(a,c){return this._get(b,c)});$.data(a,PROP_NAME,b)},_doKeyDown:function(a){var b=$.timepicker._getInst(a.target);var c=true;b._keyEvent=true;if($.timepicker._timepickerShowing){switch(a.keyCode){case 9:$.timepicker._hideTimepicker();c=false;break;case 13:$.timepic
 ker._updateSelectedValue(b);$.timepicker._hideTimepicker();return false;break;case 27:$.timepicker._hideTimepicker();break;default:c=false}}else if(a.keyCode==36&&a.ctrlKey){$.timepicker._showTimepicker(this)}else{c=false}if(c){a.preventDefault();a.stopPropagation()}},_doKeyUp:function(a){var b=$.timepicker._getInst(a.target);$.timepicker._setTimeFromField(b);$.timepicker._updateTimepicker(b)},_attachments:function(a,b){var c=this._get(b,"appendText");var d=this._get(b,"isRTL");if(b.append){b.append.remove()}if(c){b.append=$('<span class="'+this._appendClass+'">'+c+"</span>");a[d?"before":"after"](b.append)}a.unbind("focus.timepicker",this._showTimepicker);if(b.trigger){b.trigger.remove()}var e=this._get(b,"showOn");if(e=="focus"||e=="both"){a.bind("focus.timepicker",this._showTimepicker)}if(e=="button"||e=="both"){var f=this._get(b,"button");$(f).bind("click.timepicker",function(){if($.timepicker._timepickerShowing&&$.timepicker._lastInput==a[0]){$.timepicker._hideTimepicker()}else
 {$.timepicker._showTimepicker(a[0])}return false})}},_inlineTimepicker:function(a,b){var c=$(a);if(c.hasClass(this.markerClassName))return;c.addClass(this.markerClassName).append(b.tpDiv).bind("setData.timepicker",function(a,c,d){b.settings[c]=d}).bind("getData.timepicker",function(a,c){return this._get(b,c)});$.data(a,PROP_NAME,b);this._setTimeFromField(b);this._updateTimepicker(b);b.tpDiv.show()},_showTimepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input"){a=$("input",a.parentNode)[0]}if($.timepicker._isDisabledTimepicker(a)||$.timepicker._lastInput==a){return}$.timepicker._hideTimepicker();var b=$.timepicker._getInst(a);if($.timepicker._curInst&&$.timepicker._curInst!=b){$.timepicker._curInst.tpDiv.stop(true,true)}var c=$.timepicker._get(b,"beforeShow");extendRemove(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;$.timepicker._lastInput=a;$.timepicker._setTimeFromField(b);if($.timepicker._inDialog){a.value=""}if(!$.timepicker._pos){$.timepicker._pos=$.timepick
 er._findPos(a);$.timepicker._pos[1]+=a.offsetHeight}var d=false;$(a).parents().each(function(){d|=$(this).css("position")=="fixed";return!d});if(d&&$.browser.opera){$.timepicker._pos[0]-=document.documentElement.scrollLeft;$.timepicker._pos[1]-=document.documentElement.scrollTop}var e={left:$.timepicker._pos[0],top:$.timepicker._pos[1]};$.timepicker._pos=null;b.tpDiv.css({position:"absolute",display:"block",top:"-1000px"});$.timepicker._updateTimepicker(b);b._hoursClicked=false;b._minutesClicked=false;e=$.timepicker._checkOffset(b,e,d);b.tpDiv.css({position:$.timepicker._inDialog&&$.blockUI?"static":d?"fixed":"absolute",display:"none",left:e.left+"px",top:e.top+"px"});if(!b.inline){var f=$.timepicker._get(b,"showAnim");var g=$.timepicker._get(b,"duration");var h=$.timepicker._get(b,"zIndex");var i=function(){$.timepicker._timepickerShowing=true;var a=$.timepicker._getBorders(b.tpDiv);b.tpDiv.find("iframe.ui-timepicker-cover").css({left:-a[0],top:-a[1],width:b.tpDiv.outerWidth(),heig
 ht:b.tpDiv.outerHeight()})};if(!h){h=$(a).zIndex()+1}b.tpDiv.zIndex(h);if($.effects&&$.effects[f]){b.tpDiv.show(f,$.timepicker._get(b,"showOptions"),g,i)}else{b.tpDiv[f||"show"](f?g:null,i)}if(!f||!g){i()}if(b.input.is(":visible")&&!b.input.is(":disabled")){b.input.focus()}$.timepicker._curInst=b}},_updateTimepicker:function(a){var b=this;var c=$.timepicker._getBorders(a.tpDiv);a.tpDiv.empty().append(this._generateHTML(a)).find("iframe.ui-timepicker-cover").css({left:-c[0],top:-c[1],width:a.tpDiv.outerWidth(),height:a.tpDiv.outerHeight()}).end().find(".ui-timepicker-minute-cell").bind("click",{fromDoubleClick:false},$.proxy($.timepicker.selectMinutes,this)).bind("dblclick",{fromDoubleClick:true},$.proxy($.timepicker.selectMinutes,this)).end().find(".ui-timepicker-hour-cell").bind("click",{fromDoubleClick:false},$.proxy($.timepicker.selectHours,this)).bind("dblclick",{fromDoubleClick:true},$.proxy($.timepicker.selectHours,this)).end().find(".ui-timepicker td a").bind("mouseout",funct
 ion(){$(this).removeClass("ui-state-hover");if(this.className.indexOf("ui-timepicker-prev")!=-1)$(this).removeClass("ui-timepicker-prev-hover");if(this.className.indexOf("ui-timepicker-next")!=-1)$(this).removeClass("ui-timepicker-next-hover")}).bind("mouseover",function(){if(!b._isDisabledTimepicker(a.inline?a.tpDiv.parent()[0]:a.input[0])){$(this).parents(".ui-timepicker-calendar").find("a").removeClass("ui-state-hover");$(this).addClass("ui-state-hover");if(this.className.indexOf("ui-timepicker-prev")!=-1)$(this).addClass("ui-timepicker-prev-hover");if(this.className.indexOf("ui-timepicker-next")!=-1)$(this).addClass("ui-timepicker-next-hover")}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end()},_generateHTML:function(a){var b,c,d,e="",f=this._get(a,"showPeriod")==true,g=this._get(a,"showPeriodLabels")==true,h=this._get(a,"showLeadingZero")==true,i=this._get(a,"amPmText"),j=this._get(a,"rows"),k=j/2,l=k+1,m=Array(),n=this._get(a,"hours"),o=null,p=0,q=this._get(
 a,"hourText");for(b=n.starts;b<=n.ends;b++){m.push(b)}o=Math.round(m.length/j+.49);e='<table class="ui-timepicker-table ui-widget-content ui-corner-all"><tr>'+'<td class="ui-timepicker-hours">'+'<div class="ui-timepicker-title ui-widget-header ui-helper-clearfix ui-corner-all">'+q+"</div>"+'<table class="ui-timepicker">';for(d=1;d<=j;d++){e+="<tr>";if(d==1&&g){e+='<th rowspan="'+k.toString()+'" class="periods">'+i[0]+"</th>"}if(d==l&&g){e+='<th rowspan="'+k.toString()+'" class="periods">'+i[1]+"</th>"}while(p<o*d){e+=this._generateHTMLHourCell(a,m[p],f,h);p++}e+="</tr>"}e+="</tr></table>"+"</td>"+'<td class="ui-timepicker-minutes">';e+=this._generateHTMLMinutes(a);e+="</td></tr></table>";e+=$.browser.msie&&parseInt($.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-timepicker-cover" frameborder="0"></iframe>':"";return e},_updateMinuteDisplay:function(a){var b=this._generateHTMLMinutes(a);a.tpDiv.find("td.ui-timepicker-minutes").html(b).find(".ui-timepicke
 r-minute-cell").bind("click",{fromDoubleClick:false},$.proxy($.timepicker.selectMinutes,this)).bind("dblclick",{fromDoubleClick:true},$.proxy($.timepicker.selectMinutes,this))},_generateHTMLMinutes:function(a){var b,c,d="",e=this._get(a,"rows"),f=Array(),g=this._get(a,"minutes"),h=null,i=0,j=this._get(a,"showMinutesLeadingZero")==true,k=this._get(a,"onMinuteShow"),l=this._get(a,"minuteText");if(!g.starts){g.starts=0}if(!g.ends){g.ends=59}for(b=g.starts;b<=g.ends;b+=g.interval){f.push(b)}h=Math.round(f.length/e+.49);if(k&&k.apply(a.input?a.input[0]:null,[a.hours,a.minutes])==false){for(i=0;i<f.length;i+=1){b=f[i];if(k.apply(a.input?a.input[0]:null,[a.hours,b])){a.minutes=b;break}}}d+='<div class="ui-timepicker-title ui-widget-header ui-helper-clearfix ui-corner-all">'+l+"</div>"+'<table class="ui-timepicker">';i=0;for(c=1;c<=e;c++){d+="<tr>";while(i<c*h){var b=f[i];var m="";if(b!==undefined){m=b<10&&j?"0"+b.toString():b.toString()}d+=this._generateHTMLMinuteCell(a,b,m);i++}d+="</tr>"
 }d+="</table>";return d},_generateHTMLHourCell:function(a,b,c,d){var e=b;if(b>12&&c){e=b-12}if(e==0&&c){e=12}if(e<10&&d){e="0"+e}var f="";var g=true;var h=this._get(a,"onHourShow");if(b==undefined){f='<td class="ui-state-default ui-state-disabled"> </td>';return f}if(h){g=h.apply(a.input?a.input[0]:null,[b])}if(g){f='<td class="ui-timepicker-hour-cell" data-timepicker-instance-id="#'+a.id.replace("\\\\","\\")+'" data-hour="'+b.toString()+'">'+'<a class="ui-state-default '+(b==a.hours?"ui-state-active":"")+'">'+e.toString()+"</a></td>"}else{f="<td>"+'<span class="ui-state-default ui-state-disabled '+(b==a.hours?" ui-state-active ":" ")+'">'+e.toString()+"</span>"+"</td>"}return f},_generateHTMLMinuteCell:function(a,b,c){var d="";var e=true;var f=this._get(a,"onMinuteShow");if(f){e=f.apply(a.input?a.input[0]:null,[a.hours,b])}if(b==undefined){d='<td class=ui-state-default ui-state-disabled"> </td>';return d}if(e){d='<td class="ui-timepicker-minute-cell" data-timepicker-instance-id="
 #'+a.id.replace("\\\\","\\")+'" data-minute="'+b.toString()+'" >'+'<a class="ui-state-default '+(b==a.minutes?"ui-state-active":"")+'" >'+c+"</a></td>"}else{d="<td>"+'<span class="ui-state-default ui-state-disabled" >'+c+"</span>"+"</td>"}return d},_isDisabledTimepicker:function(a){if(!a){return false}for(var b=0;b<this._disabledInputs.length;b++){if(this._disabledInputs[b]==a){return true}}return false},_checkOffset:function(a,b,c){var d=a.tpDiv.outerWidth();var e=a.tpDiv.outerHeight();var f=a.input?a.input.outerWidth():0;var g=a.input?a.input.outerHeight():0;var h=document.documentElement.clientWidth+$(document).scrollLeft();var i=document.documentElement.clientHeight+$(document).scrollTop();b.left-=this._get(a,"isRTL")?d-f:0;b.left-=c&&b.left==a.input.offset().left?$(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+g?$(document).scrollTop():0;b.left-=Math.min(b.left,b.left+d>h&&h>d?Math.abs(b.left+d-h):0);b.top-=Math.min(b.top,b.top+e>i&&i>e?Math.abs(e+g):0);return 
 b},_findPos:function(a){var b=this._getInst(a);var c=this._get(b,"isRTL");while(a&&(a.type=="hidden"||a.nodeType!=1)){a=a[c?"previousSibling":"nextSibling"]}var d=$(a).offset();return[d.left,d.top]},_getBorders:function(a){var b=function(a){return{thin:1,medium:2,thick:3}[a]||a};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkExternalClick:function(a){if(!$.timepicker._curInst){return}var b=$(a.target);if(b[0].id!=$.timepicker._mainDivId&&b.parents("#"+$.timepicker._mainDivId).length==0&&!b.hasClass($.timepicker.markerClassName)&&!b.hasClass($.timepicker._triggerClass)&&$.timepicker._timepickerShowing&&!($.timepicker._inDialog&&$.blockUI))$.timepicker._hideTimepicker()},_hideTimepicker:function(a){var b=this._curInst;if(!b||a&&b!=$.data(a,PROP_NAME)){return}if(this._timepickerShowing){var c=this._get(b,"showAnim");var d=this._get(b,"duration");var e=function(){$.timepicker._tidyDialog(b);this._curInst=null};if($.effects&&$.effects[c]
 ){b.tpDiv.hide(c,$.timepicker._get(b,"showOptions"),d,e)}else{b.tpDiv[c=="slideDown"?"slideUp":c=="fadeIn"?"fadeOut":"hide"](c?d:null,e)}if(!c){e()}var f=this._get(b,"onClose");if(f){f.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b])}this._timepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if($.blockUI){$.unblockUI();$("body").append(this.tpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.tpDiv.removeClass(this._dialogClass).unbind(".ui-timepicker")},_getInst:function(a){try{return $.data(a,PROP_NAME)}catch(b){throw"Missing instance data for this timepicker"}},_get:function(a,b){return a.settings[b]!==undefined?a.settings[b]:this._defaults[b]},_setTimeFromField:function(a){if(a.input.val()==a.lastVal){return}var b=this._get(a,"defaultTime");var c=b=="now"?this._getCurrentTimeRounded(a):b;if(a.inline==false&&a.input.val()!=""){c=a.input.val()}var d=a.lastVal=c;if(c==""){a.hours=-1;a.minut
 es=-1}else{var e=this.parseTime(a,d);a.hours=e.hours;a.minutes=e.minutes}$.timepicker._updateTimepicker(a)},_setTimeTimepicker:function(a,b){var c=this._getInst(a);if(c){this._setTime(c,b);this._updateTimepicker(c);this._updateAlternate(c,b)}},_setTime:function(a,b,c){var d=a.hours;var e=a.minutes;var b=this.parseTime(a,b);a.hours=b.hours;a.minutes=b.minutes;if((d!=a.hours||e!=a.minuts)&&!c){a.input.trigger("change")}this._updateTimepicker(a);this._updateSelectedValue(a)},_getCurrentTimeRounded:function(a){var b=new Date;var c=this._get(a,"timeSeparator");var d=b.getMinutes();d=Math.round(d/5)*5;return b.getHours().toString()+c+d.toString()},parseTime:function(a,b){var c=new Object;c.hours=-1;c.minutes=-1;var d=this._get(a,"timeSeparator");var e=this._get(a,"amPmText");var f=b.indexOf(d);if(f==-1){return c}c.hours=parseInt(b.substr(0,f),10);c.minutes=parseInt(b.substr(f+1),10);var g=this._get(a,"showPeriod")==true;var h=b.toUpperCase();if(c.hours<12&&g&&h.indexOf(e[1].toUpperCase())
 !=-1){c.hours+=12}if(c.hours==12&&g&&h.indexOf(e[0].toUpperCase())!=-1){c.hours=0}return c},selectHours:function(a){var b=$(a.currentTarget);var c=b.attr("data-timepicker-instance-id");var d=b.attr("data-hour");var e=a.data.fromDoubleClick;var f=$(c);var g=this._getInst(f[0]);b.parents(".ui-timepicker-hours:first").find("a").removeClass("ui-state-active");b.children("a").addClass("ui-state-active");g.hours=d;this._updateSelectedValue(g);g._hoursClicked=true;if(g._minutesClicked||e){$.timepicker._hideTimepicker();return false}var h=this._get(g,"onMinuteShow");if(h){this._updateMinuteDisplay(g)}return false},selectMinutes:function(a){var b=$(a.currentTarget);var c=b.attr("data-timepicker-instance-id");var d=b.attr("data-minute");var e=a.data.fromDoubleClick;var f=$(c);var g=this._getInst(f[0]);b.parents(".ui-timepicker-minutes:first").find("a").removeClass("ui-state-active");b.children("a").addClass("ui-state-active");g.minutes=d;this._updateSelectedValue(g);g._minutesClicked=true;if(
 g._hoursClicked||e){$.timepicker._hideTimepicker();return false}return false},_updateSelectedValue:function(a){if(a.hours<0||a.hours>23){a.hours=12}if(a.minutes<0||a.minutes>59){a.minutes=0}var b="";var c=this._get(a,"showPeriod")==true;var d=this._get(a,"showLeadingZero")==true;var e=this._get(a,"amPmText");var f=a.hours?a.hours:0;var g=a.minutes?a.minutes:0;var h=f;if(!h){h=0}if(c){if(a.hours==0){h=12}if(a.hours<12){b=e[0]}else{b=e[1];if(h>12){h-=12}}}var i=h.toString();if(d&&h<10){i="0"+i}var j=g.toString();if(g<10){j="0"+j}var k=i+this._get(a,"timeSeparator")+j;if(b.length>0){k+=" "+b}if(a.input){a.input.val(k);a.input.trigger("change")}var l=this._get(a,"onSelect");if(l){l.apply(a.input?a.input[0]:null,[k,a])}this._updateAlternate(a,k);return k},_updateAlternate:function(a,b){var c=this._get(a,"altField");if(c){$(c).each(function(a,c){$(c).val(b)})}}});$.fn.timepicker=function(a){if(!$.timepicker.initialized){$(document).mousedown($.timepicker._checkExternalClick).find("body").
 append($.timepicker.tpDiv);$.timepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getTime"||a=="widget"))return $.timepicker["_"+a+"Timepicker"].apply($.timepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return $.timepicker["_"+a+"Timepicker"].apply($.timepicker,[this[0]].concat(b));return this.each(function(){typeof a=="string"?$.timepicker["_"+a+"Timepicker"].apply($.timepicker,[this].concat(b)):$.timepicker._attachTimepicker(this,a)})};$.timepicker=new Timepicker;$.timepicker.initialized=false;$.timepicker.uuid=(new Date).getTime();$.timepicker.version="0.2.3";window["TP_jQuery_"+tpuuid]=$})(jQuery)


[37/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/lib/backbone.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/lib/backbone.js b/deleted/archive/js/lib/backbone.js
deleted file mode 100644
index 3373c95..0000000
--- a/deleted/archive/js/lib/backbone.js
+++ /dev/null
@@ -1,1431 +0,0 @@
-//     Backbone.js 0.9.2
-
-//     (c) 2010-2012 Jeremy Ashkenas, DocumentCloud Inc.
-//     Backbone may be freely distributed under the MIT license.
-//     For all details and documentation:
-//     http://backbonejs.org
-
-(function(){
-
-  // Initial Setup
-  // -------------
-
-  // Save a reference to the global object (`window` in the browser, `global`
-  // on the server).
-  var root = this;
-
-  // Save the previous value of the `Backbone` variable, so that it can be
-  // restored later on, if `noConflict` is used.
-  var previousBackbone = root.Backbone;
-
-  // Create a local reference to slice/splice.
-  var slice = Array.prototype.slice;
-  var splice = Array.prototype.splice;
-
-  // The top-level namespace. All public Backbone classes and modules will
-  // be attached to this. Exported for both CommonJS and the browser.
-  var Backbone;
-  if (typeof exports !== 'undefined') {
-    Backbone = exports;
-  } else {
-    Backbone = root.Backbone = {};
-  }
-
-  // Current version of the library. Keep in sync with `package.json`.
-  Backbone.VERSION = '0.9.2';
-
-  // Require Underscore, if we're on the server, and it's not already present.
-  var _ = root._;
-  if (!_ && (typeof require !== 'undefined')) _ = require('underscore');
-
-  // For Backbone's purposes, jQuery, Zepto, or Ender owns the `$` variable.
-  var $ = root.jQuery || root.Zepto || root.ender;
-
-  // Set the JavaScript library that will be used for DOM manipulation and
-  // Ajax calls (a.k.a. the `$` variable). By default Backbone will use: jQuery,
-  // Zepto, or Ender; but the `setDomLibrary()` method lets you inject an
-  // alternate JavaScript library (or a mock library for testing your views
-  // outside of a browser).
-  Backbone.setDomLibrary = function(lib) {
-    $ = lib;
-  };
-
-  // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable
-  // to its previous owner. Returns a reference to this Backbone object.
-  Backbone.noConflict = function() {
-    root.Backbone = previousBackbone;
-    return this;
-  };
-
-  // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option
-  // will fake `"PUT"` and `"DELETE"` requests via the `_method` parameter and
-  // set a `X-Http-Method-Override` header.
-  Backbone.emulateHTTP = false;
-
-  // Turn on `emulateJSON` to support legacy servers that can't deal with direct
-  // `application/json` requests ... will encode the body as
-  // `application/x-www-form-urlencoded` instead and will send the model in a
-  // form param named `model`.
-  Backbone.emulateJSON = false;
-
-  // Backbone.Events
-  // -----------------
-
-  // Regular expression used to split event strings
-  var eventSplitter = /\s+/;
-
-  // A module that can be mixed in to *any object* in order to provide it with
-  // custom events. You may bind with `on` or remove with `off` callback functions
-  // to an event; trigger`-ing an event fires all callbacks in succession.
-  //
-  //     var object = {};
-  //     _.extend(object, Backbone.Events);
-  //     object.on('expand', function(){ alert('expanded'); });
-  //     object.trigger('expand');
-  //
-  var Events = Backbone.Events = {
-
-    // Bind one or more space separated events, `events`, to a `callback`
-    // function. Passing `"all"` will bind the callback to all events fired.
-    on: function(events, callback, context) {
-
-      var calls, event, node, tail, list;
-      if (!callback) return this;
-      events = events.split(eventSplitter);
-      calls = this._callbacks || (this._callbacks = {});
-
-      // Create an immutable callback list, allowing traversal during
-      // modification.  The tail is an empty object that will always be used
-      // as the next node.
-      while (event = events.shift()) {
-        list = calls[event];
-        node = list ? list.tail : {};
-        node.next = tail = {};
-        node.context = context;
-        node.callback = callback;
-        calls[event] = {tail: tail, next: list ? list.next : node};
-      }
-
-      return this;
-    },
-
-    // Remove one or many callbacks. If `context` is null, removes all callbacks
-    // with that function. If `callback` is null, removes all callbacks for the
-    // event. If `events` is null, removes all bound callbacks for all events.
-    off: function(events, callback, context) {
-      var event, calls, node, tail, cb, ctx;
-
-      // No events, or removing *all* events.
-      if (!(calls = this._callbacks)) return;
-      if (!(events || callback || context)) {
-        delete this._callbacks;
-        return this;
-      }
-
-      // Loop through the listed events and contexts, splicing them out of the
-      // linked list of callbacks if appropriate.
-      events = events ? events.split(eventSplitter) : _.keys(calls);
-      while (event = events.shift()) {
-        node = calls[event];
-        delete calls[event];
-        if (!node || !(callback || context)) continue;
-        // Create a new list, omitting the indicated callbacks.
-        tail = node.tail;
-        while ((node = node.next) !== tail) {
-          cb = node.callback;
-          ctx = node.context;
-          if ((callback && cb !== callback) || (context && ctx !== context)) {
-            this.on(event, cb, ctx);
-          }
-        }
-      }
-
-      return this;
-    },
-
-    // Trigger one or many events, firing all bound callbacks. Callbacks are
-    // passed the same arguments as `trigger` is, apart from the event name
-    // (unless you're listening on `"all"`, which will cause your callback to
-    // receive the true name of the event as the first argument).
-    trigger: function(events) {
-      var event, node, calls, tail, args, all, rest;
-      if (!(calls = this._callbacks)) return this;
-      all = calls.all;
-      events = events.split(eventSplitter);
-      rest = slice.call(arguments, 1);
-
-      // For each event, walk through the linked list of callbacks twice,
-      // first to trigger the event, then to trigger any `"all"` callbacks.
-      while (event = events.shift()) {
-        if (node = calls[event]) {
-          tail = node.tail;
-          while ((node = node.next) !== tail) {
-            node.callback.apply(node.context || this, rest);
-          }
-        }
-        if (node = all) {
-          tail = node.tail;
-          args = [event].concat(rest);
-          while ((node = node.next) !== tail) {
-            node.callback.apply(node.context || this, args);
-          }
-        }
-      }
-
-      return this;
-    }
-
-  };
-
-  // Aliases for backwards compatibility.
-  Events.bind   = Events.on;
-  Events.unbind = Events.off;
-
-  // Backbone.Model
-  // --------------
-
-  // Create a new model, with defined attributes. A client id (`cid`)
-  // is automatically generated and assigned for you.
-  var Model = Backbone.Model = function(attributes, options) {
-    var defaults;
-    attributes || (attributes = {});
-    if (options && options.parse) attributes = this.parse(attributes);
-    if (defaults = getValue(this, 'defaults')) {
-      attributes = _.extend({}, defaults, attributes);
-    }
-    if (options && options.collection) this.collection = options.collection;
-    this.attributes = {};
-    this._escapedAttributes = {};
-    this.cid = _.uniqueId('c');
-    this.changed = {};
-    this._silent = {};
-    this._pending = {};
-    this.set(attributes, {silent: true});
-    // Reset change tracking.
-    this.changed = {};
-    this._silent = {};
-    this._pending = {};
-    this._previousAttributes = _.clone(this.attributes);
-    this.initialize.apply(this, arguments);
-  };
-
-  // Attach all inheritable methods to the Model prototype.
-  _.extend(Model.prototype, Events, {
-
-    // A hash of attributes whose current and previous value differ.
-    changed: null,
-
-    // A hash of attributes that have silently changed since the last time
-    // `change` was called.  Will become pending attributes on the next call.
-    _silent: null,
-
-    // A hash of attributes that have changed since the last `'change'` event
-    // began.
-    _pending: null,
-
-    // The default name for the JSON `id` attribute is `"id"`. MongoDB and
-    // CouchDB users may want to set this to `"_id"`.
-    idAttribute: 'id',
-
-    // Initialize is an empty function by default. Override it with your own
-    // initialization logic.
-    initialize: function(){},
-
-    // Return a copy of the model's `attributes` object.
-    toJSON: function(options) {
-      return _.clone(this.attributes);
-    },
-
-    // Get the value of an attribute.
-    get: function(attr) {
-      return this.attributes[attr];
-    },
-
-    // Get the HTML-escaped value of an attribute.
-    escape: function(attr) {
-      var html;
-      if (html = this._escapedAttributes[attr]) return html;
-      var val = this.get(attr);
-      return this._escapedAttributes[attr] = _.escape(val == null ? '' : '' + val);
-    },
-
-    // Returns `true` if the attribute contains a value that is not null
-    // or undefined.
-    has: function(attr) {
-      return this.get(attr) != null;
-    },
-
-    // Set a hash of model attributes on the object, firing `"change"` unless
-    // you choose to silence it.
-    set: function(key, value, options) {
-      var attrs, attr, val;
-
-      // Handle both `"key", value` and `{key: value}` -style arguments.
-      if (_.isObject(key) || key == null) {
-        attrs = key;
-        options = value;
-      } else {
-        attrs = {};
-        attrs[key] = value;
-      }
-
-      // Extract attributes and options.
-      options || (options = {});
-      if (!attrs) return this;
-      if (attrs instanceof Model) attrs = attrs.attributes;
-      if (options.unset) for (attr in attrs) attrs[attr] = void 0;
-
-      // Run validation.
-      if (!this._validate(attrs, options)) return false;
-
-      // Check for changes of `id`.
-      if (this.idAttribute in attrs) this.id = attrs[this.idAttribute];
-
-      var changes = options.changes = {};
-      var now = this.attributes;
-      var escaped = this._escapedAttributes;
-      var prev = this._previousAttributes || {};
-
-      // For each `set` attribute...
-      for (attr in attrs) {
-        val = attrs[attr];
-
-        // If the new and current value differ, record the change.
-        if (!_.isEqual(now[attr], val) || (options.unset && _.has(now, attr))) {
-          delete escaped[attr];
-          (options.silent ? this._silent : changes)[attr] = true;
-        }
-
-        // Update or delete the current value.
-        options.unset ? delete now[attr] : now[attr] = val;
-
-        // If the new and previous value differ, record the change.  If not,
-        // then remove changes for this attribute.
-        if (!_.isEqual(prev[attr], val) || (_.has(now, attr) != _.has(prev, attr))) {
-          this.changed[attr] = val;
-          if (!options.silent) this._pending[attr] = true;
-        } else {
-          delete this.changed[attr];
-          delete this._pending[attr];
-        }
-      }
-
-      // Fire the `"change"` events.
-      if (!options.silent) this.change(options);
-      return this;
-    },
-
-    // Remove an attribute from the model, firing `"change"` unless you choose
-    // to silence it. `unset` is a noop if the attribute doesn't exist.
-    unset: function(attr, options) {
-      (options || (options = {})).unset = true;
-      return this.set(attr, null, options);
-    },
-
-    // Clear all attributes on the model, firing `"change"` unless you choose
-    // to silence it.
-    clear: function(options) {
-      (options || (options = {})).unset = true;
-      return this.set(_.clone(this.attributes), options);
-    },
-
-    // Fetch the model from the server. If the server's representation of the
-    // model differs from its current attributes, they will be overriden,
-    // triggering a `"change"` event.
-    fetch: function(options) {
-      options = options ? _.clone(options) : {};
-      var model = this;
-      var success = options.success;
-      options.success = function(resp, status, xhr) {
-        if (!model.set(model.parse(resp, xhr), options)) return false;
-        if (success) success(model, resp);
-      };
-      options.error = Backbone.wrapError(options.error, model, options);
-      return (this.sync || Backbone.sync).call(this, 'read', this, options);
-    },
-
-    // Set a hash of model attributes, and sync the model to the server.
-    // If the server returns an attributes hash that differs, the model's
-    // state will be `set` again.
-    save: function(key, value, options) {
-      var attrs, current;
-
-      // Handle both `("key", value)` and `({key: value})` -style calls.
-      if (_.isObject(key) || key == null) {
-        attrs = key;
-        options = value;
-      } else {
-        attrs = {};
-        attrs[key] = value;
-      }
-      options = options ? _.clone(options) : {};
-
-      // If we're "wait"-ing to set changed attributes, validate early.
-      if (options.wait) {
-        if (!this._validate(attrs, options)) return false;
-        current = _.clone(this.attributes);
-      }
-
-      // Regular saves `set` attributes before persisting to the server.
-      var silentOptions = _.extend({}, options, {silent: true});
-      if (attrs && !this.set(attrs, options.wait ? silentOptions : options)) {
-        return false;
-      }
-
-      // After a successful server-side save, the client is (optionally)
-      // updated with the server-side state.
-      var model = this;
-      var success = options.success;
-      options.success = function(resp, status, xhr) {
-        var serverAttrs = model.parse(resp, xhr);
-        if (options.wait) {
-          delete options.wait;
-          serverAttrs = _.extend(attrs || {}, serverAttrs);
-        }
-        if (!model.set(serverAttrs, options)) return false;
-        if (success) {
-          success(model, resp);
-        } else {
-          model.trigger('sync', model, resp, options);
-        }
-      };
-
-      // Finish configuring and sending the Ajax request.
-      options.error = Backbone.wrapError(options.error, model, options);
-      var method = this.isNew() ? 'create' : 'update';
-      var xhr = (this.sync || Backbone.sync).call(this, method, this, options);
-      if (options.wait) this.set(current, silentOptions);
-      return xhr;
-    },
-
-    // Destroy this model on the server if it was already persisted.
-    // Optimistically removes the model from its collection, if it has one.
-    // If `wait: true` is passed, waits for the server to respond before removal.
-    destroy: function(options) {
-      options = options ? _.clone(options) : {};
-      var model = this;
-      var success = options.success;
-
-      var triggerDestroy = function() {
-        model.trigger('destroy', model, model.collection, options);
-      };
-
-      if (this.isNew()) {
-        triggerDestroy();
-        return false;
-      }
-
-      options.success = function(resp) {
-        if (options.wait) triggerDestroy();
-        if (success) {
-          success(model, resp);
-        } else {
-          model.trigger('sync', model, resp, options);
-        }
-      };
-
-      options.error = Backbone.wrapError(options.error, model, options);
-      var xhr = (this.sync || Backbone.sync).call(this, 'delete', this, options);
-      if (!options.wait) triggerDestroy();
-      return xhr;
-    },
-
-    // Default URL for the model's representation on the server -- if you're
-    // using Backbone's restful methods, override this to change the endpoint
-    // that will be called.
-    url: function() {
-      var base = getValue(this, 'urlRoot') || getValue(this.collection, 'url') || urlError();
-      if (this.isNew()) return base;
-      return base + (base.charAt(base.length - 1) == '/' ? '' : '/') + encodeURIComponent(this.id);
-    },
-
-    // **parse** converts a response into the hash of attributes to be `set` on
-    // the model. The default implementation is just to pass the response along.
-    parse: function(resp, xhr) {
-      return resp;
-    },
-
-    // Create a new model with identical attributes to this one.
-    clone: function() {
-      return new this.constructor(this.attributes);
-    },
-
-    // A model is new if it has never been saved to the server, and lacks an id.
-    isNew: function() {
-      return this.id == null;
-    },
-
-    // Call this method to manually fire a `"change"` event for this model and
-    // a `"change:attribute"` event for each changed attribute.
-    // Calling this will cause all objects observing the model to update.
-    change: function(options) {
-      options || (options = {});
-      var changing = this._changing;
-      this._changing = true;
-
-      // Silent changes become pending changes.
-      for (var attr in this._silent) this._pending[attr] = true;
-
-      // Silent changes are triggered.
-      var changes = _.extend({}, options.changes, this._silent);
-      this._silent = {};
-      for (var attr in changes) {
-        this.trigger('change:' + attr, this, this.get(attr), options);
-      }
-      if (changing) return this;
-
-      // Continue firing `"change"` events while there are pending changes.
-      while (!_.isEmpty(this._pending)) {
-        this._pending = {};
-        this.trigger('change', this, options);
-        // Pending and silent changes still remain.
-        for (var attr in this.changed) {
-          if (this._pending[attr] || this._silent[attr]) continue;
-          delete this.changed[attr];
-        }
-        this._previousAttributes = _.clone(this.attributes);
-      }
-
-      this._changing = false;
-      return this;
-    },
-
-    // Determine if the model has changed since the last `"change"` event.
-    // If you specify an attribute name, determine if that attribute has changed.
-    hasChanged: function(attr) {
-      if (!arguments.length) return !_.isEmpty(this.changed);
-      return _.has(this.changed, attr);
-    },
-
-    // Return an object containing all the attributes that have changed, or
-    // false if there are no changed attributes. Useful for determining what
-    // parts of a view need to be updated and/or what attributes need to be
-    // persisted to the server. Unset attributes will be set to undefined.
-    // You can also pass an attributes object to diff against the model,
-    // determining if there *would be* a change.
-    changedAttributes: function(diff) {
-      if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;
-      var val, changed = false, old = this._previousAttributes;
-      for (var attr in diff) {
-        if (_.isEqual(old[attr], (val = diff[attr]))) continue;
-        (changed || (changed = {}))[attr] = val;
-      }
-      return changed;
-    },
-
-    // Get the previous value of an attribute, recorded at the time the last
-    // `"change"` event was fired.
-    previous: function(attr) {
-      if (!arguments.length || !this._previousAttributes) return null;
-      return this._previousAttributes[attr];
-    },
-
-    // Get all of the attributes of the model at the time of the previous
-    // `"change"` event.
-    previousAttributes: function() {
-      return _.clone(this._previousAttributes);
-    },
-
-    // Check if the model is currently in a valid state. It's only possible to
-    // get into an *invalid* state if you're using silent changes.
-    isValid: function() {
-      return !this.validate(this.attributes);
-    },
-
-    // Run validation against the next complete set of model attributes,
-    // returning `true` if all is well. If a specific `error` callback has
-    // been passed, call that instead of firing the general `"error"` event.
-    _validate: function(attrs, options) {
-      if (options.silent || !this.validate) return true;
-      attrs = _.extend({}, this.attributes, attrs);
-      var error = this.validate(attrs, options);
-      if (!error) return true;
-      if (options && options.error) {
-        options.error(this, error, options);
-      } else {
-        this.trigger('error', this, error, options);
-      }
-      return false;
-    }
-
-  });
-
-  // Backbone.Collection
-  // -------------------
-
-  // Provides a standard collection class for our sets of models, ordered
-  // or unordered. If a `comparator` is specified, the Collection will maintain
-  // its models in sort order, as they're added and removed.
-  var Collection = Backbone.Collection = function(models, options) {
-    options || (options = {});
-    if (options.model) this.model = options.model;
-    if (options.comparator) this.comparator = options.comparator;
-    this._reset();
-    this.initialize.apply(this, arguments);
-    if (models) this.reset(models, {silent: true, parse: options.parse});
-  };
-
-  // Define the Collection's inheritable methods.
-  _.extend(Collection.prototype, Events, {
-
-    // The default model for a collection is just a **Backbone.Model**.
-    // This should be overridden in most cases.
-    model: Model,
-
-    // Initialize is an empty function by default. Override it with your own
-    // initialization logic.
-    initialize: function(){},
-
-    // The JSON representation of a Collection is an array of the
-    // models' attributes.
-    toJSON: function(options) {
-      return this.map(function(model){ return model.toJSON(options); });
-    },
-
-    // Add a model, or list of models to the set. Pass **silent** to avoid
-    // firing the `add` event for every new model.
-    add: function(models, options) {
-      var i, index, length, model, cid, id, cids = {}, ids = {}, dups = [];
-      options || (options = {});
-      models = _.isArray(models) ? models.slice() : [models];
-
-      // Begin by turning bare objects into model references, and preventing
-      // invalid models or duplicate models from being added.
-      for (i = 0, length = models.length; i < length; i++) {
-        if (!(model = models[i] = this._prepareModel(models[i], options))) {
-          throw new Error("Can't add an invalid model to a collection");
-        }
-        cid = model.cid;
-        id = model.id;
-        if (cids[cid] || this._byCid[cid] || ((id != null) && (ids[id] || this._byId[id]))) {
-          dups.push(i);
-          continue;
-        }
-        cids[cid] = ids[id] = model;
-      }
-
-      // Remove duplicates.
-      i = dups.length;
-      while (i--) {
-        models.splice(dups[i], 1);
-      }
-
-      // Listen to added models' events, and index models for lookup by
-      // `id` and by `cid`.
-      for (i = 0, length = models.length; i < length; i++) {
-        (model = models[i]).on('all', this._onModelEvent, this);
-        this._byCid[model.cid] = model;
-        if (model.id != null) this._byId[model.id] = model;
-      }
-
-      // Insert models into the collection, re-sorting if needed, and triggering
-      // `add` events unless silenced.
-      this.length += length;
-      index = options.at != null ? options.at : this.models.length;
-      splice.apply(this.models, [index, 0].concat(models));
-      if (this.comparator) this.sort({silent: true});
-      if (options.silent) return this;
-      for (i = 0, length = this.models.length; i < length; i++) {
-        if (!cids[(model = this.models[i]).cid]) continue;
-        options.index = i;
-        model.trigger('add', model, this, options);
-      }
-      return this;
-    },
-
-    // Remove a model, or a list of models from the set. Pass silent to avoid
-    // firing the `remove` event for every model removed.
-    remove: function(models, options) {
-      var i, l, index, model;
-      options || (options = {});
-      models = _.isArray(models) ? models.slice() : [models];
-      for (i = 0, l = models.length; i < l; i++) {
-        model = this.getByCid(models[i]) || this.get(models[i]);
-        if (!model) continue;
-        delete this._byId[model.id];
-        delete this._byCid[model.cid];
-        index = this.indexOf(model);
-        this.models.splice(index, 1);
-        this.length--;
-        if (!options.silent) {
-          options.index = index;
-          model.trigger('remove', model, this, options);
-        }
-        this._removeReference(model);
-      }
-      return this;
-    },
-
-    // Add a model to the end of the collection.
-    push: function(model, options) {
-      model = this._prepareModel(model, options);
-      this.add(model, options);
-      return model;
-    },
-
-    // Remove a model from the end of the collection.
-    pop: function(options) {
-      var model = this.at(this.length - 1);
-      this.remove(model, options);
-      return model;
-    },
-
-    // Add a model to the beginning of the collection.
-    unshift: function(model, options) {
-      model = this._prepareModel(model, options);
-      this.add(model, _.extend({at: 0}, options));
-      return model;
-    },
-
-    // Remove a model from the beginning of the collection.
-    shift: function(options) {
-      var model = this.at(0);
-      this.remove(model, options);
-      return model;
-    },
-
-    // Get a model from the set by id.
-    get: function(id) {
-      if (id == null) return void 0;
-      return this._byId[id.id != null ? id.id : id];
-    },
-
-    // Get a model from the set by client id.
-    getByCid: function(cid) {
-      return cid && this._byCid[cid.cid || cid];
-    },
-
-    // Get the model at the given index.
-    at: function(index) {
-      return this.models[index];
-    },
-
-    // Return models with matching attributes. Useful for simple cases of `filter`.
-    where: function(attrs) {
-      if (_.isEmpty(attrs)) return [];
-      return this.filter(function(model) {
-        for (var key in attrs) {
-          if (attrs[key] !== model.get(key)) return false;
-        }
-        return true;
-      });
-    },
-
-    // Force the collection to re-sort itself. You don't need to call this under
-    // normal circumstances, as the set will maintain sort order as each item
-    // is added.
-    sort: function(options) {
-      options || (options = {});
-      if (!this.comparator) throw new Error('Cannot sort a set without a comparator');
-      var boundComparator = _.bind(this.comparator, this);
-      if (this.comparator.length == 1) {
-        this.models = this.sortBy(boundComparator);
-      } else {
-        this.models.sort(boundComparator);
-      }
-      if (!options.silent) this.trigger('reset', this, options);
-      return this;
-    },
-
-    // Pluck an attribute from each model in the collection.
-    pluck: function(attr) {
-      return _.map(this.models, function(model){ return model.get(attr); });
-    },
-
-    // When you have more items than you want to add or remove individually,
-    // you can reset the entire set with a new list of models, without firing
-    // any `add` or `remove` events. Fires `reset` when finished.
-    reset: function(models, options) {
-      models  || (models = []);
-      options || (options = {});
-      for (var i = 0, l = this.models.length; i < l; i++) {
-        this._removeReference(this.models[i]);
-      }
-      this._reset();
-      this.add(models, _.extend({silent: true}, options));
-      if (!options.silent) this.trigger('reset', this, options);
-      return this;
-    },
-
-    // Fetch the default set of models for this collection, resetting the
-    // collection when they arrive. If `add: true` is passed, appends the
-    // models to the collection instead of resetting.
-    fetch: function(options) {
-      options = options ? _.clone(options) : {};
-      if (options.parse === undefined) options.parse = true;
-      var collection = this;
-      var success = options.success;
-      options.success = function(resp, status, xhr) {
-        collection[options.add ? 'add' : 'reset'](collection.parse(resp, xhr), options);
-        if (success) success(collection, resp);
-      };
-      options.error = Backbone.wrapError(options.error, collection, options);
-      return (this.sync || Backbone.sync).call(this, 'read', this, options);
-    },
-
-    // Create a new instance of a model in this collection. Add the model to the
-    // collection immediately, unless `wait: true` is passed, in which case we
-    // wait for the server to agree.
-    create: function(model, options) {
-      var coll = this;
-      options = options ? _.clone(options) : {};
-      model = this._prepareModel(model, options);
-      if (!model) return false;
-      if (!options.wait) coll.add(model, options);
-      var success = options.success;
-      options.success = function(nextModel, resp, xhr) {
-        if (options.wait) coll.add(nextModel, options);
-        if (success) {
-          success(nextModel, resp);
-        } else {
-          nextModel.trigger('sync', model, resp, options);
-        }
-      };
-      model.save(null, options);
-      return model;
-    },
-
-    // **parse** converts a response into a list of models to be added to the
-    // collection. The default implementation is just to pass it through.
-    parse: function(resp, xhr) {
-      return resp;
-    },
-
-    // Proxy to _'s chain. Can't be proxied the same way the rest of the
-    // underscore methods are proxied because it relies on the underscore
-    // constructor.
-    chain: function () {
-      return _(this.models).chain();
-    },
-
-    // Reset all internal state. Called when the collection is reset.
-    _reset: function(options) {
-      this.length = 0;
-      this.models = [];
-      this._byId  = {};
-      this._byCid = {};
-    },
-
-    // Prepare a model or hash of attributes to be added to this collection.
-    _prepareModel: function(model, options) {
-      options || (options = {});
-      if (!(model instanceof Model)) {
-        var attrs = model;
-        options.collection = this;
-        model = new this.model(attrs, options);
-        if (!model._validate(model.attributes, options)) model = false;
-      } else if (!model.collection) {
-        model.collection = this;
-      }
-      return model;
-    },
-
-    // Internal method to remove a model's ties to a collection.
-    _removeReference: function(model) {
-      if (this == model.collection) {
-        delete model.collection;
-      }
-      model.off('all', this._onModelEvent, this);
-    },
-
-    // Internal method called every time a model in the set fires an event.
-    // Sets need to update their indexes when models change ids. All other
-    // events simply proxy through. "add" and "remove" events that originate
-    // in other collections are ignored.
-    _onModelEvent: function(event, model, collection, options) {
-      if ((event == 'add' || event == 'remove') && collection != this) return;
-      if (event == 'destroy') {
-        this.remove(model, options);
-      }
-      if (model && event === 'change:' + model.idAttribute) {
-        delete this._byId[model.previous(model.idAttribute)];
-        this._byId[model.id] = model;
-      }
-      this.trigger.apply(this, arguments);
-    }
-
-  });
-
-  // Underscore methods that we want to implement on the Collection.
-  var methods = ['forEach', 'each', 'map', 'reduce', 'reduceRight', 'find',
-    'detect', 'filter', 'select', 'reject', 'every', 'all', 'some', 'any',
-    'include', 'contains', 'invoke', 'max', 'min', 'sortBy', 'sortedIndex',
-    'toArray', 'size', 'first', 'initial', 'rest', 'last', 'without', 'indexOf',
-    'shuffle', 'lastIndexOf', 'isEmpty', 'groupBy'];
-
-  // Mix in each Underscore method as a proxy to `Collection#models`.
-  _.each(methods, function(method) {
-    Collection.prototype[method] = function() {
-      return _[method].apply(_, [this.models].concat(_.toArray(arguments)));
-    };
-  });
-
-  // Backbone.Router
-  // -------------------
-
-  // Routers map faux-URLs to actions, and fire events when routes are
-  // matched. Creating a new one sets its `routes` hash, if not set statically.
-  var Router = Backbone.Router = function(options) {
-    options || (options = {});
-    if (options.routes) this.routes = options.routes;
-    this._bindRoutes();
-    this.initialize.apply(this, arguments);
-  };
-
-  // Cached regular expressions for matching named param parts and splatted
-  // parts of route strings.
-  var namedParam    = /:\w+/g;
-  var splatParam    = /\*\w+/g;
-  var escapeRegExp  = /[-[\]{}()+?.,\\^$|#\s]/g;
-
-  // Set up all inheritable **Backbone.Router** properties and methods.
-  _.extend(Router.prototype, Events, {
-
-    // Initialize is an empty function by default. Override it with your own
-    // initialization logic.
-    initialize: function(){},
-
-    // Manually bind a single named route to a callback. For example:
-    //
-    //     this.route('search/:query/p:num', 'search', function(query, num) {
-    //       ...
-    //     });
-    //
-    route: function(route, name, callback) {
-      Backbone.history || (Backbone.history = new History);
-      if (!_.isRegExp(route)) route = this._routeToRegExp(route);
-      if (!callback) callback = this[name];
-      Backbone.history.route(route, _.bind(function(fragment) {
-        var args = this._extractParameters(route, fragment);
-        callback && callback.apply(this, args);
-        this.trigger.apply(this, ['route:' + name].concat(args));
-        Backbone.history.trigger('route', this, name, args);
-      }, this));
-      return this;
-    },
-
-    // Simple proxy to `Backbone.history` to save a fragment into the history.
-    navigate: function(fragment, options) {
-      Backbone.history.navigate(fragment, options);
-    },
-
-    // Bind all defined routes to `Backbone.history`. We have to reverse the
-    // order of the routes here to support behavior where the most general
-    // routes can be defined at the bottom of the route map.
-    _bindRoutes: function() {
-      if (!this.routes) return;
-      var routes = [];
-      for (var route in this.routes) {
-        routes.unshift([route, this.routes[route]]);
-      }
-      for (var i = 0, l = routes.length; i < l; i++) {
-        this.route(routes[i][0], routes[i][1], this[routes[i][1]]);
-      }
-    },
-
-    // Convert a route string into a regular expression, suitable for matching
-    // against the current location hash.
-    _routeToRegExp: function(route) {
-      route = route.replace(escapeRegExp, '\\$&')
-                   .replace(namedParam, '([^\/]+)')
-                   .replace(splatParam, '(.*?)');
-      return new RegExp('^' + route + '$');
-    },
-
-    // Given a route, and a URL fragment that it matches, return the array of
-    // extracted parameters.
-    _extractParameters: function(route, fragment) {
-      return route.exec(fragment).slice(1);
-    }
-
-  });
-
-  // Backbone.History
-  // ----------------
-
-  // Handles cross-browser history management, based on URL fragments. If the
-  // browser does not support `onhashchange`, falls back to polling.
-  var History = Backbone.History = function() {
-    this.handlers = [];
-    _.bindAll(this, 'checkUrl');
-  };
-
-  // Cached regex for cleaning leading hashes and slashes .
-  var routeStripper = /^[#\/]/;
-
-  // Cached regex for detecting MSIE.
-  var isExplorer = /msie [\w.]+/;
-
-  // Has the history handling already been started?
-  History.started = false;
-
-  // Set up all inheritable **Backbone.History** properties and methods.
-  _.extend(History.prototype, Events, {
-
-    // The default interval to poll for hash changes, if necessary, is
-    // twenty times a second.
-    interval: 50,
-
-    // Gets the true hash value. Cannot use location.hash directly due to bug
-    // in Firefox where location.hash will always be decoded.
-    getHash: function(windowOverride) {
-      var loc = windowOverride ? windowOverride.location : window.location;
-      var match = loc.href.match(/#(.*)$/);
-      return match ? match[1] : '';
-    },
-
-    // Get the cross-browser normalized URL fragment, either from the URL,
-    // the hash, or the override.
-    getFragment: function(fragment, forcePushState) {
-      if (fragment == null) {
-        if (this._hasPushState || forcePushState) {
-          fragment = window.location.pathname;
-          var search = window.location.search;
-          if (search) fragment += search;
-        } else {
-          fragment = this.getHash();
-        }
-      }
-      if (!fragment.indexOf(this.options.root)) fragment = fragment.substr(this.options.root.length);
-      return fragment.replace(routeStripper, '');
-    },
-
-    // Start the hash change handling, returning `true` if the current URL matches
-    // an existing route, and `false` otherwise.
-    start: function(options) {
-      if (History.started) throw new Error("Backbone.history has already been started");
-      History.started = true;
-
-      // Figure out the initial configuration. Do we need an iframe?
-      // Is pushState desired ... is it available?
-      this.options          = _.extend({}, {root: '/'}, this.options, options);
-      this._wantsHashChange = this.options.hashChange !== false;
-      this._wantsPushState  = !!this.options.pushState;
-      this._hasPushState    = !!(this.options.pushState && window.history && window.history.pushState);
-      var fragment          = this.getFragment();
-      var docMode           = document.documentMode;
-      var oldIE             = (isExplorer.exec(navigator.userAgent.toLowerCase()) && (!docMode || docMode <= 7));
-
-      if (oldIE) {
-        this.iframe = $('<iframe src="javascript:0" tabindex="-1" />').hide().appendTo('body')[0].contentWindow;
-        this.navigate(fragment);
-      }
-
-      // Depending on whether we're using pushState or hashes, and whether
-      // 'onhashchange' is supported, determine how we check the URL state.
-      if (this._hasPushState) {
-        $(window).bind('popstate', this.checkUrl);
-      } else if (this._wantsHashChange && ('onhashchange' in window) && !oldIE) {
-        $(window).bind('hashchange', this.checkUrl);
-      } else if (this._wantsHashChange) {
-        this._checkUrlInterval = setInterval(this.checkUrl, this.interval);
-      }
-
-      // Determine if we need to change the base url, for a pushState link
-      // opened by a non-pushState browser.
-      this.fragment = fragment;
-      var loc = window.location;
-      var atRoot  = loc.pathname == this.options.root;
-
-      // If we've started off with a route from a `pushState`-enabled browser,
-      // but we're currently in a browser that doesn't support it...
-      if (this._wantsHashChange && this._wantsPushState && !this._hasPushState && !atRoot) {
-        this.fragment = this.getFragment(null, true);
-        window.location.replace(this.options.root + '#' + this.fragment);
-        // Return immediately as browser will do redirect to new url
-        return true;
-
-      // Or if we've started out with a hash-based route, but we're currently
-      // in a browser where it could be `pushState`-based instead...
-      } else if (this._wantsPushState && this._hasPushState && atRoot && loc.hash) {
-        this.fragment = this.getHash().replace(routeStripper, '');
-        window.history.replaceState({}, document.title, loc.protocol + '//' + loc.host + this.options.root + this.fragment);
-      }
-
-      if (!this.options.silent) {
-        return this.loadUrl();
-      }
-    },
-
-    // Disable Backbone.history, perhaps temporarily. Not useful in a real app,
-    // but possibly useful for unit testing Routers.
-    stop: function() {
-      $(window).unbind('popstate', this.checkUrl).unbind('hashchange', this.checkUrl);
-      clearInterval(this._checkUrlInterval);
-      History.started = false;
-    },
-
-    // Add a route to be tested when the fragment changes. Routes added later
-    // may override previous routes.
-    route: function(route, callback) {
-      this.handlers.unshift({route: route, callback: callback});
-    },
-
-    // Checks the current URL to see if it has changed, and if it has,
-    // calls `loadUrl`, normalizing across the hidden iframe.
-    checkUrl: function(e) {
-      var current = this.getFragment();
-      if (current == this.fragment && this.iframe) current = this.getFragment(this.getHash(this.iframe));
-      if (current == this.fragment) return false;
-      if (this.iframe) this.navigate(current);
-      this.loadUrl() || this.loadUrl(this.getHash());
-    },
-
-    // Attempt to load the current URL fragment. If a route succeeds with a
-    // match, returns `true`. If no defined routes matches the fragment,
-    // returns `false`.
-    loadUrl: function(fragmentOverride) {
-      var fragment = this.fragment = this.getFragment(fragmentOverride);
-      var matched = _.any(this.handlers, function(handler) {
-        if (handler.route.test(fragment)) {
-          handler.callback(fragment);
-          return true;
-        }
-      });
-      return matched;
-    },
-
-    // Save a fragment into the hash history, or replace the URL state if the
-    // 'replace' option is passed. You are responsible for properly URL-encoding
-    // the fragment in advance.
-    //
-    // The options object can contain `trigger: true` if you wish to have the
-    // route callback be fired (not usually desirable), or `replace: true`, if
-    // you wish to modify the current URL without adding an entry to the history.
-    navigate: function(fragment, options) {
-      if (!History.started) return false;
-      if (!options || options === true) options = {trigger: options};
-      var frag = (fragment || '').replace(routeStripper, '');
-      if (this.fragment == frag) return;
-
-      // If pushState is available, we use it to set the fragment as a real URL.
-      if (this._hasPushState) {
-        if (frag.indexOf(this.options.root) != 0) frag = this.options.root + frag;
-        this.fragment = frag;
-        window.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, frag);
-
-      // If hash changes haven't been explicitly disabled, update the hash
-      // fragment to store history.
-      } else if (this._wantsHashChange) {
-        this.fragment = frag;
-        this._updateHash(window.location, frag, options.replace);
-        if (this.iframe && (frag != this.getFragment(this.getHash(this.iframe)))) {
-          // Opening and closing the iframe tricks IE7 and earlier to push a history entry on hash-tag change.
-          // When replace is true, we don't want this.
-          if(!options.replace) this.iframe.document.open().close();
-          this._updateHash(this.iframe.location, frag, options.replace);
-        }
-
-      // If you've told us that you explicitly don't want fallback hashchange-
-      // based history, then `navigate` becomes a page refresh.
-      } else {
-        window.location.assign(this.options.root + fragment);
-      }
-      if (options.trigger) this.loadUrl(fragment);
-    },
-
-    // Update the hash location, either replacing the current entry, or adding
-    // a new one to the browser history.
-    _updateHash: function(location, fragment, replace) {
-      if (replace) {
-        location.replace(location.toString().replace(/(javascript:|#).*$/, '') + '#' + fragment);
-      } else {
-        location.hash = fragment;
-      }
-    }
-  });
-
-  // Backbone.View
-  // -------------
-
-  // Creating a Backbone.View creates its initial element outside of the DOM,
-  // if an existing element is not provided...
-  var View = Backbone.View = function(options) {
-    this.cid = _.uniqueId('view');
-    this._configure(options || {});
-    this._ensureElement();
-    this.initialize.apply(this, arguments);
-    this.delegateEvents();
-  };
-
-  // Cached regex to split keys for `delegate`.
-  var delegateEventSplitter = /^(\S+)\s*(.*)$/;
-
-  // List of view options to be merged as properties.
-  var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName'];
-
-  // Set up all inheritable **Backbone.View** properties and methods.
-  _.extend(View.prototype, Events, {
-
-    // The default `tagName` of a View's element is `"div"`.
-    tagName: 'div',
-
-    // jQuery delegate for element lookup, scoped to DOM elements within the
-    // current view. This should be prefered to global lookups where possible.
-    $: function(selector) {
-      return this.$el.find(selector);
-    },
-
-    // Initialize is an empty function by default. Override it with your own
-    // initialization logic.
-    initialize: function(){},
-
-    // **render** is the core function that your view should override, in order
-    // to populate its element (`this.el`), with the appropriate HTML. The
-    // convention is for **render** to always return `this`.
-    render: function() {
-      return this;
-    },
-
-    // Remove this view from the DOM. Note that the view isn't present in the
-    // DOM by default, so calling this method may be a no-op.
-    remove: function() {
-      this.$el.remove();
-      return this;
-    },
-
-    // For small amounts of DOM Elements, where a full-blown template isn't
-    // needed, use **make** to manufacture elements, one at a time.
-    //
-    //     var el = this.make('li', {'class': 'row'}, this.model.escape('title'));
-    //
-    make: function(tagName, attributes, content) {
-      var el = document.createElement(tagName);
-      if (attributes) $(el).attr(attributes);
-      if (content) $(el).html(content);
-      return el;
-    },
-
-    // Change the view's element (`this.el` property), including event
-    // re-delegation.
-    setElement: function(element, delegate) {
-      if (this.$el) this.undelegateEvents();
-      this.$el = (element instanceof $) ? element : $(element);
-      this.el = this.$el[0];
-      if (delegate !== false) this.delegateEvents();
-      return this;
-    },
-
-    // Set callbacks, where `this.events` is a hash of
-    //
-    // *{"event selector": "callback"}*
-    //
-    //     {
-    //       'mousedown .title':  'edit',
-    //       'click .button':     'save'
-    //       'click .open':       function(e) { ... }
-    //     }
-    //
-    // pairs. Callbacks will be bound to the view, with `this` set properly.
-    // Uses event delegation for efficiency.
-    // Omitting the selector binds the event to `this.el`.
-    // This only works for delegate-able events: not `focus`, `blur`, and
-    // not `change`, `submit`, and `reset` in Internet Explorer.
-    delegateEvents: function(events) {
-      if (!(events || (events = getValue(this, 'events')))) return;
-      this.undelegateEvents();
-      for (var key in events) {
-        var method = events[key];
-        if (!_.isFunction(method)) method = this[events[key]];
-        if (!method) throw new Error('Method "' + events[key] + '" does not exist');
-        var match = key.match(delegateEventSplitter);
-        var eventName = match[1], selector = match[2];
-        method = _.bind(method, this);
-        eventName += '.delegateEvents' + this.cid;
-        if (selector === '') {
-          this.$el.bind(eventName, method);
-        } else {
-          this.$el.delegate(selector, eventName, method);
-        }
-      }
-    },
-
-    // Clears all callbacks previously bound to the view with `delegateEvents`.
-    // You usually don't need to use this, but may wish to if you have multiple
-    // Backbone views attached to the same DOM element.
-    undelegateEvents: function() {
-      this.$el.unbind('.delegateEvents' + this.cid);
-    },
-
-    // Performs the initial configuration of a View with a set of options.
-    // Keys with special meaning *(model, collection, id, className)*, are
-    // attached directly to the view.
-    _configure: function(options) {
-      if (this.options) options = _.extend({}, this.options, options);
-      for (var i = 0, l = viewOptions.length; i < l; i++) {
-        var attr = viewOptions[i];
-        if (options[attr]) this[attr] = options[attr];
-      }
-      this.options = options;
-    },
-
-    // Ensure that the View has a DOM element to render into.
-    // If `this.el` is a string, pass it through `$()`, take the first
-    // matching element, and re-assign it to `el`. Otherwise, create
-    // an element from the `id`, `className` and `tagName` properties.
-    _ensureElement: function() {
-      if (!this.el) {
-        var attrs = getValue(this, 'attributes') || {};
-        if (this.id) attrs.id = this.id;
-        if (this.className) attrs['class'] = this.className;
-        this.setElement(this.make(this.tagName, attrs), false);
-      } else {
-        this.setElement(this.el, false);
-      }
-    }
-
-  });
-
-  // The self-propagating extend function that Backbone classes use.
-  var extend = function (protoProps, classProps) {
-    var child = inherits(this, protoProps, classProps);
-    child.extend = this.extend;
-    return child;
-  };
-
-  // Set up inheritance for the model, collection, and view.
-  Model.extend = Collection.extend = Router.extend = View.extend = extend;
-
-  // Backbone.sync
-  // -------------
-
-  // Map from CRUD to HTTP for our default `Backbone.sync` implementation.
-  var methodMap = {
-    'create': 'POST',
-    'update': 'PUT',
-    'delete': 'DELETE',
-    'read':   'GET'
-  };
-
-  // Override this function to change the manner in which Backbone persists
-  // models to the server. You will be passed the type of request, and the
-  // model in question. By default, makes a RESTful Ajax request
-  // to the model's `url()`. Some possible customizations could be:
-  //
-  // * Use `setTimeout` to batch rapid-fire updates into a single request.
-  // * Send up the models as XML instead of JSON.
-  // * Persist models via WebSockets instead of Ajax.
-  //
-  // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests
-  // as `POST`, with a `_method` parameter containing the true HTTP method,
-  // as well as all requests with the body as `application/x-www-form-urlencoded`
-  // instead of `application/json` with the model in a param named `model`.
-  // Useful when interfacing with server-side languages like **PHP** that make
-  // it difficult to read the body of `PUT` requests.
-  Backbone.sync = function(method, model, options) {
-    var type = methodMap[method];
-
-    // Default options, unless specified.
-    options || (options = {});
-
-    // Default JSON-request options.
-    var params = {type: type, dataType: 'json'};
-
-    // Ensure that we have a URL.
-    if (!options.url) {
-      params.url = getValue(model, 'url') || urlError();
-    }
-
-    // Ensure that we have the appropriate request data.
-    if (!options.data && model && (method == 'create' || method == 'update')) {
-      params.contentType = 'application/json';
-      params.data = JSON.stringify(model.toJSON());
-    }
-
-    // For older servers, emulate JSON by encoding the request into an HTML-form.
-    if (Backbone.emulateJSON) {
-      params.contentType = 'application/x-www-form-urlencoded';
-      params.data = params.data ? {model: params.data} : {};
-    }
-
-    // For older servers, emulate HTTP by mimicking the HTTP method with `_method`
-    // And an `X-HTTP-Method-Override` header.
-    if (Backbone.emulateHTTP) {
-      if (type === 'PUT' || type === 'DELETE') {
-        if (Backbone.emulateJSON) params.data._method = type;
-        params.type = 'POST';
-        params.beforeSend = function(xhr) {
-          xhr.setRequestHeader('X-HTTP-Method-Override', type);
-        };
-      }
-    }
-
-    // Don't process data on a non-GET request.
-    if (params.type !== 'GET' && !Backbone.emulateJSON) {
-      params.processData = false;
-    }
-
-    // Make the request, allowing the user to override any Ajax options.
-    return $.ajax(_.extend(params, options));
-  };
-
-  // Wrap an optional error callback with a fallback error event.
-  Backbone.wrapError = function(onError, originalModel, options) {
-    return function(model, resp) {
-      resp = model === originalModel ? resp : model;
-      if (onError) {
-        onError(originalModel, resp, options);
-      } else {
-        originalModel.trigger('error', originalModel, resp, options);
-      }
-    };
-  };
-
-  // Helpers
-  // -------
-
-  // Shared empty constructor function to aid in prototype-chain creation.
-  var ctor = function(){};
-
-  // Helper function to correctly set up the prototype chain, for subclasses.
-  // Similar to `goog.inherits`, but uses a hash of prototype properties and
-  // class properties to be extended.
-  var inherits = function(parent, protoProps, staticProps) {
-    var child;
-
-    // The constructor function for the new subclass is either defined by you
-    // (the "constructor" property in your `extend` definition), or defaulted
-    // by us to simply call the parent's constructor.
-    if (protoProps && protoProps.hasOwnProperty('constructor')) {
-      child = protoProps.constructor;
-    } else {
-      child = function(){ parent.apply(this, arguments); };
-    }
-
-    // Inherit class (static) properties from parent.
-    _.extend(child, parent);
-
-    // Set the prototype chain to inherit from `parent`, without calling
-    // `parent`'s constructor function.
-    ctor.prototype = parent.prototype;
-    child.prototype = new ctor();
-
-    // Add prototype properties (instance properties) to the subclass,
-    // if supplied.
-    if (protoProps) _.extend(child.prototype, protoProps);
-
-    // Add static properties to the constructor function, if supplied.
-    if (staticProps) _.extend(child, staticProps);
-
-    // Correctly set child's `prototype.constructor`.
-    child.prototype.constructor = child;
-
-    // Set a convenience property in case the parent's prototype is needed later.
-    child.__super__ = parent.prototype;
-
-    return child;
-  };
-
-  // Helper function to get a value from a Backbone object as a property
-  // or as a function.
-  var getValue = function(object, prop) {
-    if (!(object && object[prop])) return null;
-    return _.isFunction(object[prop]) ? object[prop]() : object[prop];
-  };
-
-  // Throw an error when a URL is needed, and none is supplied.
-  var urlError = function() {
-    throw new Error('A "url" property or function must be specified');
-  };
-
-}).call(this);

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/lib/bootstrap.min.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/lib/bootstrap.min.js b/deleted/archive/js/lib/bootstrap.min.js
deleted file mode 100644
index 63e4610..0000000
--- a/deleted/archive/js/lib/bootstrap.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
-* Bootstrap.js by @fat & @mdo
-* plugins: bootstrap-transition.js, bootstrap-modal.js, bootstrap-dropdown.js, bootstrap-scrollspy.js, bootstrap-tab.js, bootstrap-tooltip.js, bootstrap-popover.js, bootstrap-alert.js, bootstrap-button.js, bootstrap-collapse.js, bootstrap-carousel.js, bootstrap-typeahead.js
-* Copyright 2012 Twitter, Inc.
-* http://www.apache.org/licenses/LICENSE-2.0.txt
-*/
-!function(a){a(function(){"use strict",a.support.transition=function(){var b=document.body||document.documentElement,c=b.style,d=c.transition!==undefined||c.WebkitTransition!==undefined||c.MozTransition!==undefined||c.MsTransition!==undefined||c.OTransition!==undefined;return d&&{end:function(){var b="TransitionEnd";return a.browser.webkit?b="webkitTransitionEnd":a.browser.mozilla?b="transitionend":a.browser.opera&&(b="oTransitionEnd"),b}()}}()})}(window.jQuery),!function(a){function c(){var b=this,c=setTimeout(function(){b.$element.off(a.support.transition.end),d.call(b)},500);this.$element.one(a.support.transition.end,function(){clearTimeout(c),d.call(b)})}function d(a){this.$element.hide().trigger("hidden"),e.call(this)}function e(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(document.body),this.options.backdrop!="static"&&this.$backdr
 op.click(a.proxy(this.hide,this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),e?this.$backdrop.one(a.support.transition.end,b):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,a.proxy(f,this)):f.call(this)):b&&b()}function f(){this.$backdrop.remove(),this.$backdrop=null}function g(){var b=this;this.isShown&&this.options.keyboard?a(document).on("keyup.dismiss.modal",function(a){a.which==27&&b.hide()}):this.isShown||a(document).off("keyup.dismiss.modal")}"use strict";var b=function(b,c){this.options=a.extend({},a.fn.modal.defaults,c),this.$element=a(b).delegate('[data-dismiss="modal"]',"click.dismiss.modal",a.proxy(this.hide,this))};b.prototype={constructor:b,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var b=this;if(this.isShown)return;a("body").addClass("modal-open"),this.isShown=!0,this.$element.trigger("show"),g.
 call(this),e.call(this,function(){var c=a.support.transition&&b.$element.hasClass("fade");!b.$element.parent().length&&b.$element.appendTo(document.body),b.$element.show(),c&&b.$element[0].offsetWidth,b.$element.addClass("in"),c?b.$element.one(a.support.transition.end,function(){b.$element.trigger("shown")}):b.$element.trigger("shown")})},hide:function(b){b&&b.preventDefault();if(!this.isShown)return;var e=this;this.isShown=!1,a("body").removeClass("modal-open"),g.call(this),this.$element.trigger("hide").removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?c.call(this):d.call(this)}},a.fn.modal=function(c){return this.each(function(){var d=a(this),e=d.data("modal"),f=typeof c=="object"&&c;e||d.data("modal",e=new b(this,f)),typeof c=="string"?e[c]():e.show()})},a.fn.modal.defaults={backdrop:!0,keyboard:!0},a.fn.modal.Constructor=b,a(function(){a("body").on("click.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr
 ("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({},e.data(),c.data());b.preventDefault(),e.modal(f)})})}(window.jQuery),!function(a){function d(){a(b).parent().removeClass("open")}"use strict";var b='[data-toggle="dropdown"]',c=function(b){var c=a(b).on("click.dropdown.data-api",this.toggle);a("html").on("click.dropdown.data-api",function(){c.parent().removeClass("open")})};c.prototype={constructor:c,toggle:function(b){var c=a(this),e=c.attr("data-target"),f,g;return e||(e=c.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,"")),f=a(e),f.length||(f=c.parent()),g=f.hasClass("open"),d(),!g&&f.toggleClass("open"),!1}},a.fn.dropdown=function(b){return this.each(function(){var d=a(this),e=d.data("dropdown");e||d.data("dropdown",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.dropdown.Constructor=c,a(function(){a("html").on("click.dropdown.data-api",d),a("body").on("click.dropdown.data-api",b,c.prototype.toggle)})}(window.jQuery),!function(a){function b(b
 ,c){var d=a.proxy(this.process,this),e=a(b).is("body")?a(window):a(b),f;this.options=a.extend({},a.fn.scrollspy.defaults,c),this.$scrollElement=e.on("scroll.scroll.data-api",d),this.selector=(this.options.target||(f=a(b).attr("href"))&&f.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=a("body").on("click.scroll.data-api",this.selector,d),this.refresh(),this.process()}"use strict",b.prototype={constructor:b,refresh:function(){this.targets=this.$body.find(this.selector).map(function(){var b=a(this).attr("href");return/^#\w/.test(b)&&a(b).length?b:null}),this.offsets=a.map(this.targets,function(b){return a(b).position().top})},process:function(){var a=this.$scrollElement.scrollTop()+this.options.offset,b=this.offsets,c=this.targets,d=this.activeTarget,e;for(e=b.length;e--;)d!=c[e]&&a>=b[e]&&(!b[e+1]||a<=b[e+1])&&this.activate(c[e])},activate:function(a){var b;this.activeTarget=a,this.$body.find(this.selector).parent(".active").removeClass("active"),b=this.$body.find(this.se
 lector+'[href="'+a+'"]').parent("li").addClass("active"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active")}},a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("scrollspy"),f=typeof c=="object"&&c;e||d.data("scrollspy",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.defaults={offset:10},a(function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),!function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype={constructor:b,show:function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target"),e,f;d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,""));if(b.parent("li").hasClass("active"))return;e=c.find(".active a").last()[0],b.trigger({type:"show",relatedTarget:e}),f=a(d),this.activate(b.parent("li"),c),this.activate(f,f.parent(),function(){b.trigger({type:"shown",relatedTarget:e})})},activate:function(b
 ,c,d){function g(){e.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),f?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var e=c.find("> .active"),f=d&&a.support.transition&&e.hasClass("fade");f?e.one(a.support.transition.end,g):g(),e.removeClass("in")}},a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("tab");e||d.data("tab",e=new b(this)),typeof c=="string"&&e[c]()})},a.fn.tab.Constructor=b,a(function(){a("body").on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})})}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("tooltip",a,b)};b.prototype={constructor:b,init:function(b,c,d){var e,f;this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.enabled=!0,this.options.trigger!="manual"&&(e=this.options.trigger=="hover"?"mouse
 enter":"focus",f=this.options.trigger=="hover"?"mouseleave":"blur",this.$element.on(e,this.options.selector,a.proxy(this.enter,this)),this.$element.on(f,this.options.selector,a.proxy(this.leave,this))),this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(b){return b=a.extend({},a.fn[this.type].defaults,b,this.$element.data()),b.delay&&typeof b.delay=="number"&&(b.delay={show:b.delay,hide:b.delay}),b},enter:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);!c.options.delay||!c.options.delay.show?c.show():(c.hoverState="in",setTimeout(function(){c.hoverState=="in"&&c.show()},c.options.delay.show))},leave:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);!c.options.delay||!c.options.delay.hide?c.hide():(c.hoverState="out",setTimeout(function(){c.hoverState=="out"&&c.hide()},c.options.delay.hide))},show:function(){var a,b,c,d,e,f,g;if(this.hasContent()&&
 this.enabled){a=this.tip(),this.setContent(),this.options.animation&&a.addClass("fade"),f=typeof this.options.placement=="function"?this.options.placement.call(this,a[0],this.$element[0]):this.options.placement,b=/in/.test(f),a.remove().css({top:0,left:0,display:"block"}).appendTo(b?this.$element:document.body),c=this.getPosition(b),d=a[0].offsetWidth,e=a[0].offsetHeight;switch(b?f.split(" ")[1]:f){case"bottom":g={top:c.top+c.height,left:c.left+c.width/2-d/2};break;case"top":g={top:c.top-e,left:c.left+c.width/2-d/2};break;case"left":g={top:c.top+c.height/2-e/2,left:c.left-d};break;case"right":g={top:c.top+c.height/2-e/2,left:c.left+c.width}}a.css(g).addClass(f).addClass("in")}},setContent:function(){var a=this.tip();a.find(".tooltip-inner").html(this.getTitle()),a.removeClass("fade in top bottom left right")},hide:function(){function d(){var b=setTimeout(function(){c.off(a.support.transition.end).remove()},500);c.one(a.support.transition.end,function(){clearTimeout(b),c.remove()})}v
 ar b=this,c=this.tip();c.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d():c.remove()},fixTitle:function(){var a=this.$element;(a.attr("title")||typeof a.attr("data-original-title")!="string")&&a.attr("data-original-title",a.attr("title")||"").removeAttr("title")},hasContent:function(){return this.getTitle()},getPosition:function(b){return a.extend({},b?{top:0,left:0}:this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||(typeof c.title=="function"?c.title.call(b[0]):c.title),a=a.toString().replace(/(^\s*|\s*$)/,""),a},tip:function(){return this.$tip=this.$tip||a(this.options.template)},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function
 (){this[this.tip().hasClass("in")?"hide":"show"]()}},a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("tooltip"),f=typeof c=="object"&&c;e||d.data("tooltip",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.defaults={animation:!0,delay:0,selector:!1,placement:"top",trigger:"hover",title:"",template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'}}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype,{constructor:b,setContent:function(){var b=this.tip(),c=this.getTitle(),d=this.getContent();b.find(".popover-title")[a.type(c)=="object"?"append":"html"](c),b.find(".popover-content > *")[a.type(d)=="object"?"append":"html"](d),b.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var a,b=this.$element,c=th
 is.options;return a=b.attr("data-content")||(typeof c.content=="function"?c.content.call(b[0]):c.content),a=a.toString().replace(/(^\s*|\s*$)/,""),a},tip:function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip}}),a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("popover"),f=typeof c=="object"&&c;e||d.data("popover",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.defaults=a.extend({},a.fn.tooltip.defaults,{placement:"right",content:"",template:'<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'})}(window.jQuery),!function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype={constructor:c,close:function(b){function f(){e.remove(),e.trigger("closed")}var c=a(this),d=c.attr("data-target"),e;d||(d=c.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"
 ")),e=a(d),e.trigger("close"),b&&b.preventDefault(),e.length||(e=c.hasClass("alert")?c:c.parent()),e.removeClass("in"),a.support.transition&&e.hasClass("fade")?e.on(a.support.transition.end,f):f()}},a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("alert");e||d.data("alert",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.alert.Constructor=c,a(function(){a("body").on("click.alert.data-api",b,c.prototype.close)})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.button.defaults,c)};b.prototype={constructor:b,setState:function(a){var b="disabled",c=this.$element,d=c.data(),e=c.is("input")?"val":"html";a+="Text",d.resetText||c.data("resetText",c[e]()),c[e](d[a]||this.options[a]),setTimeout(function(){a=="loadingText"?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},toggle:function(){var a=this.$element.parent('[data-toggle="buttons-radio"]');a&&a.find(".active").removeClass("active")
 ,this.$element.toggleClass("active")}},a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("button"),f=typeof c=="object"&&c;e||d.data("button",e=new b(this,f)),c=="toggle"?e.toggle():c&&e.setState(c)})},a.fn.button.defaults={loadingText:"loading..."},a.fn.button.Constructor=b,a(function(){a("body").on("click.button.data-api","[data-toggle^=button]",function(b){a(b.target).button("toggle")})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.collapse.defaults,c),this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.prototype={constructor:b,dimension:function(){var a=this.$element.hasClass("width");return a?"width":"height"},show:function(){var b=this.dimension(),c=a.camelCase(["scroll",b].join("-")),d=this.$parent&&this.$parent.find(".in"),e;d&&d.length&&(e=d.data("collapse"),d.collapse("hide"),e||d.data("collapse",null)),this.$element[b](0),this.transition
 ("addClass","show","shown"),this.$element[b](this.$element[0][c])},hide:function(){var a=this.dimension();this.reset(this.$element[a]()),this.transition("removeClass","hide","hidden"),this.$element[a](0)},reset:function(a){var b=this.dimension();this.$element.removeClass("collapse")[b](a||"auto")[0].offsetWidth,this.$element.addClass("collapse")},transition:function(b,c,d){var e=this,f=function(){c=="show"&&e.reset(),e.$element.trigger(d)};this.$element.trigger(c)[b]("in"),a.support.transition&&this.$element.hasClass("collapse")?this.$element.one(a.support.transition.end,f):f()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}},a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("collapse"),f=typeof c=="object"&&c;e||d.data("collapse",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.collapse.defaults={toggle:!0},a.fn.collapse.Constructor=b,a(function(){a("body").on("click.collapse.data-api","[data-toggle=collapse]",function(b){var c=a
 (this),d,e=c.attr("data-target")||b.preventDefault()||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),f=a(e).data("collapse")?"toggle":c.data();a(e).collapse(f)})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.carousel.defaults,c),this.options.slide&&this.slide(this.options.slide)};b.prototype={cycle:function(){return this.interval=setInterval(a.proxy(this.next,this),this.options.interval),this},to:function(b){var c=this.$element.find(".active"),d=c.parent().children(),e=d.index(c),f=this;if(b>d.length-1||b<0)return;return this.sliding?this.$element.one("slid",function(){f.to(b)}):e==b?this.pause().cycle():this.slide(b>e?"next":"prev",a(d[b]))},pause:function(){return clearInterval(this.interval),this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(b,c){var d=this.$element.find(".active"),e=c||d[b](),f=this.interval,
 g=b=="next"?"left":"right",h=b=="next"?"first":"last",i=this;return this.sliding=!0,f&&this.pause(),e=e.length?e:this.$element.find(".item")[h](),!a.support.transition&&this.$element.hasClass("slide")?(this.$element.trigger("slide"),d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")):(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),this.$element.trigger("slide"),this.$element.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)})),f&&this.cycle(),this}},a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("carousel"),f=typeof c=="object"&&c;e||d.data("carousel",e=new b(this,f)),typeof c=="number"?e.to(c):typeof c=="string"||(c=f.slide)?e[c]():e.cycle()})},a.fn.carousel.defaults={interval:5e3},a.fn.carousel.Constructor=b,a(function(){a("body").on("click.carousel.data-api"
 ,"[data-slide]",function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=!e.data("modal")&&a.extend({},e.data(),c.data());e.carousel(f),b.preventDefault()})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.typeahead.defaults,c),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.$menu=a(this.options.menu).appendTo("body"),this.source=this.options.source,this.shown=!1,this.listen()};b.prototype={constructor:b,select:function(){var a=this.$menu.find(".active").attr("data-value");return this.$element.val(a),this.hide()},show:function(){var b=a.extend({},this.$element.offset(),{height:this.$element[0].offsetHeight});return this.$menu.css({top:b.top+b.height,left:b.left}),this.$menu.show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},
 lookup:function(b){var c=this,d,e;return this.query=this.$element.val(),this.query?(d=a.grep(this.source,function(a){if(c.matcher(a))return a}),d=this.sorter(d),d.length?this.render(d.slice(0,this.options.items)).show():this.shown?this.hide():this):this.shown?this.hide():this},matcher:function(a){return~a.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(a){var b=[],c=[],d=[],e;while(e=a.shift())e.toLowerCase().indexOf(this.query.toLowerCase())?~e.indexOf(this.query)?c.push(e):d.push(e):b.push(e);return b.concat(c,d)},highlighter:function(a){return a.replace(new RegExp("("+this.query+")","ig"),function(a,b){return"<strong>"+b+"</strong>"})},render:function(b){var c=this;return b=a(b).map(function(b,d){return b=a(c.options.item).attr("data-value",d),b.find("a").html(c.highlighter(d)),b[0]}),b.first().addClass("active"),this.$menu.html(b),this},next:function(b){var c=this.$menu.find(".active").removeClass("active"),d=c.next();d.length||(d=a(this.$menu.find("li")[0])),d.
 addClass("active")},prev:function(a){var b=this.$menu.find(".active").removeClass("active"),c=b.prev();c.length||(c=this.$menu.find("li").last()),c.addClass("active")},listen:function(){this.$element.on("blur",a.proxy(this.blur,this)).on("keypress",a.proxy(this.keypress,this)).on("keyup",a.proxy(this.keyup,this)),(a.browser.webkit||a.browser.msie)&&this.$element.on("keydown",a.proxy(this.keypress,this)),this.$menu.on("click",a.proxy(this.click,this)).on("mouseenter","li",a.proxy(this.mouseenter,this))},keyup:function(a){a.stopPropagation(),a.preventDefault();switch(a.keyCode){case 40:case 38:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:this.hide();break;default:this.lookup()}},keypress:function(a){a.stopPropagation();if(!this.shown)return;switch(a.keyCode){case 9:case 13:case 27:a.preventDefault();break;case 38:a.preventDefault(),this.prev();break;case 40:a.preventDefault(),this.next()}},blur:function(a){var b=this;a.stopPropagation(),a.preventDefault(),set
 Timeout(function(){b.hide()},150)},click:function(a){a.stopPropagation(),a.preventDefault(),this.select()},mouseenter:function(b){this.$menu.find(".active").removeClass("active"),a(b.currentTarget).addClass("active")}},a.fn.typeahead=function(c){return this.each(function(){var d=a(this),e=d.data("typeahead"),f=typeof c=="object"&&c;e||d.data("typeahead",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>'},a.fn.typeahead.Constructor=b,a(function(){a("body").on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(b){var c=a(this);if(c.data("typeahead"))return;b.preventDefault(),c.typeahead(c.data())})})}(window.jQuery)
\ No newline at end of file


[52/54] [abbrv] git commit: updated bower version, fixed app overview, modified help

Posted by sn...@apache.org.
updated bower version, fixed app overview, modified help


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/e3dbe766
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/e3dbe766
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/e3dbe766

Branch: refs/heads/master
Commit: e3dbe766432778a0a706d8405bd6435fbd3d95d6
Parents: 11243ef
Author: Rod Simpson <ro...@apigee.com>
Authored: Wed Jul 30 16:35:43 2014 -0600
Committer: Rod Simpson <ro...@apigee.com>
Committed: Wed Jul 30 16:35:43 2014 -0600

----------------------------------------------------------------------
 portal/helpJson.json                            | 12 +++++------
 .../js/app-overview/app-overview-controller.js  | 21 +++-----------------
 portal/package.json                             |  2 +-
 3 files changed, 10 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/e3dbe766/portal/helpJson.json
----------------------------------------------------------------------
diff --git a/portal/helpJson.json b/portal/helpJson.json
index e4773a1..54cd064 100644
--- a/portal/helpJson.json
+++ b/portal/helpJson.json
@@ -1,15 +1,15 @@
 {
   "introjs": [{
     "element": "#intro-1-org",
-    "intro": "<p class='introjstooltipheader'>Your organizations</p><p>Click to view a list of the organizations you have access to. Orgs are how applications are grouped and managed in API BaaS.</p>",
+    "intro": "<p class='introjstooltipheader'>Your organizations</p><p>Click to view a list of the organizations you have access to. Orgs are how applications are grouped and managed in Usergrid.</p>",
     "position": "right"
   }, {
     "element": "#intro-2-app-menu",
-    "intro": "<p class='introjstooltipheader'>Your applications</p><p>Click to view a list of applications in the currently selected organization. Applications represent unique data stores in API BaaS.</p>",
+    "intro": "<p class='introjstooltipheader'>Your applications</p><p>Click to view a list of applications in the currently selected organization. Applications represent unique data stores in Usergrid.</p>",
     "position": "right"
   }, {
     "element": "#intro-3-side-menu",
-    "intro": "<p class='introjstooltipheader'>API BaaS features menu</p><p>Click an item in the menu to configure and manage the corresponding feature.</p><p>From here you can configure and manage everything about the currently selected API BaaS application, such as user access, push notifications, your data store, and more.</p>",
+    "intro": "<p class='introjstooltipheader'>Usergrid features menu</p><p>Click an item in the menu to configure and manage the corresponding feature.</p><p>From here you can configure and manage everything about the currently selected API BaaS application, such as user access, push notifications, your data store, and more.</p>",
     "position": "right"
   }, {
     "element": "#intro-4-current-org",
@@ -33,13 +33,13 @@
     "position": "left"
   }, {
     "element": "#intro-9-sdks",
-    "intro": "<p class='introjstooltipheader'>Download an SDK!</p><p>Ready to start using API BaaS to power your app? Download one of our SDKs to get developing in your preferred language fast!</p>",
+    "intro": "<p class='introjstooltipheader'>Download an SDK!</p><p>Ready to start using Usergrid to power your app? Download one of our SDKs to get developing in your preferred language fast!</p>",
     "position": "bottom"
   }],
 
   "tooltip": {
-    "tooltip_current_org": "The name and UUID for the organization you're logged into. An org is how your applications are grouped in API BaaS.",
-    "tooltip_applications": "A list of the applications in your org. Applications represent unique data stores. Additional API BaaS features (e.g. App Monitoring, push notifications, etc.) are configured separately for each application.",
+    "tooltip_current_org": "The name and UUID for the organization you're logged into. An org is how your applications are grouped in Usergrid.",
+    "tooltip_applications": "A list of the applications in your org. Applications represent unique data stores.",
     "tooltip_org_api_creds": "These credentials can be sent from server-based code to authenticate as an org admin user. Org admins have full access to make any API call to an organization and all of the applications in it. Don't use these in a mobile app or client-side code!",
     "tooltip_org_admins": "A list of people who have org admin access to this organization.",
     "tooltip_activities": "A list of recent activities that have occurred in this organization, such as the creation of a new application."

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/e3dbe766/portal/js/app-overview/app-overview-controller.js
----------------------------------------------------------------------
diff --git a/portal/js/app-overview/app-overview-controller.js b/portal/js/app-overview/app-overview-controller.js
index 12d0af3..79446f8 100644
--- a/portal/js/app-overview/app-overview-controller.js
+++ b/portal/js/app-overview/app-overview-controller.js
@@ -31,27 +31,12 @@ AppServices.Controllers.controller('AppOverviewCtrl',
         $scope.collections = [];
         $scope.graph = '';
         $scope.$on('top-collections-received', function (event, collections) {
-//alert('yes');
-          //todo add this to charts service as helper
-          $scope.collections = collections;
-          var arr = [];
-          for (var i in collections) {
-            if (collections.hasOwnProperty(i)) {
-              arr.push(collections[i]);
-            }
-          }
-          $scope.appOverview = {};
 
+          $scope.collections = collections;
+          $scope.applyScope();
 
         });
         ug.getTopCollections();
-        /*
-        $scope.$on('app-initialized',function(){
-          ug.getTopCollections();
-        });
-        if($rootScope.activeUI){
-           ug.getTopCollections();
-        }
-         */
+
 
       }]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/e3dbe766/portal/package.json
----------------------------------------------------------------------
diff --git a/portal/package.json b/portal/package.json
index 0482ba5..777bf3d 100644
--- a/portal/package.json
+++ b/portal/package.json
@@ -36,7 +36,7 @@
     "grunt-contrib-clean": "~0.4.0",
     "grunt-dom-munger": "~3.1.0",
     "bower": "~1.2.8",
-    "grunt-bower-task": "~0.3.4",
+    "grunt-bower-task": "~0.4.0",
     "grunt-istanbul": "~0.2.5"
   },
   "engines": {


[45/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/dash/test/unit/controllersSpec.js
----------------------------------------------------------------------
diff --git a/deleted/archive/dash/test/unit/controllersSpec.js b/deleted/archive/dash/test/unit/controllersSpec.js
deleted file mode 100644
index bc9be5e..0000000
--- a/deleted/archive/dash/test/unit/controllersSpec.js
+++ /dev/null
@@ -1,31 +0,0 @@
-'use strict';
-
-/* jasmine specs for controllers go here */
-
-describe('MyCtrl1', function(){
-  var myCtrl1;
-
-  beforeEach(function(){
-    myCtrl1 = new MyCtrl1();
-  });
-
-
-  it('should ....', function() {
-    //spec body
-  });
-});
-
-
-describe('MyCtrl2', function(){
-  var myCtrl2;
-
-
-  beforeEach(function(){
-    myCtrl2 = new MyCtrl2();
-  });
-
-
-  it('should ....', function() {
-    //spec body
-  });
-});

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/dash/test/unit/directivesSpec.js
----------------------------------------------------------------------
diff --git a/deleted/archive/dash/test/unit/directivesSpec.js b/deleted/archive/dash/test/unit/directivesSpec.js
deleted file mode 100644
index 6061842..0000000
--- a/deleted/archive/dash/test/unit/directivesSpec.js
+++ /dev/null
@@ -1,19 +0,0 @@
-'use strict';
-
-/* jasmine specs for directives go here */
-
-describe('directives', function() {
-  beforeEach(module('myApp.directives'));
-
-  describe('app-version', function() {
-    it('should print current version', function() {
-      module(function($provide) {
-        $provide.value('version', 'TEST_VER');
-      });
-      inject(function($compile, $rootScope) {
-        var element = $compile('<span app-version></span>')($rootScope);
-        expect(element.text()).toEqual('TEST_VER');
-      });
-    });
-  });
-});

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/dash/test/unit/filtersSpec.js
----------------------------------------------------------------------
diff --git a/deleted/archive/dash/test/unit/filtersSpec.js b/deleted/archive/dash/test/unit/filtersSpec.js
deleted file mode 100644
index 19af329..0000000
--- a/deleted/archive/dash/test/unit/filtersSpec.js
+++ /dev/null
@@ -1,19 +0,0 @@
-'use strict';
-
-/* jasmine specs for filters go here */
-
-describe('filter', function() {
-  beforeEach(module('myApp.filters'));
-
-
-  describe('interpolate', function() {
-    beforeEach(module(function($provide) {
-      $provide.value('version', 'TEST_VER');
-    }));
-
-
-    it('should replace VERSION', inject(function(interpolateFilter) {
-      expect(interpolateFilter('before %VERSION% after')).toEqual('before TEST_VER after');
-    }));
-  });
-});

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/dash/test/unit/servicesSpec.js
----------------------------------------------------------------------
diff --git a/deleted/archive/dash/test/unit/servicesSpec.js b/deleted/archive/dash/test/unit/servicesSpec.js
deleted file mode 100644
index 3864c8d..0000000
--- a/deleted/archive/dash/test/unit/servicesSpec.js
+++ /dev/null
@@ -1,14 +0,0 @@
-'use strict';
-
-/* jasmine specs for services go here */
-
-describe('service', function() {
-  beforeEach(module('myApp.services'));
-
-
-  describe('version', function() {
-    it('should return current version', inject(function(version) {
-      expect(version).toEqual('0.1');
-    }));
-  });
-});

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/APNS_cert_upload.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/APNS_cert_upload.png b/deleted/archive/images/APNS_cert_upload.png
deleted file mode 100644
index 2002b42..0000000
Binary files a/deleted/archive/images/APNS_cert_upload.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/APNS_certification.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/APNS_certification.png b/deleted/archive/images/APNS_certification.png
deleted file mode 100644
index 11848a3..0000000
Binary files a/deleted/archive/images/APNS_certification.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/android-notification.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/android-notification.png b/deleted/archive/images/android-notification.png
deleted file mode 100644
index ac50bae..0000000
Binary files a/deleted/archive/images/android-notification.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/android-sdk-download.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/android-sdk-download.png b/deleted/archive/images/android-sdk-download.png
deleted file mode 100644
index 29019b8..0000000
Binary files a/deleted/archive/images/android-sdk-download.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/api-activity.gif
----------------------------------------------------------------------
diff --git a/deleted/archive/images/api-activity.gif b/deleted/archive/images/api-activity.gif
deleted file mode 100644
index eb43dac..0000000
Binary files a/deleted/archive/images/api-activity.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/apigee-logo.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/apigee-logo.png b/deleted/archive/images/apigee-logo.png
deleted file mode 100644
index edd7ce6..0000000
Binary files a/deleted/archive/images/apigee-logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/apigeetopbar.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/apigeetopbar.png b/deleted/archive/images/apigeetopbar.png
deleted file mode 100644
index 4449024..0000000
Binary files a/deleted/archive/images/apigeetopbar.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/background_one_col.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/background_one_col.png b/deleted/archive/images/background_one_col.png
deleted file mode 100644
index c523f81..0000000
Binary files a/deleted/archive/images/background_one_col.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/btn-copyCurl-up.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/btn-copyCurl-up.png b/deleted/archive/images/btn-copyCurl-up.png
deleted file mode 100644
index a497ba7..0000000
Binary files a/deleted/archive/images/btn-copyCurl-up.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/clippy-bg.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/clippy-bg.png b/deleted/archive/images/clippy-bg.png
deleted file mode 100644
index 7a462e1..0000000
Binary files a/deleted/archive/images/clippy-bg.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/close.gif
----------------------------------------------------------------------
diff --git a/deleted/archive/images/close.gif b/deleted/archive/images/close.gif
deleted file mode 100755
index aea6e42..0000000
Binary files a/deleted/archive/images/close.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/dotnet-sdk-download.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/dotnet-sdk-download.png b/deleted/archive/images/dotnet-sdk-download.png
deleted file mode 100644
index 2b69215..0000000
Binary files a/deleted/archive/images/dotnet-sdk-download.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/down_arrow.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/down_arrow.png b/deleted/archive/images/down_arrow.png
deleted file mode 100644
index 8c86504..0000000
Binary files a/deleted/archive/images/down_arrow.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/error.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/error.png b/deleted/archive/images/error.png
deleted file mode 100755
index 8270104..0000000
Binary files a/deleted/archive/images/error.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/faviconApigee.ico
----------------------------------------------------------------------
diff --git a/deleted/archive/images/faviconApigee.ico b/deleted/archive/images/faviconApigee.ico
deleted file mode 100644
index f2f83a3..0000000
Binary files a/deleted/archive/images/faviconApigee.ico and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/glyphicons-halflings-white.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/glyphicons-halflings-white.png b/deleted/archive/images/glyphicons-halflings-white.png
deleted file mode 100644
index a20760b..0000000
Binary files a/deleted/archive/images/glyphicons-halflings-white.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/glyphicons-halflings.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/glyphicons-halflings.png b/deleted/archive/images/glyphicons-halflings.png
deleted file mode 100644
index 92d4445..0000000
Binary files a/deleted/archive/images/glyphicons-halflings.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/glyphicons_halflings_135_wrench-white2.pdn
----------------------------------------------------------------------
diff --git a/deleted/archive/images/glyphicons_halflings_135_wrench-white2.pdn b/deleted/archive/images/glyphicons_halflings_135_wrench-white2.pdn
deleted file mode 100644
index 2d6d0fd..0000000
Binary files a/deleted/archive/images/glyphicons_halflings_135_wrench-white2.pdn and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/glyphicons_halflings_135_wrench-white2.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/glyphicons_halflings_135_wrench-white2.png b/deleted/archive/images/glyphicons_halflings_135_wrench-white2.png
deleted file mode 100644
index 334b984..0000000
Binary files a/deleted/archive/images/glyphicons_halflings_135_wrench-white2.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/glyphicons_halflings_135_wrench.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/glyphicons_halflings_135_wrench.png b/deleted/archive/images/glyphicons_halflings_135_wrench.png
deleted file mode 100644
index a501ccd..0000000
Binary files a/deleted/archive/images/glyphicons_halflings_135_wrench.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/glyphicons_halflings_135_wrench_white.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/glyphicons_halflings_135_wrench_white.png b/deleted/archive/images/glyphicons_halflings_135_wrench_white.png
deleted file mode 100644
index eed258e..0000000
Binary files a/deleted/archive/images/glyphicons_halflings_135_wrench_white.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/glyphicons_halflings_wrench_white.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/glyphicons_halflings_wrench_white.png b/deleted/archive/images/glyphicons_halflings_wrench_white.png
deleted file mode 100644
index eb7f3bd..0000000
Binary files a/deleted/archive/images/glyphicons_halflings_wrench_white.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/google_api_key.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/google_api_key.png b/deleted/archive/images/google_api_key.png
deleted file mode 100644
index 26f83f1..0000000
Binary files a/deleted/archive/images/google_api_key.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/green_dot.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/green_dot.png b/deleted/archive/images/green_dot.png
deleted file mode 100644
index c9e18eb..0000000
Binary files a/deleted/archive/images/green_dot.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/grid.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/grid.png b/deleted/archive/images/grid.png
deleted file mode 100644
index 7fb3462..0000000
Binary files a/deleted/archive/images/grid.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/icons.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/icons.png b/deleted/archive/images/icons.png
deleted file mode 100644
index 47ca99a..0000000
Binary files a/deleted/archive/images/icons.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/ios-sdk-download.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/ios-sdk-download.png b/deleted/archive/images/ios-sdk-download.png
deleted file mode 100644
index 89a7c8b..0000000
Binary files a/deleted/archive/images/ios-sdk-download.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/iphone_message.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/iphone_message.png b/deleted/archive/images/iphone_message.png
deleted file mode 100644
index 6973699..0000000
Binary files a/deleted/archive/images/iphone_message.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/javascript-sdk-download.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/javascript-sdk-download.png b/deleted/archive/images/javascript-sdk-download.png
deleted file mode 100644
index 032a371..0000000
Binary files a/deleted/archive/images/javascript-sdk-download.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/left_arrow.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/left_arrow.png b/deleted/archive/images/left_arrow.png
deleted file mode 100644
index 81ee40c..0000000
Binary files a/deleted/archive/images/left_arrow.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/logo-white.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/logo-white.png b/deleted/archive/images/logo-white.png
deleted file mode 100644
index fbe95b8..0000000
Binary files a/deleted/archive/images/logo-white.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/menuActiveTriangle.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/menuActiveTriangle.png b/deleted/archive/images/menuActiveTriangle.png
deleted file mode 100644
index 07db2d1..0000000
Binary files a/deleted/archive/images/menuActiveTriangle.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/nodejs-sdk-download.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/nodejs-sdk-download.png b/deleted/archive/images/nodejs-sdk-download.png
deleted file mode 100644
index d997a5f..0000000
Binary files a/deleted/archive/images/nodejs-sdk-download.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/notice.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/notice.png b/deleted/archive/images/notice.png
deleted file mode 100755
index 93c67f2..0000000
Binary files a/deleted/archive/images/notice.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/orange-arrow.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/orange-arrow.png b/deleted/archive/images/orange-arrow.png
deleted file mode 100644
index 92d02f3..0000000
Binary files a/deleted/archive/images/orange-arrow.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/push_notifications_icon.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/push_notifications_icon.png b/deleted/archive/images/push_notifications_icon.png
deleted file mode 100644
index 488cd82..0000000
Binary files a/deleted/archive/images/push_notifications_icon.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/red_dot.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/red_dot.png b/deleted/archive/images/red_dot.png
deleted file mode 100644
index 4f7fb26..0000000
Binary files a/deleted/archive/images/red_dot.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/right_arrow.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/right_arrow.png b/deleted/archive/images/right_arrow.png
deleted file mode 100644
index f37020a..0000000
Binary files a/deleted/archive/images/right_arrow.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/ruby-sdk-download.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/ruby-sdk-download.png b/deleted/archive/images/ruby-sdk-download.png
deleted file mode 100644
index c9e7562..0000000
Binary files a/deleted/archive/images/ruby-sdk-download.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/step_1.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/step_1.png b/deleted/archive/images/step_1.png
deleted file mode 100644
index fef83c8..0000000
Binary files a/deleted/archive/images/step_1.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/step_2.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/step_2.png b/deleted/archive/images/step_2.png
deleted file mode 100644
index 87c1c53..0000000
Binary files a/deleted/archive/images/step_2.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/step_3.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/step_3.png b/deleted/archive/images/step_3.png
deleted file mode 100644
index 2f6be12..0000000
Binary files a/deleted/archive/images/step_3.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/success.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/success.png b/deleted/archive/images/success.png
deleted file mode 100755
index 7786ac7..0000000
Binary files a/deleted/archive/images/success.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/swish_arrow.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/swish_arrow.png b/deleted/archive/images/swish_arrow.png
deleted file mode 100644
index 75b2150..0000000
Binary files a/deleted/archive/images/swish_arrow.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/topbackground.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/topbackground.png b/deleted/archive/images/topbackground.png
deleted file mode 100644
index b9559e4..0000000
Binary files a/deleted/archive/images/topbackground.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/up_arrow.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/up_arrow.png b/deleted/archive/images/up_arrow.png
deleted file mode 100644
index 926c7e0..0000000
Binary files a/deleted/archive/images/up_arrow.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/user-photo.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/user-photo.png b/deleted/archive/images/user-photo.png
deleted file mode 100644
index 9c2a29c..0000000
Binary files a/deleted/archive/images/user-photo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/user_profile.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/user_profile.png b/deleted/archive/images/user_profile.png
deleted file mode 100644
index ea1cba3..0000000
Binary files a/deleted/archive/images/user_profile.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/usergrid_200.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/usergrid_200.png b/deleted/archive/images/usergrid_200.png
deleted file mode 100644
index c977d7c..0000000
Binary files a/deleted/archive/images/usergrid_200.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/usergrid_400.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/usergrid_400.png b/deleted/archive/images/usergrid_400.png
deleted file mode 100644
index 01435ea..0000000
Binary files a/deleted/archive/images/usergrid_400.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/warning.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/warning.png b/deleted/archive/images/warning.png
deleted file mode 100755
index 14776e2..0000000
Binary files a/deleted/archive/images/warning.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/images/yellow_dot.png
----------------------------------------------------------------------
diff --git a/deleted/archive/images/yellow_dot.png b/deleted/archive/images/yellow_dot.png
deleted file mode 100644
index 37fed66..0000000
Binary files a/deleted/archive/images/yellow_dot.png and /dev/null differ


[17/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/app/usergrid.appSDK.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/app/usergrid.appSDK.js b/deleted/dist-cov/usergrid-portal/archive/js/app/usergrid.appSDK.js
deleted file mode 100644
index 84bf33f..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/app/usergrid.appSDK.js
+++ /dev/null
@@ -1,2097 +0,0 @@
-/**
- *  App SDK is a collection of classes designed to make working with
- *  the Appigee App Services API as easy as possible.
- *  Learn more at http://apigee.com/docs
- *
- *   Copyright 2012 Apigee Corporation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-//define the console.log for IE
-window.console = window.console || {};
-window.console.log = window.console.log || function() {};
-
-//Usergrid namespace encapsulates this SDK
-window.Usergrid = window.Usergrid || {};
-Usergrid = Usergrid || {};
-Usergrid.SDK_VERSION = '0.9.9';
-
-/**
- *  Usergrid.Query is a class for holding all query information and paging state
- *
- *  @class Query
- *  @author Rod Simpson (rod@apigee.com)
- */
-
-(function () {
-
-  /**
-   *  @constructor
-   *  @param {string} method
-   *  @param {string} path
-   *  @param {object} jsonObj
-   *  @param {object} paramsObj
-   *  @param {function} successCallback
-   *  @param {function} failureCallback
-   */
-  Usergrid.Query = function(method, resource, jsonObj, paramsObj, successCallback, failureCallback) {
-    //query vars
-    this._method = method;
-    this._resource = resource;
-    this._jsonObj = jsonObj;
-    this._paramsObj = paramsObj;
-    this._successCallback = successCallback;
-    this._failureCallback = failureCallback;
-    this._filePost = false;
-    //curl command - will be populated by runQuery function
-    this._curl = '';
-    this._token = false;
-
-    //paging vars
-    this._cursor = null;
-    this._next = null;
-    this._previous = [];
-    this._start = 0;
-    this._end = 0;
-  };
-
-  Usergrid.Query.prototype = {
-     setQueryStartTime: function() {
-       this._start = new Date().getTime();
-     },
-
-     setQueryEndTime: function() {
-       this._end = new Date().getTime();
-     },
-
-     getQueryTotalTime: function() {
-       var seconds = 0;
-       var time = this._end - this._start;
-       try {
-          seconds = ((time/10) / 60).toFixed(2);
-       } catch(e){ return 0; }
-       return this.getMethod() + " " + this.getResource() + " - " + seconds + " seconds";
-     },
-    /**
-     *  A method to set all settable parameters of the Query at one time
-     *
-     *  @public
-     *  @method validateUsername
-     *  @param {string} method
-     *  @param {string} path
-     *  @param {object} jsonObj
-     *  @param {object} paramsObj
-     *  @param {function} successCallback
-     *  @param {function} failureCallback
-     *  @return none
-     */
-    setAllQueryParams: function(method, resource, jsonObj, paramsObj, successCallback, failureCallback) {
-      this._method = method;
-      this._resource = resource;
-      this._jsonObj = jsonObj;
-      this._paramsObj = paramsObj;
-      this._successCallback = successCallback;
-      this._failureCallback = failureCallback;
-    },
-
-    /**
-     *  A method to reset all the parameters in one call
-     *
-     *  @public
-     *  @return none
-     */
-    clearAll: function() {
-      this._method = null;
-      this._resource = null;
-      this._jsonObj = {};
-      this._paramsObj = {};
-      this._successCallback = null;
-      this._failureCallback = null;
-    },
-    /**
-    * Returns the method
-    *
-    * @public
-    * @method getMethod
-    * @return {string} Returns method
-    */
-    getMethod: function() {
-      return this._method;
-    },
-
-    /**
-    * sets the method (POST, PUT, DELETE, GET)
-    *
-    * @public
-    * @method setMethod
-    * @return none
-    */
-    setMethod: function(method) {
-      this._method = method;
-    },
-
-    /**
-    * Returns the resource
-    *
-    * @public
-    * @method getResource
-    * @return {string} the resource
-    */
-    getResource: function() {
-      return this._resource;
-    },
-
-    /**
-    * sets the resource
-    *
-    * @public
-    * @method setResource
-    * @return none
-    */
-    setResource: function(resource) {
-      this._resource = resource;
-    },
-
-    /**
-    * Returns the json Object
-    *
-    * @public
-    * @method getJsonObj
-    * @return {object} Returns the json Object
-    */
-    getJsonObj: function() {
-      return this._jsonObj;
-    },
-
-    /**
-    * sets the json object
-    *
-    * @public
-    * @method setJsonObj
-    * @return none
-    */
-    setJsonObj: function(jsonObj) {
-      this._jsonObj = jsonObj;
-    },
-    /**
-    * Returns the Query Parameters object
-    *
-    * @public
-    * @method getQueryParams
-    * @return {object} Returns Query Parameters object
-    */
-    getQueryParams: function() {
-      return this._paramsObj;
-    },
-
-    /**
-    * sets the query parameter object
-    *
-    * @public
-    * @method setQueryParams
-    * @return none
-    */
-    setQueryParams: function(paramsObj) {
-      this._paramsObj = paramsObj;
-    },
-
-    /**
-    * Returns the success callback function
-    *
-    * @public
-    * @method getSuccessCallback
-    * @return {function} Returns the successCallback
-    */
-    getSuccessCallback: function() {
-      return this._successCallback;
-    },
-
-    /**
-    * sets the success callback function
-    *
-    * @public
-    * @method setSuccessCallback
-    * @return none
-    */
-    setSuccessCallback: function(successCallback) {
-      this._successCallback = successCallback;
-    },
-
-    /**
-    * Calls the success callback function
-    *
-    * @public
-    * @method callSuccessCallback
-    * @return {boolean} Returns true or false based on if there was a callback to call
-    */
-    callSuccessCallback: function(response) {
-      if (this._successCallback && typeof(this._successCallback ) === "function") {
-        this._successCallback(response);
-        return true;
-      } else {
-        return false;
-      }
-    },
-
-    /**
-    * Returns the failure callback function
-    *
-    * @public
-    * @method getFailureCallback
-    * @return {function} Returns the failureCallback
-    */
-    getFailureCallback: function() {
-      return this._failureCallback;
-    },
-
-    /**
-    * sets the failure callback function
-    *
-    * @public
-    * @method setFailureCallback
-    * @return none
-    */
-    setFailureCallback: function(failureCallback) {
-      this._failureCallback = failureCallback;
-    },
-
-    /**
-    * Calls the failure callback function
-    *
-    * @public
-    * @method callFailureCallback
-    * @return {boolean} Returns true or false based on if there was a callback to call
-    */
-    callFailureCallback: function(response) {
-      if (this._failureCallback && typeof(this._failureCallback) === "function") {
-        this._failureCallback(response);
-        return true;
-      } else {
-        return false;
-      }
-    },
-
-    /**
-    * Returns the curl call
-    *
-    * @public
-    * @method getCurl
-    * @return {function} Returns the curl call
-    */
-    getCurl: function() {
-      return this._curl;
-    },
-
-    /**
-    * sets the curl call
-    *
-    * @public
-    * @method setCurl
-    * @return none
-    */
-    setCurl: function(curl) {
-      this._curl = curl;
-    },
-
-    /**
-    * Returns the Token
-    *
-    * @public
-    * @method getToken
-    * @return {function} Returns the Token
-    */
-    getToken: function() {
-      return this._token;
-    },
-
-    /**
-    * Method to set
-    *
-    * @public
-    * @method setToken
-    * @return none
-    */
-    setToken: function(token) {
-      this._token = token;
-    },
-
-    /**
-    * Resets the paging pointer (back to original page)
-    *
-    * @public
-    * @method resetPaging
-    * @return none
-    */
-    resetPaging: function() {
-      this._previous = [];
-      this._next = null;
-      this._cursor = null;
-    },
-
-    /**
-    * Method to determine if there is a previous page of data
-    *
-    * @public
-    * @method hasPrevious
-    * @return {boolean} true or false based on if there is a previous page
-    */
-    hasPrevious: function() {
-      return (this._previous.length > 0);
-    },
-
-    /**
-    * Method to set the paging object to get the previous page of data
-    *
-    * @public
-    * @method getPrevious
-    * @return none
-    */
-    getPrevious: function() {
-      this._next=null; //clear out next so the comparison will find the next item
-      this._cursor = this._previous.pop();
-    },
-
-    /**
-    * Method to determine if there is a next page of data
-    *
-    * @public
-    * @method hasNext
-    * @return {boolean} true or false based on if there is a next page
-    */
-    hasNext: function(){
-      return (this._next);
-    },
-
-    /**
-    * Method to set the paging object to get the next page of data
-    *
-    * @public
-    * @method getNext
-    * @return none
-    */
-    getNext: function() {
-      this._previous.push(this._cursor);
-      this._cursor = this._next;
-    },
-
-    /**
-    * Method to save off the cursor just returned by the last API call
-    *
-    * @public
-    * @method saveCursor
-    * @return none
-    */
-    saveCursor: function(cursor) {
-      //if current cursor is different, grab it for next cursor
-      if (this._next !== cursor) {
-        this._next = cursor;
-      }
-    },
-
-    /**
-    * Method to determine if there is a next page of data
-    *
-    * @public
-    * @method getCursor
-    * @return {string} the current cursor
-    */
-    getCursor: function() {
-      return this._cursor;
-    },
-
-    getFilePost: function() {
-      return this._filePost;
-    },
-    setFilePost: function(filePost) {
-      this._filePost = filePost;
-    }
-  };
-})(Usergrid);
-
-
-/**
- *  A class to Model a Usergrid Entity.
- *
- *  @class Entity
- *  @author Rod Simpson (rod@apigee.com)
- */
-(function () {
-  /**
-   *  Constructor for initializing an entity
-   *
-   *  @constructor
-   *  @param {string} collectionType - the type of collection to model
-   *  @param {uuid} uuid - (optional), the UUID of the collection if it is known
-   */
-  Usergrid.Entity = function(collectionType, uuid) {
-    this._collectionType = collectionType;
-    this._data = {};
-    this._uuid = uuid;
-  };
-
-  //inherit prototype from Query
-  Usergrid.Entity.prototype = new Usergrid.Query();
-
-  /**
-   *  gets the current Entity type
-   *
-   *  @method getCollectionType
-   *  @return {string} collection type
-   */
-  Usergrid.Entity.prototype.getCollectionType = function (){
-    return this._collectionType;
-  }
-
-  /**
-   *  sets the current Entity type
-   *
-   *  @method setCollectionType
-   *  @param {string} collectionType
-   *  @return none
-   */
-  Usergrid.Entity.prototype.setCollectionType = function (collectionType){
-    this._collectionType = collectionType;
-  }
-
-  /**
-   *  gets a specific field or the entire data object. If null or no argument
-   *  passed, will return all data, else, will return a specific field
-   *
-   *  @method get
-   *  @param {string} field
-   *  @return {string} || {object} data
-   */
-  Usergrid.Entity.prototype.get = function (field){
-    if (field) {
-      return this._data[field];
-    } else {
-      return this._data;
-    }
-  },
-
-  /**
-   *  adds a specific field or object to the Entity's data
-   *
-   *  @method set
-   *  @param {string} item || {object}
-   *  @param {string} value
-   *  @return none
-   */
-  Usergrid.Entity.prototype.set = function (item, value){
-    if (typeof item === 'object') {
-      for(field in item) {
-        this._data[field] = item[field];
-      }
-    } else if (typeof item === 'string') {
-      this._data[item] = value;
-    } else {
-      this._data = null;
-    }
-  }
-
-  /**
-   *  Saves the entity back to the database
-   *
-   *  @method save
-   *  @public
-   *  @param {function} successCallback
-   *  @param {function} errorCallback
-   *  @return none
-   */
-  Usergrid.Entity.prototype.save = function (successCallback, errorCallback){
-    var path = this.getCollectionType();
-    //TODO:  API will be changed soon to accomodate PUTs via name which create new entities
-    //       This function should be changed to PUT only at that time, and updated to use
-    //       either uuid or name
-    var method = 'POST';
-    if (this.get('uuid')) {
-      method = 'PUT';
-      if (Usergrid.validation.isUUID(this.get('uuid'))) {
-        path += "/" + this.get('uuid');
-      }
-    }
-
-    //if this is a user, update the password if it has been specified
-    var data = {};
-    if (path == 'users') {
-      data = this.get();
-      var pwdata = {};
-      //Note: we have a ticket in to change PUT calls to /users to accept the password change
-      //      once that is done, we will remove this call and merge it all into one
-      if (data.oldpassword && data.newpassword) {
-        pwdata.oldpassword = data.oldpassword;
-        pwdata.newpassword = data.newpassword;
-        this.runAppQuery(new Usergrid.Query('PUT', 'users/'+uuid+'/password', pwdata, null,
-          function (response) {
-            //not calling any callbacks - this section will be merged as soon as API supports
-            //   updating passwords in general PUT call
-          },
-          function (response) {
-
-          }
-        ));
-      }
-      //remove old and new password fields so they don't end up as part of the entity object
-      delete data.oldpassword;
-      delete data.newpassword;
-    }
-
-    //update the entity
-    var self = this;
-
-    data = {};
-    var entityData = this.get();
-    //remove system specific properties
-    for (var item in entityData) {
-      if (item == 'metadata' || item == 'created' || item == 'modified' ||
-          item == 'type' || item == 'activatted' ) { continue; }
-      data[item] = entityData[item];
-    }
-
-    this.setAllQueryParams(method, path, data, null,
-      function(response) {
-        try {
-          var entity = response.entities[0];
-          self.set(entity);
-          if (typeof(successCallback) === "function"){
-            successCallback(response);
-          }
-        } catch (e) {
-          if (typeof(errorCallback) === "function"){
-            errorCallback(response);
-          }
-        }
-      },
-      function(response) {
-        if (typeof(errorCallback) === "function"){
-          errorCallback(response);
-        }
-      }
-    );
-    Usergrid.ApiClient.runAppQuery(this);
-  }
-
-  /**
-   *  refreshes the entity by making a GET call back to the database
-   *
-   *  @method fetch
-   *  @public
-   *  @param {function} successCallback
-   *  @param {function} errorCallback
-   *  @return none
-   */
-  Usergrid.Entity.prototype.fetch = function (successCallback, errorCallback){
-    var path = this.getCollectionType();
-    //if a uuid is available, use that, otherwise, use the name
-    if (this.get('uuid')) {
-      path += "/" + this.get('uuid');
-    } else {
-      if (path == "users") {
-        if (this.get("username")) {
-          path += "/" + this.get("username");
-        } else {
-          console.log('no username specified');
-          if (typeof(errorCallback) === "function"){
-            console.log('no username specified');
-          }
-        }
-      } else {
-        if (this.get()) {
-          path += "/" + this.get();
-        } else {
-          console.log('no entity identifier specified');
-          if (typeof(errorCallback) === "function"){
-            console.log('no entity identifier specified');
-          }
-        }
-      }
-    }
-    var self = this;
-    this.setAllQueryParams('GET', path, null, null,
-      function(response) {
-        try {
-          if (response.user) {
-            self.set(response.user);
-          }
-          var entity = response.entities[0];
-          self.set(entity);
-          if (typeof(successCallback) === "function"){
-            successCallback(response);
-          }
-        } catch (e) {
-          if (typeof(errorCallback) === "function"){
-            errorCallback(response);
-          }
-        }
-      },
-      function(response) {
-        if (typeof(errorCallback) === "function"){
-            errorCallback(response);
-        }
-      }
-    );
-    Usergrid.ApiClient.runAppQuery(this);
-  }
-
-  /**
-   *  deletes the entity from the database - will only delete
-   *  if the object has a valid uuid
-   *
-   *  @method destroy
-   *  @public
-   *  @param {function} successCallback
-   *  @param {function} errorCallback
-   *  @return none
-   *
-   */
-  Usergrid.Entity.prototype.destroy = function (successCallback, errorCallback){
-    var path = this.getCollectionType();
-    if (this.get('uuid')) {
-      path += "/" + this.get('uuid');
-    } else {
-      console.log('Error trying to delete object - no uuid specified.');
-      if (typeof(errorCallback) === "function"){
-        errorCallback('Error trying to delete object - no uuid specified.');
-      }
-    }
-    var self = this;
-    this.setAllQueryParams('DELETE', path, null, null,
-      function(response) {
-        //clear out this object
-        self.set(null);
-        if (typeof(successCallback) === "function"){
-          successCallback(response);
-        }
-      },
-      function(response) {
-        if (typeof(errorCallback) === "function"){
-            errorCallback(response);
-        }
-      }
-    );
-    Usergrid.ApiClient.runAppQuery(this);
-  }
-
-})(Usergrid);
-
-
-/**
- *  The Collection class models Usergrid Collections.  It essentially
- *  acts as a container for holding Entity objects, while providing
- *  additional funcitonality such as paging, and saving
- *
- *  @class Collection
- *  @author Rod Simpson (rod@apigee.com)
- */
-(function () {
-  /**
-   *  Collection is a container class for holding entities
-   *
-   *  @constructor
-   *  @param {string} collectionPath - the type of collection to model
-   *  @param {uuid} uuid - (optional), the UUID of the collection if it is known
-   */
-  Usergrid.Collection = function(path, uuid) {
-    this._path = path;
-    this._uuid = uuid;
-    this._list = [];
-    this._Query = new Usergrid.Query();
-    this._iterator = -1; //first thing we do is increment, so set to -1
-  };
-
-  Usergrid.Collection.prototype = new Usergrid.Query();
-
-  /**
-   *  gets the current Collection path
-   *
-   *  @method getPath
-   *  @return {string} path
-   */
-  Usergrid.Collection.prototype.getPath = function (){
-    return this._path;
-  }
-
-  /**
-   *  sets the Collection path
-   *
-   *  @method setPath
-   *  @param {string} path
-   *  @return none
-   */
-  Usergrid.Collection.prototype.setPath = function (path){
-    this._path = path;
-  }
-
-  /**
-   *  gets the current Collection UUID
-   *
-   *  @method getUUID
-   *  @return {string} the uuid
-   */
-  Usergrid.Collection.prototype.getUUID = function (){
-    return this._uuid;
-  }
-
-  /**
-   *  sets the current Collection UUID
-   *  @method setUUID
-   *  @param {string} uuid
-   *  @return none
-   */
-  Usergrid.Collection.prototype.setUUID = function (uuid){
-    this._uuid = uuid;
-  }
-
-  /**
-   *  Adds an Entity to the collection (adds to the local object)
-   *
-   *  @method addEntity
-   *  @param {object} entity
-   *  @param {function} successCallback
-   *  @param {function} errorCallback
-   *  @return none
-   */
-  Usergrid.Collection.prototype.addEntity = function (entity){
-    //then add it to the list
-    var count = this._list.length;
-    this._list[count] = entity;
-  }
-
-  /**
-   *  Adds a new Entity to the collection (saves, then adds to the local object)
-   *
-   *  @method addNewEntity
-   *  @param {object} entity
-   *  @return none
-   */
-  Usergrid.Collection.prototype.addNewEntity = function (entity,successCallback, errorCallback) {
-    //add the entity to the list
-    this.addEntity(entity);
-    //then save the entity
-    entity.save(successCallback, errorCallback);
-  }
-
-  Usergrid.Collection.prototype.destroyEntity = function (entity) {
-    //first get the entities uuid
-    var uuid = entity.get('uuid');
-    //if the entity has a uuid, delete it
-    if (Usergrid.validation.isUUID(uuid)) {
-      //then remove it from the list
-      var count = this._list.length;
-      var i=0;
-      var reorder = false;
-      for (i=0; i<count; i++) {
-        if(reorder) {
-          this._list[i-1] = this._list[i];
-          this._list[i] = null;
-        }
-        if (this._list[i].get('uuid') == uuid) {
-          this._list[i] = null;
-          reorder=true;
-        }
-      }
-    }
-    //first destroy the entity on the server
-    entity.destroy();
-  }
-
-  /**
-   *  Looks up an Entity by a specific field - will return the first Entity that
-   *  has a matching field
-   *
-   *  @method getEntityByField
-   *  @param {string} field
-   *  @param {string} value
-   *  @return {object} returns an entity object, or null if it is not found
-   */
-  Usergrid.Collection.prototype.getEntityByField = function (field, value){
-    var count = this._list.length;
-    var i=0;
-    for (i=0; i<count; i++) {
-      if (this._list[i].getField(field) == value) {
-        return this._list[i];
-      }
-    }
-    return null;
-  }
-
-  /**
-   *  Looks up an Entity by UUID
-   *
-   *  @method getEntityByUUID
-   *  @param {string} UUID
-   *  @return {object} returns an entity object, or null if it is not found
-   */
-  Usergrid.Collection.prototype.getEntityByUUID = function (UUID){
-    var count = this._list.length;
-    var i=0;
-    for (i=0; i<count; i++) {
-      if (this._list[i].get('uuid') == UUID) {
-        return this._list[i];
-      }
-    }
-    return null;
-  }
-
-  /**
-   *  Returns the first Entity of the Entity list - does not affect the iterator
-   *
-   *  @method getFirstEntity
-   *  @return {object} returns an entity object
-   */
-  Usergrid.Collection.prototype.getFirstEntity = function (){
-    var count = this._list.length;
-      if (count > 0) {
-        return this._list[0];
-      }
-      return null;
-  }
-
-  /**
-   *  Returns the last Entity of the Entity list - does not affect the iterator
-   *
-   *  @method getLastEntity
-   *  @return {object} returns an entity object
-   */
-  Usergrid.Collection.prototype.getLastEntity = function (){
-    var count = this._list.length;
-      if (count > 0) {
-        return this._list[count-1];
-      }
-      return null;
-  }
-
-  /**
-   *  Entity iteration -Checks to see if there is a "next" entity
-   *  in the list.  The first time this method is called on an entity
-   *  list, or after the resetEntityPointer method is called, it will
-   *  return true referencing the first entity in the list
-   *
-   *  @method hasNextEntity
-   *  @return {boolean} true if there is a next entity, false if not
-   */
-  Usergrid.Collection.prototype.hasNextEntity = function (){
-    var next = this._iterator + 1;
-      if(next >=0 && next < this._list.length) {
-        return true;
-      }
-      return false;
-  }
-
-  /**
-   *  Entity iteration - Gets the "next" entity in the list.  The first
-   *  time this method is called on an entity list, or after the method
-   *  resetEntityPointer is called, it will return the,
-   *  first entity in the list
-   *
-   *  @method hasNextEntity
-   *  @return {object} entity
-   */
-  Usergrid.Collection.prototype.getNextEntity = function (){
-    this._iterator++;
-      if(this._iterator >= 0 && this._iterator <= this._list.length) {
-        return this._list[this._iterator];
-      }
-      return false;
-  }
-
-  /**
-   *  Entity iteration - Checks to see if there is a "previous"
-   *  entity in the list.
-   *
-   *  @method hasPreviousEntity
-   *  @return {boolean} true if there is a previous entity, false if not
-   */
-  Usergrid.Collection.prototype.hasPreviousEntity = function (){
-    var previous = this._iterator - 1;
-      if(previous >=0 && previous < this._list.length) {
-        return true;
-      }
-      return false;
-  }
-
-  /**
-   *  Entity iteration - Gets the "previous" entity in the list.
-   *
-   *  @method getPreviousEntity
-   *  @return {object} entity
-   */
-  Usergrid.Collection.prototype.getPreviousEntity = function (){
-     this._iterator--;
-      if(this._iterator >= 0 && this._iterator <= this._list.length) {
-        return this.list[this._iterator];
-      }
-      return false;
-  }
-
-  /**
-   *  Entity iteration - Resets the iterator back to the beginning
-   *  of the list
-   *
-   *  @method resetEntityPointer
-   *  @return none
-   */
-  Usergrid.Collection.prototype.resetEntityPointer = function (){
-     this._iterator  = -1;
-  }
-
-  /**
-   *  gets and array of all entities currently in the colleciton object
-   *
-   *  @method getEntityList
-   *  @return {array} returns an array of entity objects
-   */
-  Usergrid.Collection.prototype.getEntityList = function (){
-     return this._list;
-  }
-
-  /**
-   *  sets the entity list
-   *
-   *  @method setEntityList
-   *  @param {array} list - an array of Entity objects
-   *  @return none
-   */
-  Usergrid.Collection.prototype.setEntityList = function (list){
-    this._list = list;
-  }
-
-  /**
-   *  Paging -  checks to see if there is a next page od data
-   *
-   *  @method hasNextPage
-   *  @return {boolean} returns true if there is a next page of data, false otherwise
-   */
-  Usergrid.Collection.prototype.hasNextPage = function (){
-    return this.hasNext();
-  }
-
-  /**
-   *  Paging - advances the cursor and gets the next
-   *  page of data from the API.  Stores returned entities
-   *  in the Entity list.
-   *
-   *  @method getNextPage
-   *  @return none
-   */
-  Usergrid.Collection.prototype.getNextPage = function (){
-    if (this.hasNext()) {
-        //set the cursor to the next page of data
-        this.getNext();
-        //empty the list
-        this.setEntityList([]);
-        Usergrid.ApiClient.runAppQuery(this);
-      }
-  }
-
-  /**
-   *  Paging -  checks to see if there is a previous page od data
-   *
-   *  @method hasPreviousPage
-   *  @return {boolean} returns true if there is a previous page of data, false otherwise
-   */
-  Usergrid.Collection.prototype.hasPreviousPage = function (){
-    return this.hasPrevious();
-  }
-
-  /**
-   *  Paging - reverts the cursor and gets the previous
-   *  page of data from the API.  Stores returned entities
-   *  in the Entity list.
-   *
-   *  @method getPreviousPage
-   *  @return none
-   */
-  Usergrid.Collection.prototype.getPreviousPage = function (){
-    if (this.hasPrevious()) {
-        this.getPrevious();
-        //empty the list
-        this.setEntityList([]);
-        Usergrid.ApiClient.runAppQuery(this);
-      }
-  }
-
-  /**
-   *  clears the query parameters object
-   *
-   *  @method clearQuery
-   *  @return none
-   */
-  Usergrid.Collection.prototype.clearQuery = function (){
-    this.clearAll();
-  }
-
-  //The get() function is deprecated.  Including here for backwards compatibility
-  //with previous versions of the SDK
-  Usergrid.Collection.prototype.get = function (successCallback, errorCallback){
-    Usergrid.Collection.fetch(successCallback, errorCallback);
-  }
-
-  /**
-   *  A method to get all items in the collection, as dictated by the
-   *  cursor and the query.  By default, the API returns 10 items in
-   *  a given call.  This can be overriden so that more or fewer items
-   *  are returned.  The entities returned are all stored in the colleciton
-   *  object's entity list, and can be retrieved by calling getEntityList()
-   *
-   *  @method get
-   *  @param {function} successCallback
-   *  @param {function} errorCallback
-   *  @return none
-   */
-  Usergrid.Collection.prototype.fetch = function (successCallback, errorCallback){
-    var self = this;
-    var queryParams = this.getQueryParams();
-    //empty the list
-    this.setEntityList([]);
-    this.setAllQueryParams('GET', this.getPath(), null, queryParams,
-      function(response) {
-        if (response.entities) {
-          this.resetEntityPointer();
-          var count = response.entities.length;
-          for (var i=0;i<count;i++) {
-            var uuid = response.entities[i].uuid;
-            if (uuid) {
-              var entity = new Usergrid.Entity(self.getPath(), uuid);
-              //store the data in the entity
-              var data = response.entities[i] || {};
-              delete data.uuid; //remove uuid from the object
-              entity.set(data);
-              //store the new entity in this collection
-              self.addEntity(entity);
-            }
-          }
-          if (typeof(successCallback) === "function"){
-            successCallback(response);
-          }
-        } else {
-          if (typeof(errorCallback) === "function"){
-              errorCallback(response);
-          }
-        }
-      },
-      function(response) {
-        if (typeof(errorCallback) === "function"){
-            errorCallback(response);
-        }
-      }
-    );
-    Usergrid.ApiClient.runAppQuery(this);
-  }
-
-  /**
-   *  A method to save all items currently stored in the collection object
-   *  caveat with this method: we can't update anything except the items
-   *  currently stored in the collection.
-   *
-   *  @method save
-   *  @param {function} successCallback
-   *  @param {function} errorCallback
-   *  @return none
-   */
-  Usergrid.Collection.prototype.save = function (successCallback, errorCallback){
-    //loop across all entities and save each one
-    var entities = this.getEntityList();
-    var count = entities.length;
-    var jsonObj = [];
-    for (var i=0;i<count;i++) {
-      entity = entities[i];
-      data = entity.get();
-      if (entity.get('uuid')) {
-        data.uuid = entity.get('uuid');
-        jsonObj.push(data);
-      }
-      entity.save();
-    }
-    this.setAllQueryParams('PUT', this.getPath(), jsonObj, null,successCallback, errorCallback);
-    Usergrid.ApiClient.runAppQuery(this);
-  }
-})(Usergrid);
-
-
-/*
- *  Usergrid.ApiClient
- *
- *  A Singleton that is the main client for making calls to the API. Maintains
- *  state between calls for the following items:
- *
- *  Token
- *  User (username, email, name, uuid)
- *
- *  Main methods for making calls to the API are:
- *
- *  runAppQuery (Query)
- *  runManagementQuery(Query)
- *
- *  Create a new Usergrid.Query object and then pass it to either of these
- *  two methods for making calls directly to the API.
- *
- *  A method for logging in an app user (to get a OAuth token) also exists:
- *
- *  logInAppUser (username, password, successCallback, failureCallback)
- *
- *  @class Usergrid.ApiClient
- *  @author Rod Simpson (rod@apigee.com)
- *
- */
-Usergrid.M = 'ManagementQuery';
-Usergrid.A = 'ApplicationQuery';
-Usergrid.ApiClient = (function () {
-  //API endpoint
-  var _apiUrl = "https://api.usergrid.com/";
-  var _orgName = null;
-  var _appName = null;
-  var _token = null;
-  var _callTimeout = 30000;
-  var _queryType = null;
-  var _loggedInUser = null;
-  var _logoutCallback = null;
-  var _callTimeoutCallback = null;
-
-
-  /*
-   *  A method to set up the ApiClient with orgname and appname
-   *
-   *  @method init
-   *  @public
-   *  @param {string} orgName
-   *  @param {string} appName
-   *  @return none
-   *
-   */
-  function init(orgName, appName){
-    this.setOrganizationName(orgName);
-    this.setApplicationName(appName);
-  }
-
-  /*
-  *  Public method to run calls against the app endpoint
-  *
-  *  @method runAppQuery
-  *  @public
-  *  @params {object} Usergrid.Query - {method, path, jsonObj, params, successCallback, failureCallback}
-  *  @return none
-  */
-  function runAppQuery (Query) {
-    var endpoint = "/" + this.getOrganizationName() + "/" + this.getApplicationName() + "/";
-    setQueryType(Usergrid.A);
-    run(Query, endpoint);
-  }
-
-  /*
-  *  Public method to run calls against the management endpoint
-  *
-  *  @method runManagementQuery
-  *  @public
-  *  @params {object} Usergrid.Query - {method, path, jsonObj, params, successCallback, failureCallback}
-  *  @return none
-  */
-  function runManagementQuery (Query) {
-    var endpoint = "/management/";
-    setQueryType(Usergrid.M);
-    run(Query, endpoint)
-  }
-
-  /*
-    *  A public method to get the organization name to be used by the client
-    *
-    *  @method getOrganizationName
-    *  @public
-    *  @return {string} the organization name
-    */
-  function getOrganizationName() {
-    return _orgName;
-  }
-
-  /*
-    *  A public method to set the organization name to be used by the client
-    *
-    *  @method setOrganizationName
-    *  @param orgName - the organization name
-    *  @return none
-    */
-  function setOrganizationName(orgName) {
-    _orgName = orgName;
-  }
-
-  /*
-  *  A public method to get the application name to be used by the client
-  *
-  *  @method getApplicationName
-  *  @public
-  *  @return {string} the application name
-  */
-  function getApplicationName() {
-    return _appName;
-  }
-
-  /*
-  *  A public method to set the application name to be used by the client
-  *
-  *  @method setApplicationName
-  *  @public
-  *  @param appName - the application name
-  *  @return none
-  */
-  function setApplicationName(appName) {
-    _appName = appName;
-  }
-
-  /*
-  *  A public method to get current OAuth token
-  *
-  *  @method getToken
-  *  @public
-  *  @return {string} the current token
-  */
-  function getToken() {
-    return _token;
-  }
-
-  /*
-  *  A public method to set the current Oauth token
-  *
-  *  @method setToken
-  *  @public
-  *  @param token - the bearer token
-  *  @return none
-  */
-  function setToken(token) {
-    _token = token;
-  }
-
-  /*
-   *  A public method to return the API URL
-   *
-   *  @method getApiUrl
-   *  @public
-   *  @return {string} the API url
-   */
-  function getApiUrl() {
-    return _apiUrl;
-  }
-
-  /*
-   *  A public method to overide the API url
-   *
-   *  @method setApiUrl
-   *  @public
-   *  @return none
-   */
-  function setApiUrl(apiUrl) {
-    _apiUrl = apiUrl;
-  }
-
-  /*
-   *  A public method to return the call timeout amount
-   *
-   *  @method getCallTimeout
-   *  @public
-   *  @return {string} the timeout value (an integer) 30000 = 30 seconds
-   */
-  function getCallTimeout() {
-    return _callTimeout;
-  }
-
-  /*
-   *  A public method to override the call timeout amount
-   *
-   *  @method setCallTimeout
-   *  @public
-   *  @return none
-   */
-  function setCallTimeout(callTimeout) {
-    _callTimeout = callTimeout;
-  }
-
-  /*
-   * Returns the call timeout callback function
-   *
-   * @public
-   * @method setCallTimeoutCallback
-   * @return none
-   */
-  function setCallTimeoutCallback(callback) {
-    _callTimeoutCallback = callback;
-  }
-
-  /*
-   * Returns the call timeout callback function
-   *
-   * @public
-   * @method getCallTimeoutCallback
-   * @return {function} Returns the callTimeoutCallback
-   */
-  function getCallTimeoutCallback() {
-    return _callTimeoutCallback;
-  }
-
-  /*
-   * Calls the call timeout callback function
-   *
-   * @public
-   * @method callTimeoutCallback
-   * @return {boolean} Returns true or false based on if there was a callback to call
-   */
-  function callTimeoutCallback(response) {
-    if (_callTimeoutCallback && typeof(_callTimeoutCallback) === "function") {
-      _callTimeoutCallback(response);
-      return true;
-    } else {
-      return false;
-    }
-  }
-
-  /*
-   *  A public method to get the api url of the reset pasword endpoint
-   *
-   *  @method getResetPasswordUrl
-   *  @public
-   *  @return {string} the api rul of the reset password endpoint
-   */
-  function getResetPasswordUrl() {
-    return getApiUrl() + "management/users/resetpw"
-  }
-
-  /*
-   *  A public method to get an Entity object for the current logged in user
-   *
-   *  @method getLoggedInUser
-   *  @public
-   *  @return {object} user - Entity object of type user
-   */
-  function getLoggedInUser() {
-    return this._loggedInUser;
-  }
-
-  /*
-   *  A public method to set an Entity object for the current logged in user
-   *
-   *  @method setLoggedInUser
-   *  @public
-   *  @param {object} user - Entity object of type user
-   *  @return none
-   */
-  function setLoggedInUser(user) {
-    this._loggedInUser = user;
-  }
-
-  /*
-  *  A public method to log in an app user - stores the token for later use
-  *
-  *  @method logInAppUser
-  *  @public
-  *  @params {string} username
-  *  @params {string} password
-  *  @params {function} successCallback
-  *  @params {function} failureCallback
-  *  @return {response} callback functions return API response object
-  */
-  function logInAppUser (username, password, successCallback, failureCallback) {
-    var self = this;
-    var data = {"username": username, "password": password, "grant_type": "password"};
-    this.runAppQuery(new Usergrid.Query('POST', 'token', data, null,
-      function (response) {
-        var user = new Usergrid.Entity('users');
-        user.set('username', response.user.username);
-        user.set('name', response.user.name);
-        user.set('email', response.user.email);
-        user.set('uuid', response.user.uuid);
-        self.setLoggedInUser(user);
-        self.setToken(response.access_token);
-        if (successCallback && typeof(successCallback) === "function") {
-          successCallback(response);
-        }
-      },
-      function (response) {
-        if (failureCallback && typeof(failureCallback) === "function") {
-          failureCallback(response);
-        }
-      }
-     ));
-  }
-
-  /*
-   *  TODO:  NOT IMPLEMENTED YET - A method to renew an app user's token
-   *  Note: waiting for API implementation
-   *  @method renewAppUserToken
-   *  @public
-   *  @return none
-   */
-  function renewAppUserToken() {
-
-  }
-
-  /**
-   *  A public method to log out an app user - clears all user fields from client
-   *
-   *  @method logoutAppUser
-   *  @public
-   *  @return none
-   */
-  function logoutAppUser() {
-    this.setLoggedInUser(null);
-    this.setToken(null);
-  }
-
-  /**
-   *  A public method to test if a user is logged in - does not guarantee that the token is still valid,
-   *  but rather that one exists, and that there is a valid UUID
-   *
-   *  @method isLoggedInAppUser
-   *  @public
-   *  @params {object} Usergrid.Query - {method, path, jsonObj, params, successCallback, failureCallback}
-   *  @return {boolean} Returns true the user is logged in (has token and uuid), false if not
-   */
-  function isLoggedInAppUser() {
-    var user = this.getLoggedInUser();
-    return (this.getToken() && Usergrid.validation.isUUID(user.get('uuid')));
-  }
-
-   /*
-   *  A public method to get the logout callback, which is called
-   *
-   *  when the token is found to be invalid
-   *  @method getLogoutCallback
-   *  @public
-   *  @return {string} the api rul of the reset password endpoint
-   */
-  function getLogoutCallback() {
-    return _logoutCallback;
-  }
-
-  /*
-   *  A public method to set the logout callback, which is called
-   *
-   *  when the token is found to be invalid
-   *  @method setLogoutCallback
-   *  @public
-   *  @param {function} logoutCallback
-   *  @return none
-   */
-  function setLogoutCallback(logoutCallback) {
-    _logoutCallback = logoutCallback;
-  }
-
-  /*
-   *  A public method to call the logout callback, which is called
-   *
-   *  when the token is found to be invalid
-   *  @method callLogoutCallback
-   *  @public
-   *  @return none
-   */
-  function callLogoutCallback() {
-    if (_logoutCallback && typeof(_logoutCallback ) === "function") {
-      _logoutCallback();
-      return true;
-    } else {
-      return false;
-    }
-  }
-
-  /**
-   *  Private helper method to encode the query string parameters
-   *
-   *  @method encodeParams
-   *  @public
-   *  @params {object} params - an object of name value pairs that will be urlencoded
-   *  @return {string} Returns the encoded string
-   */
-  function encodeParams (params) {
-    tail = [];
-    var item = [];
-    if (params instanceof Array) {
-      for (i in params) {
-        item = params[i];
-        if ((item instanceof Array) && (item.length > 1)) {
-          tail.push(item[0] + "=" + encodeURIComponent(item[1]));
-        }
-      }
-    } else {
-      for (var key in params) {
-        if (params.hasOwnProperty(key)) {
-          var value = params[key];
-          if (value instanceof Array) {
-            for (i in value) {
-              item = value[i];
-              tail.push(key + "=" + encodeURIComponent(item));
-            }
-          } else {
-            tail.push(key + "=" + encodeURIComponent(value));
-          }
-        }
-      }
-    }
-    return tail.join("&");
-  }
-
-  /*
-   *  A private method to get the type of the current api call - (Management or Application)
-   *
-   *  @method getQueryType
-   *  @private
-   *  @return {string} the call type
-   */
-  function getQueryType() {
-    return _queryType;
-  }
-  /*
-   *  A private method to set the type of the current api call - (Management or Application)
-   *
-   *  @method setQueryType
-   *  @private
-   *  @param {string} call type
-   *  @return none
-   */
-  function setQueryType(type) {
-    _queryType = type;
-  }
-
-  /**
-   *  A private method to validate, prepare,, and make the calls to the API
-   *  Use runAppQuery or runManagementQuery to make your calls!
-   *
-   *  @method run
-   *  @private
-   *  @params {object} Usergrid.Query - {method, path, jsonObj, params, successCallback, failureCallback}
-   *  @params {string} endpoint - used to differentiate between management and app queries
-   *  @return {response} callback functions return API response object
-   */
-  function run (Query, endpoint) {
-    var curl = "curl";
-    //validate parameters
-    try {
-      //verify that the query object is valid
-      if(!(Query instanceof Usergrid.Query)) {
-        throw(new Error('Query is not a valid object.'));
-      }
-      //for timing, call start
-      Query.setQueryStartTime();
-      //peel the data out of the query object
-      var method = Query.getMethod().toUpperCase();
-      var path = Query.getResource();
-      var jsonObj = Query.getJsonObj() || {};
-      var params = Query.getQueryParams() || {};
-
-      var formData = Query.getJsonObj();
-
-      //method - should be GET, POST, PUT, or DELETE only
-      if (method != 'GET' && method != 'POST' && method != 'PUT' && method != 'DELETE') {
-        throw(new Error('Invalid method - should be GET, POST, PUT, or DELETE.'));
-      }
-      //curl - add the method to the command (no need to add anything for GET)
-      if (method == "POST") {curl += " -X POST"; }
-      else if (method == "PUT") { curl += " -X PUT"; }
-      else if (method == "DELETE") { curl += " -X DELETE"; }
-      else { curl += " -X GET"; }
-
-      //curl - append the bearer token if this is not the sandbox app
-      var application_name = Usergrid.ApiClient.getApplicationName();
-      if (application_name) {
-        application_name = application_name.toUpperCase();
-      }
-      //if (application_name != 'SANDBOX' && Usergrid.ApiClient.getToken()) {
-      if ( Usergrid.ApiClient.getToken() ) { // || (getQueryType() == Usergrid.M && Usergrid.ApiClient.getToken())) {
-        curl += ' -i -H "Authorization: Bearer ' + Usergrid.ApiClient.getToken() + '"';
-        Query.setToken(true);
-      }
-
-      //params - make sure we have a valid json object
-      _params = JSON.stringify(params);
-      if (!JSON.parse(_params)) {
-        throw(new Error('Params object is not valid.'));
-      }
-
-      //add in the cursor if one is available
-      if (Query.getCursor()) {
-        params.cursor = Query.getCursor();
-      } else {
-        delete params.cursor;
-      }
-
-      //strip off the leading slash of the endpoint if there is one
-      endpoint = endpoint.indexOf('/') == 0 ? endpoint.substring(1) : endpoint;
-
-      //add the endpoint to the path
-      path = endpoint + path;
-
-      //make sure path never has more than one / together
-      if (path) {
-        //regex to strip multiple slashes
-        while(path.indexOf('//') != -1){
-          path = path.replace('//', '/');
-        }
-      }
-
-      //add the http:// bit on the front
-      path = Usergrid.ApiClient.getApiUrl() + path;
-
-      //curl - append the path
-      curl += ' "' + path;
-
-      //curl - append params to the path for curl prior to adding the timestamp
-      var curl_encoded_params = encodeParams(params);
-      if (curl_encoded_params) {
-        curl += "?" + curl_encoded_params;
-      }
-      curl += '"';
-
-      //add in a timestamp for gets and deletes - to avoid caching by the browser
-      if ((method == "GET") || (method == "DELETE")) {
-        params['_'] = new Date().getTime();
-      }
-
-      if (Usergrid.ApiClient.getToken() && Query.getToken()) {
-        params['access_token'] = Usergrid.ApiClient.getToken();
-      }
-
-      //append params to the path
-      var encoded_params = encodeParams(params);
-      if (encoded_params) {
-        path += "?" + encoded_params;
-      }
-
-      //jsonObj - make sure we have a valid json object
-      jsonObj = JSON.stringify(jsonObj)
-      if (!JSON.parse(jsonObj)) {
-        throw(new Error('JSON object is not valid.'));
-      }
-      if (jsonObj == '{}') {
-        jsonObj = null;
-      } else {
-        //curl - add in the json obj
-        curl += " -d '" + jsonObj + "'";
-      }
-
-    } catch (e) {
-      //parameter was invalid
-      console.log('error occured running query -' + e.message);
-      return false;
-    }
-    //log the curl command to the console
-    console.log(curl);
-    //store the curl command back in the object
-    Query.setCurl(curl);
-
-    var filePost = Query.getFilePost();
-    
-    //so far so good, so run the query
-    var xD = window.XDomainRequest ? true : false;
-    var xhr = getXHR(method, path, jsonObj, filePost);
-
-    // Handle response.
-    /*
-    xhr.onerror = function() {
-      //for timing, call end
-      Query.setQueryEndTime();
-      //for timing, log the total call time
-      console.log(Query.getQueryTotalTime());
-      //network error
-      clearTimeout(timeout);
-      console.log('API call failed at the network level.');
-      //send back an error (best we can do with what ie gives back)
-      Query.callFailureCallback(response.innerText);
-    };*/
-    xhr.xdomainOnload = function (response) {
-      //for timing, call end
-      Query.setQueryEndTime();
-      //for timing, log the total call time
-      console.log('Call timing: ' + Query.getQueryTotalTime());
-      //call completed
-      clearTimeout(timeout);
-      //decode the response
-      response = JSON.parse(xhr.responseText);
-      //if a cursor was present, grab it
-      try {
-        var cursor = response.cursor || null;
-        Query.saveCursor(cursor);
-      }catch(e) {}
-      Query.callSuccessCallback(response);
-    };
-    xhr.onload = function(response) {
-      //for timing, call end
-      Query.setQueryEndTime();
-      //for timing, log the total call time
-      console.log('Call timing: ' + Query.getQueryTotalTime());
-      //call completed
-      clearTimeout(timeout);
-      //decode the response
-      response = JSON.parse(xhr.responseText);
-      if (xhr.status != 200 && !xD)   {
-        //there was an api error
-        try {
-          var error = response.error;
-          console.log('API call failed: (status: '+xhr.status+') ' + response.error_description);
-          if ( (error == "auth_expired_session_token") ||
-               (error == "auth_missing_credentials")   ||
-               (error == "auth_unverified_oath")       ||
-               (error == "expired_token")              ||
-               (error == "unauthorized")               ||
-               (error == "auth_invalid")) {
-            //this error type means the user is not authorized. If a logout function is defined, call it
-            console.log('Auth error: ' + error);
-            callLogoutCallback();
-          }
-        } catch(e){}
-        //otherwise, just call the failure callback
-        Query.callFailureCallback(response.error);
-        return;
-      } else {
-        //query completed succesfully, so store cursor
-        var cursor = response.cursor || null;
-        Query.saveCursor(cursor);
-        //then call the original callback
-        Query.callSuccessCallback(response);
-     }
-    };
-
-    var timeout = setTimeout(
-      function() {
-        xhr.abort();
-        if ( typeof(Usergrid.ApiClient.getCallTimeoutCallback()) === 'function') {
-          Usergrid.ApiClient.callTimeoutCallback('API CALL TIMEOUT');
-        } else if (typeof(Query.getFailureCallback()) === 'function'){
-          Query.callFailureCallback('API CALL TIMEOUT');
-        }
-      },
-      Usergrid.ApiClient.getCallTimeout()); //set for 30 seconds
-
-
-    if (filePost) {
-      xhr.send(formData);
-    } else {
-      xhr.send(jsonObj);
-    }
-  }
-
-   /**
-   *  A private method to return the XHR object
-   *
-   *  @method getXHR
-   *  @private
-   *  @params {string} method (GET,POST,PUT,DELETE)
-   *  @params {string} path - api endpoint to call
-   *  @return {object} jsonObj - the json object if there is one
-   */
-  function getXHR(method, path, jsonObj, filePost) {
-    var xhr;
-    if(window.XDomainRequest)
-    {
-      xhr = new window.XDomainRequest();
-      if (Usergrid.ApiClient.getToken()) {
-        if (path.indexOf("?")) {
-          path += '&access_token='+Usergrid.ApiClient.getToken();
-        } else {
-          path = '?access_token='+Usergrid.ApiClient.getToken();
-        }
-      }
-      xhr.open(method, path, true);
-    }
-    else
-    {
-      xhr = new XMLHttpRequest();
-      xhr.open(method, path, true);
-      //add content type = json if there is a json payload
-      if (!filePost) {
-        xhr.setRequestHeader("Content-Type", "application/json");
-        xhr.setRequestHeader("Accept", "application/json");
-      }
-      /*
-      if (Usergrid.ApiClient.getToken()) {
-        xhr.setRequestHeader("Authorization", "Bearer " + Usergrid.ApiClient.getToken());
-        xhr.withCredentials = true;
-      }*/
-    }
-    return xhr;
-  }
-
-  return {
-    init:init,
-    runAppQuery:runAppQuery,
-    runManagementQuery:runManagementQuery,
-    getOrganizationName:getOrganizationName,
-    setOrganizationName:setOrganizationName,
-    getApplicationName:getApplicationName,
-    setApplicationName:setApplicationName,
-    getToken:getToken,
-    setToken:setToken,
-    getCallTimeout:getCallTimeout,
-    setCallTimeout:setCallTimeout,
-    getCallTimeoutCallback:getCallTimeoutCallback,
-    setCallTimeoutCallback:setCallTimeoutCallback,
-    callTimeoutCallback:callTimeoutCallback,
-    getApiUrl:getApiUrl,
-    setApiUrl:setApiUrl,
-    getResetPasswordUrl:getResetPasswordUrl,
-    getLoggedInUser:getLoggedInUser,
-    setLoggedInUser:setLoggedInUser,
-    logInAppUser:logInAppUser,
-    renewAppUserToken:renewAppUserToken,
-    logoutAppUser:logoutAppUser,
-    isLoggedInAppUser:isLoggedInAppUser,
-    getLogoutCallback:getLogoutCallback,
-    setLogoutCallback:setLogoutCallback,
-    callLogoutCallback:callLogoutCallback
-  }
-})();
-
-/**
- * validation is a Singleton that provides methods for validating common field types
- *
- * @class Usergrid.validation
- * @author Rod Simpson (rod@apigee.com)
-**/
-Usergrid.validation = (function () {
-
-  var usernameRegex = new RegExp("^([0-9a-zA-Z\.\-])+$");
-  var nameRegex     = new RegExp("^([0-9a-zA-Z@#$%^&!?;:.,'\"~*-=+_\[\\](){}/\\ |])+$");
-  var emailRegex    = new RegExp("^(([0-9a-zA-Z]+[_\+.-]?)+@[0-9a-zA-Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+$");
-  var passwordRegex = new RegExp("^([0-9a-zA-Z@#$%^&!?<>;:.,'\"~*-=+_\[\\](){}/\\ |])+$");
-  var pathRegex     = new RegExp("^([0-9a-z./-])+$");
-  var titleRegex    = new RegExp("^([0-9a-zA-Z.!-?/])+$");
-
-  /**
-    * Tests the string against the allowed chars regex
-    *
-    * @public
-    * @method validateUsername
-    * @param {string} username - The string to test
-    * @param {function} failureCallback - (optional), the function to call on a failure
-    * @return {boolean} Returns true if string passes regex, false if not
-    */
-  function validateUsername(username, failureCallback) {
-    if (usernameRegex.test(username) && checkLength(username, 4, 80)) {
-      return true;
-    } else {
-      if (failureCallback && typeof(failureCallback) === "function") {
-        failureCallback(this.getUsernameAllowedChars());
-      }
-      return false;
-    }
-  }
-
-  /**
-    * Returns the regex of allowed chars
-    *
-    * @public
-    * @method getUsernameAllowedChars
-    * @return {string} Returns a string with the allowed chars
-    */
-  function getUsernameAllowedChars(){
-    return 'Length: min 4, max 80. Allowed: A-Z, a-z, 0-9, dot, and dash';
-  }
-
-  /**
-    * Tests the string against the allowed chars regex
-    *
-    * @public
-    * @method validateName
-    * @param {string} name - The string to test
-    * @param {function} failureCallback - (optional), the function to call on a failure
-    * @return {boolean} Returns true if string passes regex, false if not
-    */
-  function validateName(name, failureCallback) {
-    if (nameRegex.test(name) && checkLength(name, 4, 16)) {
-      return true;
-    } else {
-      if (failureCallback && typeof(failureCallback) === "function") {
-        failureCallback(this.getNameAllowedChars());
-      }
-      return false;
-    }
-  }
-
-  /**
-    * Returns the regex of allowed chars
-    *
-    * @public
-    * @method getNameAllowedChars
-    * @return {string} Returns a string with the allowed chars
-    */
-  function getNameAllowedChars(){
-    return 'Length: min 4, max 80. Allowed: A-Z, a-z, 0-9, ~ @ # % ^ & * ( ) - _ = + [ ] { } \\ | ; : \' " , . / ? !';
-  }
-
-  /**
-    * Tests the string against the allowed chars regex
-    *
-    * @public
-    * @method validatePassword
-    * @param {string} password - The string to test
-    * @param {function} failureCallback - (optional), the function to call on a failure
-    * @return {boolean} Returns true if string passes regex, false if not
-    */
-  function validatePassword(password, failureCallback) {
-    if (passwordRegex.test(password) && checkLength(password, 5, 16)) {
-      return true;
-    } else {
-      if (failureCallback && typeof(failureCallback) === "function") {
-        failureCallback(this.getPasswordAllowedChars());
-      }
-      return false;
-    }
-  }
-
-  /**
-    * Returns the regex of allowed chars
-    *
-    * @public
-    * @method getPasswordAllowedChars
-    * @return {string} Returns a string with the allowed chars
-    */
-  function getPasswordAllowedChars(){
-    return 'Length: min 5, max 16. Allowed: A-Z, a-z, 0-9, ~ @ # % ^ & * ( ) - _ = + [ ] { } \\ | ; : \' " , . < > / ? !';
-  }
-
-  /**
-    * Tests the string against the allowed chars regex
-    *
-    * @public
-    * @method validateEmail
-    * @param {string} email - The string to test
-    * @param {function} failureCallback - (optional), the function to call on a failure
-    * @return {boolean} Returns true if string passes regex, false if not
-    */
-  function validateEmail(email, failureCallback) {
-    if (emailRegex.test(email) && checkLength(email, 4, 80)) {
-      return true;
-    } else {
-      if (failureCallback && typeof(failureCallback) === "function") {
-        failureCallback(this.getEmailAllowedChars());
-      }
-      return false;
-    }
-  }
-
-  /**
-    * Returns the regex of allowed chars
-    *
-    * @public
-    * @method getEmailAllowedChars
-    * @return {string} Returns a string with the allowed chars
-    */
-  function getEmailAllowedChars(){
-    return 'Email must be in standard form: e.g. example@Usergrid.com';
-  }
-
-  /**
-    * Tests the string against the allowed chars regex
-    *
-    * @public
-    * @method validatePath
-    * @param {string} path - The string to test
-    * @param {function} failureCallback - (optional), the function to call on a failure
-    * @return {boolean} Returns true if string passes regex, false if not
-    */
-  function validatePath(path, failureCallback) {
-    if (pathRegex.test(path) && checkLength(path, 4, 80)) {
-      return true;
-    } else {
-      if (failureCallback && typeof(failureCallback) === "function") {
-        failureCallback(this.getPathAllowedChars());
-      }
-      return false;
-    }
-  }
-
-  /**
-    * Returns the regex of allowed chars
-    *
-    * @public
-    * @method getPathAllowedChars
-    * @return {string} Returns a string with the allowed chars
-    */
-  function getPathAllowedChars(){
-    return 'Length: min 4, max 80. Allowed: /, a-z, 0-9, dot, and dash';
-  }
-
-  /**
-    * Tests the string against the allowed chars regex
-    *
-    * @public
-    * @method validateTitle
-    * @param {string} title - The string to test
-    * @param {function} failureCallback - (optional), the function to call on a failure
-    * @return {boolean} Returns true if string passes regex, false if not
-    */
-  function validateTitle(title, failureCallback) {
-    if (titleRegex.test(title) && checkLength(title, 4, 80)) {
-      return true;
-    } else {
-      if (failureCallback && typeof(failureCallback) === "function") {
-        failureCallback(this.getTitleAllowedChars());
-      }
-      return false;
-    }
-  }
-
-  /**
-    * Returns the regex of allowed chars
-    *
-    * @public
-    * @method getTitleAllowedChars
-    * @return {string} Returns a string with the allowed chars
-    */
-  function getTitleAllowedChars(){
-    return 'Length: min 4, max 80. Allowed: space, A-Z, a-z, 0-9, dot, dash, /, !, and ?';
-  }
-
-  /**
-    * Tests if the string is the correct length
-    *
-    * @public
-    * @method checkLength
-    * @param {string} string - The string to test
-    * @param {integer} min - the lower bound
-    * @param {integer} max - the upper bound
-    * @return {boolean} Returns true if string is correct length, false if not
-    */
-  function checkLength(string, min, max) {
-    if (string.length > max || string.length < min) {
-      return false;
-    }
-    return true;
-  }
-
-  /**
-    * Tests if the string is a uuid
-    *
-    * @public
-    * @method isUUID
-    * @param {string} uuid The string to test
-    * @returns {Boolean} true if string is uuid
-    */
-  function isUUID (uuid) {
-    var uuidValueRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;
-    if (!uuid) return false;
-    return uuidValueRegex.test(uuid);
-  }
-
-  return {
-    validateUsername:validateUsername,
-    getUsernameAllowedChars:getUsernameAllowedChars,
-    validateName:validateName,
-    getNameAllowedChars:getNameAllowedChars,
-    validatePassword:validatePassword,
-    getPasswordAllowedChars:getPasswordAllowedChars,
-    validateEmail:validateEmail,
-    getEmailAllowedChars:getEmailAllowedChars,
-    validatePath:validatePath,
-    getPathAllowedChars:getPathAllowedChars,
-    validateTitle:validateTitle,
-    getTitleAllowedChars:getTitleAllowedChars,
-    isUUID:isUUID
-  }
-})();


[07/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.role.users.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.role.users.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.role.users.html
deleted file mode 100644
index 8c21416..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.role.users.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<div class="well thingy">
-  <span id="role-section-title" class="title">Users</span>
-  <div class="bar">
-    <a class="btn" data-toggle="modal" href="#" onclick="Usergrid.console.deleteRoleFromUser('${data.roleName}', '${data.roleTitle}'); return false;"> Remove </a>
-    <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-add-role-to-user"> Add </a>
-  </div>
-</div>
-{{if data.users.length > 0}}
-<table class="table" style="margin-top: 30px;">
-  <tbody>
-    <tr class="zebraRows users-row">
-      <td class="checkboxo">
-        <input type="checkbox" onclick="Usergrid.console.selectAllEntities(this);" />
-      </td>
-      <td class="user-details bold-header"></td>
-      <td class="user-details bold-header">
-        Username
-      </td>
-      <td class="user-details bold-header">
-        Name
-      </td>
-    </tr>
-    {{each data.users}}
-    <tr class="zebraRows users-row">
-      <td class="checkboxo"><input type="checkbox" name="${name}" class="listItem" value="${uuid}" /></td>
-      <td class="gravatar50-td"><img src="{{if picture}}${picture}{{else}}http://${window.location.host + window.location.pathname}images/user-photo.png{{/if}}" class="gravatar50" /></td>
-      <td class="details">
-        <a href="" onclick="Usergrid.console.pageOpenUserProfile('${username}'); return false;">${username}</a>
-      </td>
-      <td class="details">{{if name}}${name}{{/if}}</td>
-    </tr>
-    {{/each}}
-  </tbody>
-</table>
-{{else}}
-<div class="panel-section-message">No Users have this Role</div>
-{{/if}}
-

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.user.activities.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.user.activities.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.user.activities.html
deleted file mode 100644
index cc309aa..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.user.activities.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<div class="console-section">
-  <div class="well thingy">
-    {{if picture}}<img src="${picture}" class="user-profile-picture" />{{/if}}
-    <div class="title">
-      {{if path}}<a href="" onclick="Usergrid.console.pageOpenQueryExplorer('${path}'); return false;">{{/if}}
-        ${name}
-        {{if path}}</a>{{/if}}
-    </div>
-  </div>
-  {{if activities}}
-  <table class="activities-table table">
-    {{each activities}}
-    <tr class="">
-      <td>
-        <a href="#" class="toggleableSP">${dateToString($value.created)}</a>
-        <a href="#" class="toggleableSP hide">${$value.created}</a>
-      </td>
-      <td>
-        ${$value.content}
-      </td>
-      <td>
-        {{if $value.actor.username}}
-        <a href="#"
-           onclick="Usergrid.console.pageOpenUserProfile('${$value.actor.username}'); return false;">${$value.actor.displayName} {{if $value.actor.email}} (${$value.actor.email}) {{/if}}</a>
-        {{else}}
-        ${$value.actor.displayName} {{if $value.actor.email}} (${$value.actor.email}) {{/if}}
-        {{/if}}
-      </td>
-      <td>
-        ${$value.verb}
-      </td>
-    </tr>
-    {{/each}}
-  </table>
-  {{else}}
-  <div class="panel-section-message">No User Activities</div>
-  {{/if}}
-</div>
-<div id="user-panel-activities-curl-container" class="curl-container">
-</div>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.user.graph.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.user.graph.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.user.graph.html
deleted file mode 100644
index 4c55f9b..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.user.graph.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<div class="console-section">
-  <div class="well thingy">
-    {{if picture}}<img src="${picture}" class="user-profile-picture" />{{/if}}
-    <div class="title">
-      {{if path}}<a href="" onclick="Usergrid.console.pageOpenQueryExplorer('${path}'); return false;">{{/if}}${name}{{if path}}</a>{{/if}}
-    </div>
-    <div class="bar">
-      <a class="btn btn-primary" data-toggle="modal" href="#dialog-form-follow-user">Follow User</a>
-      <input type="hidden" value="${username}" id="search-follow-username" name="search-follow-userid">
-    </div>
-  </div>
-
-  <div class="console-section-contents">
-    <div class="user-roles-title">Following </div>
-    <div class="user-panel-section">
-      {{if following}}
-      {{if following.length > 0}}
-      <div class="query-result-row entity_list_item" id="users-roles-following-table">
-        <table class="table table-bordered">
-          <tbody>
-            {{each following}}
-            <tr class="zebraRows">
-              <td class="query-result-td-header-name">
-                <div class="query-result-header-name query-result-picture-vert-offset">
-                  {{if path}}
-                  <a href="" onclick="Usergrid.console.pageOpenUserProfile('${username}'); return false;">
-                    <span class="user-role-row-name">${username}</span>
-                    <span class="user-role-row-title"><a href="mailto:${email}">${email}</a></span>
-                  </a>
-                  {{/if}}
-                </div>
-              </td>
-            </tr>
-            {{/each}}
-          </tbody>
-        </table>
-      </div>
-      {{/if}}
-      {{else}}
-      <div class="panel-section-message">Not following anyone</div>
-      {{/if}}
-      <br/>
-    </div>
-    <div id="user-panel-following-curl-container" class="curl-container">
-    </div>
-    <br/>
-    <div class="user-roles-title">Followers </div>
-    <div class="user-panel-section">
-      {{if followers}}
-      {{if followers.length > 0}}
-      <div class="query-result-row entity_list_item" id="users-roles-followed-table">
-        <table class="table table-bordered">
-          <tbody>
-            {{each followers}}
-            <tr class="zebraRows">
-              <td class="query-result-td-header-name">
-                <div class="query-result-header-name query-result-picture-vert-offset">
-                  {{if path}}
-                  <a href="" onclick="Usergrid.console.pageOpenUserProfile('${username}'); return false;">
-                    <span class="user-role-row-name">${username}</span>
-                    <span class="user-role-row-title"><a href="mailto:${email}">${email}</a></span>
-                  </a>
-                  {{/if}}
-                </div>
-              </td>
-            </tr>
-            {{/each}}
-          </tbody>
-        </table>
-      </div>
-      {{/if}}
-      {{else}}
-      <div class="panel-section-message">No followers</div>
-      {{/if}}
-      <br/>
-    </div>
-    <div id="user-panel-followers-curl-container" class="curl-container">
-    </div>
-  </div>
-</div>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.user.memberships.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.user.memberships.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.user.memberships.html
deleted file mode 100644
index fa0420a..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.user.memberships.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<div class="console-section">
-  <div class="well thingy">
-    {{if picture}}<img src="${picture}" class="user-profile-picture" />{{/if}}
-    <div class="title">
-      {{if path}}<a href="" onclick="Usergrid.console.pageOpenQueryExplorer('${path}'); return false;">{{/if}}${name}{{if path}}</a>{{/if}}
-    </div>
-    <div class="bar">
-      <a class="btn " data-toggle="modal" onclick="Usergrid.console.removeUserFromGroup('${username}'); return false;">Remove</a>
-      <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-add-group-to-user">Add to a Group</a>
-      <input type="hidden" value="${username}" id="search-group-userid" name="search-group-userid">
-    </div>
-  </div>
-
-  {{if memberships}}
-  <table class="table" style="margin-top: 30px">
-    <tbody>
-      <tr class="zebraRows users-row">
-        <td class="checkboxo">
-          <input type="checkbox" onclick="Usergrid.console.selectAllEntities(this);" />
-        </td>
-        <td class="user-details bold-header">
-          Group Name
-        </td>
-      </tr>
-      {{each memberships}}
-      <tr class="zebraRows users-row">
-        <td class="checkboxo"><input type="checkbox" name="${name}" class="listItem" value="${$value.uuid}" /></td>
-        <td class="details">
-          <a href="#" onclick="Usergrid.console.pageOpenGroupProfile('${$value.path}'); return false;">${$value.path}</a>
-        </td>
-      </tr>
-      {{/each}}
-    </tbody>
-  </table>
-  {{else}}
-  <div class="panel-section-message">no group memberships</div>
-  {{/if}}
-</div>
-<div id="user-panel-memberships-curl-container" class="curl-container">
-</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.user.permissions.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.user.permissions.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.user.permissions.html
deleted file mode 100644
index c69407c..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.user.permissions.html
+++ /dev/null
@@ -1,105 +0,0 @@
-<div class="console-section">
-  <div class="well thingy">
-    {{if picture}}<img src="${picture}" class="user-profile-picture" />{{/if}}
-    <div class="title">
-      {{if path}}<a href="" onclick="Usergrid.console.pageOpenQueryExplorer('${path}'); return false;">{{/if}}
-        ${name}
-      {{if path}}</a>{{/if}}
-    </div>
-    <div class="bar">
-      <a class="btn" data-toggle="modal" href="#" onclick="Usergrid.console.deleteUsersFromRoles('${username}'); return false;"> Remove </a>
-      <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-add-user-to-role"> Add role</a>
-    </div>
-  </div>
-  <div class="console-section-contents">
-    <div class="user-panel-section">
-      <div class="user-roles-title">Roles </div>
-      {{if roles}}
-      {{if roles.length > 0}}
-      <table class="table table-bordered users-permissions-response-table">
-        <tbody>
-          <tr class="zebraRows users-row">
-            <td class="checkboxo">
-              <input type="checkbox" onclick="Usergrid.console.selectAllEntities(this);" />
-            </td>
-            <td class="user-details bold-header">
-              Group Name
-            </td>
-          </tr>
-
-          {{each roles}}
-          <tr class="zebraRows users-row">
-            <td class="checkboxo"><input type="checkbox" name="${title}" class="listItem" value="${name}" /></td>
-            <td class="details">
-              {{if path}}<a href="" onclick="Usergrid.console.pageOpenRole('${name}', '${title}'); return false;">{{/if}}
-                ${title}
-                (${name})
-              {{if path}}</a>{{/if}}
-            </td>
-          </tr>
-          {{/each}}
-        </tbody>
-      </table>
-      {{/if}}
-      {{else}}
-      <div class="panel-section-message">No Roles</div>
-      {{/if}}
-      <br/>
-      <div id="user-panel-roles-curl-container" class="curl-container">
-      </div>
-      <div class="user-roles-title">Permissions </div>
-      <h4>Add Permission Rule</h4>
-      <form id="role-permissions-form" action="" onsubmit="Usergrid.console.addUserPermission('${username}'); return false;" class="well form-inline" autocomplete="off">
-        Path: <input id="user-permission-path-entry-input" type="text" name="path" value="/" />
-        <label class="checkbox">
-          <input id="user-permission-op-get-checkbox" type="checkbox" name="get" value="get"/>
-          get </label>
-        <label class="checkbox">
-          <input id="user-permission-op-post-checkbox" type="checkbox" name="post" value="post"/>
-          post </label>
-        <label class="checkbox">
-          <input id="user-permission-op-put-checkbox" type="checkbox" name="put" value="put"/>
-          put </label>
-        <label class="checkbox">
-          <input id="user-permission-op-delete-checkbox" type="checkbox" name="delete" value="delete"/>
-          delete </label>
-        <button type="submit" class="btn btn-primary"><i class="icon-plus-sign icon-white"></i> Add</button >
-      </form>
-      <br/>
-      <h4>Permission Rules</h4>
-      {{if permissions}}
-      <table id="role-permissions-table" data-permission="${$index}" class="table table-striped table-bordered table-condensed">
-        <thead>
-          <tr>
-            <th>Path</th>
-            <th class="role-permission-op">Get</th>
-            <th class="role-permission-op">Post</th>
-            <th class="role-permission-op">Put</th>
-            <th class="role-permission-op">Delete</th>
-            <th></th>
-          </tr>
-        </thead>
-        <tbody>
-          {{each permissions}}
-          <tr>
-            <td class="role-permission-path">${$value.path}</td>
-            <td class="role-permission-op">{{if $value.ops.get}}<i class="icon-ok"></i>{{/if}}</td>
-            <td class="role-permission-op">{{if $value.ops.post}}<i class="icon-ok"></i>{{/if}}</td>
-            <td class="role-permission-op">{{if $value.ops.put}}<i class="icon-ok"></i>{{/if}}</td>
-            <td class="role-permission-op">{{if $value.ops.delete}}<i class="icon-ok"></i>{{/if}}</td>
-            <td class="role-permission-delete">
-              <a onclick="Usergrid.console.deleteUserPermission('${username}', '${$value.perm}'); return false;" href="#" class="btn btn-danger"><i class="icon-trash icon-white"></i> Remove</a>
-            </td>
-          </tr>
-          {{/each}}
-        </tbody>
-      </table>
-      {{else}}
-      <div class="alert">No Permissions</div>
-      {{/if}}
-      <div id="user-panel-permissions-curl-container" class="curl-container">
-      </div>
-    </div>
-  </div>
-</div>
-<input type="hidden" name="role-form-username" id="role-form-username" value="${$data.entity.username}"/>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.user.profile.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.user.profile.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.user.profile.html
deleted file mode 100644
index 3784e33..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.panels.user.profile.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<div class="alert messages" style="display: none;"></div>
-<div class="console-section">
-  <div class="well thingy">
-    <img src="${picture}" class="gravatar50" />
-    <div class="title">
-      {{if path}}<a href="" onclick="Usergrid.console.pageOpenQueryExplorer('${path}'); return false;">{{/if}}${name}{{if path}}</a>{{/if}}
-    </div>
-    <div class="bar">
-      <a style="margin-right: 15px;" class="btn btn-primary" onclick="Usergrid.console.saveUserProfile('${username}'); return false;">Save User</a>
-    </div>
-  </div>
-  <h3>Edit</h3>
-  <div class="query-result-form"></div>
-  <div class="content-container">
-    <h3>Contents</h3>
-    <table class="table">
-      <tbody>
-        <tr class="zebraRows">
-          <td>UUID</td>
-          <td>${entity.uuid}</td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Type</td>
-          <td>${entity.type}</td>
-        </tr>
-        <tr class="zebraRows">
-          <td>
-            Created
-          </td>
-          <td>
-            <a href="#" class="toggleableSP">${dateToString(entity.created)}</a>
-            <a href="#" class="toggleableSP hide">${entity.created}</a>
-          </td>
-        </tr>
-        <tr class="zebraRows">
-          <td>
-            Modified
-          </td>
-          <td>
-            <a href="#" class="toggleableSP">${dateToString(entity.modified)}</a>
-            <a href="#" class="toggleableSP hide">${entity.modified}</a>
-          </td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Activated</td>
-          <td>${entity.activated}</td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Email</td>
-          <td>${entity.email}</td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Name</td>
-          <td>${entity.name}</td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Picture</td>
-          <td>${entity.picture}</td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Username</td>
-          <td>${entity.username}</td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Path</td>
-          <td><a href="#" onclick="Usergrid.console.pageOpenQueryExplorer('${path}'); return false;">${path}</a></td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Sets</td>
-          <td>
-            <table class="table table-striped">
-              <tbody>
-                {{each metadata.sets}}
-                <tr>
-                  <td>
-                    ${$index}
-                  </td>
-                  <td>
-                    <a href="#" onclick="Usergrid.console.pageOpenQueryExplorer('${$value}'); return false;">${$value}</a>
-                  </td>
-                </tr>
-                {{/each}}
-              <tbody>
-            </table>
-          </td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Collections</td>
-          <td>
-            <table class="table table-striped">
-              <tbody>
-                {{each metadata.collections}}
-                <tr>
-                  <td>
-                    ${$index}
-                  </td>
-                  <td>
-                    <a href="#" onclick="Usergrid.console.pageOpenQueryExplorer('${$value}'); return false;">${$value}</a>
-                  </td>
-                </tr>
-                {{/each}}
-              <tbody>
-            </table>
-          </td>
-        </tr>
-      </tbody>
-    </table>
-    <h3>JSON</h3>
-    <pre class="query-result-json-inner">${JSON.stringify(entity, null, "  ")}</pre>
-  </div>
-</div>
-<div id="user-panel-profile-curl-container" class="curl-container">
-</div>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.role.groups.table_rows.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.role.groups.table_rows.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.role.groups.table_rows.html
deleted file mode 100644
index 9fd867c..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.role.groups.table_rows.html
+++ /dev/null
@@ -1,44 +0,0 @@
-
-<div class="console-section">
-  <div class="well thingy">
-    <span class="title">Groups</span>
-    <div class="bar">
-      <a class="btn" data-toggle="modal" href="#" onclick="Usergrid.console.removeGroupFromRole('${roleName}', '${roleTitle}'); return false;"> Remove </a>
-      <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-add-group-to-role"> Add </a>
-    </div>
-  </div>
-
-
-  {{if entities.length > 0}}
-  <table class="table" style="margin-top: 30px">
-    <tbody>
-      <tr class="zebraRows users-row">
-        <td class="checkboxo">
-          <input type="checkbox" onclick="Usergrid.console.selectAllEntities(this);" />
-        </td>
-        <td class="user-details bold-header">
-          Group Title
-        </td>
-        <td class="user-details bold-header">
-          Group Path
-        </td>
-      </tr>
-      {{each entities}}
-      <tr class="zebraRows users-row">
-        <td class="checkboxo"><input type="checkbox" name="${path}" class="listItem" value="${path}" /></td>
-        <td class="details">
-          <a href="" onclick="Usergrid.console.pageOpenGroupProfile('${path}'); return false;">${title}</a>
-        </td>
-        <td class="details">
-          <a href="" onclick="Usergrid.console.pageOpenGroupProfile('${path}'); return false;">${path}</a>
-        </td>
-      </tr>
-      {{/each}}
-    </tbody>
-  </table>
-  {{else}}
-  <div class="panel-section-message">No Group Memberships</div>
-  {{/if}}
-</div>
-<div id="group-panel-memberships-curl-container" class="curl-container">
-</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.roles.table_rows.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.roles.table_rows.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.roles.table_rows.html
deleted file mode 100644
index 8a227aa..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.roles.table_rows.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-<tr class="zebraRows roles-row">
-  <td class="checkboxo">
-    <input type="checkbox" class="listItem" name="${title}" value="${name}"/>
-  </td>
-  <td class="details">
-    <a href="#" class="list-link" onclick="Usergrid.console.pageOpenRole('${name}', '${title}'); return false;">${title}</a>
-  </td>
-  <td class="details">
-     <a href="#" class="list-link" onclick="Usergrid.console.pageOpenRole('${name}', '${title}'); return false;">${name}</a>
-  </td>
-  <td class="view-details">
-    <a href="" onclick="Usergrid.console.pageOpenRole('${name}', '${title}'); return false;" class="view-details">View Details</a>
-  </td>
-</tr>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.users.table_rows.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.users.table_rows.html b/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.users.table_rows.html
deleted file mode 100644
index 2c62f55..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/apigee.ui.users.table_rows.html
+++ /dev/null
@@ -1,18 +0,0 @@
-
-<tr class="zebraRows users-row">
-  <td class="checkboxo">
-    <input class="listItem" type="checkbox" name="${name}" value="${uuid}" />
-  </td>
-  <td class="gravatar50-td">
-    <a href="" onclick="Usergrid.console.pageOpenUserProfile('${username}'); return false;"><img src="${picture}" class="gravatar50"/></a>
-  </td>
-  <td class="details">
-      <a href="" class="list-link" onclick="Usergrid.console.pageOpenUserProfile('${username}'); return false;">${username}</a>
-  </td>
-  <td class="details">
-     <a href="" class="list-link" onclick="Usergrid.console.pageOpenUserProfile('${username}'); return false;">${name}</a>
-  </td>
-  <td class="view-details">
-    <a href="" onclick="Usergrid.console.pageOpenUserProfile('${username}'); return false;" class="view-details">View Details</a>
-  </td>
-</tr>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/templates/test/modalForm2.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/templates/test/modalForm2.html b/deleted/dist-cov/usergrid-portal/archive/templates/test/modalForm2.html
deleted file mode 100644
index c786ee8..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/templates/test/modalForm2.html
+++ /dev/null
@@ -1,32 +0,0 @@
-Modal-link
-<a class="" data-toggle="modal" href="#dialog-form-new-admin"><i class="icon-plus"></i> New Administrator</a>
-
-Modal-form
-<form id="dialog-form-new-admin" class="modal hide fade">
-    <div class="modal-header">
-        <a class="close" data-dismiss="modal">x</a>
-        <h4>Create new administrator</h4>
-    </div>
-    <div class="modal-body">
-        <p class="validateTips"></p>
-
-        <fieldset>
-            <div class="control-group">
-                <label for="new-admin-email">Email</label>
-                <div class="controls">
-                    <input type="text" name="email" id="new-admin-email" value="" class="input-xlarge"/>
-                    <p class="help-block hide"></p>
-                </div>
-            </div>
-            <div class="control-group">
-                <div class="controls">
-                    <p class="help-block hide"></p>
-                </div>
-            </div>
-        </fieldset>
-    </div>
-    <div class="modal-footer">
-        <input type="submit" class="btn btn-usergrid" value="Create"/>
-        <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-</form>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/test/autocomplete.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/test/autocomplete.html b/deleted/dist-cov/usergrid-portal/archive/test/autocomplete.html
deleted file mode 100644
index c58cbeb..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/test/autocomplete.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-    "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-    <title></title>
-    <link rel="stylesheet" type="text/css" href="../bootstrap/css/bootstrap.min.css"/>
-    <script src="http://code.jquery.com/jquery-1.7.1.min.js" type="text/javascript"></script>
-    <script src="../bootstrap/js/bootstrap-typeahead.js" type="text/javascript"></script>
-    <script src="../bootstrap/js/bootstrap-modal.js" type="text/javascript"></script>
-</head>
-<body>
-
-
-<input type="text" id="campo">
-<script type="text/javascript">
-    $(document).ready(Init);
-    function Init(){
-        var campo = $("#campo");
-        campo.typeahead({source:[]});
-        campo.data('typeahead').source = ["david","oscar","roberto","claudia"];
-    }
-</script>
-
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/test/modalForm.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/test/modalForm.html b/deleted/dist-cov/usergrid-portal/archive/test/modalForm.html
deleted file mode 100644
index c786ee8..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/test/modalForm.html
+++ /dev/null
@@ -1,32 +0,0 @@
-Modal-link
-<a class="" data-toggle="modal" href="#dialog-form-new-admin"><i class="icon-plus"></i> New Administrator</a>
-
-Modal-form
-<form id="dialog-form-new-admin" class="modal hide fade">
-    <div class="modal-header">
-        <a class="close" data-dismiss="modal">x</a>
-        <h4>Create new administrator</h4>
-    </div>
-    <div class="modal-body">
-        <p class="validateTips"></p>
-
-        <fieldset>
-            <div class="control-group">
-                <label for="new-admin-email">Email</label>
-                <div class="controls">
-                    <input type="text" name="email" id="new-admin-email" value="" class="input-xlarge"/>
-                    <p class="help-block hide"></p>
-                </div>
-            </div>
-            <div class="control-group">
-                <div class="controls">
-                    <p class="help-block hide"></p>
-                </div>
-            </div>
-        </fieldset>
-    </div>
-    <div class="modal-footer">
-        <input type="submit" class="btn btn-usergrid" value="Create"/>
-        <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-</form>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/Gruntfile.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/Gruntfile.js b/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/Gruntfile.js
deleted file mode 100644
index 229b043..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/Gruntfile.js
+++ /dev/null
@@ -1,40 +0,0 @@
-module.exports = function(grunt) {
-
-    // Project configuration.
-    grunt.initConfig({
-        pkg: grunt.file.readJSON('package.json'),
-        uglify: {
-            options: {
-                banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
-            },
-            build: {
-                src: 'src/angular-intro.js',
-                dest: 'build/angular-intro.min.js'
-            }
-        },
-        jshint: {
-            lib: {
-                options: {},
-                src: ['lib/*.js']
-            },
-        },
-        watch: {
-            scripts: {
-                files: 'lib/*.js',
-                tasks: ['jshint', 'uglify'],
-                options: {
-                    interrupt: true
-                },
-            },
-            gruntfile: {
-                files: 'Gruntfile.js'
-            }
-        },
-    });
-
-    // Load all grunt tasks
-    require('load-grunt-tasks')(grunt);
-
-    // Default task(s).
-    grunt.registerTask('default', ['jshint', 'uglify']);
-};

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/LICENSE
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/LICENSE b/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/LICENSE
deleted file mode 100644
index b99ad76..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2013 mendhak
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/bower.json
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/bower.json b/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/bower.json
deleted file mode 100644
index c997963..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/bower.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "name": "mendhak/angular-intro.js",
-  "version": "1.0.3",
-  "main": "src/angular-intro.js",
-  "description": "Angular directive to wrap intro.js",
-  "license": "MIT",
-  "ignore": [
-    ".jshintrc",
-    "**/*.txt",
-    "**/*.html",
-    "README.md",
-    "assets"
-  ],
-  "dependencies": {
-    "intro.js": "0.7.1"
-  },
-  "devDependencies": {
-
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/build/angular-intro.min.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/build/angular-intro.min.js b/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/build/angular-intro.min.js
deleted file mode 100644
index 136115b..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/build/angular-intro.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! angular-intro.js 2014-04-01 */
-var ngIntroDirective=angular.module("angular-intro",[]);ngIntroDirective.directive("ngIntroOptions",["$timeout","$parse",function(a,b){return{restrict:"A",link:function(c,d,e){c[e.ngIntroMethod]=function(a){var d;d="string"==typeof a?introJs(a):introJs(),d.setOptions(c.$eval(e.ngIntroOptions)),e.ngIntroOncomplete&&d.oncomplete(b(e.ngIntroOncomplete)(c)),e.ngIntroOnexit&&d.onexit(b(e.ngIntroOnexit)(c)),e.ngIntroOnchange&&d.onchange(b(e.ngIntroOnchange)(c)),e.ngIntroOnbeforechange&&d.onbeforechange(b(e.ngIntroOnbeforechange)(c)),e.ngIntroOnafterchange&&d.onafterchange(b(e.ngIntroOnafterchange)(c)),"number"==typeof a?d.goToStep(a).start():d.start()},"true"==e.ngIntroAutostart&&a(function(){b(e.ngIntroMethod)(c)()})}}}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/example/app.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/example/app.js b/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/example/app.js
deleted file mode 100644
index a152397..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/example/app.js
+++ /dev/null
@@ -1,61 +0,0 @@
-var app = angular.module('myApp', ['angular-intro']);
-
-app.controller('MyController', function ($scope) {
-
-    $scope.CompletedEvent = function () {
-        console.log("Completed Event called");
-    };
-
-    $scope.ExitEvent = function () {
-        console.log("Exit Event called");
-    };
-
-    $scope.ChangeEvent = function () {
-        console.log("Change Event called");
-    };
-
-    $scope.BeforeChangeEvent = function () {
-        console.log("Before Change Event called");
-    };
-
-    $scope.AfterChangeEvent = function () {
-        console.log("After Change Event called");
-    };
-
-    $scope.IntroOptions = {
-        steps:[
-        {
-            element: document.querySelector('#step1'),
-            intro: "This is the first tooltip."
-        },
-        {
-            element: document.querySelectorAll('#step2')[0],
-            intro: "<strong>You</strong> can also <em>include</em> HTML",
-            position: 'right'
-        },
-        {
-            element: '#step3',
-            intro: 'More features, more fun.',
-            position: 'left'
-        },
-        {
-            element: '#step4',
-            intro: "Another step.",
-            position: 'bottom'
-        },
-        {
-            element: '#step5',
-            intro: 'Get it, use it.'
-        }
-        ],
-        showStepNumbers: false,
-        exitOnOverlayClick: true,
-        exitOnEsc:true,
-        nextLabel: '<strong>NEXT!</strong>',
-        prevLabel: '<span style="color:green">Previous</span>',
-        skipLabel: 'Exit',
-        doneLabel: 'Thanks'
-    };
-
-});
-

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/package.json
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/package.json b/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/package.json
deleted file mode 100644
index 714ebf4..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/package.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
-  "name": "angular-intro.js",
-  "version": "0.1.0",
-  "description": "Angular directive to wrap intro.js",
-  "main": "angular-intro.js",
-  "directories": {
-    "example": "example",
-    "lib": "lib"
-  },
-  "scripts": {
-    "test": "grunt test"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/mendhak/angular-intro.js.git"
-  },
-  "keywords": [
-    "angular",
-    "intro.js",
-    "angular-intro"
-  ],
-  "author": "mendhak",
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/mendhak/angular-intro.js/issues"
-  },
-  "homepage": "https://github.com/mendhak/angular-intro.js",
-  "devDependencies": {
-    "grunt": "~0.4.4",
-    "grunt-contrib-jshint": "~0.9.2",
-    "grunt-contrib-uglify": "~0.4.0",
-    "load-grunt-tasks": "~0.4.0",
-    "grunt-contrib-watch": "~0.6.1",
-    "bower": "~1.3.1"
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/src/angular-intro.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/src/angular-intro.js b/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/src/angular-intro.js
deleted file mode 100644
index 5d145ee..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angular-intro.js/src/angular-intro.js
+++ /dev/null
@@ -1,60 +0,0 @@
-var ngIntroDirective = angular.module('angular-intro', []);
-
-/**
- * TODO: Use isolate scope, but requires angular 1.2: http://plnkr.co/edit/a2c14O?p=preview
- * See: http://stackoverflow.com/q/18796023/237209
- */
-
-ngIntroDirective.directive('ngIntroOptions', ['$timeout', '$parse', function ($timeout, $parse) {
-
-    return {
-        restrict: 'A',
-        link: function(scope, element, attrs) {
-
-            scope[attrs.ngIntroMethod] = function(step) {
-
-                var intro;
-
-                if(typeof(step) === 'string') {
-                    intro = introJs(step);
-                } else {
-                    intro = introJs();
-                }
-
-                intro.setOptions(scope.$eval(attrs.ngIntroOptions));
-
-                if(attrs.ngIntroOncomplete) {
-                    intro.oncomplete($parse(attrs.ngIntroOncomplete)(scope));
-                }
-
-                if(attrs.ngIntroOnexit) {
-                    intro.onexit($parse(attrs.ngIntroOnexit)(scope));
-                }
-
-                if(attrs.ngIntroOnchange) {
-                    intro.onchange($parse(attrs.ngIntroOnchange)(scope));
-                }
-
-                if(attrs.ngIntroOnbeforechange) {
-                    intro.onbeforechange($parse(attrs.ngIntroOnbeforechange)(scope));
-                }
-
-                if(attrs.ngIntroOnafterchange) {
-                    intro.onafterchange($parse(attrs.ngIntroOnafterchange)(scope));
-                }
-
-                if(typeof(step) === 'number') {
-                    intro.goToStep(step).start();
-                } else {
-                    intro.start();
-                }
-            };
-
-            if(attrs.ngIntroAutostart == 'true') {
-                $timeout(function() {
-                    $parse(attrs.ngIntroMethod)(scope)();
-                });
-            }
-        }
-    };
-}]);

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angular/README.md
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angular/README.md b/deleted/dist-cov/usergrid-portal/bower_components/angular/README.md
deleted file mode 100644
index fc0c099..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angular/README.md
+++ /dev/null
@@ -1,48 +0,0 @@
-# bower-angular
-
-This repo is for distribution on `bower`. The source for this module is in the
-[main AngularJS repo](https://github.com/angular/angular.js).
-Please file issues and pull requests against that repo.
-
-## Install
-
-Install with `bower`:
-
-```shell
-bower install angular
-```
-
-Add a `<script>` to your `index.html`:
-
-```html
-<script src="/bower_components/angular/angular.js"></script>
-```
-
-## Documentation
-
-Documentation is available on the
-[AngularJS docs site](http://docs.angularjs.org/).
-
-## License
-
-The MIT License
-
-Copyright (c) 2010-2012 Google, Inc. http://angularjs.org
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/bower_components/angular/angular-csp.css
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/bower_components/angular/angular-csp.css b/deleted/dist-cov/usergrid-portal/bower_components/angular/angular-csp.css
deleted file mode 100644
index 763f7b9..0000000
--- a/deleted/dist-cov/usergrid-portal/bower_components/angular/angular-csp.css
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Include this file in your html if you are using the CSP mode. */
-
-@charset "UTF-8";
-
-[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak],
-.ng-cloak, .x-ng-cloak,
-.ng-hide {
-  display: none !important;
-}
-
-ng\:form {
-  display: block;
-}


[29/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.panels.user.graph.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.panels.user.graph.html b/deleted/archive/templates/apigee.ui.panels.user.graph.html
deleted file mode 100644
index 4c55f9b..0000000
--- a/deleted/archive/templates/apigee.ui.panels.user.graph.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<div class="console-section">
-  <div class="well thingy">
-    {{if picture}}<img src="${picture}" class="user-profile-picture" />{{/if}}
-    <div class="title">
-      {{if path}}<a href="" onclick="Usergrid.console.pageOpenQueryExplorer('${path}'); return false;">{{/if}}${name}{{if path}}</a>{{/if}}
-    </div>
-    <div class="bar">
-      <a class="btn btn-primary" data-toggle="modal" href="#dialog-form-follow-user">Follow User</a>
-      <input type="hidden" value="${username}" id="search-follow-username" name="search-follow-userid">
-    </div>
-  </div>
-
-  <div class="console-section-contents">
-    <div class="user-roles-title">Following </div>
-    <div class="user-panel-section">
-      {{if following}}
-      {{if following.length > 0}}
-      <div class="query-result-row entity_list_item" id="users-roles-following-table">
-        <table class="table table-bordered">
-          <tbody>
-            {{each following}}
-            <tr class="zebraRows">
-              <td class="query-result-td-header-name">
-                <div class="query-result-header-name query-result-picture-vert-offset">
-                  {{if path}}
-                  <a href="" onclick="Usergrid.console.pageOpenUserProfile('${username}'); return false;">
-                    <span class="user-role-row-name">${username}</span>
-                    <span class="user-role-row-title"><a href="mailto:${email}">${email}</a></span>
-                  </a>
-                  {{/if}}
-                </div>
-              </td>
-            </tr>
-            {{/each}}
-          </tbody>
-        </table>
-      </div>
-      {{/if}}
-      {{else}}
-      <div class="panel-section-message">Not following anyone</div>
-      {{/if}}
-      <br/>
-    </div>
-    <div id="user-panel-following-curl-container" class="curl-container">
-    </div>
-    <br/>
-    <div class="user-roles-title">Followers </div>
-    <div class="user-panel-section">
-      {{if followers}}
-      {{if followers.length > 0}}
-      <div class="query-result-row entity_list_item" id="users-roles-followed-table">
-        <table class="table table-bordered">
-          <tbody>
-            {{each followers}}
-            <tr class="zebraRows">
-              <td class="query-result-td-header-name">
-                <div class="query-result-header-name query-result-picture-vert-offset">
-                  {{if path}}
-                  <a href="" onclick="Usergrid.console.pageOpenUserProfile('${username}'); return false;">
-                    <span class="user-role-row-name">${username}</span>
-                    <span class="user-role-row-title"><a href="mailto:${email}">${email}</a></span>
-                  </a>
-                  {{/if}}
-                </div>
-              </td>
-            </tr>
-            {{/each}}
-          </tbody>
-        </table>
-      </div>
-      {{/if}}
-      {{else}}
-      <div class="panel-section-message">No followers</div>
-      {{/if}}
-      <br/>
-    </div>
-    <div id="user-panel-followers-curl-container" class="curl-container">
-    </div>
-  </div>
-</div>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.panels.user.memberships.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.panels.user.memberships.html b/deleted/archive/templates/apigee.ui.panels.user.memberships.html
deleted file mode 100644
index fa0420a..0000000
--- a/deleted/archive/templates/apigee.ui.panels.user.memberships.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<div class="console-section">
-  <div class="well thingy">
-    {{if picture}}<img src="${picture}" class="user-profile-picture" />{{/if}}
-    <div class="title">
-      {{if path}}<a href="" onclick="Usergrid.console.pageOpenQueryExplorer('${path}'); return false;">{{/if}}${name}{{if path}}</a>{{/if}}
-    </div>
-    <div class="bar">
-      <a class="btn " data-toggle="modal" onclick="Usergrid.console.removeUserFromGroup('${username}'); return false;">Remove</a>
-      <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-add-group-to-user">Add to a Group</a>
-      <input type="hidden" value="${username}" id="search-group-userid" name="search-group-userid">
-    </div>
-  </div>
-
-  {{if memberships}}
-  <table class="table" style="margin-top: 30px">
-    <tbody>
-      <tr class="zebraRows users-row">
-        <td class="checkboxo">
-          <input type="checkbox" onclick="Usergrid.console.selectAllEntities(this);" />
-        </td>
-        <td class="user-details bold-header">
-          Group Name
-        </td>
-      </tr>
-      {{each memberships}}
-      <tr class="zebraRows users-row">
-        <td class="checkboxo"><input type="checkbox" name="${name}" class="listItem" value="${$value.uuid}" /></td>
-        <td class="details">
-          <a href="#" onclick="Usergrid.console.pageOpenGroupProfile('${$value.path}'); return false;">${$value.path}</a>
-        </td>
-      </tr>
-      {{/each}}
-    </tbody>
-  </table>
-  {{else}}
-  <div class="panel-section-message">no group memberships</div>
-  {{/if}}
-</div>
-<div id="user-panel-memberships-curl-container" class="curl-container">
-</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.panels.user.permissions.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.panels.user.permissions.html b/deleted/archive/templates/apigee.ui.panels.user.permissions.html
deleted file mode 100644
index c69407c..0000000
--- a/deleted/archive/templates/apigee.ui.panels.user.permissions.html
+++ /dev/null
@@ -1,105 +0,0 @@
-<div class="console-section">
-  <div class="well thingy">
-    {{if picture}}<img src="${picture}" class="user-profile-picture" />{{/if}}
-    <div class="title">
-      {{if path}}<a href="" onclick="Usergrid.console.pageOpenQueryExplorer('${path}'); return false;">{{/if}}
-        ${name}
-      {{if path}}</a>{{/if}}
-    </div>
-    <div class="bar">
-      <a class="btn" data-toggle="modal" href="#" onclick="Usergrid.console.deleteUsersFromRoles('${username}'); return false;"> Remove </a>
-      <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-add-user-to-role"> Add role</a>
-    </div>
-  </div>
-  <div class="console-section-contents">
-    <div class="user-panel-section">
-      <div class="user-roles-title">Roles </div>
-      {{if roles}}
-      {{if roles.length > 0}}
-      <table class="table table-bordered users-permissions-response-table">
-        <tbody>
-          <tr class="zebraRows users-row">
-            <td class="checkboxo">
-              <input type="checkbox" onclick="Usergrid.console.selectAllEntities(this);" />
-            </td>
-            <td class="user-details bold-header">
-              Group Name
-            </td>
-          </tr>
-
-          {{each roles}}
-          <tr class="zebraRows users-row">
-            <td class="checkboxo"><input type="checkbox" name="${title}" class="listItem" value="${name}" /></td>
-            <td class="details">
-              {{if path}}<a href="" onclick="Usergrid.console.pageOpenRole('${name}', '${title}'); return false;">{{/if}}
-                ${title}
-                (${name})
-              {{if path}}</a>{{/if}}
-            </td>
-          </tr>
-          {{/each}}
-        </tbody>
-      </table>
-      {{/if}}
-      {{else}}
-      <div class="panel-section-message">No Roles</div>
-      {{/if}}
-      <br/>
-      <div id="user-panel-roles-curl-container" class="curl-container">
-      </div>
-      <div class="user-roles-title">Permissions </div>
-      <h4>Add Permission Rule</h4>
-      <form id="role-permissions-form" action="" onsubmit="Usergrid.console.addUserPermission('${username}'); return false;" class="well form-inline" autocomplete="off">
-        Path: <input id="user-permission-path-entry-input" type="text" name="path" value="/" />
-        <label class="checkbox">
-          <input id="user-permission-op-get-checkbox" type="checkbox" name="get" value="get"/>
-          get </label>
-        <label class="checkbox">
-          <input id="user-permission-op-post-checkbox" type="checkbox" name="post" value="post"/>
-          post </label>
-        <label class="checkbox">
-          <input id="user-permission-op-put-checkbox" type="checkbox" name="put" value="put"/>
-          put </label>
-        <label class="checkbox">
-          <input id="user-permission-op-delete-checkbox" type="checkbox" name="delete" value="delete"/>
-          delete </label>
-        <button type="submit" class="btn btn-primary"><i class="icon-plus-sign icon-white"></i> Add</button >
-      </form>
-      <br/>
-      <h4>Permission Rules</h4>
-      {{if permissions}}
-      <table id="role-permissions-table" data-permission="${$index}" class="table table-striped table-bordered table-condensed">
-        <thead>
-          <tr>
-            <th>Path</th>
-            <th class="role-permission-op">Get</th>
-            <th class="role-permission-op">Post</th>
-            <th class="role-permission-op">Put</th>
-            <th class="role-permission-op">Delete</th>
-            <th></th>
-          </tr>
-        </thead>
-        <tbody>
-          {{each permissions}}
-          <tr>
-            <td class="role-permission-path">${$value.path}</td>
-            <td class="role-permission-op">{{if $value.ops.get}}<i class="icon-ok"></i>{{/if}}</td>
-            <td class="role-permission-op">{{if $value.ops.post}}<i class="icon-ok"></i>{{/if}}</td>
-            <td class="role-permission-op">{{if $value.ops.put}}<i class="icon-ok"></i>{{/if}}</td>
-            <td class="role-permission-op">{{if $value.ops.delete}}<i class="icon-ok"></i>{{/if}}</td>
-            <td class="role-permission-delete">
-              <a onclick="Usergrid.console.deleteUserPermission('${username}', '${$value.perm}'); return false;" href="#" class="btn btn-danger"><i class="icon-trash icon-white"></i> Remove</a>
-            </td>
-          </tr>
-          {{/each}}
-        </tbody>
-      </table>
-      {{else}}
-      <div class="alert">No Permissions</div>
-      {{/if}}
-      <div id="user-panel-permissions-curl-container" class="curl-container">
-      </div>
-    </div>
-  </div>
-</div>
-<input type="hidden" name="role-form-username" id="role-form-username" value="${$data.entity.username}"/>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.panels.user.profile.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.panels.user.profile.html b/deleted/archive/templates/apigee.ui.panels.user.profile.html
deleted file mode 100644
index 3784e33..0000000
--- a/deleted/archive/templates/apigee.ui.panels.user.profile.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<div class="alert messages" style="display: none;"></div>
-<div class="console-section">
-  <div class="well thingy">
-    <img src="${picture}" class="gravatar50" />
-    <div class="title">
-      {{if path}}<a href="" onclick="Usergrid.console.pageOpenQueryExplorer('${path}'); return false;">{{/if}}${name}{{if path}}</a>{{/if}}
-    </div>
-    <div class="bar">
-      <a style="margin-right: 15px;" class="btn btn-primary" onclick="Usergrid.console.saveUserProfile('${username}'); return false;">Save User</a>
-    </div>
-  </div>
-  <h3>Edit</h3>
-  <div class="query-result-form"></div>
-  <div class="content-container">
-    <h3>Contents</h3>
-    <table class="table">
-      <tbody>
-        <tr class="zebraRows">
-          <td>UUID</td>
-          <td>${entity.uuid}</td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Type</td>
-          <td>${entity.type}</td>
-        </tr>
-        <tr class="zebraRows">
-          <td>
-            Created
-          </td>
-          <td>
-            <a href="#" class="toggleableSP">${dateToString(entity.created)}</a>
-            <a href="#" class="toggleableSP hide">${entity.created}</a>
-          </td>
-        </tr>
-        <tr class="zebraRows">
-          <td>
-            Modified
-          </td>
-          <td>
-            <a href="#" class="toggleableSP">${dateToString(entity.modified)}</a>
-            <a href="#" class="toggleableSP hide">${entity.modified}</a>
-          </td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Activated</td>
-          <td>${entity.activated}</td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Email</td>
-          <td>${entity.email}</td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Name</td>
-          <td>${entity.name}</td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Picture</td>
-          <td>${entity.picture}</td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Username</td>
-          <td>${entity.username}</td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Path</td>
-          <td><a href="#" onclick="Usergrid.console.pageOpenQueryExplorer('${path}'); return false;">${path}</a></td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Sets</td>
-          <td>
-            <table class="table table-striped">
-              <tbody>
-                {{each metadata.sets}}
-                <tr>
-                  <td>
-                    ${$index}
-                  </td>
-                  <td>
-                    <a href="#" onclick="Usergrid.console.pageOpenQueryExplorer('${$value}'); return false;">${$value}</a>
-                  </td>
-                </tr>
-                {{/each}}
-              <tbody>
-            </table>
-          </td>
-        </tr>
-        <tr class="zebraRows">
-          <td>Collections</td>
-          <td>
-            <table class="table table-striped">
-              <tbody>
-                {{each metadata.collections}}
-                <tr>
-                  <td>
-                    ${$index}
-                  </td>
-                  <td>
-                    <a href="#" onclick="Usergrid.console.pageOpenQueryExplorer('${$value}'); return false;">${$value}</a>
-                  </td>
-                </tr>
-                {{/each}}
-              <tbody>
-            </table>
-          </td>
-        </tr>
-      </tbody>
-    </table>
-    <h3>JSON</h3>
-    <pre class="query-result-json-inner">${JSON.stringify(entity, null, "  ")}</pre>
-  </div>
-</div>
-<div id="user-panel-profile-curl-container" class="curl-container">
-</div>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.role.groups.table_rows.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.role.groups.table_rows.html b/deleted/archive/templates/apigee.ui.role.groups.table_rows.html
deleted file mode 100644
index 9fd867c..0000000
--- a/deleted/archive/templates/apigee.ui.role.groups.table_rows.html
+++ /dev/null
@@ -1,44 +0,0 @@
-
-<div class="console-section">
-  <div class="well thingy">
-    <span class="title">Groups</span>
-    <div class="bar">
-      <a class="btn" data-toggle="modal" href="#" onclick="Usergrid.console.removeGroupFromRole('${roleName}', '${roleTitle}'); return false;"> Remove </a>
-      <a style="margin-right: 15px;" class="btn btn-primary" data-toggle="modal" href="#dialog-form-add-group-to-role"> Add </a>
-    </div>
-  </div>
-
-
-  {{if entities.length > 0}}
-  <table class="table" style="margin-top: 30px">
-    <tbody>
-      <tr class="zebraRows users-row">
-        <td class="checkboxo">
-          <input type="checkbox" onclick="Usergrid.console.selectAllEntities(this);" />
-        </td>
-        <td class="user-details bold-header">
-          Group Title
-        </td>
-        <td class="user-details bold-header">
-          Group Path
-        </td>
-      </tr>
-      {{each entities}}
-      <tr class="zebraRows users-row">
-        <td class="checkboxo"><input type="checkbox" name="${path}" class="listItem" value="${path}" /></td>
-        <td class="details">
-          <a href="" onclick="Usergrid.console.pageOpenGroupProfile('${path}'); return false;">${title}</a>
-        </td>
-        <td class="details">
-          <a href="" onclick="Usergrid.console.pageOpenGroupProfile('${path}'); return false;">${path}</a>
-        </td>
-      </tr>
-      {{/each}}
-    </tbody>
-  </table>
-  {{else}}
-  <div class="panel-section-message">No Group Memberships</div>
-  {{/if}}
-</div>
-<div id="group-panel-memberships-curl-container" class="curl-container">
-</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.roles.table_rows.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.roles.table_rows.html b/deleted/archive/templates/apigee.ui.roles.table_rows.html
deleted file mode 100644
index 8a227aa..0000000
--- a/deleted/archive/templates/apigee.ui.roles.table_rows.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-<tr class="zebraRows roles-row">
-  <td class="checkboxo">
-    <input type="checkbox" class="listItem" name="${title}" value="${name}"/>
-  </td>
-  <td class="details">
-    <a href="#" class="list-link" onclick="Usergrid.console.pageOpenRole('${name}', '${title}'); return false;">${title}</a>
-  </td>
-  <td class="details">
-     <a href="#" class="list-link" onclick="Usergrid.console.pageOpenRole('${name}', '${title}'); return false;">${name}</a>
-  </td>
-  <td class="view-details">
-    <a href="" onclick="Usergrid.console.pageOpenRole('${name}', '${title}'); return false;" class="view-details">View Details</a>
-  </td>
-</tr>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/apigee.ui.users.table_rows.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/apigee.ui.users.table_rows.html b/deleted/archive/templates/apigee.ui.users.table_rows.html
deleted file mode 100644
index 2c62f55..0000000
--- a/deleted/archive/templates/apigee.ui.users.table_rows.html
+++ /dev/null
@@ -1,18 +0,0 @@
-
-<tr class="zebraRows users-row">
-  <td class="checkboxo">
-    <input class="listItem" type="checkbox" name="${name}" value="${uuid}" />
-  </td>
-  <td class="gravatar50-td">
-    <a href="" onclick="Usergrid.console.pageOpenUserProfile('${username}'); return false;"><img src="${picture}" class="gravatar50"/></a>
-  </td>
-  <td class="details">
-      <a href="" class="list-link" onclick="Usergrid.console.pageOpenUserProfile('${username}'); return false;">${username}</a>
-  </td>
-  <td class="details">
-     <a href="" class="list-link" onclick="Usergrid.console.pageOpenUserProfile('${username}'); return false;">${name}</a>
-  </td>
-  <td class="view-details">
-    <a href="" onclick="Usergrid.console.pageOpenUserProfile('${username}'); return false;" class="view-details">View Details</a>
-  </td>
-</tr>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/templates/test/modalForm2.html
----------------------------------------------------------------------
diff --git a/deleted/archive/templates/test/modalForm2.html b/deleted/archive/templates/test/modalForm2.html
deleted file mode 100644
index c786ee8..0000000
--- a/deleted/archive/templates/test/modalForm2.html
+++ /dev/null
@@ -1,32 +0,0 @@
-Modal-link
-<a class="" data-toggle="modal" href="#dialog-form-new-admin"><i class="icon-plus"></i> New Administrator</a>
-
-Modal-form
-<form id="dialog-form-new-admin" class="modal hide fade">
-    <div class="modal-header">
-        <a class="close" data-dismiss="modal">x</a>
-        <h4>Create new administrator</h4>
-    </div>
-    <div class="modal-body">
-        <p class="validateTips"></p>
-
-        <fieldset>
-            <div class="control-group">
-                <label for="new-admin-email">Email</label>
-                <div class="controls">
-                    <input type="text" name="email" id="new-admin-email" value="" class="input-xlarge"/>
-                    <p class="help-block hide"></p>
-                </div>
-            </div>
-            <div class="control-group">
-                <div class="controls">
-                    <p class="help-block hide"></p>
-                </div>
-            </div>
-        </fieldset>
-    </div>
-    <div class="modal-footer">
-        <input type="submit" class="btn btn-usergrid" value="Create"/>
-        <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-</form>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/test/autocomplete.html
----------------------------------------------------------------------
diff --git a/deleted/archive/test/autocomplete.html b/deleted/archive/test/autocomplete.html
deleted file mode 100644
index c58cbeb..0000000
--- a/deleted/archive/test/autocomplete.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-    "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-    <title></title>
-    <link rel="stylesheet" type="text/css" href="../bootstrap/css/bootstrap.min.css"/>
-    <script src="http://code.jquery.com/jquery-1.7.1.min.js" type="text/javascript"></script>
-    <script src="../bootstrap/js/bootstrap-typeahead.js" type="text/javascript"></script>
-    <script src="../bootstrap/js/bootstrap-modal.js" type="text/javascript"></script>
-</head>
-<body>
-
-
-<input type="text" id="campo">
-<script type="text/javascript">
-    $(document).ready(Init);
-    function Init(){
-        var campo = $("#campo");
-        campo.typeahead({source:[]});
-        campo.data('typeahead').source = ["david","oscar","roberto","claudia"];
-    }
-</script>
-
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/test/modalForm.html
----------------------------------------------------------------------
diff --git a/deleted/archive/test/modalForm.html b/deleted/archive/test/modalForm.html
deleted file mode 100644
index c786ee8..0000000
--- a/deleted/archive/test/modalForm.html
+++ /dev/null
@@ -1,32 +0,0 @@
-Modal-link
-<a class="" data-toggle="modal" href="#dialog-form-new-admin"><i class="icon-plus"></i> New Administrator</a>
-
-Modal-form
-<form id="dialog-form-new-admin" class="modal hide fade">
-    <div class="modal-header">
-        <a class="close" data-dismiss="modal">x</a>
-        <h4>Create new administrator</h4>
-    </div>
-    <div class="modal-body">
-        <p class="validateTips"></p>
-
-        <fieldset>
-            <div class="control-group">
-                <label for="new-admin-email">Email</label>
-                <div class="controls">
-                    <input type="text" name="email" id="new-admin-email" value="" class="input-xlarge"/>
-                    <p class="help-block hide"></p>
-                </div>
-            </div>
-            <div class="control-group">
-                <div class="controls">
-                    <p class="help-block hide"></p>
-                </div>
-            </div>
-        </fieldset>
-    </div>
-    <div class="modal-footer">
-        <input type="submit" class="btn btn-usergrid" value="Create"/>
-        <input type="reset" class="btn" value="Cancel" data-dismiss="modal"/>
-    </div>
-</form>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/charts/chart-controller.js
----------------------------------------------------------------------
diff --git a/deleted/charts/chart-controller.js b/deleted/charts/chart-controller.js
deleted file mode 100644
index 66368d5..0000000
--- a/deleted/charts/chart-controller.js
+++ /dev/null
@@ -1,6 +0,0 @@
-'use strict'
-
-AppServices.Controllers.controller('ChartCtrl', [ '$scope', '$location', function ( $scope, $location) {
-
-
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/charts/chart-directives.js
----------------------------------------------------------------------
diff --git a/deleted/charts/chart-directives.js b/deleted/charts/chart-directives.js
deleted file mode 100644
index 6ea1a9f..0000000
--- a/deleted/charts/chart-directives.js
+++ /dev/null
@@ -1,141 +0,0 @@
-'use strict';
-
-AppServices.Directives.directive('chart', function ($rootScope) {
-  return {
-    restrict: 'E',
-    scope: {
-      chartdata: '=chartdata'
-    },
-    template: '<div></div>',
-    replace: true,
-    controller: function($scope, $element) {
-
-
-    },
-    link: function (scope, element, attrs) {
-      //we need scope.watch because the value is not populated yet
-      //http://stackoverflow.com/questions/14619884/angularjs-passing-object-to-directive
-      scope.$watch('chartdata', function(chartdata,oldchartdata) {
-
-        if(chartdata){
-          //set chart defaults through tag attributes
-          var chartsDefaults = {
-            chart: {
-              renderTo: element[0],
-              type: attrs.type || null,
-              height: attrs.height || null,
-              width: attrs.width || null,
-              reflow: true,
-              animation: false,
-              zoomType: 'x'
-//              events: {
-//                redraw: resize,
-//                load: resize
-//              }
-            }
-          }
-
-          if(attrs.type === 'pie'){
-            chartsDefaults.chart.margin = [0, 0, 0, 0];
-            chartsDefaults.chart.spacingLeft = 0;
-            chartsDefaults.chart.spacingRight = 0;
-            chartsDefaults.chart.spacingTop = 0;
-            chartsDefaults.chart.spacingBottom = 0;
-
-            if(attrs.titleimage){
-              chartdata.title.text = '<img src=\"'+ attrs.titleimage +'\">';
-            }
-
-            if(attrs.titleicon){
-              chartdata.title.text = '<i class=\"pictogram ' + attrs.titleiconclass + '\">' + attrs.titleicon + '</i>';
-            }
-
-            if(attrs.titlecolor){
-              chartdata.title.style.color = attrs.titlecolor;
-            }
-
-            if(attrs.titleimagetop){
-              chartdata.title.style.marginTop = attrs.titleimagetop;
-            }
-
-            if(attrs.titleimageleft){
-              chartdata.title.style.marginLeft = attrs.titleimageleft;
-            }
-
-          }
-
-          if(attrs.type === 'line'){
-            chartsDefaults.chart.marginTop = 30;
-            chartsDefaults.chart.spacingTop = 50;
-//            chartsDefaults.chart.zoomType = null;
-          }
-
-          if(attrs.type === 'column'){
-            chartsDefaults.chart.marginBottom = 80;
-//            chartsDefaults.chart.spacingBottom = 50;
-//            chartsDefaults.chart.zoomType = null;
-          }
-
-          if(attrs.type === 'area'){
-            chartsDefaults.chart.spacingLeft = 0;
-            chartsDefaults.chart.spacingRight = 0;
-            chartsDefaults.chart.marginLeft = 0;
-            chartsDefaults.chart.marginRight = 0;
-          }
-
-          Highcharts.setOptions({
-            global : {
-              useUTC : false
-            },
-            chart: {
-              style: {
-                fontFamily: 'marquette-light, Helvetica, Arial, sans-serif'
-              }
-            }
-          });
-
-          //          scope.$parent.$watch('apptest.step',function(step){
-          //            xAxis1.labels.step = step
-          //            renderChart(chartsDefaults,chartdata);
-          //          })
-
-          if(attrs.type === 'line'){
-            //------line charts
-            var xAxis1 = chartdata.xAxis[0];
-
-            //check for previous setting from service layer or json template... if it doesn't exist use the attr value
-            if(!xAxis1.labels.formatter){
-              xAxis1.labels.formatter = new Function(attrs.xaxislabel);
-            }
-            if(!xAxis1.labels.step){
-              xAxis1.labels.step = attrs.xaxisstep;
-            }
-            //end check
-          }
-
-
-
-
-
-          //pull any stringified from template JS and eval it
-          if(chartdata.tooltip){
-            if(typeof chartdata.tooltip.formatter === 'string'){
-              chartdata.tooltip.formatter = new Function(chartdata.tooltip.formatter);
-            }
-          }
-
-          renderChart(chartsDefaults,chartdata);
-        }
-
-      },true)
-    }
-  }
-
-});
-
-
-function renderChart(chartsDefaults,chartdata,attrs){
-  var newSettings = {};
-  $.extend(true, newSettings, chartsDefaults, chartdata);
-  var chart = new Highcharts.Chart(newSettings);
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/charts/chart-service.js
----------------------------------------------------------------------
diff --git a/deleted/charts/chart-service.js b/deleted/charts/chart-service.js
deleted file mode 100644
index df04217..0000000
--- a/deleted/charts/chart-service.js
+++ /dev/null
@@ -1,494 +0,0 @@
-AppServices.Services.factory('charts', function () {
-
-  var lineChart,
-    areaChart,
-    paretoChart,
-    pieChart,
-    pieCompare,
-    xaxis,
-    seriesIndex;
-
-  return {
-    convertLineChart: function (chartData, chartTemplate, dataDescription, settings, currentCompare) {
-
-      lineChart = chartTemplate;
-//      console.log('chartData',chartData[0])
-      if (typeof chartData[0] === 'undefined') {
-        chartData[0] = {};
-        chartData[0].datapoints = []
-      }
-      var dataPoints = chartData[0].datapoints,
-      dPLength = dataPoints.length,
-      label;
-
-      if(currentCompare === 'YESTERDAY'){
-//        lineChart = chartTemplate;
-        seriesIndex = dataDescription.dataAttr.length;
-        label = 'Yesterday ';
-      }
-      else if(currentCompare === 'LAST_WEEK'){
-//        lineChart = chartTemplate;
-        seriesIndex = dataDescription.dataAttr.length;
-        label = 'Last Week ';
-      }else{
-        lineChart = chartTemplate;
-
-        seriesIndex = 0;
-        lineChart.series = [];
-        label = '';
-      }
-      xaxis = lineChart.xAxis[0];
-      xaxis.categories = [];
-
-
-
-      //the next 2 setting options are provided in the timeFormat dropdown, so we must inspect them here
-      if (settings.xaxisformat) {
-        xaxis.labels.formatter = new Function(settings.xaxisformat);
-      }
-      if (settings.step) {
-        xaxis.labels.step = settings.step;
-      }
-      //end check
-
-      for (var i = 0; i < dPLength; i++) {
-        var dp = dataPoints[i];
-        xaxis.categories.push(dp.timestamp);
-      }
-
-      //check to see if there are multiple "chartGroupNames" in the object, otherwise "NA" will go to the else
-      if(chartData.length > 1){
-
-        for (var l = 0; l < chartData.length; l++){
-
-          if(chartData[l].chartGroupName){
-
-            dataPoints = chartData[l].datapoints;
-//            dPLength = dataPoints.length;
-
-            lineChart.series[l] = {};
-            lineChart.series[l].data = [];
-            lineChart.series[l].name = chartData[l].chartGroupName;
-            lineChart.series[l].yAxis = 0;
-            lineChart.series[l].type = 'line';
-            lineChart.series[l].color = dataDescription.colors[i];
-            lineChart.series[l].dashStyle = 'solid';
-
-            lineChart.series[l].yAxis.title.text = dataDescription.yAxisLabels;
-
-            plotData(l,dPLength,dataPoints,dataDescription.detailDataAttr,true)
-          }
-        }
-      }else{
-
-      var steadyCounter = 0;
-
-        //loop over incoming data members for axis setup... create empty arrays and settings ahead of time
-        //the seriesIndex is for the upcoming compare options - if compare is clicked... if it isn't just use 0 :/
-        for (var i = seriesIndex;i < (dataDescription.dataAttr.length + (seriesIndex > 0 ? seriesIndex : 0)); i++) {
-          var yAxisIndex = dataDescription.multiAxis ? steadyCounter : 0;
-          lineChart.series[i] = {};
-          lineChart.series[i].data = [];
-          lineChart.series[i].name = label + dataDescription.labels[steadyCounter];
-          lineChart.series[i].yAxis = yAxisIndex;
-          lineChart.series[i].type = 'line';
-          lineChart.series[i].color = dataDescription.colors[i];
-          lineChart.series[i].dashStyle = 'solid';
-
-          lineChart.yAxis[yAxisIndex].title.text = dataDescription.yAxisLabels[(dataDescription.yAxisLabels > 1 ? steadyCounter : 0)];
-          steadyCounter++;
-        }
-
-        plotData(seriesIndex,dPLength,dataPoints,dataDescription.dataAttr,false)
-      }
-
-      function plotData(counter,dPLength,dataPoints,dataAttrs,detailedView){
-        //massage the data... happy ending
-        for (var i = 0; i < dPLength; i++) {
-          var dp = dataPoints[i];
-
-          var localCounter = counter;
-          //loop over incoming data members
-          for (var j = 0; j < dataAttrs.length; j++) {
-            if(typeof dp === 'undefined'){
-              lineChart.series[localCounter].data.push([i, 0]);
-            }else{
-              lineChart.series[localCounter].data.push([i, dp[dataAttrs[j]]]);
-            }
-            if(!detailedView){
-            localCounter++;
-            }
-
-          }
-
-        }
-      }
-      return lineChart;
-    },
-
-    convertAreaChart: function (chartData, chartTemplate, dataDescription, settings, currentCompare) {
-
-      areaChart = angular.copy(areaChart);
-//      console.log('chartData',chartData[0])
-      if (typeof chartData[0] === 'undefined') {
-        chartData[0] = {};
-        chartData[0].datapoints = []
-      }
-      var dataPoints = chartData[0].datapoints,
-        dPLength = dataPoints.length,
-        label;
-
-      if(currentCompare === 'YESTERDAY'){
-//        areaChart = chartTemplate;
-        seriesIndex = dataDescription.dataAttr.length;
-        label = 'Yesterday ';
-      }
-      else if(currentCompare === 'LAST_WEEK'){
-//        areaChart = chartTemplate;
-        seriesIndex = dataDescription.dataAttr.length;
-        label = 'Last Week ';
-      }else{
-        areaChart = chartTemplate;
-
-        seriesIndex = 0;
-        areaChart.series = [];
-        label = '';
-      }
-      xaxis = areaChart.xAxis[0];
-      xaxis.categories = [];
-
-
-
-      //the next 2 setting options are provided in the timeFormat dropdown, so we must inspect them here
-      if (settings.xaxisformat) {
-        xaxis.labels.formatter = new Function(settings.xaxisformat);
-      }
-      if (settings.step) {
-        xaxis.labels.step = settings.step;
-      }
-      //end check
-
-      for (var i = 0; i < dPLength; i++) {
-        var dp = dataPoints[i];
-        xaxis.categories.push(dp.timestamp);
-      }
-
-      //check to see if there are multiple "chartGroupNames" in the object, otherwise "NA" will go to the else
-      if(chartData.length > 1){
-
-        for (var l = 0; l < chartData.length; l++){
-
-          if(chartData[l].chartGroupName){
-
-            dataPoints = chartData[l].datapoints;
-//            dPLength = dataPoints.length;
-
-            areaChart.series[l] = {};
-            areaChart.series[l].data = [];
-            areaChart.series[l].fillColor = dataDescription.areaColors[l];
-            areaChart.series[l].name = chartData[l].chartGroupName;
-            areaChart.series[l].yAxis = 0;
-            areaChart.series[l].type = 'area';
-            areaChart.series[l].pointInterval = 1;
-            areaChart.series[l].color = dataDescription.colors[l];
-            areaChart.series[l].dashStyle = 'solid';
-
-            areaChart.series[l].yAxis.title.text = dataDescription.yAxisLabels;
-
-            plotData(l,dPLength,dataPoints,dataDescription.detailDataAttr,true)
-          }
-        }
-      }else{
-
-        var steadyCounter = 0;
-
-        //loop over incoming data members for axis setup... create empty arrays and settings ahead of time
-        //the seriesIndex is for the upcoming compare options - if compare is clicked... if it isn't just use 0 :/
-        for (var i = seriesIndex;i < (dataDescription.dataAttr.length + (seriesIndex > 0 ? seriesIndex : 0)); i++) {
-          var yAxisIndex = dataDescription.multiAxis ? steadyCounter : 0;
-          areaChart.series[i] = {};
-          areaChart.series[i].data = [];
-          areaChart.series[i].fillColor = dataDescription.areaColors[i];
-          areaChart.series[i].name = label + dataDescription.labels[steadyCounter];
-          areaChart.series[i].yAxis = yAxisIndex;
-          areaChart.series[i].type = 'area';
-          areaChart.series[i].pointInterval = 1;
-          areaChart.series[i].color = dataDescription.colors[i];
-          areaChart.series[i].dashStyle = 'solid';
-
-          areaChart.yAxis[yAxisIndex].title.text = dataDescription.yAxisLabels[(dataDescription.yAxisLabels > 1 ? steadyCounter : 0)];
-          steadyCounter++;
-        }
-
-        plotData(seriesIndex,dPLength,dataPoints,dataDescription.dataAttr,false)
-      }
-
-      function plotData(counter,dPLength,dataPoints,dataAttrs,detailedView){
-        //massage the data... happy ending
-        for (var i = 0; i < dPLength; i++) {
-          var dp = dataPoints[i];
-
-          var localCounter = counter;
-          //loop over incoming data members
-          for (var j = 0; j < dataAttrs.length; j++) {
-            if(typeof dp === 'undefined'){
-              areaChart.series[localCounter].data.push(0);
-            }else{
-              areaChart.series[localCounter].data.push(dp[dataAttrs[j]]);
-            }
-            if(!detailedView){
-              localCounter++;
-            }
-
-          }
-
-        }
-      }
-      return areaChart;
-    },
-
-    convertParetoChart: function (chartData, chartTemplate, dataDescription, settings, currentCompare) {
-
-      paretoChart = chartTemplate;
-
-      if (typeof chartData === 'undefined') {
-        chartData = [];
-      }
-
-      var label,
-        cdLength = chartData.length,
-        compare = false,
-        allParetoOptions = [],
-        stackedBar = false;
-
-      seriesIndex = 0;
-
-      function getPreviousData(){
-        for(var i = 0;i < chartTemplate.series[0].data.length;i++){
-          //pulling the "now" values for comparison later, assuming they will be in the 0 index :)
-           allParetoOptions.push(chartTemplate.xAxis.categories[i])
-        }
-      }
-
-      if(typeof dataDescription.dataAttr[1] === 'object'){
-        stackedBar = true;
-      }
-
-      if(currentCompare === 'YESTERDAY'){
-        label = 'Yesterday ';
-        compare = true;
-        if(stackedBar){
-          seriesIndex = dataDescription.dataAttr[1].length;
-        }
-        getPreviousData()
-      }
-      else if(currentCompare === 'LAST_WEEK'){
-        label = 'Last Week ';
-        compare = true;
-        if(stackedBar){
-          seriesIndex = dataDescription.dataAttr[1].length;
-        }
-        seriesIndex =
-        getPreviousData()
-      }else{
-        compare = false;
-        label = '';
-        paretoChart.xAxis.categories = [];
-        paretoChart.series = [];
-        paretoChart.series[0] = {};
-        paretoChart.series[0].data = [];
-        paretoChart.legend.enabled = false;
-      }
-
-      paretoChart.plotOptions.series.borderColor = dataDescription.borderColor;
-
-
-      //create a basic compare series (more advanced needed for stacked bar)
-      if(compare && !stackedBar){
-        paretoChart.series[1] = {};
-        paretoChart.series[1].data = [];
-        //repopulate array with 0 values based on length of NOW data
-        for(var i = 0; i < allParetoOptions.length; i++) {
-          paretoChart.series[1].data.push(0);
-        }
-        paretoChart.legend.enabled = true;
-//        paretoChart.series[1].name = label;
-//        paretoChart.series[0].name = "Now";
-      }
-
-      for (var i = 0; i < cdLength; i++) {
-        var bar = chartData[i];
-
-        if(!compare){
-          paretoChart.xAxis.categories.push(bar[dataDescription.dataAttr[0]]);
-
-          //if we send multiple attributes to be plotted, assume it's a stacked bar for now
-          if(typeof dataDescription.dataAttr[1] === 'object'){
-            createStackedBar(dataDescription,paretoChart,paretoChart.series.length);
-          }else{
-            paretoChart.series[0].data.push(bar[dataDescription.dataAttr[1]]);
-            paretoChart.series[0].name = dataDescription.labels[0];
-            paretoChart.series[0].color = dataDescription.colors[0];
-          }
-
-        }else{
-
-          //check if this is a stacked bar
-
-
-          var newLabel = bar[dataDescription.dataAttr[0]],
-              newValue = bar[dataDescription.dataAttr[1]],
-              previousIndex = allParetoOptions.indexOf(newLabel);
-
-              //make sure this label existed in the NOW data
-              if(previousIndex > -1){
-                if(typeof dataDescription.dataAttr[1] === 'object'){
-                  createStackedBar(dataDescription,paretoChart,paretoChart.series.length);
-                }else{
-                  paretoChart.series[1].data[previousIndex] = newValue;
-                  paretoChart.series[1].name = (label !== '' ? label + ' ' + dataDescription.labels[0] : dataDescription.labels[0]);
-                  paretoChart.series[1].color = dataDescription.colors[1];
-                }
-              }else{
-                //not found for comparison
-              }
-
-
-        }
-
-      }
-
-      function createStackedBar(dataDescription,paretoChart,startingPoint){
-
-          paretoChart.plotOptions = {
-            series: {
-              shadow: false,
-              borderColor: dataDescription.borderColor,
-              borderWidth: 1
-            },
-            column: {
-              stacking: 'normal',
-              dataLabels: {
-                enabled: true,
-                color: (Highcharts.theme && Highcharts.theme.dataLabelsColor) || 'white'
-              }
-            }
-          };
-
-          var start = dataDescription.dataAttr[1].length,
-            steadyCounter = 0,
-            stackName = label;
-
-          if(compare){
-            paretoChart.legend.enabled = true;
-          }
-
-          for (var f = seriesIndex; f < (start + seriesIndex); f++) {
-            if(!paretoChart.series[f]){
-              paretoChart.series[f] = {'data':[]}
-            }
-            paretoChart.series[f].data.push(bar[dataDescription.dataAttr[1][steadyCounter]]);
-            paretoChart.series[f].name = (label !== '' ? label + ' ' + dataDescription.labels[steadyCounter] : dataDescription.labels[steadyCounter]);
-            paretoChart.series[f].color = dataDescription.colors[f];
-            paretoChart.series[f].stack = label;
-            steadyCounter++
-          }
-
-
-      }
-
-      return paretoChart;
-    },
-
-    convertPieChart: function (chartData, chartTemplate, dataDescription, settings, currentCompare) {
-
-      var label,
-        cdLength = chartData.length,
-        compare = false;
-
-      pieChart = chartTemplate;
-
-      if(currentCompare === 'YESTERDAY'){
-        label = 'Yesterday ';
-        compare = false; //override for now to false
-      }
-      else if(currentCompare === 'LAST_WEEK'){
-        label = 'Last Week ';
-        compare = false; //override for now to false
-      }else{
-        compare = false;
-
-        pieChart.series[0].data = [];
-
-        if (pieChart.series[0].dataLabels) {
-          if(typeof pieChart.series[0].dataLabels.formatter === 'string'){
-            pieChart.series[0].dataLabels.formatter = new Function(pieChart.series[0].dataLabels.formatter);
-          }
-        }
-
-      }
-
-      pieChart.plotOptions.pie.borderColor = dataDescription.borderColor;
-
-      if(compare){
-        pieChart.series[1].data = [];
-        if (pieChart.series[1].dataLabels) {
-          if(typeof pieChart.series[1].dataLabels.formatter === 'string'){
-            pieChart.series[1].dataLabels.formatter = new Function(pieChart.series[1].dataLabels.formatter);
-          }
-        }
-      }
-
-      var tempArray = [];
-      for (var i = 0; i < cdLength; i++) {
-        var pie = chartData[i];
-
-        tempArray.push({
-          name:pie[dataDescription.dataAttr[0]],
-          y:pie[dataDescription.dataAttr[1]],
-          color:''
-        });
-
-      }
-
-
-      //sort by name prop so we can have a good looking comparison donut
-      sortJsonArrayByProperty(tempArray,'name');
-      //add colors so they match up
-      for (var i = 0; i < tempArray.length; i++) {
-          tempArray[i].color = dataDescription.colors[i];
-      }
-
-      if(!compare){
-        pieChart.series[0].data = tempArray;
-      }else{
-        pieChart.series[1].data = tempArray;
-      }
-
-      return pieChart;
-    }
-  }
-
-
-  function sortJsonArrayByProperty(objArray, prop, direction){
-    if (arguments.length<2) throw new Error("sortJsonArrayByProp requires 2 arguments");
-    var direct = arguments.length>2 ? arguments[2] : 1; //Default to ascending
-
-    if (objArray && objArray.constructor===Array){
-      var propPath = (prop.constructor===Array) ? prop : prop.split(".");
-      objArray.sort(function(a,b){
-        for (var p in propPath){
-          if (a[propPath[p]] && b[propPath[p]]){
-            a = a[propPath[p]];
-            b = b[propPath[p]];
-          }
-        }
-        // convert numeric strings to integers
-        a = a.match(/^\d+$/) ? +a : a;
-        b = b.match(/^\d+$/) ? +b : b;
-        return ( (a < b) ? -1*direct : ((a > b) ? 1*direct : 0) );
-      });
-    }
-  }
-
-});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/charts/highcharts.json
----------------------------------------------------------------------
diff --git a/deleted/charts/highcharts.json b/deleted/charts/highcharts.json
deleted file mode 100644
index 817befc..0000000
--- a/deleted/charts/highcharts.json
+++ /dev/null
@@ -1,329 +0,0 @@
-{
-  "pie": {
-    "colors": [
-      "#828282",
-      "#9b9b9b",
-      "#bababa",
-      "#c5c5c5",
-      "#828282",
-      "#9b9b9b",
-      "#bababa",
-      "#c5c5c5"
-    ],
-    "credits": {
-      "enabled": false
-    },
-    "title": {
-      "text": "",
-      "verticalAlign": "middle",
-      "floating": "true",
-      "useHTML": true,
-      "style":{
-        "fontSize": "49px",
-        "color": "#ff0303",
-        "marginTop": "",
-        "marginLeft": ""
-      }
-    },
-    "tooltip": {
-      "percentageDecimals": 0,
-      "valueSuffix": "%",
-      "formatter": "return '<span style=\"font-weight:bold; font-size:14px;color:' + this.point.series.color + '\">'+ (this.point.name || this.series.name) +': ' + Highcharts.numberFormat(this.y, 2) + '%</span><br />'",
-      "borderRadius" : 0
-    },
-    "plotOptions": {
-      "pie": {
-        "shadow": false,
-        "center": ["50%","45%"],
-        "size":"100%",
-        "borderWidth": 0,
-        "borderColor": "#fff",
-        "animation": {"duration":400}
-      }
-    },
-    "series": [
-      {
-        "name": "",
-        "data": [],
-        "size": "90%",
-        "innerSize": "45%",
-        "dataLabels": {
-          "formatter": "return this.y > 5 ? this.point.name : null;",
-          "color": "#fff",
-          "distance": -30,
-          "style": {
-            "fontFamily": "marquette-regular, Helvetica, Arial, sans-serif",
-            "fontSize": "11px"
-          }
-        }
-      },
-      {
-        "name": "",
-        "data": [],
-        "size": "80%",
-        "innerSize": "60%",
-        "dataLabels": {
-          "formatter": "return this.y > 1 ? '<b>'+ this.point.name +':</b> '+ Highcharts.numberFormat(this.y, 2) +'%'  : null;"
-        }
-      }
-    ]
-  },
-
-
-  "line": {
-
-    "title": {
-      "text": ""
-    },
-    "tooltip": {
-      "formatter": "return '<span style=\"font-weight:bold;font-size:14px;color:' + this.point.series.color + '\">'+ this.y +' ' + (this.point.name || this.series.name) + '</span><br />'+Highcharts.dateFormat('%A %H:%M', this.x) + '<br />'",
-      "borderRadius" : 0
-    },
-    "xAxis": [
-      {
-        "type": "datetime",
-        "labels": {
-          "formatter": "",
-          "rotation": 65,
-          "style": {
-            "fontSize": "13px"
-          },
-          "align": "left",
-          "step": "3"
-        }
-      }
-    ],
-    "yAxis": [
-      {
-        "title": {
-          "text": ""
-        },
-        "min": 0,
-        "labels":{
-          "align":"left",
-          "x":3,
-          "y":16
-        },
-        "showFirstLabel": false
-      },
-      {
-        "title": {
-          "text": ""
-        },
-        "min": 0,
-        "opposite": true,
-        "labels":{
-          "align":"right",
-          "x":-3,
-          "y":16
-        },
-        "showFirstLabel": false
-      }
-    ],
-    "series": [],
-    "legend": {
-      "align": "right",
-      "verticalAlign": "top",
-      "floating": true,
-      "borderWidth": 0,
-      "y": -50,
-      "itemStyle": {"fontSize": "14px"}
-    },
-    "plotOptions": {
-      "series": {
-        "lineWidth": 2,
-        "marker": {
-          "enabled": true,
-          "radius": 2,
-          "lineWidth": 1,
-          "fillColor": "white",
-          "lineColor": null
-        },
-        "animation": {"duration":400}
-      }
-    },
-    "colors": [
-      "#4572A7",
-      "#AA4643",
-      "#89A54E",
-      "#80699B",
-      "#3D96AE",
-      "#DB843D",
-      "#92A8CD",
-      "#A47D7C",
-      "#B5CA92"
-    ],
-    "credits": {
-      "enabled": false
-    }
-
-  },
-
-  "pareto": {
-    "chart": {
-      "defaultSeriesType": "column"
-    },
-    "title": {
-      "text": ""
-    },
-    "legend": {
-      "enabled": true
-    },
-    "plotOptions": {
-      "series": {
-        "shadow": false,
-        "borderColor": "#fff",
-        "borderWidth": 2
-      }
-    },
-    "tooltip": {
-      "percentageDecimals": 0,
-      "formatter": "return this.x + '<br/>' + '<span style=\"font-weight:bold;font-size:14px;color:' + this.point.series.color + '\">'+ this.y + ' ' + (this.point.name || this.series.name) + '</span><br />'",
-      "borderRadius" : 0
-    },
-    "xAxis": {
-      "categories": [],
-      "lineColor": "#999",
-      "lineWidth": 1,
-      "tickColor": "#666",
-      "tickLength": 1,
-      "labels": {
-        "formatter": "",
-        "rotation": 65,
-        "style": {
-          "fontSize": "10px"
-        },
-        "align": "left"
-      }
-    },
-    "yAxis": [
-      {
-        "min": 0,
-        "lineColor": "#999",
-        "lineWidth": 1,
-        "tickColor": "#666",
-        "tickWidth": 1,
-        "tickLength": 1,
-        "gridLineColor": "#ddd",
-        "title": {
-          "text": "",
-          "style": {
-            "color": "#000"
-          }
-        }
-      }
-
-    ],
-    "credits": {
-      "enabled": false
-    },
-    "colors": [
-      "#828282",
-      "#9b9b9b",
-      "#bababa",
-      "#c5c5c5",
-      "#828282",
-      "#9b9b9b",
-      "#bababa",
-      "#c5c5c5"
-    ]
-  },
-
-  "area": {
-
-    "title": {
-      "text": ""
-    },
-    "tooltip": {
-      "formatter": "return '<span style=\"font-weight:bold;font-size:14px;color:' + this.point.series.color + '\">'+ this.y +' ' + (this.point.name || this.series.name) + '</span><br />'+Highcharts.dateFormat('%A %H:%M', this.x) + '<br />'",
-      "borderRadius" : 0
-    },
-    "xAxis": [
-      {
-        "type": "datetime",
-        "maxZoom": 1,
-        "labels": {
-          "formatter": "",
-          "rotation": 65,
-          "style": {
-            "fontSize": "13px"
-          },
-          "align": "left",
-          "step": "3"
-        }
-      }
-    ],
-    "yAxis": [
-      {
-        "title": {
-          "text": ""
-        },
-        "min": 0,
-        "labels":{
-          "align":"left",
-          "x":3,
-          "y":16
-        },
-        "showFirstLabel": false
-      },
-      {
-        "title": {
-          "text": ""
-        },
-        "min": 0,
-        "opposite": true,
-        "labels":{
-          "align":"right",
-          "x":-3,
-          "y":16
-        },
-        "showFirstLabel": false
-      }
-    ],
-    "series": [],
-    "legend": {
-      "align": "right",
-      "verticalAlign": "top",
-      "floating": true,
-      "borderWidth": 0,
-      "itemStyle": {"fontSize": "14px"}
-    },
-    "plotOptions": {
-      "area": {
-        "stacking": "normal",
-        "lineWidth": 1,
-        "marker": {
-          "enabled": false
-        },
-        "threshold": null,
-        "shadow": false,
-        "animation": {"duration":400}
-      },
-      "series": {
-        "lineWidth": 1,
-        "marker": {
-          "radius": 2,
-          "lineWidth": 1,
-          "fillColor": "white",
-          "lineColor": null
-        },
-        "animation": {"duration":400}
-      }
-    },
-    "colors": [
-      "#4572A7",
-      "#AA4643",
-      "#89A54E",
-      "#80699B",
-      "#3D96AE",
-      "#DB843D",
-      "#92A8CD",
-      "#A47D7C",
-      "#B5CA92"
-    ],
-    "credits": {
-      "enabled": false
-    }
-
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/charts/sparklines.js
----------------------------------------------------------------------
diff --git a/deleted/charts/sparklines.js b/deleted/charts/sparklines.js
deleted file mode 100644
index 29551c5..0000000
--- a/deleted/charts/sparklines.js
+++ /dev/null
@@ -1,2 +0,0 @@
-$('.sessions-bar').sparkline([ 3, 5, 6, 3, 4, 5, 6, 7, 8, 4, 3, 5, 6, 3, 4, 5, 6, 7, 8, 4, 3, 5, 6, 3, 4, 5, 6, 7, 8, 4, 3, 5, 6, 3, 4, 5, 6, 7, 8, 4, 3, 5, 6, 3, 4, 5, 6, 7, 8, 4, 3, 5, 6, 3, 4, 5, 6, 7, 8, 1 ], {type: 'bar', barColor: '#c5c5c5', width: '800px', height: 100, barWidth: 12, barSpacing: '1px'});
-// $('.sessions-bar canvas').width('100%')
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/coming_soon.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/coming_soon.html b/deleted/dist-cov/usergrid-portal/archive/coming_soon.html
deleted file mode 100644
index ae609d3..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/coming_soon.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<body>
-<div id="fullContainer">
-  <div class="navbar navbar-fixed-top">
-    <h1 class="apigee"><a href="https://apigee.com" target="_blank"><img src="images/apigee-logo.png">apigee</a></h1>
-    <h2 id="ActualPage1">App Services Admin Portal</h2>
-    <ul id="loginMenu" class="nav secondary-nav">
-      <li><a id="login-link" href="#"><i class="icon-user"></i> Login</a></li>
-      <li><a id="signup-link" href="#">Sign Up</a></li>
-      <li><a id="forgot-password-link" href="#"><i class="icon-lock"></i> Forgot Password</a></li>
-    </ul>
-  </div>
-  <div id="coming_soon">
-    <div class="huge">
-      Coming Soon
-    </div>
-    <br />
-    <div class="bigbig">
-      Thanks for checking us out, we're almost ready!
-    </div>
-    <div class="big">
-      Find out more about App Services <a href="#"><strong>here</strong></a>
-    </div>
-  </div>
-  <footer>
-    <div class="container-fluid">
-      <span id="copyright" class="pull-right">&copy; 2012 Apigee Corp. All rights reserved.</span>
-    </div>
-  </footer>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/config.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/config.js b/deleted/dist-cov/usergrid-portal/archive/config.js
deleted file mode 100644
index 9cebdac..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/config.js
+++ /dev/null
@@ -1,72 +0,0 @@
-var Usergrid = Usergrid || {};
-
-Usergrid.showNotifcations = true;
-
-
-// used only if hostname does not match a real server name
-Usergrid.overrideUrl = 'https://api.usergrid.com/';
-
-Usergrid.options = {
-  client:{
-    requiresDeveloperKey:false
-   // apiKey:'123456'
-  },
-  showAutoRefresh:true,
-  autoUpdateTimer:61, //seconds
-  menuItems:[
-    {path:'#!/org-overview', active:true,pic:'&#128362;',title:'Org Administration'},
-    {path:'#!/getting-started/setup',pic:'&#128640;',title:'Getting Started'},
-    {path:'#!/app-overview/summary',pic:'&#59214;',title:'App Overview',
-      items:[
-        {path:'#!/app-overview/summary',pic:'&#128241;',title:'Summary'}
-      ]
-    },
-    {
-      path:'#!/users',pic:'&#128100;',title:'Users',
-      items:[
-        {path:'#!/users',pic:'&#128100;',title:'Users'},
-        {path:'#!/groups',pic:'&#128101;',title:'Groups'},
-        {path:'#!/roles',pic:'&#59170;',title:'Roles'}
-      ]
-    },
-    {
-      path:'#!/data',pic:'&#128248;',title:'Data',
-      items:[
-        {path:'#!/data',pic:'&#128254;',title:'Collections'}
-      ]
-    },
-    {
-      path:'#!/activities',pic:'&#59194;',title:'Activities'
-    },
-    {path:'#!/shell',pic:'&#9000;',title:'Shell'}
-  ]
-};
-
-Usergrid.regex = {
-  appNameRegex: new RegExp("^[0-9a-zA-Z.-]{3,25}$"),
-  usernameRegex: new RegExp("^[0-9a-zA-Z\.\_-]{4,25}$"),
-  nameRegex: new RegExp("^([0-9a-zA-Z@#$%^&!?;:.,'\"~*-:+_\[\\](){}/\\ |]{3,60})+$"),
-  roleNameRegex: new RegExp("^([0-9a-zA-Z./-]{3,25})+$"),
-  emailRegex: new RegExp("^(([0-9a-zA-Z]+[_\+.-]?)+@[0-9a-zA-Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+$"),
-  passwordRegex: /(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/,
-  pathRegex: new RegExp("^/[a-zA-Z0-9\.\*_~-]+(\/[a-zA-Z0-9\.\*_~-]+)*$"),
-  titleRegex: new RegExp("[a-zA-Z0-9.!-?]+[\/]?"),
-  urlRegex: new RegExp("^(http?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$"),
-  zipRegex: new RegExp("^[0-9]{5}(?:-[0-9]{4})?$"),
-  countryRegex: new RegExp("^[A-Za-z ]{3,100}$"),
-  stateRegex: new RegExp("^[A-Za-z ]{2,100}$"),
-  collectionNameRegex: new RegExp("^[0-9a-zA-Z_.]{3,25}$"),
-  appNameRegexDescription: "This field only allows : A-Z, a-z, 0-9, dot, and dash and must be between 3-25 characters.",
-  usernameRegexDescription: "This field only allows : A-Z, a-z, 0-9, dot, underscore and dash. Must be between 4 and 15 characters.",
-  nameRegexDescription: "Please enter a valid name. Must be betwee 3 and 60 characters.",
-  roleNameRegexDescription: "Role only allows : /, a-z, 0-9, dot, and dash. Must be between 3 and 25 characters.",
-  emailRegexDescription: "Please enter a valid email.",
-  passwordRegexDescription: "Password must contain at least 1 upper and lower case letter, one number or special character and be at least 8 characters.",
-  pathRegexDescription: "Path must begin with a slash, path only allows: /, a-z, 0-9, dot, and dash, paths of the format:  /path/ or /path//path are not allowed",
-  titleRegexDescription: "Please enter a valid title.",
-  urlRegexDescription: "Please enter a valid url",
-  zipRegexDescription: "Please enter a valid zip code.",
-  countryRegexDescription: "Sorry only alphabetical characters or spaces are allowed. Must be between 3-100 characters.",
-  stateRegexDescription: "Sorry only alphabetical characters or spaces are allowed. Must be between 2-100 characters.",
-  collectionNameRegexDescription: "Collection name only allows : a-z A-Z 0-9. Must be between 3-25 characters."
-};

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png b/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png
deleted file mode 100644
index 6348115..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_flat_100_deedf7_40x100.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_flat_100_deedf7_40x100.png b/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_flat_100_deedf7_40x100.png
deleted file mode 100644
index 85aaedf..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_flat_100_deedf7_40x100.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_flat_100_e4f1fb_40x100.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_flat_100_e4f1fb_40x100.png b/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_flat_100_e4f1fb_40x100.png
deleted file mode 100644
index 5a501f8..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_flat_100_e4f1fb_40x100.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_flat_100_f2f5f7_40x100.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_flat_100_f2f5f7_40x100.png b/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_flat_100_f2f5f7_40x100.png
deleted file mode 100644
index f0d20dd..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_flat_100_f2f5f7_40x100.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_flat_15_cd0a0a_40x100.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_flat_15_cd0a0a_40x100.png b/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_flat_15_cd0a0a_40x100.png
deleted file mode 100644
index 7680b54..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_flat_15_cd0a0a_40x100.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_flat_50_3baae3_40x100.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_flat_50_3baae3_40x100.png b/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_flat_50_3baae3_40x100.png
deleted file mode 100644
index a966891..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_flat_50_3baae3_40x100.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_flat_80_d7ebf9_40x100.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_flat_80_d7ebf9_40x100.png b/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_flat_80_d7ebf9_40x100.png
deleted file mode 100644
index 3f3d137..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_flat_80_d7ebf9_40x100.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_highlight-hard_70_000000_1x100.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_highlight-hard_70_000000_1x100.png b/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_highlight-hard_70_000000_1x100.png
deleted file mode 100644
index d588297..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_highlight-hard_70_000000_1x100.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_highlight-soft_25_ffef8f_1x100.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_highlight-soft_25_ffef8f_1x100.png b/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_highlight-soft_25_ffef8f_1x100.png
deleted file mode 100644
index 54aff0c..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-bg_highlight-soft_25_ffef8f_1x100.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-icons_000000_256x240.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-icons_000000_256x240.png b/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-icons_000000_256x240.png
deleted file mode 100644
index 7c211aa..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-icons_000000_256x240.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-icons_2694e8_256x240.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-icons_2694e8_256x240.png b/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-icons_2694e8_256x240.png
deleted file mode 100644
index e62b8f7..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-icons_2694e8_256x240.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-icons_2e83ff_256x240.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-icons_2e83ff_256x240.png b/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-icons_2e83ff_256x240.png
deleted file mode 100644
index 09d1cdc..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-icons_2e83ff_256x240.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-icons_3d80b3_256x240.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-icons_3d80b3_256x240.png b/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-icons_3d80b3_256x240.png
deleted file mode 100644
index 52c3cc6..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-icons_3d80b3_256x240.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-icons_72a7cf_256x240.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-icons_72a7cf_256x240.png b/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-icons_72a7cf_256x240.png
deleted file mode 100644
index 0d20b73..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-icons_72a7cf_256x240.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-icons_ffffff_256x240.png
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-icons_ffffff_256x240.png b/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-icons_ffffff_256x240.png
deleted file mode 100644
index 42f8f99..0000000
Binary files a/deleted/dist-cov/usergrid-portal/archive/css/custom-theme/images/ui-icons_ffffff_256x240.png and /dev/null differ


[19/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/app/console.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/app/console.js b/deleted/dist-cov/usergrid-portal/archive/js/app/console.js
deleted file mode 100644
index cb6da03..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/app/console.js
+++ /dev/null
@@ -1,5397 +0,0 @@
-function apigee_console_app(Pages, query_params) {
-  //This code block *WILL NOT* load before the document is complete
-  window.Usergrid = window.Usergrid || {};
-  Usergrid.console = Usergrid.console || {};
-
-  // for running Apigee App Services as a local server
-  var LOCAL_STANDALONE_API_URL = "http://localhost/usergrid";
-  var LOCAL_TOMCAT_API_URL = "http://localhost:8080/ROOT";
-  var LOCAL_API_URL = LOCAL_STANDALONE_API_URL;
-  var PUBLIC_API_URL = "https://api.usergrid.com/";
-  var FORCE_PUBLIC_API = true; // Always use public API
-  if (!FORCE_PUBLIC_API && (document.domain.substring(0,9) == "localhost")) {
-    Usergrid.ApiClient.setApiUrl(LOCAL_API_URL);
-  }
-
-  String.prototype.endsWith = function (s) {
-    return (this.length >= s.length && this.substr(this.length - s.length) == s);
-  };
-
-  if (query_params.api_url) {
-    if (!query_params.api_url.endsWith('/')) {
-      query_params.api_url += '/';
-    }
-    Usergrid.ApiClient.setApiUrl(query_params.api_url);
-  } else {
-    if(window.location.host === 'localhost'){
-      //local = DIT
-      Usergrid.ApiClient.setApiUrl('http://apigee-internal-prod.jupiter.apigee.net/');
-    }if(window.location.host === 'appservices.apigee.com' && location.pathname.indexOf('/dit') >= 0){
-      //DIT
-      Usergrid.ApiClient.setApiUrl('http://apigee-internal-prod.jupiter.apigee.net/');
-    }else if(window.location.host === 'appservices.apigee.com' && location.pathname.indexOf('/mars') >= 0 ){
-      //staging
-      Usergrid.ApiClient.setApiUrl('http://apigee-internal-prod.mars.apigee.net/');
-    }
-  }
-  //Display message page in case there is a a timeout to the API
-  Usergrid.ApiClient.setCallTimeoutCallback(function(){
-    showMessagePage();
-  });
-
-  var HIDE_CONSOLE = query_params.hide_console || "";
-
-  if (HIDE_CONSOLE.indexOf("true") >= 0) {
-    $('#sidebar-menu ul li a[href="#console"]').hide();
-  }
-
-  var OFFLINE = false;
-  var OFFLINE_PAGE = "#query-page";
-
-  var self = this;
-
-  var emailRegex = new RegExp("^(([0-9a-zA-Z]+[_\+.-]?)+@[0-9a-zA-Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+$");
-  var emailAllowedCharsMessage = 'eg. example@apigee.com';
-
-  var passwordRegex = new RegExp("^([0-9a-zA-Z@#$%^&!?<>;:.,'\"~*=+_\[\\](){}/\\ |-])+$");
-  var passwordAllowedCharsMessage = 'This field only allows: A-Z, a-z, 0-9, ~ @ # % ^ & * ( ) - _ = + [ ] { } \\ | ; : \' " , . < > / ? !';
-  var passwordMismatchMessage = 'Password must match';
-
-  var usernameRegex = new RegExp("^([0-9a-zA-Z\.\_-])+$");
-  var usernameAllowedCharsMessage = 'This field only allows : A-Z, a-z, 0-9, dot, underscore and dash';
-
-  var organizationNameRegex = new RegExp ("^([0-9a-zA-Z.-])+$");
-  var organizationNameAllowedCharsMessage = 'This field only allows : A-Z, a-z, 0-9, dot, and dash';
-
-  //Regex declared differently from al the others because of the use of ". Functions exacly as if it was called from new RegExp
-  var nameRegex = /[0-9a-zA-ZáéíóúÁÉÍÓÚÑñ@#$%\^&!\?;:\.,'\"~\*-=\+_\(\)\[\]\{\}\|\/\\]+/;
-  var nameAllowedCharsMessage = "This field only allows: A-Z, a-z, áéíóúÁÉÍÓÚÑñ, 0-9, ~ @ # % ^ & * ( ) - _ = + [ ] { } \\ | ; : \' \" , . / ? !";
-
-  var titleRegex = new RegExp("[a-zA-Z0-9.!-?]+[\/]?");
-  var titleAllowedCharsMessage = 'Title field only allows : space, A-Z, a-z, 0-9, dot, dash, /, !, and ?';
-
-  var alphaNumRegex = new RegExp("[0-9a-zA-Z]+");
-  var alphaNumAllowedCharsMessage = 'Collection name only allows : a-z A-Z 0-9';
-
-  var pathRegex = new RegExp("^[^\/]*([a-zA-Z0-9\.-]+[\/]{0,1})+[^\/]$");
-  var pathAllowedCharsMessage = 'Path only allows : /, a-z, 0-9, dot, and dash, paths of the format: /path, path/, or path//path are not allowed';
-
-  var roleRegex = new RegExp("^([0-9a-zA-Z./-])+$");
-  var roleAllowedCharsMessage = 'Role only allows : /, a-z, 0-9, dot, and dash';
-
-  var intRegex = new RegExp("^([0-9])+$");
-
-  var applications = {};
-  var applications_by_id = {};
-
-  var current_application_id = "";
-  var current_application_name = {};
-  var applicationData = {};
-
-  var query_entities = null;
-  var query_entities_by_id = null;
-
-  var query_history = [];
-
-  var indexes = [];
-  var backgroundGraphColor = '#ffffff';
-
-  String.prototype.startsWith = function(s) {
-    return this.lastIndexOf(s, 0) === 0;
-  };
-
-  String.prototype.endsWith = function(s) {
-    return this.length >= s.length
-      && this.substr(this.length - s.length) == s;
-  };
-
-  $("#fixme").click(function(e){
-    e.preventDefault();
-    $('#application-panel-buttons').css('position', 'relative');
-  });
-
-  function clearBackgroundImage(){
-    $('body').css({'background-image' : 'none'});
-  }
-  Usergrid.console.clearBackgroundImage = clearBackgroundImage;
-  function setColumnBackgroundImage(){
-//    $('body').css({background : 'url(images/background_one_col.png)  repeat-y'});
-  }
-  Usergrid.console.setColumnBackgroundImage = setColumnBackgroundImage;
-
-  function initOrganizationVars() {
-    applications = {};
-    applications_by_id = {};
-
-    current_application_id = "";
-    current_application_name = "";
-
-    query_entities = null;
-    query_entities_by_id = null;
-
-    query_history = [];
-
-    indexes = [];
-  }
-
-  function keys(o) {
-    var a = [];
-    for (var propertyName in o) {
-      a.push(propertyName);
-    }
-    return a;
-  }
-
-  $('#api-activity').ajaxStart( function() {
-    $(this).show();
-  });
-
-  $('#api-activity').ajaxComplete( function() {
-    $(this).hide();
-  });
-
-  function showPanel(page) {
-    var p = $(page);
-    $("#console-panels").children().each(function() {
-      if ($(this).attr("id") == p.attr("id")) {
-        $(this).show();
-      } else {
-        $(this).hide();
-      }
-    });
-  }
-
-  function initConsoleFrame(){
-    $("#console-panel iframe").attr("src", url);
-  }
-
-  function getAccessTokenURL(){
-    var bearerToken = Usergrid.ApiClient.getToken();
-    var app_name = Usergrid.ApiClient.getApplicationName();
-    if (typeof app_name != 'string') {
-      app_name = '';
-    }
-    var org_name = Usergrid.ApiClient.getOrganizationName();
-    if (typeof org_name != 'string') {
-      org_name = '';
-    }
-    var bearerTokenJson = JSON.stringify(
-      [{
-        "type":"custom_token",
-        "name":"Authorization",
-        "value":"Bearer " + bearerToken,
-        "style":"header"
-      }, {
-        "type":"custom_token",
-        "name":"app_name",
-        "value":app_name,
-        "style":"template"
-      }, {
-        "type":"custom_token",
-        "name":"org_name",
-        "value":org_name,
-        "style":"template"
-      }]
-    );
-    var bearerTokenString = encodeURIComponent(bearerTokenJson);
-    var url = 'https://apigee.com/apigeedev/console/usergrid?v=2&embedded=true&auth=' + bearerTokenString;
-    return url;
-  }
-  Usergrid.console.getAccessTokenURL = getAccessTokenURL;
-
-  function showPanelContent(panelDiv, contentDiv) {
-    var cdiv = $(contentDiv);
-    $(panelDiv).children(".panel-content").each(function() {
-      var el = $(this);
-      if (el.attr("id") == cdiv.attr("id")) {
-        el.show();
-      } else {
-        el.hide();
-      }
-    });
-  }
-
-  function selectTabButton(link) {
-    var tab = $(link).parent();
-    tab.parent().find("li.active").removeClass('active');
-    tab.addClass('active');
-  }
-
-  function selectPillButton(link) {
-    var tab = $(link);
-    tab.parent().find("a.active").removeClass('active');
-    tab.addClass('active');
-  }
-  function selectFirstTabButton(bar){
-    selectTabButton($(bar).find("li:first-child a"));
-  }
-
-  function setNavApplicationText() {
-    var name = Usergrid.ApiClient.getApplicationName();
-    if(!name) {
-      name = "Select an Application";
-    }
-    $('#current-app-name').html('<div class="app-menu">' + name + '</div>  <span class="caret"></span>');
-    //  $('.thingy span.title span.app_title').text(" " + name);
-    $('#nav-app-name').html(name);
-  }
-
-  function escapeMe(obj) {
-    for (var property in obj) {
-      if (obj.hasOwnProperty(property)){
-        if (obj[property] && obj[property].constructor == Object || obj[property] instanceof Array) {
-          var prop = encodeURIComponent(property);
-          var value = obj[property];
-          delete obj[property];
-          obj[prop] = value;
-          escapeMe(obj[prop]);
-        }
-        else {
-          if (property === 'picture') continue;
-          var prop = escapeString(property);
-          var value = escapeString(obj[property]);
-          delete obj[property];
-          obj[prop] = value;
-          if (property === 'created' || property === 'modified') {
-            try {
-              obj[property] = parseInt(obj[property]);
-            }catch(e){}
-          }
-        }
-      }
-    }
-    return obj;
-  }
-
-  function escapeString(str) {
-    return String(str)
-      .replace(/&/g, '&amp;')
-      .replace(/"/g, '&quot;')
-      .replace(/'/g, '&#39;')
-      .replace(/</g, '&lt;')
-      .replace(/>/g, '&gt;');
-  }
-
-  /*******************************************************************
-   *
-   * Collections
-   *
-   ******************************************************************/
-
-  function pageSelectCollections() {
-    hideModal(' #collections-messages')
-    getCollections();
-  }
-  window.Usergrid.console.pageSelectCollections = pageSelectCollections;
-
-  function getCollections() {
-    //clear out the table before we start
-    var output = $('#collections-table');
-    output.empty();
-    hideCurlCommand('collections');
-    var section =$('#application-collections');
-    section.empty().html('<div class="alert alert-info">Loading...</div>');
-
-    var queryObj = new Usergrid.Query("GET",'', null, null, getCollectionsCallback,
-      function() { alertModal("Error", "There was an error getting the collections"); }
-    );
-
-    runAppQuery(queryObj);
-    return false;
-  }
-
-  function compare(a,b) {
-    if (a.name < b.name)
-      return -1;
-    if (a.name > b.name)
-      return 1;
-    return 0;
-  }
-
-  function getCollectionsCallback(response) {
-    //response = escapeMe(response);
-
-    $('#collections-pagination').hide();
-    $('#collections-next').hide();
-    $('#collections-previous').hide();
-    showEntitySelectButton();
-    if (response.entities && response.entities[0] && response.entities[0].metadata && response.entities[0].metadata.collections) {
-      applicationData.Collections = response.entities[0].metadata.collections;
-      updateApplicationDashboard();
-      updateQueryAutocompleteCollections();
-    }
-
-    var data = response.entities[0].metadata.collections;
-    var output = $('#collections-table');
-
-    var elements = [];
-    for (var key in data) {
-      if (data.hasOwnProperty(key)) {
-        elements.push(data[key])
-      }
-    }
-    var currentPath = $("#query-path").val();
-    elements.sort(compare)
-    var r = {};
-    if ($.isEmptyObject(data)) {
-      output.replaceWith('<div id="collections-table" class="collection-panel-section-message">No collections found.</div>');
-    } else {
-      output.replaceWith('<table id="collections-table" class="table"><tbody></tbody></table>');
-      var leftMenuContent = '<ul id="collections-link-buttons" class="nav nav-list" style="margin-bottom: 5px;">';
-      for (var i=0;i<elements.length;i++) {
-        r.name = elements[i];
-        r.count = data[elements[i].count];
-        var name = escapeString(elements[i].name);
-        $.tmpl('apigee.ui.collections.table_rows.html', r).appendTo('#collections-table');
-        var active = (currentPath == "/"+name)?'class="active"':'';
-        var link = "Usergrid.console.pageOpenQueryExplorer('"+name+"'); return false;";
-        leftMenuContent += '<li id="collections-link-button-'+name+'" '+active+'><a href="#" onclick="'+link+'" class="collection-nav-links"><span class="nav-menu-text">/'+name+'</span></a></li>';
-      }
-
-      leftMenuContent += '</ul>';
-      $('#left-collections-content').html(leftMenuContent);
-    }
-    showCurlCommand('collections', this.getCurl(), this.getToken());
-  }
-
-  /*******************************************************************
-   *
-   * Query Explorer
-   *
-   ******************************************************************/
-
-  function pageOpenQueryExplorer(collection) {
-
-    collection = collection || "";
-    showPanel("#collections-panel");
-    hideMoreQueryOptions();
-    //reset the form fields
-    $("#query-path").val("");
-    $("#query-source").val("");
-    $("#query-ql").val("");
-    showQueryCollectionView();
-    query_history = [];
-    //Prepare Collection Index Dropdown Menu
-    requestIndexes(collection);
-    //bind events for previous and next buttons
-    bindPagingEvents('query-response');
-    //clear out the table before we start
-    var output = $('#query-response-table');
-    output.empty();
-    //if a collection was provided, go ahead and get the default data
-    if (collection) {
-      getCollection('GET', collection);
-    }
-  }
-  window.Usergrid.console.pageOpenQueryExplorer = pageOpenQueryExplorer;
-
-  $("#query-help").click(function(e){
-    e.preventDefault();
-    $('#queryHelpModal').modal('show');
-  });
-  $("#query-method-help").click(function(e){
-    e.preventDefault();
-    $('#queryMethodHelpModal').modal('show');
-  });
-  $("#query-path-help").click(function(e){
-    e.preventDefault();
-    $('#queryPathHelpModal').modal('show');
-  });
-  $("#query-limit-help").click(function(e){
-    e.preventDefault();
-    $('#queryLimitHelpModal').modal('show');
-  });
-  $("#query-json-help").click(function(e){
-    e.preventDefault();
-    $('#queryJsonHelpModal').modal('show');
-  });
-
-
-  //change contexts for REST operations
-  $("#button-query-get").click(function(){
-    $("#query-json-box").hide();
-    $("#query-query-box").show();
-    $("#query-limit-box").show();
-  });
-
-  $("#button-query-post").click(function(){
-    $("#query-json-box").show();
-    $("#query-query-box").hide();
-    $("#query-limit-box").hide();
-  });
-
-  $("#button-query-put").click(function(){
-    $("#query-json-box").show();
-    $("#query-query-box").show();
-    $("#query-limit-box").hide();
-  });
-
-  $("#button-query-delete").click(function(){
-    $("#query-json-box").hide();
-    $("#query-query-box").show();
-    $("#query-limit-box").hide();
-  });
-
-  $("#data-explorer-link").click(function(){
-    $('#data-explorer').show();
-    $('#query-path').val('');
-    $("#query-response-area").hide();
-  });
-
-  var queryPath = '';
-  function runCollectionQuery(){
-    var method;
-
-
-    //Select method to use
-    if($('#button-query-get').prop('checked') ){
-      method = 'GET';
-    } else if($('#button-query-post').prop('checked')){
-      method = 'POST';
-    } else if($('#button-query-put').prop('checked')){
-      method = 'PUT';
-    } else if($('#button-query-delete').prop('checked')){
-      method = 'DELETE';
-    } else {
-      alertModal("Notice", "Please select a method.");
-      return;
-    }
-
-
-    //If jsonBody is empty fill it with empty brackets
-    if($('#query-source').val() === '') {
-      $("#query-source").val('{"name":"value"}');
-    }
-    getCollection(method);
-  }
-
-  window.Usergrid.console.getCollection = getCollection;
-
-  function getCollection(method, path){
-    $("#data-explorer-status").html('Working...');
-    $("#data-explorer-status").show();
-
-    //get the data to run the query
-    if(!path){
-      var path = $("#query-path").val();
-    }
-    var path=path.replace("//","/");
-    if(method.toUpperCase() !== 'GET' && method.toUpperCase() !== 'DELETE'){
-      var data = $("#query-source").val();
-      try{
-        validateJson();
-        StatusBar.hideAlert();
-        data = JSON.parse(data);
-      } catch (e) {
-        alertModal("Error", "There is a problem with your JSON.");
-        return false;
-      }
-    }
-
-    var params = {};
-    var ql = $("#query-ql").val();
-    params.ql = ql;
-    if(method.toUpperCase() === 'GET'){
-      var limit = $("#query-limit").val();
-      params.limit = limit;
-    }
-
-    queryPath = path;
-
-    queryObj = new Usergrid.Query(method, path, data, params, getCollectionCallback, function(response) { alertModal("Error", response) });
-    runAppQuery(queryObj);
-  }
-
-  function getCollectionCallback(response) {
-    response = escapeMe(response);
-    setTimeout(function(){$("#data-explorer-status").hide();},3000);
-    $('body').scrollTop(0);
-    hidePagination('query-response');
-    $('#query-response-area').show();
-    if (response.action == 'post') {
-      pageSelectCollections();
-    }
-
-
-    $("#data-explorer-status").html('API call completed');
-
-    var path = response.path || "";
-    path = "" + path.match(/[^?]*/);
-    var path_no_slashes = "";
-    try {
-      path_no_slashes = response.path.replace(/\//g,'');
-    } catch(e) {}
-
-    $("#collections-link-buttons li").removeClass('active');
-    $("#collections-link-button-"+path_no_slashes).addClass('active');
-
-    if(response.action === ("delete")){
-      getCollection("GET", path);
-      return;
-    }
-
-    var slashes = (queryPath.split("/").length -1)
-    if (!slashes && queryPath.length > 0) {
-      queryPath = "/" + queryPath;
-    }
-    $('#query-path').val(queryPath);
-
-    $("#collection-type-field").html(response.path);
-    var output = $('#query-response-table');
-    if (response.entities) {
-      if (response.entities.length == 1 && slashes > 1){
-        generateBackToCollectionButton(response.path);
-      } else {
-        $('#back-to-collection').hide();
-      }
-      if (response.entities.length < 1) {
-        output.replaceWith('<table id="query-response-table" class="table"><tbody><tr class="zebraRows users-row"><td>No entities found</td></tr></table>');
-      } else {
-        //Inform the user of a valid query
-
-        var entity_type = response.entities [0].type;
-
-        var table = '<table id="query-response-table" class="table"><tbody><tr class="zebraRows users-row">' +
-          '<td class="checkboxo"><input type="checkbox" onclick="Usergrid.console.selectAllEntities(this);" /></td>';
-        if (entity_type === 'user') {
-          table += '<td class="gravatar50-td">&nbsp;</td>'+
-            '<td class="user-details bold-header">Username</td>'+
-            '<td class="user-details bold-header">Display Name</td>';
-        } else if (entity_type === 'group') {
-          table += '<td class="user-details bold-header">Path</td>'+
-            '<td class="user-details bold-header">Title</td>';
-        } else if (entity_type === 'role') {
-          table += '<td class="user-details bold-header">Title</td>'+
-            '<td class="user-details bold-header">Rolename</td>';
-        } else {
-          table += '<td class="user-details bold-header">Name</td>';
-        }
-        table += '<td class="user-details bold-header">UUID</td>';
-        table += '<td class="view-details">&nbsp;</td>' +
-          '</tr></tbody></table>';
-        output.replaceWith(table);
-        var this_data = {}
-        this_data.path = response.path;
-        for (i = 0; i < response.entities.length; i++) {
-          this_data.r = response.entities [i];
-          //next get a table view of the object
-          this_data.content = buildContentArea(response.entities [i]);
-
-
-          //get a json representation of the object
-          this_data.json = JSON.stringify(response.entities [i], null, 2);
-
-          if (this_data.type === 'user') {
-            if (!this_data.r.picture) {
-              this_data.r.picture = window.location.protocol+ "//" + window.location.host + window.location.pathname + "images/user-photo.png"
-            } else {
-              this_data.r.picture = get_replacementGravatar(this_data.r.picture);
-            }
-          } else {
-            if (!this_data.r.name) {
-              this_data.r.name = '[No value set]';
-            }
-          }
-          $.tmpl('apigee.ui.collection.table_rows.html', this_data).appendTo('#query-response-table');
-        }
-
-      }
-    } else if (response.list) {
-
-      var query = response.params.ql[0];
-      query = query.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
-      query = query.substr(6, query.length);
-      query = query.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
-      query = query.substring(0, query.indexOf("where"));
-      var params = query.split(",");
-
-      var table = '<table id="query-response-table" class="table"><tbody><tr class="zebraRows users-row">';
-
-      for (i = 0; i < params.length; i++) {
-        table +='<td class="user-details bold-header">'+params[i].replace(/^\s\s*/, '').replace(/\s\s*$/, '')+'</td>';
-      }
-      for (i = 0; i < response.list.length; i++) {
-        var list = response.list[i];
-        table += '<tr class="zebraRows users-row">';
-        for (j = 0; j < list.length; j++) {
-          var value = list[j];
-          if (!value) { value = '[no value]'; }
-          table +='<td class="details">'+value+'</td>';
-        }
-        table += '</tr>';
-      }
-
-      table += '</table>';
-      output.replaceWith(table);
-
-    } else {
-      output.replaceWith('<table id="query-response-table" class="table"><tbody><tr class="zebraRows users-row"><td>No entities found</td></tr></table>');
-    }
-
-    showPagination('query-response');
-  }
-
-
-  function buildContentArea(obj2) {
-    function getProperties(obj, keyType){
-      var output = '';
-      for (var property in obj) {
-        if (property == 'metadata') { keyType = 'metadata'; }
-        else if (property == 'collections') { keyType = 'collections'; }
-        else { keyType = ''; }
-
-        output += '<tr>';
-        if (obj.hasOwnProperty(property)){
-          if (obj[property] && obj[property].constructor == Object || obj[property] instanceof Array) {
-
-            var prop = (obj[property] instanceof Array)?property:'';
-            //console.log('**Object -> '+property+': ');
-            output += '<td>'+prop+'</td><td style="padding: 0"><table><tr>';
-            output += getProperties(obj[property], keyType);
-            output += '</td></tr></table>';
-          }
-          else {
-            //console.log(property + " " + obj[property]);
-            if (keyType == 'metadata' || keyType == 'collections') {
-              var link = '<a href="#" onclick="Usergrid.console.pageOpenQueryExplorer(\''+obj[property]+'\'); return false;">'+obj[property]+'</a>';
-              output += '<td>'+property+'</td><td>'+link+'</td>';
-            } else {
-              var htmlescaped = htmlEscape(obj[property]);
-              output += '<td>'+property+'</td><td>'+htmlescaped+'</td>';
-            }
-          }
-        }
-        output += '</tr>';
-      }
-      return output;
-    }
-    var output = getProperties(obj2, '');
-    return '<table>' + output + '</table>';
-  }
-  function htmlEscape(str) {
-    return String(str)
-      .replace(/&/g, '&amp;')
-      .replace(/"/g, '&quot;')
-      .replace(/'/g, '&#39;')
-      .replace(/</g, '&lt;')
-      .replace(/>/g, '&gt;');
-  }
-
-
-
-
-  function activateQueryRowJSONButton() {
-    $("#button-query-show-row-JSON").removeClass('disabled').addClass('active');
-    $("#button-query-show-row-content").removeClass('active').addClass('disabled');
-  }
-  window.Usergrid.console.activateQueryRowJSONButton = activateQueryRowJSONButton;
-
-  function activateQueryRowContentButton() {
-    $("#button-query-show-row-JSON").removeClass('active').addClass('disabled');
-    $("#button-query-show-row-content").removeClass('disabled').addClass('active');
-  }
-  window.Usergrid.console.activateQueryRowContentButton = activateQueryRowContentButton;
-
-  function showQueryCollectionView() {
-    $('#query-collection-info').show();
-    $('#query-detail-info').hide();
-    $('#query-ql-box').show();
-    $('#back-to-collection').hide();
-  }
-
-
-
-  function generateBackToCollectionButton(returnPath) {
-    var backButton = $('#back-to-collection');
-    if(backButton.attr('onclick')){
-      backButton.removeAttr('onclick');
-    }
-    backButton.attr('onclick',"Usergrid.console.getCollection('GET','" + returnPath+ "')");
-    $('#back-to-collection').show();
-  }
-
-  $.fn.loadEntityCollectionsListWidget = function() {
-    this.each(function() {
-      var entityType = $(this).dataset('entity-type');
-      var entityUIPlugin = "apigee_collections_" + entityType + "_list_item";
-      if (!$(this)[entityUIPlugin]) {
-        entityUIPlugin = "apigee_collections_entity_list_item";
-      }
-      $(this)[entityUIPlugin]();
-    });
-  };
-
-  $.fn.loadEntityCollectionsDetailWidget = function() {
-    this.each(function() {
-      var entityType = $(this).dataset('entity-type');
-      var entityUIPlugin = "apigee_collections_" + entityType + "_detail";
-      if (!$(this)[entityUIPlugin]) {
-        entityUIPlugin = "apigee_collections_entity_detail";
-      }
-      $(this)[entityUIPlugin]();
-    });
-    if (this.length === 1 ){
-      hideEntityCheckboxes();
-      hideEntitySelectButton();
-    }
-  };
-
-  function hideEntityCheckboxes(){
-    $(".listItem").hide();
-    $(".listItem").attr('checked', true);
-  }
-
-  function hideEntitySelectButton(){
-    $("#selectAllCollections").hide();
-  }
-  function showEntitySelectButton(){
-    $("#selectAllCollections").show();
-  }
-
-  function getQueryResultEntity(id) {
-    if (query_entities_by_id) {
-      return query_entities_by_id[id];
-    }
-    return null;
-  }
-  window.Usergrid.console.getQueryResultEntity = getQueryResultEntity;
-
-  function showQueryStatus(s, _type) {
-    StatusBar.showAlert(s, _type);
-  }
-
-  function expandQueryInput() {
-    $('#query-source').height(150);
-    $('#button-query-shrink').show();
-    $('#button-query-expand').hide();
-    return false;
-  }
-
-  function shrinkQueryInput() {
-    $('#query-source').height(60);
-    $('#button-query-shrink').hide();
-    $('#button-query-expand').show();
-    return false;
-  }
-
-  InitQueryPanel();
-  function InitQueryPanel(){
-    $('#query-source').focus(function(){
-      expandQueryInput();
-      prepareQueryInput(this);
-    });
-    //$('#query-source').keyup(function(){activateJSONValidator('#button-query-validate', '#query-source');})
-    $('#button-query-validate').click(function() {validateJson();return false;});
-    $('#button-query-shrink').click(shrinkQueryInput);
-    $('#button-query-expand').click(expandQueryInput);
-
-    $('#button-query').click(function(){runCollectionQuery(); return false;});
-
-  }
-
-  function prepareQueryInput(selector) {
-    var queryInput = $(selector);
-    if( queryInput.val() === ""){
-      queryInput.val("{\n\n}");
-    }
-  }
-
-  function activateJSONValidator(valButton, jsonArea) {
-    var validatorButton = $(valButton);
-    var textArea = $(jsonArea)
-    if(validatorButton.hasClass('disabled')){
-      validatorButton.removeClass('disabled');
-      validatorButton.click(function() {validateJson();return false;});
-    } else if(textArea.val() === "") {
-      validatorButton.addClass('disabled');
-      validatorButton.unbind('click');
-    }
-  }
-
-  function showMoreQueryOptions() {
-    $('.query-more-options').show();
-    $('.query-less-options').hide();
-    $('#query-ql').val("");
-    $('#query-source').val("{ }");
-  }
-
-  function hideMoreQueryOptions() {
-    $('.query-more-options').hide();
-    $('.query-less-options').show();
-    $('#query-ql').val("");
-    $('#query-source').val("");
-  }
-
-  function toggleMoreQueryOptions() {
-    $('.query-more-options').toggle();
-    $('.query-less-options').toggle();
-    $('#query-ql').val("");
-    $('#query-source').val("");
-  }
-
-  $('#button-query-more-options').click(function() {
-    toggleMoreQueryOptions();
-    return false;
-  });
-
-  $('#button-query-less-options').click(function() {
-    toggleMoreQueryOptions();
-    return false;
-  });
-
-  $('#query-source').keydown(function(e) {
-    var key = e.keyCode || e.which;
-
-    if ((key == 9 || key ===13)) {
-      e.preventDefault();
-      //Get cursor position
-      var start = this.selectionStart;
-      var end = this.selectionEnd;
-      var field = $(this);
-      var value = field.val();
-      //insert Text and indentation
-      field.val(value.substring(0, start) + '\r  ' + value.substring(end));
-      //return cursor to its position
-      this.selectionStart = this.selectionEnd = start + 1;
-    }
-  });
-
-  function validateJson() {
-    try {
-      var result = JSON.parse($('#query-source').val());
-      if (result) {
-        showQueryStatus('JSON is valid!');
-        $('#query-source').val(JSON.stringify(result, null, "  "));
-        return result;
-      }
-    } catch(e) {
-      showQueryStatus(e.toString(), "error");
-    }
-    return false;
-  };
-
-  window.Usergrid.console.doChildClick = function(event) {
-    var path = new String($('#query-path').val());
-    if (!path.endsWith("/")) {
-      path += "/";
-    }
-    path += event.target.innerText;
-    $('#query-path').val(path);
-  };
-
-  var queryQl = $('#query-ql');
-  queryQl.typeahead({source:indexes});
-
-  function doBuildIndexMenu() {
-    queryQl.data('typeahead').source = indexes;
-  }
-
-  $('#delete-entity-link').click(deleteEntity);
-
-  function deleteEntity(e) {
-    e.preventDefault();
-    var items = $('#query-response-table input[class=listItem]:checked');
-    if(!items.length){
-      alertModal("Please, first select the entities you want to delete.");
-      return;
-    }
-    var itemsCount = items.size();
-    confirmDelete(function(){
-      items.each(function() {
-        var path = $(this).attr('name');
-        runAppQuery(new Usergrid.Query("DELETE", path, null, null,
-          function(request) {
-            itemsCount--;
-            if(itemsCount==0){
-              $("#query-path").val(request.path);
-              getCollection('GET');
-            }},
-          function() { alertModal("Unable to delete: " + path); }
-        ));
-      });
-    });
-  }
-
-  function requestIndexes(path){
-    var data = {};
-    runAppQuery(new Usergrid.Query("GET", path + "/indexes", null, null,
-      function(response) {
-        if(response && response.data) {
-          data = response;
-        }
-        buildIndexDropdown('query-collections-indexes-list', data);
-
-      }));
-  }
-
-  function buildIndexDropdown(menuId, indexes) {
-    var menu = $("#" + menuId);
-    menu.empty();
-    $.tmpl('apigee.ui.collections.query.indexes.html', indexes).appendTo(menu);
-  }
-
-  function appendToCollectionsQuery(message){
-    var queryTextArea = $("#query-ql");
-    queryTextArea.val(queryTextArea.val()+ " " + message );
-  }
-  window.Usergrid.console.appendToCollectionsQuery = appendToCollectionsQuery;
-
-  /*******************************************************************
-   *
-   * Organization Home
-   *
-   ******************************************************************/
-
-
-  function pageSelectHome() {
-
-    requestAdmins();
-    displayOrganizationName(Usergrid.ApiClient.getOrganizationName());
-    requestOrganizationCredentials();
-    requestAdminFeed();
-  }
-  window.Usergrid.console.pageSelectHome = pageSelectHome;
-
-
-  function displayApplications(response) {
-    applications = {};
-    applications_by_id = {};
-    var appMenu = $('.applications-menu');
-    var appList = $('table#organization-applications-table');
-    appMenu.empty();
-    appList.empty();
-
-    if (response.data) {
-      applications = response.data;
-      var count = 0;
-      var applicationNames = keys(applications).sort();
-      var data = [];
-      var appMenuTmpl = $('<li><a >${name}</a></li>');
-
-      for (var i in applicationNames) {
-        var name = applicationNames[i];
-        var uuid = applications[name];
-        data.push({uuid:uuid, name:name.split("/")[1]});
-        count++;
-        applications_by_id[uuid] = name.split("/")[1];
-      }
-
-      if (count) {
-        $.tmpl('apigee.ui.applications.table_rows.html', data).appendTo(appList);
-        appMenuTmpl.tmpl(data).appendTo(appMenu);
-        appMenuTmpl.tmpl(data)
-        appMenu.find("a").click(function selectApp(e) {
-          var link = $(this);
-          pageSelect(link.tmplItem().data.name);
-          Usergrid.Navigation.router.navigateTo('dashboard');
-        });
-
-        appList.find("a").click(function selectApp(e) {
-          e.preventDefault();
-          var link = $(this);
-          pageSelect(link.tmplItem().data.name);
-          Usergrid.Navigation.router.navigateTo('dashboard');
-        });
-        enableApplicationPanelButtons();
-      }
-      appMenu.append('<li class="divider"></li>');
-      appMenu.append('<li><a class="" data-toggle="modal" href="#dialog-form-new-application"> <strong>+</strong> New Application</a></li>');
-    }
-
-    if(appList.is(":empty")){
-      appList.html('<div class="alert user-panel-section">No applications created.</div>');
-      appMenu.html('<li>--No Apps--</li>');
-      forceNewApp();
-    }
-
-    var appName = Usergrid.ApiClient.getApplicationName();
-    if (!appName) {
-      selectFirstApp();
-    } else {
-      setNavApplicationText();
-    }
-  }
-
-  function requestApplications() {
-    var sectionApps = $('#organization-applications-table');
-    sectionApps.empty().html('<div class="alert alert-info user-panel-section">Loading...</div>');
-    runManagementQuery(new Usergrid.Query("GET","organizations/" + Usergrid.ApiClient.getOrganizationName() + "/applications", null, null,
-      displayApplications,
-      function() {
-        sectionApps.html('<div class="alert user-panel-section">Unable to retrieve application list.</div>');
-      }
-    ));
-  }
-  Usergrid.console.requestApplications = requestApplications;
-
-  function selectFirstApp() {
-    //get the currently specified app name
-    var appName = Usergrid.ApiClient.getApplicationName();
-    //and make sure we it is in one of the current orgs
-    var app = Usergrid.organizations.getItemByName(appName);
-    if(appName && app) {
-      Usergrid.ApiClient.setApplicationName(appName);
-      pageSelect(appName);
-    } else {
-      //we need to select an app, so get the current org name
-      var orgName = Usergrid.ApiClient.getOrganizationName();
-      //get a reference to the org object by using the name
-      var org = Usergrid.organizations.getItemByName(orgName);
-      //get a handle to the first app in the org
-      app = org.getFirstItem();
-      //store the new app in the client
-      Usergrid.ApiClient.setApplicationName(app.getName());
-      pageSelect(app.getName());
-    }
-    setNavApplicationText();
-  }
-
-  function displayAdmins(response) {
-    var sectionAdmins = $('#organization-admins-table');
-    sectionAdmins.empty();
-    if (response.data) {
-      var admins = response.data;
-      admins = admins.sort();
-      for (var i in admins) {
-        var admin = admins[i];
-        admin.gravatar = get_gravatar(admin.email, 20);
-        $.tmpl('apigee.ui.admins.table_rows.html', admin).appendTo(sectionAdmins);
-      }
-    }
-    if(sectionAdmins.is(':empty')){
-      sectionAdmins.html('<div class="alert user-panel-section">No organization administrators.</div>');
-    }
-  }
-
-  function requestAdmins() {
-    var sectionAdmins =$('#organization-admins-table');
-    sectionAdmins.empty().html('<div class="alert alert-info user-panel-section">Loading...</div>');
-    runManagementQuery(new Usergrid.Query("GET","organizations/" + Usergrid.ApiClient.getOrganizationName()  + "/users", null, null,
-      displayAdmins,
-      function() {sectionAdmins.html('<div class="alert user-panel-section">Unable to retrieve admin list</div>');
-      }));
-  }
-
-  $(document).on('click', '.toggleableSP', function() {
-    $(this).parent().find('.toggleableSP').toggle();
-    return false
-  });
-
-  function get_gravatar(email, size) {
-    var size = size || 50;
-    return 'https://secure.gravatar.com/avatar/' + MD5(email) + '?s=' + size + encodeURI("&d=https://apigee.com/usergrid/img/user_profile.png");
-  }
-
-  function get_replacementGravatar(picture) {
-    picture = picture.replace(/^http:\/\/www.gravatar/i, 'https://secure.gravatar');
-    //note: changing this to use the image on apigee.com - since the gravatar default won't work on any non-public domains such as localhost
-    //this_data.picture = this_data.picture + encodeURI("?d="+window.location.protocol+"//" + window.location.host + window.location.pathname + "images/user_profile.png");
-    picture = picture + encodeURI("?d=https://apigee.com/usergrid/img/user_profile.png");
-    return picture;
-  }
-
-  function displayAdminFeed(response) {
-
-    var sectionActivities = $('#organization-feed-table');
-    sectionActivities.empty();
-
-    if (response.entities && (response.entities.length > 0)) {
-      var activities = response.entities;
-      for (var i in activities) {
-        var activity = activities[i];
-
-        // Next part is a hack. The API should return the email and title cleanly.
-        var title_tmp = $("<span/>", {html: activity.title});
-        activity.actor.email  = title_tmp.find('a').attr('mailto');
-        title_tmp.find('a').remove();
-        activity.title = title_tmp.text();
-        // hack ends here
-
-        activity.actor.gravatar = get_gravatar(activity.actor.email, 20);
-        $.tmpl('apigee.ui.feed.table_rows.html', activity).appendTo(sectionActivities);
-      }
-    }
-
-    if (sectionActivities.is(":empty")) {
-      sectionActivities.html('<div class="alert user-panel-section">No activities.</div>');
-    }
-  }
-
-  function requestAdminFeed() {
-    var section =$('#organization-activities');
-    section.empty().html('<div class="alert alert-info">Loading...</div>');
-    runManagementQuery(new Usergrid.Query("GET","orgs/" + Usergrid.ApiClient.getOrganizationName()  + "/feed", null, null, displayAdminFeed,
-      function() { section.html('<div class="alert">Unable to retrieve feed.</div>'); }));
-  }
-  window.Usergrid.console.requestAdminFeed = requestAdminFeed;
-
-  var organization_keys = { };
-
-  function requestOrganizationCredentials() {
-    $('#organization-panel-key').html('<div class="alert alert-info marginless">Loading...</div>');
-    $('#organization-panel-secret').html('<div class="alert alert-info marginless">Loading...</div>');
-    runManagementQuery(new Usergrid.Query("GET",'organizations/'+ Usergrid.ApiClient.getOrganizationName()  + "/credentials", null, null,
-      function(response) {
-        $('#organization-panel-key').html(response.credentials.client_id);
-        $('#organization-panel-secret').html(response.credentials.client_secret);
-        organization_keys = {client_id : response.credentials.client_id, client_secret : response.credentials.client_secret};
-      },
-      function() {
-        $('#organization-panel-key').html('<div class="alert marginless">Unable to load...</div>');
-        $('#organization-panel-secret').html('<div class="alert marginless">Unable to load...</div>');
-      }));
-  }
-
-  function newOrganizationCredentials() {
-    $('#organization-panel-key').html('<div class="alert alert-info marginless">Loading...</div>');
-    $('#organization-panel-secret').html('<div class="alert alert-info marginless">Loading...</div>');
-    runManagementQuery(new Usergrid.Query("POST",'organizations/' + Usergrid.ApiClient.getOrganizationName()   + "/credentials",null, null,
-      function(response) {
-        $('#organization-panel-key').html(response.credentials.client_id);
-        $('#organization-panel-secret').html(response.credentials.client_secret);
-        organization_keys = {client_id : response.credentials.client_id, client_secret : response.credentials.client_secret};
-      },
-      function() {
-        $('#organization-panel-key').html('<div class="alert marginless">Unable to load...</div>');
-        $('#organization-panel-secret').html('<div class="alert marginless">Unable to load...</div>');
-      }
-    ));
-  }
-  window.Usergrid.console.newOrganizationCredentials = newOrganizationCredentials;
-
-  function updateTips(t) {
-    tips.text(t).addClass('ui-state-highlight');
-    setTimeout(function() {
-        tips.removeClass('ui-state-highlight', 1500);
-      },
-      500);
-  }
-
-  function checkLength(o, n, min, max) {
-    if (o.val().length > max || o.val().length < min) {
-      o.addClass('ui-state-error');
-      updateTips("Length of " + n + " must be between " + min
-        + " and " + max + ".");
-      return false;
-    } else {
-      return true;
-    }
-  }
-
-  function checkRegexp(o, regexp, n) {
-    if (! (regexp.test(o.val()))) {
-      o.addClass('ui-state-error');
-      updateTips(n);
-      return false;
-    } else {
-      return true;
-    }
-  }
-
-  function checkTrue(o, t, n) {
-    if (!t) {
-      o.addClass('ui-state-error');
-      updateTips(n);
-    }
-    return t;
-  }
-
-  var tips = $('.validateTips');
-
-  /*******************************************************************
-   *
-   * Modals
-   *
-   ******************************************************************/
-
-  function alertModal(header,message) {
-    $('#alertModal h4').text(header);
-    $('#alertModal p').text(message);
-    $('#alertModal').modal('show');
-  }
-
-  //use like: alertBanner("Oh no!", "Say it isn't so!!");
-  //or like: alertBanner("Oh no!", "Say it isn't so!!", 5000); //will auto-close in 5 seconds
-  function alertBanner(header, message, timeout) {
-    $('#alert-error-header').html(header);
-    $('#alert-error-message').html(message);
-    $('#alert-error-message-container').show();
-    if (timeout) {
-      var alertTimer = setInterval(function(){
-        $('#alert-error-message-container').hide();
-        window.clearInterval(alertTimer);
-      },timeout);
-    }
-  }
-
-  function hideModal(id){
-    $(id).hide();
-  }
-
-  function confirmAction(header, message, callback){
-    var form = $('#confirmAction');
-
-    form.find('h4').text(header);
-    form.find('p').text(message);
-    form.unbind('submit');
-
-    form.submit(function(){
-      form.modal("hide");
-      callback();
-
-      return false;
-    });
-
-    form.modal('show');
-  }
-
-  function resetModal(){
-    this.reset();
-    var form = $(this);
-    formClearErrors(form);
-  }
-
-  function focusModal(){
-    $(this).find('input:first').focus();
-  }
-
-  function submitModal(e){
-    e.preventDefault();
-  }
-
-  $('form.modal').on('hidden',resetModal).on('shown',focusModal).submit(submitModal);
-  $('#dialog-form-new-application').submit(submitApplication);
-  $('#dialog-form-force-new-application').submit(submitApplication);
-  $('#dialog-form-new-admin').submit(submitNewAdmin);
-  $('#dialog-form-new-organization').submit(submitNewOrg);
-  $('#dialog-form-new-user').submit(submitNewUser);
-  $('#dialog-form-new-role').submit(submitNewRole);
-  $('#dialog-form-new-collection').submit(submitNewCollection);
-  $('#dialog-form-new-group').submit(submitNewGroup);
-  $('#dialog-form-add-group-to-user').submit(submitAddGroupToUser);
-  $('#dialog-form-add-user-to-group').submit(submitAddUserToGroup);
-  $('#dialog-form-add-user-to-role').submit(submitAddUserToRole);
-  $('#dialog-form-add-role-to-user').submit(function() { submitAddRoleToUser(current_roleName, current_roleTitle)});
-  $('#dialog-form-add-user-to-notification').submit(function() { addUserToNotification()});
-  $('#dialog-form-add-group-to-notification').submit(function() { addGroupToNotification()});
-  $('#dialog-form-add-group-to-role').submit(function() { submitAddGroupToRole(current_roleName, current_roleTitle)});
-  $('#dialog-form-add-role-to-group').submit(submitAddRoleToGroup);
-  $('#dialog-form-follow-user').submit(submitFollowUser);
-
-  function checkLength2(input, min, max) {
-    if (input.val().length > max || input.val().length < min) {
-      var tip = "Length must be between " + min + " and " + max + ".";
-      validationError(input,tip);
-      return false;
-    }
-
-    return true;
-  }
-
-  function checkRegexp2(input, regexp, tip) {
-    if (! (regexp.test(input.val()))) {
-      validationError(input,tip);
-      return false;
-    }
-    return true;
-  }
-
-  function checkTrue2(input, exp, tip) {
-    if (!exp) {
-      validationError(input,tip);
-      return false;
-    }
-
-    return true;
-  }
-
-  function confirmDelete(callback){
-    var form = $('#confirmDialog');
-    if (form.submit) {
-      form.unbind('submit');
-    }
-
-    form.submit(function(e){
-      e.preventDefault();
-      form.modal('hide');
-    }).submit(callback);
-
-    form.modal('show');
-  }
-
-  function validationError(input, tip){
-    input.focus();
-    input.parent().parent().addClass("error");
-    input.parent().parent().find(".help-block").text(tip).addClass("alert-error").addClass("alert").show();
-  }
-
-  $.fn.serializeObject = function() {
-    var o = {};
-    var a = this.serializeArray();
-
-    $.each(a, function() {
-      if (o[this.name]) {
-        if (!o[this.name].push) {
-          o[this.name] = [o[this.name]];
-        }
-        o[this.name].push(this.value || '');
-      } else {
-        o[this.name] = this.value || '';
-      }
-    });
-
-    return o;
-  };
-
-  function formClearErrors(form){
-    form.find('.ui-state-error').removeClass('ui-state-error');
-    form.find('.error').removeClass('error');
-    form.find('.help-block').empty().hide();
-  }
-
-  function submitApplication() {
-    var form = $(this);
-    formClearErrors(form);
-
-    var new_application_name = $(this).find('.new-application-name');
-
-    var bValid = checkLength2(new_application_name, 4, 80)
-      && checkRegexp2(new_application_name, usernameRegex, usernameAllowedCharsMessage);
-
-    if (bValid) {
-      runManagementQuery(new Usergrid.Query("POST","organizations/" + Usergrid.ApiClient.getOrganizationName()  + "/applications", form.serializeObject(), null,
-        function(response) {
-          for (var appName in response.data) { break; }
-          var appTitle = appName.split("/")[1];
-          var currentOrg = Usergrid.ApiClient.getOrganizationName();
-          Usergrid.organizations.getItemByName(currentOrg).addItem(new Usergrid.Application(appTitle, response.data[appName]));
-          pageSelect(appTitle);
-          requestApplications();
-        },
-        function() {
-          closeErrorMessage = function() {
-            $('#home-messages').hide();
-          };
-          var closebutton = '<a  onclick="closeErrorMessage();" class="close">&times;</a>'
-          $('#home-messages').text("Unable to create application: ").prepend(closebutton).addClass('alert-error').show();
-        }));
-      $(this).modal('hide');
-    }
-  }
-
-  function submitNewAdmin() {
-    var form = $(this);
-    formClearErrors(form);
-
-    var new_admin_email = $('#new-admin-email');
-    var bValid = checkLength2(new_admin_email, 6, 80)
-      && checkRegexp2(new_admin_email,emailRegex, emailAllowedCharsMessage);
-    if (bValid) {
-      var data = form.serializeObject();
-      runManagementQuery(new Usergrid.Query("POST","organizations/" + Usergrid.ApiClient.getOrganizationName() + "/users", data, null,
-        requestAdmins,
-        function () { alertModal("Error", "Unable to create admin"); }
-      ));
-      $(this).modal('hide');
-    }
-  }
-
-  function addOrganizationToList(orgName) {
-    runManagementQuery(new Usergrid.Query("GET","orgs/" + orgName, null, null,
-      function(response) {
-        var orgName = response.organization.name;
-        var orgUUID = response.organization.uuid;
-        organization = new Usergrid.Organization(orgName, orgUUID);
-        var apps = response.organization.applications;
-        for(app in apps) {
-          var appName = app.split("/")[1];
-          //grab the id
-          var appUUID = response.organization.applications[app];
-          //store in the new Application object
-          application = new Usergrid.Application(appName, appUUID);
-          organization.addItem(application);
-        }
-        //add organization to organizations list
-        Usergrid.organizations.addItem(organization);
-        requestAccountSettings();
-        setupOrganizationsMenu();
-      },
-      function() { alertModal("Error", "Unable to get organization" + orgName);
-      }
-    ));
-  }
-
-  function submitNewOrg() {
-    var form = $(this);
-    formClearErrors(form);
-
-    var new_organization_name = $('#new-organization-name');
-    var new_organization_name_val = $('#new-organization-name').val();
-    var bValid = checkLength2(new_organization_name, 4, 80)
-      && checkRegexp2(new_organization_name, organizationNameRegex, organizationNameAllowedCharsMessage);
-
-    if (bValid) {
-      var data = form.serializeObject();
-      runManagementQuery(new Usergrid.Query("POST","users/" + Usergrid.userSession.getUserUUID() + "/organizations", data, null,
-        function() {
-          addOrganizationToList(new_organization_name_val);
-        },
-        function() { alertModal("Error", "Unable to create organization"); }
-      ));
-      $(this).modal('hide');
-    }
-  }
-  //TODO: the organization, and required fields for this method, are hidden. There is no quick way to check variable names and order
-  /*
-   * Needed fields:
-   * username:
-   * name: FULL NAME
-   * email:
-   * password:
-   */
-  function submitNewUser() {
-    var form = $(this);
-    formClearErrors(form);
-
-    var email = $('#new-user-email');
-    var username = $('#new-user-username');
-    var fullname = $('#new-user-fullname');
-    var password = $('#new-user-password');
-    var validate_password = $('#new-user-validate-password');
-
-    var bValid =
-      //Fullname can is not required.
-      checkLength2(fullname , 0, 80)
-        && ( fullname.val() === "" || checkRegexp2(fullname, nameRegex, nameAllowedCharsMessage) )
-        //Username IS required
-        && checkRegexp2(username, usernameRegex, usernameAllowedCharsMessage)
-        //Email is NOT required
-        && ( checkLength2(email, 6, 80) )
-        && ( email.val() === "" || checkRegexp2(email,emailRegex, emailAllowedCharsMessage) )
-        && ( checkLength2(password ,0 ,0) || checkLength2(password, 1, 64) )
-        && ( password.val() === "" || checkRegexp2(password,passwordRegex, passwordAllowedCharsMessage) )
-        && ( checkTrue2(password, (password.val() === validate_password.val()), passwordMismatchMessage));
-
-    if (bValid) {
-      var data = {"email":email.val(), "username":username.val(),"name":fullname.val(), "password":password.val()}
-      runAppQuery(new Usergrid.Query("POST", 'users', data, null,
-        function() {
-          getUsers();
-          closeErrorMessage = function() {
-            $('#users-messages').hide();
-          };
-          var closebutton = '<a  onclick="closeErrorMessage();" class="close">&times;</a>';
-          $('#users-messages')
-            .text("User created successfully.")
-            .prepend(closebutton)
-            .removeClass()
-            .addClass('alert alert-warning')
-            .show();
-        },
-        function() {
-          closeErrorMessage = function() {
-            $('#users-messages').hide();
-          };
-          var closebutton = '<a  onclick="closeErrorMessage();" class="close">&times;</a>'
-          $('#users-messages')
-            .text("Unable to create user")
-            .prepend(closebutton)
-            .removeClass()
-            .addClass('alert alert-error')
-            .show();
-        }
-      ));
-
-      $(this).modal('hide');
-    }
-  }
-
-  function submitNewRole() {
-    var form = $(this);
-    formClearErrors(form);
-
-    var new_role_name = $('#new-role-name');
-    var new_role_title = $('#new-role-title');
-
-    var bValid = checkLength2(new_role_name, 1, 80)
-      && checkRegexp2(new_role_name, roleRegex, roleAllowedCharsMessage)
-      && checkLength2(new_role_title, 1, 80)
-      && checkRegexp2(new_role_title,titleRegex, titleAllowedCharsMessage);
-
-    if (bValid) {
-      var data = form.serializeObject();
-      runAppQuery(new Usergrid.Query("POST", "role", data, null,
-        function() {
-          getRoles();
-          closeErrorMessage = function() {
-            $('#roles-messages').hide();
-          };
-          var closebutton = '<a  onclick="closeErrorMessage();" class="close">&times;</a>'
-          $('#roles-messages')
-            .text("Role created successfully.")
-            .prepend(closebutton)
-            .removeClass()
-            .addClass('alert alert-warning')
-            .show();
-        },
-        function() {
-          closeErrorMessage = function() {
-            $('#roles-messages').hide();
-          };
-          var closebutton = '<a  onclick="closeErrorMessage();" class="close">&times;</a>'
-          $('#roles-messages')
-            .text("Unable to create user")
-            .prepend(closebutton)
-            .removeClass()
-            .addClass('alert alert-error')
-            .show();
-        }
-      ));
-
-      $(this).modal('hide');
-    }
-  }
-
-  function submitNewCollection() {
-    var form = $(this);
-    formClearErrors(form);
-
-    var new_collection_name = $('#new-collection-name');
-
-    var bValid = checkLength2(new_collection_name, 4, 80)
-      && checkRegexp2(new_collection_name, alphaNumRegex, alphaNumAllowedCharsMessage);
-
-    if (bValid) {
-      var data = form.serializeObject();
-      var collections = {};
-      collections[data.name] = {};
-      var metadata = {
-        metadata: {
-          collections: collections
-        }
-      }
-      runAppQuery(new Usergrid.Query("PUT", "", metadata, null,
-        function() {
-          getCollections();
-          closeErrorMessage = function() {
-            $('#collections-messages').hide();
-          };
-          var closebutton = '<a  onclick="closeErrorMessage();" class="close">&times;</a>'
-          $('#collections-messages')
-            .text("Collection created successfully.")
-            .prepend(closebutton)
-            .removeClass()
-            .addClass('alert alert-warning')
-            .show();
-          getCollection("get", data.name);
-        },
-        function() {
-          closeErrorMessage = function() {
-            $('#collections-messages').hide();
-          };
-          var closebutton = '<a  onclick="closeErrorMessage();" class="close">&times;</a>'
-          $('#collections-messages')
-            .text("Unable to create user")
-            .prepend(closebutton)
-            .removeClass()
-            .addClass('alert alert-error')
-            .show();
-        }
-      ));
-
-      $(this).modal('hide');
-    }
-  }
-
-  function submitNewGroup() {
-    var form = $(this);
-    formClearErrors(form);
-
-    var new_group_title = $('#new-group-title');
-    var new_group_path = $('#new-group-path');
-
-    var bValid = checkLength2(new_group_title, 1, 80)
-      && checkRegexp2(new_group_title, nameRegex, nameAllowedCharsMessage)
-      && checkLength2(new_group_path, 1, 80)
-      && checkRegexp2(new_group_path, pathRegex, pathAllowedCharsMessage);
-
-    if (bValid) {
-      var data = form.serializeObject();
-      runAppQuery(new Usergrid.Query("POST", "groups", data, null,
-        function() {
-          getGroups();
-          closeErrorMessage = function() {
-            $('#groups-messages').hide();
-          };
-          var closebutton = '<a  onclick="closeErrorMessage();" class="close">&times;</a>'
-          $('#groups-messages')
-            .text("Group created successfully.")
-            .prepend(closebutton)
-            .removeClass()
-            .addClass('alert alert-warning')
-            .show();
-        },
-        function() {
-          closeErrorMessage = function() {
-            $('#groups-messages').hide();
-          };
-          var closebutton = '<a  onclick="closeErrorMessage();" class="close">&times;</a>'
-          $('#groups-messages').text("Unable to create group").prepend(closebutton).addClass('alert-error').show();
-        }
-      ));
-
-      $(this).modal('hide');
-    }
-  }
-
-  function submitAddGroupToUser() {
-    var form = $(this);
-    formClearErrors(form);
-    var add_group_groupname = $('#search-group-name-input');
-    var bValid = checkLength2(add_group_groupname, 1, 80)
-      && checkRegexp2(add_group_groupname, usernameRegex, usernameAllowedCharsMessage);
-
-    if (bValid) {
-      userId = $('#search-group-userid').val();
-      groupId = $('#search-group-name-input').val();
-
-      runAppQuery(new Usergrid.Query("POST", "/groups/" + groupId + "/users/" + userId, null, null,
-        function() { requestUser(userId); },
-        function() { alertModal("Error", "Unable to add group to user"); }
-      ));
-
-      $(this).modal('hide');
-    }
-  }
-
-  function submitAddUserToGroup() {
-    var form = $(this);
-    formClearErrors(form);
-    var add_user_username = $('#search-user-name-input');
-    var bValid = checkLength2(add_user_username, 1, 80)
-      && checkRegexp2(add_user_username, usernameRegex, usernameAllowedCharsMessage);
-
-    if (bValid) {
-      userId = $('#search-user-name-input').val();
-      groupId = $('#search-user-groupid').val();
-      runAppQuery(new Usergrid.Query("POST", "/groups/" + groupId + "/users/" + userId, null, null,
-        function() { requestGroup(groupId); },
-        function() { alertModal("Error", "Unable to add user to group"); }
-      ));
-      $(this).modal('hide');
-    }
-  }
-
-  function submitFollowUser(){
-    var form = $(this);
-    formClearErrors(form);
-    var username = $('#search-follow-username-input');
-    var bValid = checkLength2(username, 1, 80) && checkRegexp2(username, usernameRegex, usernameAllowedCharsMessage);
-    if (bValid) {
-      var followingUserId = $('#search-follow-username').val();
-      var followedUserId = $('#search-follow-username-input').val();
-      runAppQuery(new Usergrid.Query("POST", "/users/" + followingUserId + "/following/user/" + followedUserId, null, null,
-        function() { pageSelectUserGraph(followingUserId)},
-        function() {alertModal("Error", "Unable to follow User");}
-      ));
-      $(this).modal('hide');
-    }
-  }
-
-  function submitAddRoleToUser(roleName, roleTitle) {
-    var form = $(this);
-    formClearErrors(form);
-    var roleIdField = $('#search-roles-user-name-input');
-    var bValid = checkLength2(roleIdField, 1, 80) && checkRegexp2(roleIdField, usernameRegex, usernameAllowedCharsMessage)
-    var username = $('#search-roles-user-name-input').val();
-    if (bValid) {
-      runAppQuery(new Usergrid.Query("POST", "/roles/" + roleName + "/users/" + username, null, null,
-        function() { pageSelectRoleUsers(roleName, roleTitle); },
-        function() { alertModal("Error", "Unable to add user to role"); }
-      ));
-      $('#dialog-form-add-role-to-user').modal('hide');
-    }
-  }
-
-  function submitAddUserToRole() {
-    var form = $(this);
-    formClearErrors(form);
-
-    var roleIdField = $('#search-role-name-input');
-    var bValid = checkLength2(roleIdField, 1, 80)
-      && checkRegexp2(roleIdField, roleRegex, roleAllowedCharsMessage)
-
-    var username = $('#role-form-username').val();
-    var roleId = $('#search-role-name-input').val();
-    // role may have a preceding or trailing slash, remove it
-    roleId = roleId.replace('/','');
-    if (bValid) {
-      runAppQuery(new Usergrid.Query("POST", "/roles/" + roleId + "/users/" + username, null, null,
-        function() { pageSelectUserPermissions(username); },
-        function() { alertModal("Error", "Unable to add user to role"); }
-      ));
-
-      $(this).modal('hide');
-    }
-  }
-
-  function deleteUsersFromRoles(username) {
-    var items = $('#users-permissions-response-table input[class^=listItem]:checked');
-    if(!items.length){
-      alertModal("Error", "Please, first select the roles you want to delete for this user.");
-      return;
-    }
-
-    confirmDelete(function(){
-      items.each(function() {
-        var roleName = $(this).attr("value");
-        runAppQuery(new Usergrid.Query("DELETE", "/roles/" + roleName + "/users/" + username, null, null,
-          function() { pageSelectUserPermissions (username); },
-          function() { alertModal("Error", "Unable to remove user from role"); }
-        ));
-      });
-    });
-  }
-  window.Usergrid.console.deleteUsersFromRoles = deleteUsersFromRoles;
-
-  function deleteRoleFromUser(roleName, roleTitle) {
-    var items = $('#role-users input[class^=listItem]:checked');
-    if(!items.length){
-      alertModal("Error", "Please, first select the users you want to delete from this role.");
-      return;
-    }
-
-    confirmDelete(function(){
-      items.each(function() {
-        var username = $(this).attr("value");
-        runAppQuery(new Usergrid.Query("DELETE", "/roles/" + roleName + "/users/" + username, null, null,
-          function() { pageSelectRoleUsers (roleName, roleTitle); },
-          function() { alertModal("Error", "Unable to remove user from role"); }
-        ));
-      });
-    });
-  }
-  window.Usergrid.console.deleteRoleFromUser = deleteRoleFromUser;
-
-  function removeUserFromGroup(userId) {
-    var items = $('#user-panel-memberships input[class^=listItem]:checked');
-    if(!items.length){
-      alertModal("Error", "Please, first select the groups you want to delete for this user.")
-      return;
-    }
-    confirmDelete(function(){
-      items.each(function() {
-        var groupId = $(this).attr("value");
-        runAppQuery(new Usergrid.Query("DELETE", "/groups/" + groupId + "/users/" + userId, null, null,
-          function() { pageSelectUserGroups (userId); },
-          function() { alertModal("Error", "Unable to remove user from group"); }
-        ));
-      });
-    });
-  }
-  window.Usergrid.console.removeUserFromGroup = removeUserFromGroup;
-
-  function removeGroupFromUser(groupId) {
-    var items = $('#group-panel-memberships input[class^=listItem]:checked');
-    if (!items.length) {
-      alertModal("Error", "Please, first select the users you want to from this group.");
-      return;
-    }
-
-    confirmDelete(function(){
-      items.each(function() {
-        var userId = $(this).attr("value");
-        runAppQuery(new Usergrid.Query("DELETE", "/groups/" + groupId + "/users/" + userId, null, null,
-          function() { pageSelectGroupMemberships (groupId); },
-          function() { alertModal("Error", "Unable to remove user from group"); }
-        ));
-      });
-    });
-  }
-  window.Usergrid.console.removeGroupFromUser = removeGroupFromUser;
-
-  function deleteRolesFromGroup(roleId, rolename) {
-    var items = $('#group-panel-permissions input[class^=listItem]:checked');
-    if(!items.length){
-      alertModal("Error", "Please, first select the roles you want to delete from this group.")
-      return;
-    }
-
-    confirmDelete(function(){
-      items.each(function() {
-        var roleId = $(this).attr("value");
-        var groupname = $('#role-form-groupname').val();
-        runAppQuery(new Usergrid.Query("DELETE", "/roles/" + roleId + "/groups/" + groupname, null, null,
-          function() { pageSelectGroupPermissions(groupname); },
-          function() { alertModal("Error", "Unable to remove role from group"); }
-        ));
-      });
-    });
-  }
-  window.Usergrid.console.deleteRolesFromGroup = deleteRolesFromGroup;
-
-  function submitAddRoleToGroup() {
-    var form = $(this);
-    formClearErrors(form);
-
-    var roleIdField = $('#search-groups-role-name-input');
-    var bValid = checkLength2(roleIdField, 1, 80)
-      && checkRegexp2(roleIdField, roleRegex, roleAllowedCharsMessage)
-
-    var groupname = $('#role-form-groupname').val();
-    var roleId = $('#search-groups-role-name-input').val();
-    // role may have a preceding or trailing slash, remove it
-    roleId = roleId.replace('/','');
-
-    if (bValid) {
-      runAppQuery(new Usergrid.Query("POST", "/groups/" + groupname + "/roles/" + roleId, null, null,
-        function() { pageSelectGroupPermissions(groupname); },
-        function() { alertModal("Error", "Unable to add user to role"); }
-      ));
-      $(this).modal('hide');
-    }
-  }
-
-  /*******************************************************************
-   *
-   * Generic page select
-   *
-   ******************************************************************/
-  function pageSelect(name) {
-    if (name) {
-      //the following 3 lines are just a safety check, we could just store the name
-      //get the current org name
-      var currentOrg = Usergrid.ApiClient.getOrganizationName();
-      //get a reference to the current org object by using the name
-      var org = Usergrid.organizations.getItemByName(currentOrg);
-      //get a reference to the specified app by name
-      var app = org.getItemByName(name);
-      //store the name
-      Usergrid.ApiClient.setApplicationName(app.getName());
-    }
-    setNavApplicationText();
-    getCollections();
-    query_history = [];
-  }
-  window.Usergrid.console.pageSelect = pageSelect;
-
-
-  /*******************************************************************
-   *
-   * Application
-   *
-   ******************************************************************/
-
-  function pageSelectApplication() {
-    pageSelect();
-    requestApplicationUsage();
-  }
-  window.Usergrid.console.pageSelectApplication = pageSelectApplication;
-
-  function updateApplicationDashboard(){
-    var data = new google.visualization.DataTable();
-    data.addColumn('string', 'Entity');
-    data.addColumn('number', 'Count');
-    var rows = [];
-    var t = '<table class="table table-bordered" id="application-panel-entity-counts">';
-    var collectionNames = keys(applicationData.Collections).sort();
-
-    var entity_count = 0;
-    for (var i in collectionNames) {
-      var collectionName = collectionNames[i];
-      var collection = applicationData.Collections[collectionName];
-      var row = [collectionName, {v: Math.abs(collection.count)}];
-      rows.push(row);
-      collectionName = escapeString(collectionName);
-      t += '<tr class="zebraRows"><td>' + collection.count + '</td><td>' + collectionName + '</td></tr>';
-      entity_count += collection.count;
-    }
-    t += '<tr id="application-panel-entity-total"><th>' + entity_count + '</th><th>entities total</th></tr>';
-    t += '</table>';
-    data.addRows(rows);
-
-    new google.visualization.PieChart(
-      document.getElementById('application-panel-entity-graph')).
-      draw(data, {
-        height: 200,
-        is3D: true,
-        backgroundColor: backgroundGraphColor
-      }
-    );
-
-    $('#dashboard-panel #application-panel-text').html(t);
-  }
-
-  function requestApplicationUsage() {
-    $('#application-entities-timeline').html("");
-    $('#application-cpu-time').html("");
-    $('#application-data-uploaded').html("");
-    $('#application-data-downloaded').html("");
-    var params = {};
-    params.start_time = Math.floor(new Date().getTime() / 1209600000) * 1209600000;
-    params.end_time = start_timestamp + 1209600000;
-    params.resolution = "day";
-    params.counter = ["application.entities", "application.request.download", "application.request.time", "application.request.upload"];
-    params.pad = true;
-
-    runAppQuery(new Usergrid.Query("GET", "counters", null, params,
-      function(response) {
-        var usage_counters = response.counters;
-
-        if (!usage_counters) {
-          $('#application-entities-timeline').html("");
-          $('#application-cpu-time').html("");
-          $('#application-data-uploaded').html("");
-          $('#application-data-downloaded').html("");
-          return;
-        }
-
-        var graph_width = 350;
-        var graph_height = 100;
-        var data = new google.visualization.DataTable();
-        data.addColumn('date', 'Time');
-        data.addColumn('number', 'Entities');
-        data.addRows(15);
-
-        for (var i in usage_counters[0].values) {
-          data.setCell(parseInt(i), 0, new Date(usage_counters[0].values[i].timestamp));
-          data.setCell(parseInt(i), 1, usage_counters[0].values[i].value);
-        }
-
-        new google.visualization.LineChart(document.getElementById('application-entities-timeline')).draw(data, {
-          title: "Entities",
-          titlePosition: "in",
-          titleTextStyle: {color: 'black', fontName: 'Arial', fontSize: 18},
-          width: graph_width,
-          height: graph_height,
-          backgroundColor: backgroundGraphColor,
-          legend: "none",
-          hAxis: {textStyle: {color:"transparent", fontSize: 1}},
-          vAxis: {textStyle: {color:"transparent", fontSize: 1}}
-        });
-
-        data = new google.visualization.DataTable();
-        data.addColumn('date', 'Time');
-        data.addColumn('number', 'CPU');
-        data.addRows(15);
-
-        for (var i in usage_counters[2].values) {
-          data.setCell(parseInt(i), 0, new Date(usage_counters[2].values[i].timestamp));
-          data.setCell(parseInt(i), 1, usage_counters[2].values[i].value);
-        }
-
-        new google.visualization.LineChart(document.getElementById('application-cpu-time')).draw(data, {
-          title: "CPU Time Used",
-          titlePosition: "in",
-          titleTextStyle: {color: 'black', fontName: 'Arial', fontSize: 18},
-          width: graph_width,
-          height: graph_height,
-          backgroundColor: backgroundGraphColor,
-          legend: "none",
-          hAxis: {textStyle: {color:"transparent", fontSize: 1}},
-          vAxis: {textStyle: {color:"transparent", fontSize: 1}}
-        });
-
-        data = new google.visualization.DataTable();
-        data.addColumn('date', 'Time');
-        data.addColumn('number', 'Uploaded');
-        data.addRows(15);
-
-        for (var i in usage_counters[3].values) {
-          data.setCell(parseInt(i), 0, new Date(usage_counters[3].values[i].timestamp));
-          data.setCell(parseInt(i), 1, usage_counters[3].values[i].value);
-        }
-
-        new google.visualization.LineChart(document.getElementById('application-data-uploaded')).draw(data, {
-          title: "Bytes Uploaded",
-          titlePosition: "in",
-          titleTextStyle: {color: 'black', fontName: 'Arial', fontSize: 18},
-          width: graph_width,
-          height: graph_height,
-          backgroundColor: backgroundGraphColor,
-          legend: "none",
-          hAxis: {textStyle: {color:"transparent", fontSize: 1}},
-          vAxis: {textStyle: {color:"transparent", fontSize: 1}}
-        });
-
-        data = new google.visualization.DataTable();
-        data.addColumn('date', 'Time');
-        data.addColumn('number', 'Downloaded');
-        data.addRows(15);
-
-        for (var i in usage_counters[1].values) {
-          data.setCell(parseInt(i), 0, new Date(usage_counters[1].values[i].timestamp));
-          data.setCell(parseInt(i), 1, usage_counters[1].values[i].value);
-        }
-
-        new google.visualization.LineChart(document.getElementById('application-data-downloaded')).draw(data, {
-          title: "Bytes Downloaded",
-          titlePosition: "in",
-          titleTextStyle: {color: 'black', fontName: 'Arial', fontSize: 18},
-          width: graph_width,
-          height: graph_height,
-          backgroundColor: backgroundGraphColor,
-          legend: "none",
-          hAxis: {textStyle: {color:"transparent", fontSize: 1}},
-          vAxis: {textStyle: {color:"transparent", fontSize: 1}}
-        });
-      },
-      function() {
-        $('#application-entities-timeline').html("");
-        $('#application-cpu-time').html("");
-        $('#application-data-uploaded').html("");
-        $('#application-data-downloaded').html("");
-      }
-    ));
-  }
-  window.Usergrid.console.requestApplicationUsage = requestApplicationUsage;
-
-  /*******************************************************************
-   *
-   * Query Object Setup
-   *
-   ******************************************************************/
-  var queryObj = {};
-
-  function hidePagination(section) {
-    $('#'+section+'-pagination').hide();
-    $('#'+section+'-next').hide();
-    $('#'+section+'-previous').hide();
-  }
-
-  function showPagination(section){
-    if (queryObj.hasNext()) {
-      $('#'+section+'-pagination').show();
-      $('#'+section+'-next').show();
-    }
-
-    if (queryObj.hasPrevious()) {
-      $('#'+section+'-pagination').show();
-      $('#'+section+'-previous').show();
-    }
-  }
-
-  function hideCurlCommand(section) {
-    $('#'+section+'-curl-container').hide();
-    $('#'+section+'-curl-token').hide();
-  }
-
-  function showCurlCommand(section, curl, token) {
-    var data = {
-      curlData: curl,
-      sectionName: section
-    };
-    var sectionId = $('#'+section+'-curl-container');
-    sectionId.html("");
-    $.tmpl('apigee.ui.curl.detail.html', data).appendTo(sectionId);
-    sectionId.show();
-    if (!token) {
-      $('#'+section+'-curl-token').hide();
-    }
-  }
-
-  function copyCurlCommand() {
-    $('#copypath', 'body')
-      .find('a')
-      .livequery('click', function() {
-        $(this)
-          .blur();
-        var nodetext = $('#'+section+'-curl').html();
-        $('#copypath input').focus();
-        $('#copypath input').select();
-        return false;
-      });
-
-  }
-
-  function bindPagingEvents(section) {
-    $(document).off('click', '#'+section+'-previous', getPrevious);
-    $(document).off('click', '#'+section+'-next', getNext);
-    //bind the click events
-    $(document).on('click', '#'+section+'-previous', getPrevious);
-    $(document).on('click', '#'+section+'-next', getNext);
-  }
-  Usergrid.console.bindPagingEvents = bindPagingEvents;
-
-  function getPrevious() { //called by a click event - for paging
-    queryObj.getPrevious();
-    runAppQuery();
-  }
-  function getNext() { //called by a click event - for paging
-    queryObj.getNext();
-    runAppQuery();
-  }
-
-  function runAppQuery(_queryObj) {
-    var obj = _queryObj || queryObj;
-    Usergrid.ApiClient.runAppQuery(obj);
-    return false;
-  }
-
-  function runManagementQuery(_queryObj) {
-    var obj = _queryObj || queryObj;
-    Usergrid.ApiClient.runManagementQuery(obj);
-    return false;
-  }
-
-  /*******************************************************************
-   *
-   * Users
-   *
-   ******************************************************************/
-  var userLetter = "*";
-  var userSortBy = "username";
-
-  function pageSelectUsers() {
-    //Hide old Alert Messages
-    hideModal('#users-messages');
-    //make a new query object
-    queryObj = new Usergrid.Query(null);
-    //bind events for previous and next buttons
-    bindPagingEvents('users');
-    //reset paging so we start at the first page
-    queryObj.resetPaging();
-    //the method to get the compile and call the query
-    getUsers();
-    //ui stuff
-    selectFirstTabButton('#users-panel-tab-bar');
-    showPanelList('users');
-    $('#search-user-username').val(''); //reset the search box
-  }
-  window.Usergrid.console.pageSelectUsers = pageSelectUsers;
-
-  function getUsers(search, searchType) {
-    //clear out the table before we start
-    hideCurlCommand('users');
-    var output = $('#users-table');
-    output.empty();
-    var query = {"ql" : "order by " + userSortBy}; //default to built in search
-    if (typeof search == 'string') {
-      if (search.length > 0) {
-        if (searchType == 'name') {
-          query = {"ql" : searchType + " contains '" + search + "*'"};
-        } else {
-          query = {"ql" : searchType + "='" + search + "*'"};
-        }
-      }
-    } else if (userLetter != "*") {
-      query = {"ql" : searchType + "='" + userLetter + "*'"};
-    }
-
-    queryObj = new Usergrid.Query("GET", "users", null, query, getUsersCallback, function() { alertModal("Error", "Unable to retrieve users."); });
-    runAppQuery(queryObj);
-  }
-
-  function getUsersCallback(response) {
-    response = escapeMe(response);
-    hidePagination('users');
-    var output = $('#users-table');
-    if (response.entities.length < 1) {
-      output.replaceWith('<div id="users-table" class="panel-section-message">No users found.</div>');
-    } else {
-      output.replaceWith('<table id="users-table" class="table"><tbody><tr class="zebraRows users-row"><td class="checkboxo"><input type="checkbox" onclick="Usergrid.console.selectAllEntities(this);" /></td><td class="gravatar50-td">&nbsp;</td><td class="user-details bold-header">username</td><td class="user-details bold-header">Display Name</td><td class="view-details">&nbsp;</td></tr></tbody></table>');
-      for (i = 0; i < response.entities.length; i++) {
-        var this_data = response.entities[i];
-        if (!this_data.picture) {
-          this_data.picture = window.location.protocol+ "//" + window.location.host + window.location.pathname + "images/user-photo.png"
-        } else {
-          this_data.picture = get_replacementGravatar(this_data.picture);
-        }
-        $.tmpl('apigee.ui.users.table_rows.html', this_data).appendTo('#users-table');
-      }
-    }
-    showPagination('users');
-    showCurlCommand('users', queryObj.getCurl(), queryObj.getToken());
-  }
-
-  function showUsersForSearch(search){
-    selectFirstTabButton('#users-panel-tab-bar');
-    $('#users-panel-search').hide();
-    selectTabButton('#button-users-list');
-    $('#users-panel-list').show();
-    userLetter = search;
-    getUsers();
-  }
-  Usergrid.console.showUsersForSearch = showUsersForSearch;
-
-  function searchUsers(){
-    var search = $('#search-user-username').val();
-    var searchType = ($('#search-user-type').val())?$('#search-user-type').val():userSortBy;
-    //make sure the input is valid:
-    if (searchType == 'name') {
-      searchType = 'name';
-    } else if (searchType == 'username') {searchType = 'username';}
-    getUsers(search, searchType);
-  }
-  Usergrid.console.searchUsers = searchUsers;
-
-  function selectAllEntities(checkbox){
-    if (checkbox.checked) {
-      $('[class=listItem]').attr('checked', true);
-    } else {
-      $('[class=listItem]').attr('checked', false);
-    }
-  }
-  window.Usergrid.console.selectAllEntities = selectAllEntities;
-
-  $('#delete-users-link').click(deleteUsers);
-  function deleteUsers(e) {
-    e.preventDefault();
-
-    var items = $('#users-table input[class^=listItem]:checked');
-    if(!items.length){
-      alertModal("Error", "Please, first select the users you want to delete.");
-      return;
-    }
-
-    confirmDelete(function(){
-      items.each(function() {
-        var userId = $(this).attr("value");
-        runAppQuery(new Usergrid.Query("DELETE", 'users/' + userId, null, null,
-          getUsers,
-          function() { alertModal("Error", "Unable to delete user - " + userId) }
-        ));
-      });
-    });
-  }
-
-  /*******************************************************************
-   *
-   * User
-   *
-   ******************************************************************/
-
-  function pageOpenUserProfile(userName) {
-    hideModal('.messages');
-    Pages.SelectPanel('user');
-    requestUser(userName);
-    selectTabButton('#button-user-profile');
-    showPanelContent('#user-panel', '#user-panel-profile');
-  }
-  window.Usergrid.console.pageOpenUserProfile = pageOpenUserProfile;
-
-  function pageOpenUserActivities(userId) {
-    Pages.SelectPanel('user');
-    requestUser(userId);
-    selectTabButton('#button-user-activities');
-    showPanelContent('#user-panel', '#user-panel-activities');
-  }
-  window.Usergrid.console.pageOpenUserActivities = pageOpenUserActivities;
-
-  function pageSelectUserPermissions(userId) {
-    Pages.SelectPanel('user');
-    requestUser(userId);
-    selectTabButton('#button-user-permissions');
-    showPanelContent('#user-panel', '#user-panel-permissions');
-  }
-  window.Usergrid.console.pageSelectUserPermissions = pageSelectUserPermissions;
-
-  function pageSelectUserGroups(userId) {
-    Pages.SelectPanel('user');
-    requestUser(userId);
-    selectTabButton('#button-user-memberships');
-    showPanelContent('#user-panel', '#user-panel-memberships');
-  }
-
-  function pageSelectUserGraph(userId) {
-    Pages.SelectPanel('user');
-    requestUser(userId);
-    selectTabButton('#button-user-graph');
-    showPanelContent('#user-panel', '#user-panel-graph');
-  }
-
-  window.Usergrid.console.pageSelectUserGroups = pageSelectUserGroups;
-
-  function saveUserProfile(uuid){
-    var payload = Usergrid.console.ui.jsonSchemaToPayload(Usergrid.console.ui.collections.vcard_schema);
-    runAppQuery(new Usergrid.Query("PUT", "users/"+uuid, payload, null,
-      completeSave,
-      function() { alertModal("Error", "Unable to update User"); }
-    ));
-  }
-  window.Usergrid.console.saveUserProfile = saveUserProfile;
-
-  function completeSave(){
-    closeMessage = function() {
-      $('.messages').hide();
-    };
-    var closebutton = '<a  onclick="closeMessage();" class="close">&times;</a>'
-    $('.messages').text("Information Saved.").prepend(closebutton).show();
-  }
-
-  function redrawUserProfile(data, curl){
-    redrawFormPanel('user-panel-profile', 'apigee.ui.panels.user.profile.html', data);
-    showCurlCommand('user-panel-profile', curl);
-  };
-
-  function redrawUserMemberships(data, curl){
-    redrawPanel('user-panel-memberships', 'apigee.ui.panels.user.memberships.html', data);
-    showCurlCommand('user-panel-memberships', curl);
-    updateGroupsAutocomplete();
-  };
-
-  function redrawUserActivities(data, curl){
-    redrawPanel('user-panel-activities', 'apigee.ui.panels.user.activities.html', data);
-    showCurlCommand('user-panel-activities', curl);
-  };
-
-  function redrawUserGraph(data, curlFollowing, curlFollowers){
-    redrawPanel('user-panel-graph', 'apigee.ui.panels.user.graph.html', data);
-    showCurlCommand('user-panel-following', curlFollowing);
-    showCurlCommand('user-panel-followers', curlFollowers);
-    updateFollowUserAutocomplete();
-  };
-
-  function redrawUserPermissions(data, curlRoles, curlPermissions){
-    redrawPanel('user-panel-permissions', 'apigee.ui.panels.user.permissions.html', data);
-    showCurlCommand('user-panel-roles', curlRoles);
-    showCurlCommand('user-panel-permissions', curlPermissions);
-    updateRolesAutocomplete();
-    updateQueryAutocompleteCollectionsUsers();
-  };
-
-  function redrawPanel(panelDiv, panelTemplate, data){
-    $("#"+panelDiv).html("");
-    $.tmpl(panelTemplate, data).appendTo($("#"+panelDiv));
-  };
-
-  function redrawGroupForm(panelDiv, panelTemplate, data){
-    $("#"+panelDiv).html("");
-    var details = $.tmpl(panelTemplate, data);
-    var formDiv = details.find('.query-result-form');
-    $(formDiv).buildForm(Usergrid.console.ui.jsonSchemaToDForm(Usergrid.console.ui.collections.group_schema, data.entity));
-    details.appendTo($("#"+panelDiv));
-    details.find('.button').button();
-  }
-
-  function redrawFormPanel(panelDiv, panelTemplate, data){
-    $("#"+panelDiv).html("");
-    var details = $.tmpl(panelTemplate, data);
-    var formDiv = details.find('.query-result-form');
-    $(formDiv).buildForm(Usergrid.console.ui.jsonSchemaToDForm(Usergrid.console.ui.collections.vcard_schema, data.entity));
-    details.appendTo($("#"+panelDiv));
-  };
-
-  function saveUserData(){
-    Usergrid.console.ui.jsonSchemaToPayload(schema, obj);
-  }
-
-  var user_data = null;
-
-  function handleUserResponse(response) {
-    if (response.entities && (response.entities.length > 0)) {
-      var entity = response.entities[0];
-      var path = response.path || "";
-      path = "" + path.match(/[^?]*/);
-      var username = entity.username;
-      var name = entity.uuid + " : " + entity.type;
-
-      if (entity.username) {
-        name = entity.username;
-      }
-
-      if (entity.name) {
-        name = name + " : " + entity.name;
-      }
-
-      var collections = $.extend({ }, (entity.metadata || { }).collections, (entity.metadata || { }).connections);
-      if ($.isEmptyObject(collections)){
-        collections = null;
-      }
-
-      var entity_contents = $.extend( false, { }, entity);
-      delete entity_contents['metadata'];
-
-      var metadata = entity.metadata;
-      if ($.isEmptyObject(metadata)){
-        metadata = null;
-      }
-
-      var entity_path = (entity.metadata || {}).path;
-      if ($.isEmptyObject(entity_path)) {
-        entity_path = path + "/" + entity.uuid;
-      }
-
-      var picture = window.location.protocol+ "//" + window.location.host + window.location.pathname + "images/user_profile.png";
-      if (entity.picture) {
-        entity.picture = entity.picture.replace(/^http:\/\/www.gravatar/i, 'https://secure.gravatar');
-        //note: changing this to use the image on apigee.com - since the gravatar default won't work on any non-public domains such as localhost
-        //this_data.picture = this_data.picture + encodeURI("?d="+window.location.protocol+"//" + window.location.host + window.location.pathname + "images/user_profile.png");
-        picture = entity.picture + encodeURI("?d=https://apigee.com/usergrid/img/user_profile.png");
-      }
-
-      var data = {
-        entity: entity_contents,
-        picture: picture,
-        name: name,
-        username: username,
-        path: entity_path,
-        collections: collections,
-        metadata: metadata,
-        uri: (entity.metadata || { }).uri,
-        followingCurl: "",
-        followersCurl: "",
-        rolesCurl: "",
-        permissionsCurl: ""
-      }
-
-      redrawUserProfile(data, this.getCurl());
-
-      //TODO: This block and the subsequent blocks could all be methods of their own
-      runAppQuery(new Usergrid.Query("GET", 'users/' + entity.username + '/groups', null, null,
-        function(response) {
-          if (data && response.entities && (response.entities.length > 0)) {
-            data.memberships = response.entities;
-          }
-          redrawUserMemberships(data, this.getCurl());
-        },
-        function() { alertModal("Error", "Unable to retrieve user's groups."); }
-      ));
-
-      runAppQuery(new Usergrid.Query("GET", 'users/' + entity.username + '/activities', null, null,
-        function(response) {
-          if (data && response.entities && (response.entities.length > 0)) {
-            data.activities = response.entities;
-            data.curl = this.getCurl();
-            $('span[id^=activities-date-field]').each( function() {
-              var created = dateToString(parseInt($(this).html()))
-              $(this).html(created);
-            });
-          }
-          redrawUserActivities(data, this.getCurl());
-        },
-        function() { alertModal("Error", "Unable to retrieve user's activities.");}
-      ));
-
-      runAppQuery(new Usergrid.Query("GET", 'users/' + entity.username + '/roles', null, null,
-        function(response) {
-          response = escapeMe(response);
-          if (data && response.entities && (response.entities.length > 0)) {
-            data.roles = response.entities;
-          } else {
-            data.roles = null;
-          }
-          data.rolesCurl = this.getCurl();
-          //Run Permissions query after roles query has been handled
-          runAppQuery(new Usergrid.Query("GET", 'users/' + entity.username + '/permissions', null, null,
-            function(response) {
-              var permissions = {};
-              if (data && response.data && (response.data.length > 0)) {
-
-                if (response.data) {
-                  var perms = response.data;
-                  var count = 0;
-
-                  for (var i in perms) {
-                    count++;
-                    var perm = perms[i];
-                    var parts = perm.split(':');
-                    var ops_part = "";
-                    var path_part = parts[0];
-
-                    if (parts.length > 1) {
-                      ops_part = parts[0];
-                      path_part = parts[1];
-                    }
-
-                    ops_part.replace("*", "get,post,put,delete")
-                    var ops = ops_part.split(',');
-                    p

<TRUNCATED>

[10/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/lib/prettify.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/lib/prettify.js b/deleted/dist-cov/usergrid-portal/archive/js/lib/prettify.js
deleted file mode 100644
index 037c26d..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/lib/prettify.js
+++ /dev/null
@@ -1,1477 +0,0 @@
-// Copyright (C) 2006 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-/**
- * @fileoverview
- * some functions for browser-side pretty printing of code contained in html.
- *
- * <p>
- * For a fairly comprehensive set of languages see the
- * <a href="http://google-code-prettify.googlecode.com/svn/trunk/README.html#langs">README</a>
- * file that came with this source.  At a minimum, the lexer should work on a
- * number of languages including C and friends, Java, Python, Bash, SQL, HTML,
- * XML, CSS, Javascript, and Makefiles.  It works passably on Ruby, PHP and Awk
- * and a subset of Perl, but, because of commenting conventions, doesn't work on
- * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class.
- * <p>
- * Usage: <ol>
- * <li> include this source file in an html page via
- *   {@code <script type="text/javascript" src="/path/to/prettify.js"></script>}
- * <li> define style rules.  See the example page for examples.
- * <li> mark the {@code <pre>} and {@code <code>} tags in your source with
- *    {@code class=prettyprint.}
- *    You can also use the (html deprecated) {@code <xmp>} tag, but the pretty
- *    printer needs to do more substantial DOM manipulations to support that, so
- *    some css styles may not be preserved.
- * </ol>
- * That's it.  I wanted to keep the API as simple as possible, so there's no
- * need to specify which language the code is in, but if you wish, you can add
- * another class to the {@code <pre>} or {@code <code>} element to specify the
- * language, as in {@code <pre class="prettyprint lang-java">}.  Any class that
- * starts with "lang-" followed by a file extension, specifies the file type.
- * See the "lang-*.js" files in this directory for code that implements
- * per-language file handlers.
- * <p>
- * Change log:<br>
- * cbeust, 2006/08/22
- * <blockquote>
- *   Java annotations (start with "@") are now captured as literals ("lit")
- * </blockquote>
- * @requires console
- */
-
-// JSLint declarations
-/*global console, document, navigator, setTimeout, window */
-
-/**
- * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
- * UI events.
- * If set to {@code false}, {@code prettyPrint()} is synchronous.
- */
-window['PR_SHOULD_USE_CONTINUATION'] = true;
-
-(function () {
-  // Keyword lists for various languages.
-  // We use things that coerce to strings to make them compact when minified
-  // and to defeat aggressive optimizers that fold large string constants.
-  var FLOW_CONTROL_KEYWORDS = ["break,continue,do,else,for,if,return,while"];
-  var C_KEYWORDS = [FLOW_CONTROL_KEYWORDS,"auto,case,char,const,default," + 
-      "double,enum,extern,float,goto,int,long,register,short,signed,sizeof," +
-      "static,struct,switch,typedef,union,unsigned,void,volatile"];
-  var COMMON_KEYWORDS = [C_KEYWORDS,"catch,class,delete,false,import," +
-      "new,operator,private,protected,public,this,throw,true,try,typeof"];
-  var CPP_KEYWORDS = [COMMON_KEYWORDS,"alignof,align_union,asm,axiom,bool," +
-      "concept,concept_map,const_cast,constexpr,decltype," +
-      "dynamic_cast,explicit,export,friend,inline,late_check," +
-      "mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast," +
-      "template,typeid,typename,using,virtual,where"];
-  var JAVA_KEYWORDS = [COMMON_KEYWORDS,
-      "abstract,boolean,byte,extends,final,finally,implements,import," +
-      "instanceof,null,native,package,strictfp,super,synchronized,throws," +
-      "transient"];
-  var CSHARP_KEYWORDS = [JAVA_KEYWORDS,
-      "as,base,by,checked,decimal,delegate,descending,dynamic,event," +
-      "fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock," +
-      "object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed," +
-      "stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];
-  var COFFEE_KEYWORDS = "all,and,by,catch,class,else,extends,false,finally," +
-      "for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then," +
-      "true,try,unless,until,when,while,yes";
-  var JSCRIPT_KEYWORDS = [COMMON_KEYWORDS,
-      "debugger,eval,export,function,get,null,set,undefined,var,with," +
-      "Infinity,NaN"];
-  var PERL_KEYWORDS = "caller,delete,die,do,dump,elsif,eval,exit,foreach,for," +
-      "goto,if,import,last,local,my,next,no,our,print,package,redo,require," +
-      "sub,undef,unless,until,use,wantarray,while,BEGIN,END";
-  var PYTHON_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "and,as,assert,class,def,del," +
-      "elif,except,exec,finally,from,global,import,in,is,lambda," +
-      "nonlocal,not,or,pass,print,raise,try,with,yield," +
-      "False,True,None"];
-  var RUBY_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "alias,and,begin,case,class," +
-      "def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo," +
-      "rescue,retry,self,super,then,true,undef,unless,until,when,yield," +
-      "BEGIN,END"];
-  var SH_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "case,done,elif,esac,eval,fi," +
-      "function,in,local,set,then,until"];
-  var ALL_KEYWORDS = [
-      CPP_KEYWORDS, CSHARP_KEYWORDS, JSCRIPT_KEYWORDS, PERL_KEYWORDS +
-      PYTHON_KEYWORDS, RUBY_KEYWORDS, SH_KEYWORDS];
-  var C_TYPES = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;
-
-  // token style names.  correspond to css classes
-  /**
-   * token style for a string literal
-   * @const
-   */
-  var PR_STRING = 'str';
-  /**
-   * token style for a keyword
-   * @const
-   */
-  var PR_KEYWORD = 'kwd';
-  /**
-   * token style for a comment
-   * @const
-   */
-  var PR_COMMENT = 'com';
-  /**
-   * token style for a type
-   * @const
-   */
-  var PR_TYPE = 'typ';
-  /**
-   * token style for a literal value.  e.g. 1, null, true.
-   * @const
-   */
-  var PR_LITERAL = 'lit';
-  /**
-   * token style for a punctuation string.
-   * @const
-   */
-  var PR_PUNCTUATION = 'pun';
-  /**
-   * token style for a punctuation string.
-   * @const
-   */
-  var PR_PLAIN = 'pln';
-
-  /**
-   * token style for an sgml tag.
-   * @const
-   */
-  var PR_TAG = 'tag';
-  /**
-   * token style for a markup declaration such as a DOCTYPE.
-   * @const
-   */
-  var PR_DECLARATION = 'dec';
-  /**
-   * token style for embedded source.
-   * @const
-   */
-  var PR_SOURCE = 'src';
-  /**
-   * token style for an sgml attribute name.
-   * @const
-   */
-  var PR_ATTRIB_NAME = 'atn';
-  /**
-   * token style for an sgml attribute value.
-   * @const
-   */
-  var PR_ATTRIB_VALUE = 'atv';
-
-  /**
-   * A class that indicates a section of markup that is not code, e.g. to allow
-   * embedding of line numbers within code listings.
-   * @const
-   */
-  var PR_NOCODE = 'nocode';
-
-
-
-/**
- * A set of tokens that can precede a regular expression literal in
- * javascript
- * http://web.archive.org/web/20070717142515/http://www.mozilla.org/js/language/js20/rationale/syntax.html
- * has the full list, but I've removed ones that might be problematic when
- * seen in languages that don't support regular expression literals.
- *
- * <p>Specifically, I've removed any keywords that can't precede a regexp
- * literal in a syntactically legal javascript program, and I've removed the
- * "in" keyword since it's not a keyword in many languages, and might be used
- * as a count of inches.
- *
- * <p>The link a above does not accurately describe EcmaScript rules since
- * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
- * very well in practice.
- *
- * @private
- * @const
- */
-var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*';
-
-// CAVEAT: this does not properly handle the case where a regular
-// expression immediately follows another since a regular expression may
-// have flags for case-sensitivity and the like.  Having regexp tokens
-// adjacent is not valid in any language I'm aware of, so I'm punting.
-// TODO: maybe style special characters inside a regexp as punctuation.
-
-
-  /**
-   * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
-   * matches the union of the sets of strings matched by the input RegExp.
-   * Since it matches globally, if the input strings have a start-of-input
-   * anchor (/^.../), it is ignored for the purposes of unioning.
-   * @param {Array.<RegExp>} regexs non multiline, non-global regexs.
-   * @return {RegExp} a global regex.
-   */
-  function combinePrefixPatterns(regexs) {
-    var capturedGroupIndex = 0;
-  
-    var needToFoldCase = false;
-    var ignoreCase = false;
-    for (var i = 0, n = regexs.length; i < n; ++i) {
-      var regex = regexs[i];
-      if (regex.ignoreCase) {
-        ignoreCase = true;
-      } else if (/[a-z]/i.test(regex.source.replace(
-                     /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
-        needToFoldCase = true;
-        ignoreCase = false;
-        break;
-      }
-    }
-  
-    var escapeCharToCodeUnit = {
-      'b': 8,
-      't': 9,
-      'n': 0xa,
-      'v': 0xb,
-      'f': 0xc,
-      'r': 0xd
-    };
-  
-    function decodeEscape(charsetPart) {
-      var cc0 = charsetPart.charCodeAt(0);
-      if (cc0 !== 92 /* \\ */) {
-        return cc0;
-      }
-      var c1 = charsetPart.charAt(1);
-      cc0 = escapeCharToCodeUnit[c1];
-      if (cc0) {
-        return cc0;
-      } else if ('0' <= c1 && c1 <= '7') {
-        return parseInt(charsetPart.substring(1), 8);
-      } else if (c1 === 'u' || c1 === 'x') {
-        return parseInt(charsetPart.substring(2), 16);
-      } else {
-        return charsetPart.charCodeAt(1);
-      }
-    }
-  
-    function encodeEscape(charCode) {
-      if (charCode < 0x20) {
-        return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
-      }
-      var ch = String.fromCharCode(charCode);
-      if (ch === '\\' || ch === '-' || ch === '[' || ch === ']') {
-        ch = '\\' + ch;
-      }
-      return ch;
-    }
-  
-    function caseFoldCharset(charSet) {
-      var charsetParts = charSet.substring(1, charSet.length - 1).match(
-          new RegExp(
-              '\\\\u[0-9A-Fa-f]{4}'
-              + '|\\\\x[0-9A-Fa-f]{2}'
-              + '|\\\\[0-3][0-7]{0,2}'
-              + '|\\\\[0-7]{1,2}'
-              + '|\\\\[\\s\\S]'
-              + '|-'
-              + '|[^-\\\\]',
-              'g'));
-      var groups = [];
-      var ranges = [];
-      var inverse = charsetParts[0] === '^';
-      for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
-        var p = charsetParts[i];
-        if (/\\[bdsw]/i.test(p)) {  // Don't muck with named groups.
-          groups.push(p);
-        } else {
-          var start = decodeEscape(p);
-          var end;
-          if (i + 2 < n && '-' === charsetParts[i + 1]) {
-            end = decodeEscape(charsetParts[i + 2]);
-            i += 2;
-          } else {
-            end = start;
-          }
-          ranges.push([start, end]);
-          // If the range might intersect letters, then expand it.
-          // This case handling is too simplistic.
-          // It does not deal with non-latin case folding.
-          // It works for latin source code identifiers though.
-          if (!(end < 65 || start > 122)) {
-            if (!(end < 65 || start > 90)) {
-              ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
-            }
-            if (!(end < 97 || start > 122)) {
-              ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
-            }
-          }
-        }
-      }
-  
-      // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
-      // -> [[1, 12], [14, 14], [16, 17]]
-      ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1]  - a[1]); });
-      var consolidatedRanges = [];
-      var lastRange = [NaN, NaN];
-      for (var i = 0; i < ranges.length; ++i) {
-        var range = ranges[i];
-        if (range[0] <= lastRange[1] + 1) {
-          lastRange[1] = Math.max(lastRange[1], range[1]);
-        } else {
-          consolidatedRanges.push(lastRange = range);
-        }
-      }
-  
-      var out = ['['];
-      if (inverse) { out.push('^'); }
-      out.push.apply(out, groups);
-      for (var i = 0; i < consolidatedRanges.length; ++i) {
-        var range = consolidatedRanges[i];
-        out.push(encodeEscape(range[0]));
-        if (range[1] > range[0]) {
-          if (range[1] + 1 > range[0]) { out.push('-'); }
-          out.push(encodeEscape(range[1]));
-        }
-      }
-      out.push(']');
-      return out.join('');
-    }
-  
-    function allowAnywhereFoldCaseAndRenumberGroups(regex) {
-      // Split into character sets, escape sequences, punctuation strings
-      // like ('(', '(?:', ')', '^'), and runs of characters that do not
-      // include any of the above.
-      var parts = regex.source.match(
-          new RegExp(
-              '(?:'
-              + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]'  // a character set
-              + '|\\\\u[A-Fa-f0-9]{4}'  // a unicode escape
-              + '|\\\\x[A-Fa-f0-9]{2}'  // a hex escape
-              + '|\\\\[0-9]+'  // a back-reference or octal escape
-              + '|\\\\[^ux0-9]'  // other escape sequence
-              + '|\\(\\?[:!=]'  // start of a non-capturing group
-              + '|[\\(\\)\\^]'  // start/emd of a group, or line start
-              + '|[^\\x5B\\x5C\\(\\)\\^]+'  // run of other characters
-              + ')',
-              'g'));
-      var n = parts.length;
-  
-      // Maps captured group numbers to the number they will occupy in
-      // the output or to -1 if that has not been determined, or to
-      // undefined if they need not be capturing in the output.
-      var capturedGroups = [];
-  
-      // Walk over and identify back references to build the capturedGroups
-      // mapping.
-      for (var i = 0, groupIndex = 0; i < n; ++i) {
-        var p = parts[i];
-        if (p === '(') {
-          // groups are 1-indexed, so max group index is count of '('
-          ++groupIndex;
-        } else if ('\\' === p.charAt(0)) {
-          var decimalValue = +p.substring(1);
-          if (decimalValue && decimalValue <= groupIndex) {
-            capturedGroups[decimalValue] = -1;
-          }
-        }
-      }
-  
-      // Renumber groups and reduce capturing groups to non-capturing groups
-      // where possible.
-      for (var i = 1; i < capturedGroups.length; ++i) {
-        if (-1 === capturedGroups[i]) {
-          capturedGroups[i] = ++capturedGroupIndex;
-        }
-      }
-      for (var i = 0, groupIndex = 0; i < n; ++i) {
-        var p = parts[i];
-        if (p === '(') {
-          ++groupIndex;
-          if (capturedGroups[groupIndex] === undefined) {
-            parts[i] = '(?:';
-          }
-        } else if ('\\' === p.charAt(0)) {
-          var decimalValue = +p.substring(1);
-          if (decimalValue && decimalValue <= groupIndex) {
-            parts[i] = '\\' + capturedGroups[groupIndex];
-          }
-        }
-      }
-  
-      // Remove any prefix anchors so that the output will match anywhere.
-      // ^^ really does mean an anchored match though.
-      for (var i = 0, groupIndex = 0; i < n; ++i) {
-        if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
-      }
-  
-      // Expand letters to groups to handle mixing of case-sensitive and
-      // case-insensitive patterns if necessary.
-      if (regex.ignoreCase && needToFoldCase) {
-        for (var i = 0; i < n; ++i) {
-          var p = parts[i];
-          var ch0 = p.charAt(0);
-          if (p.length >= 2 && ch0 === '[') {
-            parts[i] = caseFoldCharset(p);
-          } else if (ch0 !== '\\') {
-            // TODO: handle letters in numeric escapes.
-            parts[i] = p.replace(
-                /[a-zA-Z]/g,
-                function (ch) {
-                  var cc = ch.charCodeAt(0);
-                  return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
-                });
-          }
-        }
-      }
-  
-      return parts.join('');
-    }
-  
-    var rewritten = [];
-    for (var i = 0, n = regexs.length; i < n; ++i) {
-      var regex = regexs[i];
-      if (regex.global || regex.multiline) { throw new Error('' + regex); }
-      rewritten.push(
-          '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
-    }
-  
-    return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
-  }
-
-
-  /**
-   * Split markup into a string of source code and an array mapping ranges in
-   * that string to the text nodes in which they appear.
-   *
-   * <p>
-   * The HTML DOM structure:</p>
-   * <pre>
-   * (Element   "p"
-   *   (Element "b"
-   *     (Text  "print "))       ; #1
-   *   (Text    "'Hello '")      ; #2
-   *   (Element "br")            ; #3
-   *   (Text    "  + 'World';")) ; #4
-   * </pre>
-   * <p>
-   * corresponds to the HTML
-   * {@code <p><b>print </b>'Hello '<br>  + 'World';</p>}.</p>
-   *
-   * <p>
-   * It will produce the output:</p>
-   * <pre>
-   * {
-   *   sourceCode: "print 'Hello '\n  + 'World';",
-   *   //                 1         2
-   *   //       012345678901234 5678901234567
-   *   spans: [0, #1, 6, #2, 14, #3, 15, #4]
-   * }
-   * </pre>
-   * <p>
-   * where #1 is a reference to the {@code "print "} text node above, and so
-   * on for the other text nodes.
-   * </p>
-   *
-   * <p>
-   * The {@code} spans array is an array of pairs.  Even elements are the start
-   * indices of substrings, and odd elements are the text nodes (or BR elements)
-   * that contain the text for those substrings.
-   * Substrings continue until the next index or the end of the source.
-   * </p>
-   *
-   * @param {Node} node an HTML DOM subtree containing source-code.
-   * @return {Object} source code and the text nodes in which they occur.
-   */
-  function extractSourceSpans(node) {
-    var nocode = /(?:^|\s)nocode(?:\s|$)/;
-  
-    var chunks = [];
-    var length = 0;
-    var spans = [];
-    var k = 0;
-  
-    var whitespace;
-    if (node.currentStyle) {
-      whitespace = node.currentStyle.whiteSpace;
-    } else if (window.getComputedStyle) {
-      whitespace = document.defaultView.getComputedStyle(node, null)
-          .getPropertyValue('white-space');
-    }
-    var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3);
-  
-    function walk(node) {
-      switch (node.nodeType) {
-        case 1:  // Element
-          if (nocode.test(node.className)) { return; }
-          for (var child = node.firstChild; child; child = child.nextSibling) {
-            walk(child);
-          }
-          var nodeName = node.nodeName;
-          if ('BR' === nodeName || 'LI' === nodeName) {
-            chunks[k] = '\n';
-            spans[k << 1] = length++;
-            spans[(k++ << 1) | 1] = node;
-          }
-          break;
-        case 3: case 4:  // Text
-          var text = node.nodeValue;
-          if (text.length) {
-            if (!isPreformatted) {
-              text = text.replace(/[ \t\r\n]+/g, ' ');
-            } else {
-              text = text.replace(/\r\n?/g, '\n');  // Normalize newlines.
-            }
-            // TODO: handle tabs here?
-            chunks[k] = text;
-            spans[k << 1] = length;
-            length += text.length;
-            spans[(k++ << 1) | 1] = node;
-          }
-          break;
-      }
-    }
-  
-    walk(node);
-  
-    return {
-      sourceCode: chunks.join('').replace(/\n$/, ''),
-      spans: spans
-    };
-  }
-
-
-  /**
-   * Apply the given language handler to sourceCode and add the resulting
-   * decorations to out.
-   * @param {number} basePos the index of sourceCode within the chunk of source
-   *    whose decorations are already present on out.
-   */
-  function appendDecorations(basePos, sourceCode, langHandler, out) {
-    if (!sourceCode) { return; }
-    var job = {
-      sourceCode: sourceCode,
-      basePos: basePos
-    };
-    langHandler(job);
-    out.push.apply(out, job.decorations);
-  }
-
-  var notWs = /\S/;
-
-  /**
-   * Given an element, if it contains only one child element and any text nodes
-   * it contains contain only space characters, return the sole child element.
-   * Otherwise returns undefined.
-   * <p>
-   * This is meant to return the CODE element in {@code <pre><code ...>} when
-   * there is a single child element that contains all the non-space textual
-   * content, but not to return anything where there are multiple child elements
-   * as in {@code <pre><code>...</code><code>...</code></pre>} or when there
-   * is textual content.
-   */
-  function childContentWrapper(element) {
-    var wrapper = undefined;
-    for (var c = element.firstChild; c; c = c.nextSibling) {
-      var type = c.nodeType;
-      wrapper = (type === 1)  // Element Node
-          ? (wrapper ? element : c)
-          : (type === 3)  // Text Node
-          ? (notWs.test(c.nodeValue) ? element : wrapper)
-          : wrapper;
-    }
-    return wrapper === element ? undefined : wrapper;
-  }
-
-  /** Given triples of [style, pattern, context] returns a lexing function,
-    * The lexing function interprets the patterns to find token boundaries and
-    * returns a decoration list of the form
-    * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
-    * where index_n is an index into the sourceCode, and style_n is a style
-    * constant like PR_PLAIN.  index_n-1 <= index_n, and style_n-1 applies to
-    * all characters in sourceCode[index_n-1:index_n].
-    *
-    * The stylePatterns is a list whose elements have the form
-    * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
-    *
-    * Style is a style constant like PR_PLAIN, or can be a string of the
-    * form 'lang-FOO', where FOO is a language extension describing the
-    * language of the portion of the token in $1 after pattern executes.
-    * E.g., if style is 'lang-lisp', and group 1 contains the text
-    * '(hello (world))', then that portion of the token will be passed to the
-    * registered lisp handler for formatting.
-    * The text before and after group 1 will be restyled using this decorator
-    * so decorators should take care that this doesn't result in infinite
-    * recursion.  For example, the HTML lexer rule for SCRIPT elements looks
-    * something like ['lang-js', /<[s]cript>(.+?)<\/script>/].  This may match
-    * '<script>foo()<\/script>', which would cause the current decorator to
-    * be called with '<script>' which would not match the same rule since
-    * group 1 must not be empty, so it would be instead styled as PR_TAG by
-    * the generic tag rule.  The handler registered for the 'js' extension would
-    * then be called with 'foo()', and finally, the current decorator would
-    * be called with '<\/script>' which would not match the original rule and
-    * so the generic tag rule would identify it as a tag.
-    *
-    * Pattern must only match prefixes, and if it matches a prefix, then that
-    * match is considered a token with the same style.
-    *
-    * Context is applied to the last non-whitespace, non-comment token
-    * recognized.
-    *
-    * Shortcut is an optional string of characters, any of which, if the first
-    * character, gurantee that this pattern and only this pattern matches.
-    *
-    * @param {Array} shortcutStylePatterns patterns that always start with
-    *   a known character.  Must have a shortcut string.
-    * @param {Array} fallthroughStylePatterns patterns that will be tried in
-    *   order if the shortcut ones fail.  May have shortcuts.
-    *
-    * @return {function (Object)} a
-    *   function that takes source code and returns a list of decorations.
-    */
-  function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {
-    var shortcuts = {};
-    var tokenizer;
-    (function () {
-      var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);
-      var allRegexs = [];
-      var regexKeys = {};
-      for (var i = 0, n = allPatterns.length; i < n; ++i) {
-        var patternParts = allPatterns[i];
-        var shortcutChars = patternParts[3];
-        if (shortcutChars) {
-          for (var c = shortcutChars.length; --c >= 0;) {
-            shortcuts[shortcutChars.charAt(c)] = patternParts;
-          }
-        }
-        var regex = patternParts[1];
-        var k = '' + regex;
-        if (!regexKeys.hasOwnProperty(k)) {
-          allRegexs.push(regex);
-          regexKeys[k] = null;
-        }
-      }
-      allRegexs.push(/[\0-\uffff]/);
-      tokenizer = combinePrefixPatterns(allRegexs);
-    })();
-
-    var nPatterns = fallthroughStylePatterns.length;
-
-    /**
-     * Lexes job.sourceCode and produces an output array job.decorations of
-     * style classes preceded by the position at which they start in
-     * job.sourceCode in order.
-     *
-     * @param {Object} job an object like <pre>{
-     *    sourceCode: {string} sourceText plain text,
-     *    basePos: {int} position of job.sourceCode in the larger chunk of
-     *        sourceCode.
-     * }</pre>
-     */
-    var decorate = function (job) {
-      var sourceCode = job.sourceCode, basePos = job.basePos;
-      /** Even entries are positions in source in ascending order.  Odd enties
-        * are style markers (e.g., PR_COMMENT) that run from that position until
-        * the end.
-        * @type {Array.<number|string>}
-        */
-      var decorations = [basePos, PR_PLAIN];
-      var pos = 0;  // index into sourceCode
-      var tokens = sourceCode.match(tokenizer) || [];
-      var styleCache = {};
-
-      for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {
-        var token = tokens[ti];
-        var style = styleCache[token];
-        var match = void 0;
-
-        var isEmbedded;
-        if (typeof style === 'string') {
-          isEmbedded = false;
-        } else {
-          var patternParts = shortcuts[token.charAt(0)];
-          if (patternParts) {
-            match = token.match(patternParts[1]);
-            style = patternParts[0];
-          } else {
-            for (var i = 0; i < nPatterns; ++i) {
-              patternParts = fallthroughStylePatterns[i];
-              match = token.match(patternParts[1]);
-              if (match) {
-                style = patternParts[0];
-                break;
-              }
-            }
-
-            if (!match) {  // make sure that we make progress
-              style = PR_PLAIN;
-            }
-          }
-
-          isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);
-          if (isEmbedded && !(match && typeof match[1] === 'string')) {
-            isEmbedded = false;
-            style = PR_SOURCE;
-          }
-
-          if (!isEmbedded) { styleCache[token] = style; }
-        }
-
-        var tokenStart = pos;
-        pos += token.length;
-
-        if (!isEmbedded) {
-          decorations.push(basePos + tokenStart, style);
-        } else {  // Treat group 1 as an embedded block of source code.
-          var embeddedSource = match[1];
-          var embeddedSourceStart = token.indexOf(embeddedSource);
-          var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;
-          if (match[2]) {
-            // If embeddedSource can be blank, then it would match at the
-            // beginning which would cause us to infinitely recurse on the
-            // entire token, so we catch the right context in match[2].
-            embeddedSourceEnd = token.length - match[2].length;
-            embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;
-          }
-          var lang = style.substring(5);
-          // Decorate the left of the embedded source
-          appendDecorations(
-              basePos + tokenStart,
-              token.substring(0, embeddedSourceStart),
-              decorate, decorations);
-          // Decorate the embedded source
-          appendDecorations(
-              basePos + tokenStart + embeddedSourceStart,
-              embeddedSource,
-              langHandlerForExtension(lang, embeddedSource),
-              decorations);
-          // Decorate the right of the embedded section
-          appendDecorations(
-              basePos + tokenStart + embeddedSourceEnd,
-              token.substring(embeddedSourceEnd),
-              decorate, decorations);
-        }
-      }
-      job.decorations = decorations;
-    };
-    return decorate;
-  }
-
-  /** returns a function that produces a list of decorations from source text.
-    *
-    * This code treats ", ', and ` as string delimiters, and \ as a string
-    * escape.  It does not recognize perl's qq() style strings.
-    * It has no special handling for double delimiter escapes as in basic, or
-    * the tripled delimiters used in python, but should work on those regardless
-    * although in those cases a single string literal may be broken up into
-    * multiple adjacent string literals.
-    *
-    * It recognizes C, C++, and shell style comments.
-    *
-    * @param {Object} options a set of optional parameters.
-    * @return {function (Object)} a function that examines the source code
-    *     in the input job and builds the decoration list.
-    */
-  function sourceDecorator(options) {
-    var shortcutStylePatterns = [], fallthroughStylePatterns = [];
-    if (options['tripleQuotedStrings']) {
-      // '''multi-line-string''', 'single-line-string', and double-quoted
-      shortcutStylePatterns.push(
-          [PR_STRING,  /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
-           null, '\'"']);
-    } else if (options['multiLineStrings']) {
-      // 'multi-line-string', "multi-line-string"
-      shortcutStylePatterns.push(
-          [PR_STRING,  /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
-           null, '\'"`']);
-    } else {
-      // 'single-line-string', "single-line-string"
-      shortcutStylePatterns.push(
-          [PR_STRING,
-           /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
-           null, '"\'']);
-    }
-    if (options['verbatimStrings']) {
-      // verbatim-string-literal production from the C# grammar.  See issue 93.
-      fallthroughStylePatterns.push(
-          [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
-    }
-    var hc = options['hashComments'];
-    if (hc) {
-      if (options['cStyleComments']) {
-        if (hc > 1) {  // multiline hash comments
-          shortcutStylePatterns.push(
-              [PR_COMMENT, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, '#']);
-        } else {
-          // Stop C preprocessor declarations at an unclosed open comment
-          shortcutStylePatterns.push(
-              [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,
-               null, '#']);
-        }
-        fallthroughStylePatterns.push(
-            [PR_STRING,
-             /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
-             null]);
-      } else {
-        shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
-      }
-    }
-    if (options['cStyleComments']) {
-      fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]);
-      fallthroughStylePatterns.push(
-          [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
-    }
-    if (options['regexLiterals']) {
-      /**
-       * @const
-       */
-      var REGEX_LITERAL = (
-          // A regular expression literal starts with a slash that is
-          // not followed by * or / so that it is not confused with
-          // comments.
-          '/(?=[^/*])'
-          // and then contains any number of raw characters,
-          + '(?:[^/\\x5B\\x5C]'
-          // escape sequences (\x5C),
-          +    '|\\x5C[\\s\\S]'
-          // or non-nesting character sets (\x5B\x5D);
-          +    '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+'
-          // finally closed by a /.
-          + '/');
-      fallthroughStylePatterns.push(
-          ['lang-regex',
-           new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
-           ]);
-    }
-
-    var types = options['types'];
-    if (types) {
-      fallthroughStylePatterns.push([PR_TYPE, types]);
-    }
-
-    var keywords = ("" + options['keywords']).replace(/^ | $/g, '');
-    if (keywords.length) {
-      fallthroughStylePatterns.push(
-          [PR_KEYWORD,
-           new RegExp('^(?:' + keywords.replace(/[\s,]+/g, '|') + ')\\b'),
-           null]);
-    }
-
-    shortcutStylePatterns.push([PR_PLAIN,       /^\s+/, null, ' \r\n\t\xA0']);
-    fallthroughStylePatterns.push(
-        // TODO(mikesamuel): recognize non-latin letters and numerals in idents
-        [PR_LITERAL,     /^@[a-z_$][a-z_$@0-9]*/i, null],
-        [PR_TYPE,        /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/, null],
-        [PR_PLAIN,       /^[a-z_$][a-z_$@0-9]*/i, null],
-        [PR_LITERAL,
-         new RegExp(
-             '^(?:'
-             // A hex number
-             + '0x[a-f0-9]+'
-             // or an octal or decimal number,
-             + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
-             // possibly in scientific notation
-             + '(?:e[+\\-]?\\d+)?'
-             + ')'
-             // with an optional modifier like UL for unsigned long
-             + '[a-z]*', 'i'),
-         null, '0123456789'],
-        // Don't treat escaped quotes in bash as starting strings.  See issue 144.
-        [PR_PLAIN,       /^\\[\s\S]?/, null],
-        [PR_PUNCTUATION, /^.[^\s\w\.$@\'\"\`\/\#\\]*/, null]);
-
-    return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
-  }
-
-  var decorateSource = sourceDecorator({
-        'keywords': ALL_KEYWORDS,
-        'hashComments': true,
-        'cStyleComments': true,
-        'multiLineStrings': true,
-        'regexLiterals': true
-      });
-
-  /**
-   * Given a DOM subtree, wraps it in a list, and puts each line into its own
-   * list item.
-   *
-   * @param {Node} node modified in place.  Its content is pulled into an
-   *     HTMLOListElement, and each line is moved into a separate list item.
-   *     This requires cloning elements, so the input might not have unique
-   *     IDs after numbering.
-   */
-  function numberLines(node, opt_startLineNum) {
-    var nocode = /(?:^|\s)nocode(?:\s|$)/;
-    var lineBreak = /\r\n?|\n/;
-  
-    var document = node.ownerDocument;
-  
-    var whitespace;
-    if (node.currentStyle) {
-      whitespace = node.currentStyle.whiteSpace;
-    } else if (window.getComputedStyle) {
-      whitespace = document.defaultView.getComputedStyle(node, null)
-          .getPropertyValue('white-space');
-    }
-    // If it's preformatted, then we need to split lines on line breaks
-    // in addition to <BR>s.
-    var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3);
-  
-    var li = document.createElement('LI');
-    while (node.firstChild) {
-      li.appendChild(node.firstChild);
-    }
-    // An array of lines.  We split below, so this is initialized to one
-    // un-split line.
-    var listItems = [li];
-  
-    function walk(node) {
-      switch (node.nodeType) {
-        case 1:  // Element
-          if (nocode.test(node.className)) { break; }
-          if ('BR' === node.nodeName) {
-            breakAfter(node);
-            // Discard the <BR> since it is now flush against a </LI>.
-            if (node.parentNode) {
-              node.parentNode.removeChild(node);
-            }
-          } else {
-            for (var child = node.firstChild; child; child = child.nextSibling) {
-              walk(child);
-            }
-          }
-          break;
-        case 3: case 4:  // Text
-          if (isPreformatted) {
-            var text = node.nodeValue;
-            var match = text.match(lineBreak);
-            if (match) {
-              var firstLine = text.substring(0, match.index);
-              node.nodeValue = firstLine;
-              var tail = text.substring(match.index + match[0].length);
-              if (tail) {
-                var parent = node.parentNode;
-                parent.insertBefore(
-                    document.createTextNode(tail), node.nextSibling);
-              }
-              breakAfter(node);
-              if (!firstLine) {
-                // Don't leave blank text nodes in the DOM.
-                node.parentNode.removeChild(node);
-              }
-            }
-          }
-          break;
-      }
-    }
-  
-    // Split a line after the given node.
-    function breakAfter(lineEndNode) {
-      // If there's nothing to the right, then we can skip ending the line
-      // here, and move root-wards since splitting just before an end-tag
-      // would require us to create a bunch of empty copies.
-      while (!lineEndNode.nextSibling) {
-        lineEndNode = lineEndNode.parentNode;
-        if (!lineEndNode) { return; }
-      }
-  
-      function breakLeftOf(limit, copy) {
-        // Clone shallowly if this node needs to be on both sides of the break.
-        var rightSide = copy ? limit.cloneNode(false) : limit;
-        var parent = limit.parentNode;
-        if (parent) {
-          // We clone the parent chain.
-          // This helps us resurrect important styling elements that cross lines.
-          // E.g. in <i>Foo<br>Bar</i>
-          // should be rewritten to <li><i>Foo</i></li><li><i>Bar</i></li>.
-          var parentClone = breakLeftOf(parent, 1);
-          // Move the clone and everything to the right of the original
-          // onto the cloned parent.
-          var next = limit.nextSibling;
-          parentClone.appendChild(rightSide);
-          for (var sibling = next; sibling; sibling = next) {
-            next = sibling.nextSibling;
-            parentClone.appendChild(sibling);
-          }
-        }
-        return rightSide;
-      }
-  
-      var copiedListItem = breakLeftOf(lineEndNode.nextSibling, 0);
-  
-      // Walk the parent chain until we reach an unattached LI.
-      for (var parent;
-           // Check nodeType since IE invents document fragments.
-           (parent = copiedListItem.parentNode) && parent.nodeType === 1;) {
-        copiedListItem = parent;
-      }
-      // Put it on the list of lines for later processing.
-      listItems.push(copiedListItem);
-    }
-  
-    // Split lines while there are lines left to split.
-    for (var i = 0;  // Number of lines that have been split so far.
-         i < listItems.length;  // length updated by breakAfter calls.
-         ++i) {
-      walk(listItems[i]);
-    }
-  
-    // Make sure numeric indices show correctly.
-    if (opt_startLineNum === (opt_startLineNum|0)) {
-      listItems[0].setAttribute('value', opt_startLineNum);
-    }
-  
-    var ol = document.createElement('OL');
-    ol.className = 'linenums';
-    var offset = Math.max(0, ((opt_startLineNum - 1 /* zero index */)) | 0) || 0;
-    for (var i = 0, n = listItems.length; i < n; ++i) {
-      li = listItems[i];
-      // Stick a class on the LIs so that stylesheets can
-      // color odd/even rows, or any other row pattern that
-      // is co-prime with 10.
-      li.className = 'L' + ((i + offset) % 10);
-      if (!li.firstChild) {
-        li.appendChild(document.createTextNode('\xA0'));
-      }
-      ol.appendChild(li);
-    }
-  
-    node.appendChild(ol);
-  }
-
-  /**
-   * Breaks {@code job.sourceCode} around style boundaries in
-   * {@code job.decorations} and modifies {@code job.sourceNode} in place.
-   * @param {Object} job like <pre>{
-   *    sourceCode: {string} source as plain text,
-   *    spans: {Array.<number|Node>} alternating span start indices into source
-   *       and the text node or element (e.g. {@code <BR>}) corresponding to that
-   *       span.
-   *    decorations: {Array.<number|string} an array of style classes preceded
-   *       by the position at which they start in job.sourceCode in order
-   * }</pre>
-   * @private
-   */
-  function recombineTagsAndDecorations(job) {
-    var isIE = /\bMSIE\b/.test(navigator.userAgent);
-    var newlineRe = /\n/g;
-  
-    var source = job.sourceCode;
-    var sourceLength = source.length;
-    // Index into source after the last code-unit recombined.
-    var sourceIndex = 0;
-  
-    var spans = job.spans;
-    var nSpans = spans.length;
-    // Index into spans after the last span which ends at or before sourceIndex.
-    var spanIndex = 0;
-  
-    var decorations = job.decorations;
-    var nDecorations = decorations.length;
-    // Index into decorations after the last decoration which ends at or before
-    // sourceIndex.
-    var decorationIndex = 0;
-  
-    // Remove all zero-length decorations.
-    decorations[nDecorations] = sourceLength;
-    var decPos, i;
-    for (i = decPos = 0; i < nDecorations;) {
-      if (decorations[i] !== decorations[i + 2]) {
-        decorations[decPos++] = decorations[i++];
-        decorations[decPos++] = decorations[i++];
-      } else {
-        i += 2;
-      }
-    }
-    nDecorations = decPos;
-  
-    // Simplify decorations.
-    for (i = decPos = 0; i < nDecorations;) {
-      var startPos = decorations[i];
-      // Conflate all adjacent decorations that use the same style.
-      var startDec = decorations[i + 1];
-      var end = i + 2;
-      while (end + 2 <= nDecorations && decorations[end + 1] === startDec) {
-        end += 2;
-      }
-      decorations[decPos++] = startPos;
-      decorations[decPos++] = startDec;
-      i = end;
-    }
-  
-    nDecorations = decorations.length = decPos;
-  
-    var decoration = null;
-    while (spanIndex < nSpans) {
-      var spanStart = spans[spanIndex];
-      var spanEnd = spans[spanIndex + 2] || sourceLength;
-  
-      var decStart = decorations[decorationIndex];
-      var decEnd = decorations[decorationIndex + 2] || sourceLength;
-  
-      var end = Math.min(spanEnd, decEnd);
-  
-      var textNode = spans[spanIndex + 1];
-      var styledText;
-      if (textNode.nodeType !== 1  // Don't muck with <BR>s or <LI>s
-          // Don't introduce spans around empty text nodes.
-          && (styledText = source.substring(sourceIndex, end))) {
-        // This may seem bizarre, and it is.  Emitting LF on IE causes the
-        // code to display with spaces instead of line breaks.
-        // Emitting Windows standard issue linebreaks (CRLF) causes a blank
-        // space to appear at the beginning of every line but the first.
-        // Emitting an old Mac OS 9 line separator makes everything spiffy.
-        if (isIE) { styledText = styledText.replace(newlineRe, '\r'); }
-        textNode.nodeValue = styledText;
-        var document = textNode.ownerDocument;
-        var span = document.createElement('SPAN');
-        span.className = decorations[decorationIndex + 1];
-        var parentNode = textNode.parentNode;
-        parentNode.replaceChild(span, textNode);
-        span.appendChild(textNode);
-        if (sourceIndex < spanEnd) {  // Split off a text node.
-          spans[spanIndex + 1] = textNode
-              // TODO: Possibly optimize by using '' if there's no flicker.
-              = document.createTextNode(source.substring(end, spanEnd));
-          parentNode.insertBefore(textNode, span.nextSibling);
-        }
-      }
-  
-      sourceIndex = end;
-  
-      if (sourceIndex >= spanEnd) {
-        spanIndex += 2;
-      }
-      if (sourceIndex >= decEnd) {
-        decorationIndex += 2;
-      }
-    }
-  }
-
-
-  /** Maps language-specific file extensions to handlers. */
-  var langHandlerRegistry = {};
-  /** Register a language handler for the given file extensions.
-    * @param {function (Object)} handler a function from source code to a list
-    *      of decorations.  Takes a single argument job which describes the
-    *      state of the computation.   The single parameter has the form
-    *      {@code {
-    *        sourceCode: {string} as plain text.
-    *        decorations: {Array.<number|string>} an array of style classes
-    *                     preceded by the position at which they start in
-    *                     job.sourceCode in order.
-    *                     The language handler should assigned this field.
-    *        basePos: {int} the position of source in the larger source chunk.
-    *                 All positions in the output decorations array are relative
-    *                 to the larger source chunk.
-    *      } }
-    * @param {Array.<string>} fileExtensions
-    */
-  function registerLangHandler(handler, fileExtensions) {
-    for (var i = fileExtensions.length; --i >= 0;) {
-      var ext = fileExtensions[i];
-      if (!langHandlerRegistry.hasOwnProperty(ext)) {
-        langHandlerRegistry[ext] = handler;
-      } else if (window['console']) {
-        console['warn']('cannot override language handler %s', ext);
-      }
-    }
-  }
-  function langHandlerForExtension(extension, source) {
-    if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {
-      // Treat it as markup if the first non whitespace character is a < and
-      // the last non-whitespace character is a >.
-      extension = /^\s*</.test(source)
-          ? 'default-markup'
-          : 'default-code';
-    }
-    return langHandlerRegistry[extension];
-  }
-  registerLangHandler(decorateSource, ['default-code']);
-  registerLangHandler(
-      createSimpleLexer(
-          [],
-          [
-           [PR_PLAIN,       /^[^<?]+/],
-           [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
-           [PR_COMMENT,     /^<\!--[\s\S]*?(?:-\->|$)/],
-           // Unescaped content in an unknown language
-           ['lang-',        /^<\?([\s\S]+?)(?:\?>|$)/],
-           ['lang-',        /^<%([\s\S]+?)(?:%>|$)/],
-           [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
-           ['lang-',        /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
-           // Unescaped content in javascript.  (Or possibly vbscript).
-           ['lang-js',      /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
-           // Contains unescaped stylesheet content
-           ['lang-css',     /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
-           ['lang-in.tag',  /^(<\/?[a-z][^<>]*>)/i]
-          ]),
-      ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);
-  registerLangHandler(
-      createSimpleLexer(
-          [
-           [PR_PLAIN,        /^[\s]+/, null, ' \t\r\n'],
-           [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\'']
-           ],
-          [
-           [PR_TAG,          /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
-           [PR_ATTRIB_NAME,  /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
-           ['lang-uq.val',   /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
-           [PR_PUNCTUATION,  /^[=<>\/]+/],
-           ['lang-js',       /^on\w+\s*=\s*\"([^\"]+)\"/i],
-           ['lang-js',       /^on\w+\s*=\s*\'([^\']+)\'/i],
-           ['lang-js',       /^on\w+\s*=\s*([^\"\'>\s]+)/i],
-           ['lang-css',      /^style\s*=\s*\"([^\"]+)\"/i],
-           ['lang-css',      /^style\s*=\s*\'([^\']+)\'/i],
-           ['lang-css',      /^style\s*=\s*([^\"\'>\s]+)/i]
-           ]),
-      ['in.tag']);
-  registerLangHandler(
-      createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']);
-  registerLangHandler(sourceDecorator({
-          'keywords': CPP_KEYWORDS,
-          'hashComments': true,
-          'cStyleComments': true,
-          'types': C_TYPES
-        }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
-  registerLangHandler(sourceDecorator({
-          'keywords': 'null,true,false'
-        }), ['json']);
-  registerLangHandler(sourceDecorator({
-          'keywords': CSHARP_KEYWORDS,
-          'hashComments': true,
-          'cStyleComments': true,
-          'verbatimStrings': true,
-          'types': C_TYPES
-        }), ['cs']);
-  registerLangHandler(sourceDecorator({
-          'keywords': JAVA_KEYWORDS,
-          'cStyleComments': true
-        }), ['java']);
-  registerLangHandler(sourceDecorator({
-          'keywords': SH_KEYWORDS,
-          'hashComments': true,
-          'multiLineStrings': true
-        }), ['bsh', 'csh', 'sh']);
-  registerLangHandler(sourceDecorator({
-          'keywords': PYTHON_KEYWORDS,
-          'hashComments': true,
-          'multiLineStrings': true,
-          'tripleQuotedStrings': true
-        }), ['cv', 'py']);
-  registerLangHandler(sourceDecorator({
-          'keywords': PERL_KEYWORDS,
-          'hashComments': true,
-          'multiLineStrings': true,
-          'regexLiterals': true
-        }), ['perl', 'pl', 'pm']);
-  registerLangHandler(sourceDecorator({
-          'keywords': RUBY_KEYWORDS,
-          'hashComments': true,
-          'multiLineStrings': true,
-          'regexLiterals': true
-        }), ['rb']);
-  registerLangHandler(sourceDecorator({
-          'keywords': JSCRIPT_KEYWORDS,
-          'cStyleComments': true,
-          'regexLiterals': true
-        }), ['js']);
-  registerLangHandler(sourceDecorator({
-          'keywords': COFFEE_KEYWORDS,
-          'hashComments': 3,  // ### style block comments
-          'cStyleComments': true,
-          'multilineStrings': true,
-          'tripleQuotedStrings': true,
-          'regexLiterals': true
-        }), ['coffee']);
-  registerLangHandler(createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
-
-  function applyDecorator(job) {
-    var opt_langExtension = job.langExtension;
-
-    try {
-      // Extract tags, and convert the source code to plain text.
-      var sourceAndSpans = extractSourceSpans(job.sourceNode);
-      /** Plain text. @type {string} */
-      var source = sourceAndSpans.sourceCode;
-      job.sourceCode = source;
-      job.spans = sourceAndSpans.spans;
-      job.basePos = 0;
-
-      // Apply the appropriate language handler
-      langHandlerForExtension(opt_langExtension, source)(job);
-
-      // Integrate the decorations and tags back into the source code,
-      // modifying the sourceNode in place.
-      recombineTagsAndDecorations(job);
-    } catch (e) {
-      if ('console' in window) {
-        console['log'](e && e['stack'] ? e['stack'] : e);
-      }
-    }
-  }
-
-  /**
-   * @param sourceCodeHtml {string} The HTML to pretty print.
-   * @param opt_langExtension {string} The language name to use.
-   *     Typically, a filename extension like 'cpp' or 'java'.
-   * @param opt_numberLines {number|boolean} True to number lines,
-   *     or the 1-indexed number of the first line in sourceCodeHtml.
-   */
-  function prettyPrintOne(sourceCodeHtml, opt_langExtension, opt_numberLines) {
-    var container = document.createElement('PRE');
-    // This could cause images to load and onload listeners to fire.
-    // E.g. <img onerror="alert(1337)" src="nosuchimage.png">.
-    // We assume that the inner HTML is from a trusted source.
-    container.innerHTML = sourceCodeHtml;
-    if (opt_numberLines) {
-      numberLines(container, opt_numberLines);
-    }
-
-    var job = {
-      langExtension: opt_langExtension,
-      numberLines: opt_numberLines,
-      sourceNode: container
-    };
-    applyDecorator(job);
-    return container.innerHTML;
-  }
-
-  function prettyPrint(opt_whenDone) {
-    function byTagName(tn) { return document.getElementsByTagName(tn); }
-    // fetch a list of nodes to rewrite
-    var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];
-    var elements = [];
-    for (var i = 0; i < codeSegments.length; ++i) {
-      for (var j = 0, n = codeSegments[i].length; j < n; ++j) {
-        elements.push(codeSegments[i][j]);
-      }
-    }
-    codeSegments = null;
-
-    var clock = Date;
-    if (!clock['now']) {
-      clock = { 'now': function () { return +(new Date); } };
-    }
-
-    // The loop is broken into a series of continuations to make sure that we
-    // don't make the browser unresponsive when rewriting a large page.
-    var k = 0;
-    var prettyPrintingJob;
-
-    var langExtensionRe = /\blang(?:uage)?-([\w.]+)(?!\S)/;
-    var prettyPrintRe = /\bprettyprint\b/;
-
-    function doWork() {
-      var endTime = (window['PR_SHOULD_USE_CONTINUATION'] ?
-                     clock['now']() + 250 /* ms */ :
-                     Infinity);
-      for (; k < elements.length && clock['now']() < endTime; k++) {
-        var cs = elements[k];
-        var className = cs.className;
-        if (className.indexOf('prettyprint') >= 0) {
-          // If the classes includes a language extensions, use it.
-          // Language extensions can be specified like
-          //     <pre class="prettyprint lang-cpp">
-          // the language extension "cpp" is used to find a language handler as
-          // passed to PR.registerLangHandler.
-          // HTML5 recommends that a language be specified using "language-"
-          // as the prefix instead.  Google Code Prettify supports both.
-          // http://dev.w3.org/html5/spec-author-view/the-code-element.html
-          var langExtension = className.match(langExtensionRe);
-          // Support <pre class="prettyprint"><code class="language-c">
-          var wrapper;
-          if (!langExtension && (wrapper = childContentWrapper(cs))
-              && "CODE" === wrapper.tagName) {
-            langExtension = wrapper.className.match(langExtensionRe);
-          }
-
-          if (langExtension) {
-            langExtension = langExtension[1];
-          }
-
-          // make sure this is not nested in an already prettified element
-          var nested = false;
-          for (var p = cs.parentNode; p; p = p.parentNode) {
-            if ((p.tagName === 'pre' || p.tagName === 'code' ||
-                 p.tagName === 'xmp') &&
-                p.className && p.className.indexOf('prettyprint') >= 0) {
-              nested = true;
-              break;
-            }
-          }
-          if (!nested) {
-            // Look for a class like linenums or linenums:<n> where <n> is the
-            // 1-indexed number of the first line.
-            var lineNums = cs.className.match(/\blinenums\b(?::(\d+))?/);
-            lineNums = lineNums
-                  ? lineNums[1] && lineNums[1].length ? +lineNums[1] : true
-                  : false;
-            if (lineNums) { numberLines(cs, lineNums); }
-
-            // do the pretty printing
-            prettyPrintingJob = {
-              langExtension: langExtension,
-              sourceNode: cs,
-              numberLines: lineNums
-            };
-            applyDecorator(prettyPrintingJob);
-          }
-        }
-      }
-      if (k < elements.length) {
-        // finish up in a continuation
-        setTimeout(doWork, 250);
-      } else if (opt_whenDone) {
-        opt_whenDone();
-      }
-    }
-
-    doWork();
-  }
-
-   /**
-    * Find all the {@code <pre>} and {@code <code>} tags in the DOM with
-    * {@code class=prettyprint} and prettify them.
-    *
-    * @param {Function?} opt_whenDone if specified, called when the last entry
-    *     has been finished.
-    */
-  window['prettyPrintOne'] = prettyPrintOne;
-   /**
-    * Pretty print a chunk of code.
-    *
-    * @param {string} sourceCodeHtml code as html
-    * @return {string} code as html, but prettier
-    */
-  window['prettyPrint'] = prettyPrint;
-   /**
-    * Contains functions for creating and registering new language handlers.
-    * @type {Object}
-    */
-  window['PR'] = {
-        'createSimpleLexer': createSimpleLexer,
-        'registerLangHandler': registerLangHandler,
-        'sourceDecorator': sourceDecorator,
-        'PR_ATTRIB_NAME': PR_ATTRIB_NAME,
-        'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,
-        'PR_COMMENT': PR_COMMENT,
-        'PR_DECLARATION': PR_DECLARATION,
-        'PR_KEYWORD': PR_KEYWORD,
-        'PR_LITERAL': PR_LITERAL,
-        'PR_NOCODE': PR_NOCODE,
-        'PR_PLAIN': PR_PLAIN,
-        'PR_PUNCTUATION': PR_PUNCTUATION,
-        'PR_SOURCE': PR_SOURCE,
-        'PR_STRING': PR_STRING,
-        'PR_TAG': PR_TAG,
-        'PR_TYPE': PR_TYPE
-      };
-})();

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/lib/underscore-min.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/lib/underscore-min.js b/deleted/dist-cov/usergrid-portal/archive/js/lib/underscore-min.js
deleted file mode 100644
index ad3a39a..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/lib/underscore-min.js
+++ /dev/null
@@ -1,5 +0,0 @@
-//     Underscore.js 1.4.2
-//     http://underscorejs.org
-//     (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
-//     Underscore may be freely distributed under the MIT license.
-(function(){var e=this,t=e._,n={},r=Array.prototype,i=Object.prototype,s=Function.prototype,o=r.push,u=r.slice,a=r.concat,f=r.unshift,l=i.toString,c=i.hasOwnProperty,h=r.forEach,p=r.map,d=r.reduce,v=r.reduceRight,m=r.filter,g=r.every,y=r.some,b=r.indexOf,w=r.lastIndexOf,E=Array.isArray,S=Object.keys,x=s.bind,T=function(e){if(e instanceof T)return e;if(!(this instanceof T))return new T(e);this._wrapped=e};typeof exports!="undefined"?(typeof module!="undefined"&&module.exports&&(exports=module.exports=T),exports._=T):e._=T,T.VERSION="1.4.2";var N=T.each=T.forEach=function(e,t,r){if(e==null)return;if(h&&e.forEach===h)e.forEach(t,r);else if(e.length===+e.length){for(var i=0,s=e.length;i<s;i++)if(t.call(r,e[i],i,e)===n)return}else for(var o in e)if(T.has(e,o)&&t.call(r,e[o],o,e)===n)return};T.map=T.collect=function(e,t,n){var r=[];return e==null?r:p&&e.map===p?e.map(t,n):(N(e,function(e,i,s){r[r.length]=t.call(n,e,i,s)}),r)},T.reduce=T.foldl=T.inject=function(e,t,n,r){var i=arguments.len
 gth>2;e==null&&(e=[]);if(d&&e.reduce===d)return r&&(t=T.bind(t,r)),i?e.reduce(t,n):e.reduce(t);N(e,function(e,s,o){i?n=t.call(r,n,e,s,o):(n=e,i=!0)});if(!i)throw new TypeError("Reduce of empty array with no initial value");return n},T.reduceRight=T.foldr=function(e,t,n,r){var i=arguments.length>2;e==null&&(e=[]);if(v&&e.reduceRight===v)return r&&(t=T.bind(t,r)),arguments.length>2?e.reduceRight(t,n):e.reduceRight(t);var s=e.length;if(s!==+s){var o=T.keys(e);s=o.length}N(e,function(u,a,f){a=o?o[--s]:--s,i?n=t.call(r,n,e[a],a,f):(n=e[a],i=!0)});if(!i)throw new TypeError("Reduce of empty array with no initial value");return n},T.find=T.detect=function(e,t,n){var r;return C(e,function(e,i,s){if(t.call(n,e,i,s))return r=e,!0}),r},T.filter=T.select=function(e,t,n){var r=[];return e==null?r:m&&e.filter===m?e.filter(t,n):(N(e,function(e,i,s){t.call(n,e,i,s)&&(r[r.length]=e)}),r)},T.reject=function(e,t,n){var r=[];return e==null?r:(N(e,function(e,i,s){t.call(n,e,i,s)||(r[r.length]=e)}),r)},T.
 every=T.all=function(e,t,r){t||(t=T.identity);var i=!0;return e==null?i:g&&e.every===g?e.every(t,r):(N(e,function(e,s,o){if(!(i=i&&t.call(r,e,s,o)))return n}),!!i)};var C=T.some=T.any=function(e,t,r){t||(t=T.identity);var i=!1;return e==null?i:y&&e.some===y?e.some(t,r):(N(e,function(e,s,o){if(i||(i=t.call(r,e,s,o)))return n}),!!i)};T.contains=T.include=function(e,t){var n=!1;return e==null?n:b&&e.indexOf===b?e.indexOf(t)!=-1:(n=C(e,function(e){return e===t}),n)},T.invoke=function(e,t){var n=u.call(arguments,2);return T.map(e,function(e){return(T.isFunction(t)?t:e[t]).apply(e,n)})},T.pluck=function(e,t){return T.map(e,function(e){return e[t]})},T.where=function(e,t){return T.isEmpty(t)?[]:T.filter(e,function(e){for(var n in t)if(t[n]!==e[n])return!1;return!0})},T.max=function(e,t,n){if(!t&&T.isArray(e)&&e[0]===+e[0]&&e.length<65535)return Math.max.apply(Math,e);if(!t&&T.isEmpty(e))return-Infinity;var r={computed:-Infinity};return N(e,function(e,i,s){var o=t?t.call(n,e,i,s):e;o>=r.com
 puted&&(r={value:e,computed:o})}),r.value},T.min=function(e,t,n){if(!t&&T.isArray(e)&&e[0]===+e[0]&&e.length<65535)return Math.min.apply(Math,e);if(!t&&T.isEmpty(e))return Infinity;var r={computed:Infinity};return N(e,function(e,i,s){var o=t?t.call(n,e,i,s):e;o<r.computed&&(r={value:e,computed:o})}),r.value},T.shuffle=function(e){var t,n=0,r=[];return N(e,function(e){t=T.random(n++),r[n-1]=r[t],r[t]=e}),r};var k=function(e){return T.isFunction(e)?e:function(t){return t[e]}};T.sortBy=function(e,t,n){var r=k(t);return T.pluck(T.map(e,function(e,t,i){return{value:e,index:t,criteria:r.call(n,e,t,i)}}).sort(function(e,t){var n=e.criteria,r=t.criteria;if(n!==r){if(n>r||n===void 0)return 1;if(n<r||r===void 0)return-1}return e.index<t.index?-1:1}),"value")};var L=function(e,t,n,r){var i={},s=k(t);return N(e,function(t,o){var u=s.call(n,t,o,e);r(i,u,t)}),i};T.groupBy=function(e,t,n){return L(e,t,n,function(e,t,n){(T.has(e,t)?e[t]:e[t]=[]).push(n)})},T.countBy=function(e,t,n){return L(e,t,n,f
 unction(e,t,n){T.has(e,t)||(e[t]=0),e[t]++})},T.sortedIndex=function(e,t,n,r){n=n==null?T.identity:k(n);var i=n.call(r,t),s=0,o=e.length;while(s<o){var u=s+o>>>1;n.call(r,e[u])<i?s=u+1:o=u}return s},T.toArray=function(e){return e?e.length===+e.length?u.call(e):T.values(e):[]},T.size=function(e){return e.length===+e.length?e.length:T.keys(e).length},T.first=T.head=T.take=function(e,t,n){return t!=null&&!n?u.call(e,0,t):e[0]},T.initial=function(e,t,n){return u.call(e,0,e.length-(t==null||n?1:t))},T.last=function(e,t,n){return t!=null&&!n?u.call(e,Math.max(e.length-t,0)):e[e.length-1]},T.rest=T.tail=T.drop=function(e,t,n){return u.call(e,t==null||n?1:t)},T.compact=function(e){return T.filter(e,function(e){return!!e})};var A=function(e,t,n){return N(e,function(e){T.isArray(e)?t?o.apply(n,e):A(e,t,n):n.push(e)}),n};T.flatten=function(e,t){return A(e,t,[])},T.without=function(e){return T.difference(e,u.call(arguments,1))},T.uniq=T.unique=function(e,t,n,r){var i=n?T.map(e,n,r):e,s=[],o=[];
 return N(i,function(n,r){if(t?!r||o[o.length-1]!==n:!T.contains(o,n))o.push(n),s.push(e[r])}),s},T.union=function(){return T.uniq(a.apply(r,arguments))},T.intersection=function(e){var t=u.call(arguments,1);return T.filter(T.uniq(e),function(e){return T.every(t,function(t){return T.indexOf(t,e)>=0})})},T.difference=function(e){var t=a.apply(r,u.call(arguments,1));return T.filter(e,function(e){return!T.contains(t,e)})},T.zip=function(){var e=u.call(arguments),t=T.max(T.pluck(e,"length")),n=new Array(t);for(var r=0;r<t;r++)n[r]=T.pluck(e,""+r);return n},T.object=function(e,t){var n={};for(var r=0,i=e.length;r<i;r++)t?n[e[r]]=t[r]:n[e[r][0]]=e[r][1];return n},T.indexOf=function(e,t,n){if(e==null)return-1;var r=0,i=e.length;if(n){if(typeof n!="number")return r=T.sortedIndex(e,t),e[r]===t?r:-1;r=n<0?Math.max(0,i+n):n}if(b&&e.indexOf===b)return e.indexOf(t,n);for(;r<i;r++)if(e[r]===t)return r;return-1},T.lastIndexOf=function(e,t,n){if(e==null)return-1;var r=n!=null;if(w&&e.lastIndexOf===w)
 return r?e.lastIndexOf(t,n):e.lastIndexOf(t);var i=r?n:e.length;while(i--)if(e[i]===t)return i;return-1},T.range=function(e,t,n){arguments.length<=1&&(t=e||0,e=0),n=arguments[2]||1;var r=Math.max(Math.ceil((t-e)/n),0),i=0,s=new Array(r);while(i<r)s[i++]=e,e+=n;return s};var O=function(){};T.bind=function(t,n){var r,i;if(t.bind===x&&x)return x.apply(t,u.call(arguments,1));if(!T.isFunction(t))throw new TypeError;return i=u.call(arguments,2),r=function(){if(this instanceof r){O.prototype=t.prototype;var e=new O,s=t.apply(e,i.concat(u.call(arguments)));return Object(s)===s?s:e}return t.apply(n,i.concat(u.call(arguments)))}},T.bindAll=function(e){var t=u.call(arguments,1);return t.length==0&&(t=T.functions(e)),N(t,function(t){e[t]=T.bind(e[t],e)}),e},T.memoize=function(e,t){var n={};return t||(t=T.identity),function(){var r=t.apply(this,arguments);return T.has(n,r)?n[r]:n[r]=e.apply(this,arguments)}},T.delay=function(e,t){var n=u.call(arguments,2);return setTimeout(function(){return e.ap
 ply(null,n)},t)},T.defer=function(e){return T.delay.apply(T,[e,1].concat(u.call(arguments,1)))},T.throttle=function(e,t){var n,r,i,s,o,u,a=T.debounce(function(){o=s=!1},t);return function(){n=this,r=arguments;var f=function(){i=null,o&&(u=e.apply(n,r)),a()};return i||(i=setTimeout(f,t)),s?o=!0:(s=!0,u=e.apply(n,r)),a(),u}},T.debounce=function(e,t,n){var r,i;return function(){var s=this,o=arguments,u=function(){r=null,n||(i=e.apply(s,o))},a=n&&!r;return clearTimeout(r),r=setTimeout(u,t),a&&(i=e.apply(s,o)),i}},T.once=function(e){var t=!1,n;return function(){return t?n:(t=!0,n=e.apply(this,arguments),e=null,n)}},T.wrap=function(e,t){return function(){var n=[e];return o.apply(n,arguments),t.apply(this,n)}},T.compose=function(){var e=arguments;return function(){var t=arguments;for(var n=e.length-1;n>=0;n--)t=[e[n].apply(this,t)];return t[0]}},T.after=function(e,t){return e<=0?t():function(){if(--e<1)return t.apply(this,arguments)}},T.keys=S||function(e){if(e!==Object(e))throw new TypeEr
 ror("Invalid object");var t=[];for(var n in e)T.has(e,n)&&(t[t.length]=n);return t},T.values=function(e){var t=[];for(var n in e)T.has(e,n)&&t.push(e[n]);return t},T.pairs=function(e){var t=[];for(var n in e)T.has(e,n)&&t.push([n,e[n]]);return t},T.invert=function(e){var t={};for(var n in e)T.has(e,n)&&(t[e[n]]=n);return t},T.functions=T.methods=function(e){var t=[];for(var n in e)T.isFunction(e[n])&&t.push(n);return t.sort()},T.extend=function(e){return N(u.call(arguments,1),function(t){for(var n in t)e[n]=t[n]}),e},T.pick=function(e){var t={},n=a.apply(r,u.call(arguments,1));return N(n,function(n){n in e&&(t[n]=e[n])}),t},T.omit=function(e){var t={},n=a.apply(r,u.call(arguments,1));for(var i in e)T.contains(n,i)||(t[i]=e[i]);return t},T.defaults=function(e){return N(u.call(arguments,1),function(t){for(var n in t)e[n]==null&&(e[n]=t[n])}),e},T.clone=function(e){return T.isObject(e)?T.isArray(e)?e.slice():T.extend({},e):e},T.tap=function(e,t){return t(e),e};var M=function(e,t,n,r){i
 f(e===t)return e!==0||1/e==1/t;if(e==null||t==null)return e===t;e instanceof T&&(e=e._wrapped),t instanceof T&&(t=t._wrapped);var i=l.call(e);if(i!=l.call(t))return!1;switch(i){case"[object String]":return e==String(t);case"[object Number]":return e!=+e?t!=+t:e==0?1/e==1/t:e==+t;case"[object Date]":case"[object Boolean]":return+e==+t;case"[object RegExp]":return e.source==t.source&&e.global==t.global&&e.multiline==t.multiline&&e.ignoreCase==t.ignoreCase}if(typeof e!="object"||typeof t!="object")return!1;var s=n.length;while(s--)if(n[s]==e)return r[s]==t;n.push(e),r.push(t);var o=0,u=!0;if(i=="[object Array]"){o=e.length,u=o==t.length;if(u)while(o--)if(!(u=M(e[o],t[o],n,r)))break}else{var a=e.constructor,f=t.constructor;if(a!==f&&!(T.isFunction(a)&&a instanceof a&&T.isFunction(f)&&f instanceof f))return!1;for(var c in e)if(T.has(e,c)){o++;if(!(u=T.has(t,c)&&M(e[c],t[c],n,r)))break}if(u){for(c in t)if(T.has(t,c)&&!(o--))break;u=!o}}return n.pop(),r.pop(),u};T.isEqual=function(e,t){ret
 urn M(e,t,[],[])},T.isEmpty=function(e){if(e==null)return!0;if(T.isArray(e)||T.isString(e))return e.length===0;for(var t in e)if(T.has(e,t))return!1;return!0},T.isElement=function(e){return!!e&&e.nodeType===1},T.isArray=E||function(e){return l.call(e)=="[object Array]"},T.isObject=function(e){return e===Object(e)},N(["Arguments","Function","String","Number","Date","RegExp"],function(e){T["is"+e]=function(t){return l.call(t)=="[object "+e+"]"}}),T.isArguments(arguments)||(T.isArguments=function(e){return!!e&&!!T.has(e,"callee")}),typeof /./!="function"&&(T.isFunction=function(e){return typeof e=="function"}),T.isFinite=function(e){return T.isNumber(e)&&isFinite(e)},T.isNaN=function(e){return T.isNumber(e)&&e!=+e},T.isBoolean=function(e){return e===!0||e===!1||l.call(e)=="[object Boolean]"},T.isNull=function(e){return e===null},T.isUndefined=function(e){return e===void 0},T.has=function(e,t){return c.call(e,t)},T.noConflict=function(){return e._=t,this},T.identity=function(e){return e
 },T.times=function(e,t,n){for(var r=0;r<e;r++)t.call(n,r)},T.random=function(e,t){return t==null&&(t=e,e=0),e+(0|Math.random()*(t-e+1))};var _={escape:{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"}};_.unescape=T.invert(_.escape);var D={escape:new RegExp("["+T.keys(_.escape).join("")+"]","g"),unescape:new RegExp("("+T.keys(_.unescape).join("|")+")","g")};T.each(["escape","unescape"],function(e){T[e]=function(t){return t==null?"":(""+t).replace(D[e],function(t){return _[e][t]})}}),T.result=function(e,t){if(e==null)return null;var n=e[t];return T.isFunction(n)?n.call(e):n},T.mixin=function(e){N(T.functions(e),function(t){var n=T[t]=e[t];T.prototype[t]=function(){var e=[this._wrapped];return o.apply(e,arguments),F.call(this,n.apply(T,e))}})};var P=0;T.uniqueId=function(e){var t=P++;return e?e+t:t},T.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var H=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n","	":"t"
 ,"\u2028":"u2028","\u2029":"u2029"},j=/\\|'|\r|\n|\t|\u2028|\u2029/g;T.template=function(e,t,n){n=T.defaults({},n,T.templateSettings);var r=new RegExp([(n.escape||H).source,(n.interpolate||H).source,(n.evaluate||H).source].join("|")+"|$","g"),i=0,s="__p+='";e.replace(r,function(t,n,r,o,u){s+=e.slice(i,u).replace(j,function(e){return"\\"+B[e]}),s+=n?"'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":r?"'+\n((__t=("+r+"))==null?'':__t)+\n'":o?"';\n"+o+"\n__p+='":"",i=u+t.length}),s+="';\n",n.variable||(s="with(obj||{}){\n"+s+"}\n"),s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{var o=new Function(n.variable||"obj","_",s)}catch(u){throw u.source=s,u}if(t)return o(t,T);var a=function(e){return o.call(this,e,T)};return a.source="function("+(n.variable||"obj")+"){\n"+s+"}",a},T.chain=function(e){return T(e).chain()};var F=function(e){return this._chain?T(e).chain():e};T.mixin(T),N(["pop","push","reverse","shift","sort","sp
 lice","unshift"],function(e){var t=r[e];T.prototype[e]=function(){var n=this._wrapped;return t.apply(n,arguments),(e=="shift"||e=="splice")&&n.length===0&&delete n[0],F.call(this,n)}}),N(["concat","join","slice"],function(e){var t=r[e];T.prototype[e]=function(){return F.call(this,t.apply(this._wrapped,arguments))}}),T.extend(T.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}).call(this);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/spec/client-tests.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/spec/client-tests.js b/deleted/dist-cov/usergrid-portal/archive/js/spec/client-tests.js
deleted file mode 100644
index 2d7e060..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/spec/client-tests.js
+++ /dev/null
@@ -1,159 +0,0 @@
-$(document).ready(function () {
-
-  initCore();
-
- });
-
-function defaultSuccess(data, status, xhr) {
-  start();
-  if (data) {
-    console.log(data);
-  } else {
-    console.log('no data');
-  }
-  // console.log(xhr);
-  ok(true, "yahoo!!!");
-}
-
-function defaultError(xhr, status, error) {
-  start();
-  console.log('boo!');
-  throw new Error("error!");
-}
-
-function initCore() {
-  window.query_params = getQueryParams();
-  parseParams();
-  prepareLocalStorage();
-  usergrid.client.Init();
-}
-
-function selectFirstApplication() {
-  for (var i in usergrid.session.currentOrganization.applications) {
-    usergrid.session.currentApplicationId = usergrid.session.currentOrganization.applications[i];
-    localStorage.setItem('currentApplicationId', usergrid.session.currentApplicationId);
-    console.log("current application: " + usergrid.session.currentApplicationId);
-    break;
-  };
-}
-
-function selectAnApplication(id) {
-  usergrid.session.currentApplicationId = id;
-  localStorage.setItem = usergrid.session.currentApplicationId;
-}
-
-QUnit.config.reorder = false;
-
-asyncTest("logging-in with loginAdmin(credentials)", function() {
-  expect(1);
-  usergrid.client.loginAdmin(
-    "fjendle@apigee.com",
-    "mafalda1",
-    defaultSuccess,
-    defaultError
-  );
-});
-
-asyncTest("logging-in autoLogin", function() {
-  expect(1);
-  usergrid.client.autoLogin(
-    defaultSuccess,
-    defaultError
-  );
-});
-
-asyncTest("getting applications", function() {
-  expect(1);
-  usergrid.client.requestApplications(
-    function() {
-      // selectFirstApplication();
-      selectAnApplication("f853f227-7dbc-11e1-8337-1231380dea5f");
-      defaultSuccess();
-    },
-    defaultError
-  );
-});
-
-asyncTest("getting users with requestUsers", function() {
-  expect(1);
-  usergrid.client.requestUsers(
-    usergrid.session.currentApplicationId,
-    defaultSuccess,
-    defaultError
-  );
-});
-
-asyncTest("getting users with queryUsers", function() {
-  expect(1);
-  usergrid.client.queryUsers(
-    defaultSuccess,
-    defaultError
-  );
-});
-
-d = new Date;
-d = MD5(d.toString()).substring(0,7);
-
-asyncTest("creating user", function() {
-  expect(1);
-  usergrid.client.createUser(
-    usergrid.session.currentApplicationId,
-    {
-      email: d + "@oarsy8.xom",
-      name: d,
-      password: "osautl4b",
-      username: d
-    },
-    defaultSuccess,
-    defaultError
-  )
-});
-
-// asyncTest("deleting a user", function() {
-//   expect(1);
-//   usergrid.client.deleteUser(
-//     usergrid.session.currentApplicationId,
-//     null, /* select one */
-//     defaultSuccess,
-//     defaultError
-//   )
-// });
-
-asyncTest("getting fabianorg/otra/group1/roles", function() {
-  expect(1);
-  // group is "group1"
-  usergrid.client.requestGroupRoles(
-    usergrid.session.currentApplicationId, "b713225b-88e8-11e1-8063-1231380dea5f", defaultSuccess, defaultError
-  )
-});
-
-asyncTest("adding group1 to role Guest", function() {
-  // group is still "group1", role is Guest: bd397ea1-a71c-3249-8a4c-62fd53c78ce7
-  expect(1);
-  usergrid.client.addGroupToRole(
-    usergrid.session.currentApplicationId, "bd397ea1-a71c-3249-8a4c-62fd53c78ce7", "b713225b-88e8-11e1-8063-1231380dea5f" , defaultSuccess, defaultError
-  )
-});
-
-asyncTest("getting fabianorg/roles/guest/groups", function() {
-  expect(1);
-  // group is "group1"
-  usergrid.client.requestGroupRoles(
-    usergrid.session.currentApplicationId, "bd397ea1-a71c-3249-8a4c-62fd53c78ce7", defaultSuccess, defaultError
-  )
-});
-
-asyncTest("removing group1 from Guest Role", function() {
-  expect(1);
-  usergrid.client.removeGroupFromRole(
-    usergrid.session.currentApplicationId, "bd397ea1-a71c-3249-8a4c-62fd53c78ce7", "b713225b-88e8-11e1-8063-1231380dea5f", defaultSuccess, defaultError
-  )
-});
-
-// asyncTest("getting fabianorg/roles/guest/groups", function() {
-//   expect(1);
-//   // group is "group1"
-//   usergrid.client.requestGroupRoles(
-//     usergrid.session.currentApplicationId, "bd397ea1-a71c-3249-8a4c-62fd53c78ce7", defaultSuccess, defaultError
-//   )
-// });

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/spec/index.html
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/spec/index.html b/deleted/dist-cov/usergrid-portal/archive/js/spec/index.html
deleted file mode 100644
index 74e26a7..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/spec/index.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta charset="utf-8" />
-    <title>QUnit basic example</title>
-    <link rel="stylesheet" href="/js/spec/qunit-git.css" />
-  </head>
-  <body>
-    <div id="qunit"></div>
-    <div id="qunit-fixture"></div>
-
-    <script type="text/javascript" src="/js/spec/qunit-git.js"></script>    
-    <script type="text/javascript" src="/js/lib/jquery-1.7.2.min.js"></script>
-    <script type="text/javascript" src="/js/lib/MD5.min.js"></script>
-    <script type="text/javascript" src="/js/app/helpers.js"></script>
-    <script type="text/javascript" src="/js/app/session.js"></script>
-    <script type="text/javascript" src="/js/app/client.js"></script>
-    <script type="text/javascript" src="/js/spec/client-tests.js"></script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/spec/qunit-git.css
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/spec/qunit-git.css b/deleted/dist-cov/usergrid-portal/archive/js/spec/qunit-git.css
deleted file mode 100644
index de88479..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/spec/qunit-git.css
+++ /dev/null
@@ -1,238 +0,0 @@
-/**
- * QUnit v1.9.0pre - A JavaScript Unit Testing Framework
- *
- * http://docs.jquery.com/QUnit
- *
- * Copyright (c) 2012 John Resig, Jörn Zaefferer
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * or GPL (GPL-LICENSE.txt) licenses.
- * Pulled Live from Git Wed Jun 20 16:15:01 UTC 2012
- * Last Commit: 1c0af4e943400de73bc36310d3db42a5217da215
- */
-
-/** Font Family and Sizes */
-
-#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
-	font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
-}
-
-#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
-#qunit-tests { font-size: smaller; }
-
-
-/** Resets */
-
-#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {
-	margin: 0;
-	padding: 0;
-}
-
-
-/** Header */
-
-#qunit-header {
-	padding: 0.5em 0 0.5em 1em;
-
-	color: #8699a4;
-	background-color: #0d3349;
-
-	font-size: 1.5em;
-	line-height: 1em;
-	font-weight: normal;
-
-	border-radius: 15px 15px 0 0;
-	-moz-border-radius: 15px 15px 0 0;
-	-webkit-border-top-right-radius: 15px;
-	-webkit-border-top-left-radius: 15px;
-}
-
-#qunit-header a {
-	text-decoration: none;
-	color: #c2ccd1;
-}
-
-#qunit-header a:hover,
-#qunit-header a:focus {
-	color: #fff;
-}
-
-#qunit-header label {
-	display: inline-block;
-	padding-left: 0.5em;
-}
-
-#qunit-banner {
-	height: 5px;
-}
-
-#qunit-testrunner-toolbar {
-	padding: 0.5em 0 0.5em 2em;
-	color: #5E740B;
-	background-color: #eee;
-}
-
-#qunit-userAgent {
-	padding: 0.5em 0 0.5em 2.5em;
-	background-color: #2b81af;
-	color: #fff;
-	text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
-}
-
-
-/** Tests: Pass/Fail */
-
-#qunit-tests {
-	list-style-position: inside;
-}
-
-#qunit-tests li {
-	padding: 0.4em 0.5em 0.4em 2.5em;
-	border-bottom: 1px solid #fff;
-	list-style-position: inside;
-}
-
-#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running  {
-	display: none;
-}
-
-#qunit-tests li strong {
-	cursor: pointer;
-}
-
-#qunit-tests li a {
-	padding: 0.5em;
-	color: #c2ccd1;
-	text-decoration: none;
-}
-#qunit-tests li a:hover,
-#qunit-tests li a:focus {
-	color: #000;
-}
-
-#qunit-tests ol {
-	margin-top: 0.5em;
-	padding: 0.5em;
-
-	background-color: #fff;
-
-	border-radius: 15px;
-	-moz-border-radius: 15px;
-	-webkit-border-radius: 15px;
-
-	box-shadow: inset 0px 2px 13px #999;
-	-moz-box-shadow: inset 0px 2px 13px #999;
-	-webkit-box-shadow: inset 0px 2px 13px #999;
-}
-
-#qunit-tests table {
-	border-collapse: collapse;
-	margin-top: .2em;
-}
-
-#qunit-tests th {
-	text-align: right;
-	vertical-align: top;
-	padding: 0 .5em 0 0;
-}
-
-#qunit-tests td {
-	vertical-align: top;
-}
-
-#qunit-tests pre {
-	margin: 0;
-	white-space: pre-wrap;
-	word-wrap: break-word;
-}
-
-#qunit-tests del {
-	background-color: #e0f2be;
-	color: #374e0c;
-	text-decoration: none;
-}
-
-#qunit-tests ins {
-	background-color: #ffcaca;
-	color: #500;
-	text-decoration: none;
-}
-
-/*** Test Counts */
-
-#qunit-tests b.counts                       { color: black; }
-#qunit-tests b.passed                       { color: #5E740B; }
-#qunit-tests b.failed                       { color: #710909; }
-
-#qunit-tests li li {
-	margin: 0.5em;
-	padding: 0.4em 0.5em 0.4em 0.5em;
-	background-color: #fff;
-	border-bottom: none;
-	list-style-position: inside;
-}
-
-/*** Passing Styles */
-
-#qunit-tests li li.pass {
-	color: #5E740B;
-	background-color: #fff;
-	border-left: 26px solid #C6E746;
-}
-
-#qunit-tests .pass                          { color: #528CE0; background-color: #D2E0E6; }
-#qunit-tests .pass .test-name               { color: #366097; }
-
-#qunit-tests .pass .test-actual,
-#qunit-tests .pass .test-expected           { color: #999999; }
-
-#qunit-banner.qunit-pass                    { background-color: #C6E746; }
-
-/*** Failing Styles */
-
-#qunit-tests li li.fail {
-	color: #710909;
-	background-color: #fff;
-	border-left: 26px solid #EE5757;
-	white-space: pre;
-}
-
-#qunit-tests > li:last-child {
-	border-radius: 0 0 15px 15px;
-	-moz-border-radius: 0 0 15px 15px;
-	-webkit-border-bottom-right-radius: 15px;
-	-webkit-border-bottom-left-radius: 15px;
-}
-
-#qunit-tests .fail                          { color: #000000; background-color: #EE5757; }
-#qunit-tests .fail .test-name,
-#qunit-tests .fail .module-name             { color: #000000; }
-
-#qunit-tests .fail .test-actual             { color: #EE5757; }
-#qunit-tests .fail .test-expected           { color: green;   }
-
-#qunit-banner.qunit-fail                    { background-color: #EE5757; }
-
-
-/** Result */
-
-#qunit-testresult {
-	padding: 0.5em 0.5em 0.5em 2.5em;
-
-	color: #2b81af;
-	background-color: #D2E0E6;
-
-	border-bottom: 1px solid white;
-}
-#qunit-testresult .module-name {
-	font-weight: bold;
-}
-
-/** Fixture */
-
-#qunit-fixture {
-	position: absolute;
-	top: -10000px;
-	left: -10000px;
-	width: 1000px;
-	height: 1000px;
-}


[31/54] [abbrv] [partial] more updates to look and feel

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/spec/qunit-git.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/spec/qunit-git.js b/deleted/archive/js/spec/qunit-git.js
deleted file mode 100644
index 8bf7005..0000000
--- a/deleted/archive/js/spec/qunit-git.js
+++ /dev/null
@@ -1,1865 +0,0 @@
-/**
- * QUnit v1.9.0pre - A JavaScript Unit Testing Framework
- *
- * http://docs.jquery.com/QUnit
- *
- * Copyright (c) 2012 John Resig, Jörn Zaefferer
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * or GPL (GPL-LICENSE.txt) licenses.
- * Pulled Live from Git Wed Jun 20 16:15:01 UTC 2012
- * Last Commit: 1c0af4e943400de73bc36310d3db42a5217da215
- */
-
-(function( window ) {
-
-var QUnit,
-	config,
-	onErrorFnPrev,
-	testId = 0,
-	fileName = (sourceFromStacktrace( 0 ) || "" ).replace(/(:\d+)+\)?/, "").replace(/.+\//, ""),
-	toString = Object.prototype.toString,
-	hasOwn = Object.prototype.hasOwnProperty,
-	defined = {
-	setTimeout: typeof window.setTimeout !== "undefined",
-	sessionStorage: (function() {
-		var x = "qunit-test-string";
-		try {
-			sessionStorage.setItem( x, x );
-			sessionStorage.removeItem( x );
-			return true;
-		} catch( e ) {
-			return false;
-		}
-	}())
-};
-
-function Test( settings ) {
-	extend( this, settings );
-	this.assertions = [];
-	this.testNumber = ++Test.count;
-}
-
-Test.count = 0;
-
-Test.prototype = {
-	init: function() {
-		var a, b, li,
-        tests = id( "qunit-tests" );
-
-		if ( tests ) {
-			b = document.createElement( "strong" );
-			b.innerHTML = this.name;
-
-			// `a` initialized at top of scope
-			a = document.createElement( "a" );
-			a.innerHTML = "Rerun";
-			a.href = QUnit.url({ testNumber: this.testNumber });
-
-			li = document.createElement( "li" );
-			li.appendChild( b );
-			li.appendChild( a );
-			li.className = "running";
-			li.id = this.id = "qunit-test-output" + testId++;
-
-			tests.appendChild( li );
-		}
-	},
-	setup: function() {
-		if ( this.module !== config.previousModule ) {
-			if ( config.previousModule ) {
-				runLoggingCallbacks( "moduleDone", QUnit, {
-					name: config.previousModule,
-					failed: config.moduleStats.bad,
-					passed: config.moduleStats.all - config.moduleStats.bad,
-					total: config.moduleStats.all
-				});
-			}
-			config.previousModule = this.module;
-			config.moduleStats = { all: 0, bad: 0 };
-			runLoggingCallbacks( "moduleStart", QUnit, {
-				name: this.module
-			});
-		} else if ( config.autorun ) {
-			runLoggingCallbacks( "moduleStart", QUnit, {
-				name: this.module
-			});
-		}
-
-		config.current = this;
-
-		this.testEnvironment = extend({
-			setup: function() {},
-			teardown: function() {}
-		}, this.moduleTestEnvironment );
-
-		runLoggingCallbacks( "testStart", QUnit, {
-			name: this.testName,
-			module: this.module
-		});
-
-		// allow utility functions to access the current test environment
-		// TODO why??
-		QUnit.current_testEnvironment = this.testEnvironment;
-
-		if ( !config.pollution ) {
-			saveGlobal();
-		}
-		if ( config.notrycatch ) {
-			this.testEnvironment.setup.call( this.testEnvironment );
-			return;
-		}
-		try {
-			this.testEnvironment.setup.call( this.testEnvironment );
-		} catch( e ) {
-			QUnit.pushFailure( "Setup failed on " + this.testName + ": " + e.message, extractStacktrace( e, 1 ) );
-		}
-	},
-	run: function() {
-		config.current = this;
-
-		var running = id( "qunit-testresult" );
-
-		if ( running ) {
-			running.innerHTML = "Running: <br/>" + this.name;
-		}
-
-		if ( this.async ) {
-			QUnit.stop();
-		}
-
-		if ( config.notrycatch ) {
-			this.callback.call( this.testEnvironment, QUnit.assert );
-			return;
-		}
-
-		try {
-			this.callback.call( this.testEnvironment, QUnit.assert );
-		} catch( e ) {
-			QUnit.pushFailure( "Died on test #" + (this.assertions.length + 1) + " " + this.stack + ": " + e.message, extractStacktrace( e, 0 ) );
-			// else next test will carry the responsibility
-			saveGlobal();
-
-			// Restart the tests if they're blocking
-			if ( config.blocking ) {
-				QUnit.start();
-			}
-		}
-	},
-	teardown: function() {
-		config.current = this;
-		if ( config.notrycatch ) {
-			this.testEnvironment.teardown.call( this.testEnvironment );
-			return;
-		} else {
-			try {
-				this.testEnvironment.teardown.call( this.testEnvironment );
-			} catch( e ) {
-				QUnit.pushFailure( "Teardown failed on " + this.testName + ": " + e.message, extractStacktrace( e, 1 ) );
-			}
-		}
-		checkPollution();
-	},
-	finish: function() {
-		config.current = this;
-		if ( config.requireExpects && this.expected == null ) {
-			QUnit.pushFailure( "Expected number of assertions to be defined, but expect() was not called.", this.stack );
-		} else if ( this.expected != null && this.expected != this.assertions.length ) {
-			QUnit.pushFailure( "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run", this.stack );
-		} else if ( this.expected == null && !this.assertions.length ) {
-			QUnit.pushFailure( "Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.", this.stack );
-		}
-
-		var assertion, a, b, i, li, ol,
-			test = this,
-			good = 0,
-			bad = 0,
-			tests = id( "qunit-tests" );
-
-		config.stats.all += this.assertions.length;
-		config.moduleStats.all += this.assertions.length;
-
-		if ( tests ) {
-			ol = document.createElement( "ol" );
-
-			for ( i = 0; i < this.assertions.length; i++ ) {
-				assertion = this.assertions[i];
-
-				li = document.createElement( "li" );
-				li.className = assertion.result ? "pass" : "fail";
-				li.innerHTML = assertion.message || ( assertion.result ? "okay" : "failed" );
-				ol.appendChild( li );
-
-				if ( assertion.result ) {
-					good++;
-				} else {
-					bad++;
-					config.stats.bad++;
-					config.moduleStats.bad++;
-				}
-			}
-
-			// store result when possible
-			if ( QUnit.config.reorder && defined.sessionStorage ) {
-				if ( bad ) {
-					sessionStorage.setItem( "qunit-test-" + this.module + "-" + this.testName, bad );
-				} else {
-					sessionStorage.removeItem( "qunit-test-" + this.module + "-" + this.testName );
-				}
-			}
-
-			if ( bad === 0 ) {
-				ol.style.display = "none";
-			}
-
-			// `b` initialized at top of scope
-			b = document.createElement( "strong" );
-			b.innerHTML = this.name + " <b class='counts'>(<b class='failed'>" + bad + "</b>, <b class='passed'>" + good + "</b>, " + this.assertions.length + ")</b>";
-
-			addEvent(b, "click", function() {
-				var next = b.nextSibling.nextSibling,
-					display = next.style.display;
-				next.style.display = display === "none" ? "block" : "none";
-			});
-
-			addEvent(b, "dblclick", function( e ) {
-				var target = e && e.target ? e.target : window.event.srcElement;
-				if ( target.nodeName.toLowerCase() == "span" || target.nodeName.toLowerCase() == "b" ) {
-					target = target.parentNode;
-				}
-				if ( window.location && target.nodeName.toLowerCase() === "strong" ) {
-					window.location = QUnit.url({ testNumber: test.testNumber });
-				}
-			});
-
-			// `li` initialized at top of scope
-			li = id( this.id );
-			li.className = bad ? "fail" : "pass";
-			li.removeChild( li.firstChild );
-			a = li.firstChild;
-			li.appendChild( b );
-			li.appendChild ( a );
-			li.appendChild( ol );
-
-		} else {
-			for ( i = 0; i < this.assertions.length; i++ ) {
-				if ( !this.assertions[i].result ) {
-					bad++;
-					config.stats.bad++;
-					config.moduleStats.bad++;
-				}
-			}
-		}
-
-		runLoggingCallbacks( "testDone", QUnit, {
-			name: this.testName,
-			module: this.module,
-			failed: bad,
-			passed: this.assertions.length - bad,
-			total: this.assertions.length
-		});
-
-		QUnit.reset();
-
-		config.current = undefined;
-	},
-
-	queue: function() {
-		var bad,
-			test = this;
-
-		synchronize(function() {
-			test.init();
-		});
-		function run() {
-			// each of these can by async
-			synchronize(function() {
-				test.setup();
-			});
-			synchronize(function() {
-				test.run();
-			});
-			synchronize(function() {
-				test.teardown();
-			});
-			synchronize(function() {
-				test.finish();
-			});
-		}
-
-		// `bad` initialized at top of scope
-		// defer when previous test run passed, if storage is available
-		bad = QUnit.config.reorder && defined.sessionStorage &&
-						+sessionStorage.getItem( "qunit-test-" + this.module + "-" + this.testName );
-
-		if ( bad ) {
-			run();
-		} else {
-			synchronize( run, true );
-		}
-	}
-};
-
-// Root QUnit object.
-// `QUnit` initialized at top of scope
-QUnit = {
-
-	// call on start of module test to prepend name to all tests
-	module: function( name, testEnvironment ) {
-		config.currentModule = name;
-		config.currentModuleTestEnviroment = testEnvironment;
-	},
-
-	asyncTest: function( testName, expected, callback ) {
-		if ( arguments.length === 2 ) {
-			callback = expected;
-			expected = null;
-		}
-
-		QUnit.test( testName, expected, callback, true );
-	},
-
-	test: function( testName, expected, callback, async ) {
-		var test,
-			name = "<span class='test-name'>" + escapeInnerText( testName ) + "</span>";
-
-		if ( arguments.length === 2 ) {
-			callback = expected;
-			expected = null;
-		}
-
-		if ( config.currentModule ) {
-			name = "<span class='module-name'>" + config.currentModule + "</span>: " + name;
-		}
-
-		test = new Test({
-			name: name,
-			testName: testName,
-			expected: expected,
-			async: async,
-			callback: callback,
-			module: config.currentModule,
-			moduleTestEnvironment: config.currentModuleTestEnviroment,
-			stack: sourceFromStacktrace( 2 )
-		});
-
-		if ( !validTest( test ) ) {
-			return;
-		}
-
-		test.queue();
-	},
-
-	// Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
-	expect: function( asserts ) {
-		config.current.expected = asserts;
-	},
-
-	start: function( count ) {
-		config.semaphore -= count || 1;
-		// don't start until equal number of stop-calls
-		if ( config.semaphore > 0 ) {
-			return;
-		}
-		// ignore if start is called more often then stop
-		if ( config.semaphore < 0 ) {
-			config.semaphore = 0;
-		}
-		// A slight delay, to avoid any current callbacks
-		if ( defined.setTimeout ) {
-			window.setTimeout(function() {
-				if ( config.semaphore > 0 ) {
-					return;
-				}
-				if ( config.timeout ) {
-					clearTimeout( config.timeout );
-				}
-
-				config.blocking = false;
-				process( true );
-			}, 13);
-		} else {
-			config.blocking = false;
-			process( true );
-		}
-	},
-
-	stop: function( count ) {
-		config.semaphore += count || 1;
-		config.blocking = true;
-
-		if ( config.testTimeout && defined.setTimeout ) {
-			clearTimeout( config.timeout );
-			config.timeout = window.setTimeout(function() {
-				QUnit.ok( false, "Test timed out" );
-				config.semaphore = 1;
-				QUnit.start();
-			}, config.testTimeout );
-		}
-	}
-};
-
-// Asssert helpers
-// All of these must call either QUnit.push() or manually do:
-// - runLoggingCallbacks( "log", .. );
-// - config.current.assertions.push({ .. });
-QUnit.assert = {
-	/**
-	 * Asserts rough true-ish result.
-	 * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
-	 */
-	ok: function( result, msg ) {
-		if ( !config.current ) {
-			throw new Error( "ok() assertion outside test context, was " + sourceFromStacktrace(2) );
-		}
-		result = !!result;
-
-		var source,
-			details = {
-				result: result,
-				message: msg
-			};
-
-		msg = escapeInnerText( msg || (result ? "okay" : "failed" ) );
-		msg = "<span class='test-message'>" + msg + "</span>";
-
-		if ( !result ) {
-			source = sourceFromStacktrace( 2 );
-			if ( source ) {
-				details.source = source;
-				msg += "<table><tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr></table>";
-			}
-		}
-		runLoggingCallbacks( "log", QUnit, details );
-		config.current.assertions.push({
-			result: result,
-			message: msg
-		});
-	},
-
-	/**
-	 * Assert that the first two arguments are equal, with an optional message.
-	 * Prints out both actual and expected values.
-	 * @example equal( format( "Received {0} bytes.", 2), "Received 2 bytes.", "format() replaces {0} with next argument" );
-	 */
-	equal: function( actual, expected, message ) {
-		QUnit.push( expected == actual, actual, expected, message );
-	},
-
-	notEqual: function( actual, expected, message ) {
-		QUnit.push( expected != actual, actual, expected, message );
-	},
-
-	deepEqual: function( actual, expected, message ) {
-		QUnit.push( QUnit.equiv(actual, expected), actual, expected, message );
-	},
-
-	notDeepEqual: function( actual, expected, message ) {
-		QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message );
-	},
-
-	strictEqual: function( actual, expected, message ) {
-		QUnit.push( expected === actual, actual, expected, message );
-	},
-
-	notStrictEqual: function( actual, expected, message ) {
-		QUnit.push( expected !== actual, actual, expected, message );
-	},
-
-	raises: function( block, expected, message ) {
-		var actual,
-			ok = false;
-
-		if ( typeof expected === "string" ) {
-			message = expected;
-			expected = null;
-		}
-
-		config.current.ignoreGlobalErrors = true;
-		try {
-			block.call( config.current.testEnvironment );
-		} catch (e) {
-			actual = e;
-		}
-		config.current.ignoreGlobalErrors = false;
-
-		if ( actual ) {
-			// we don't want to validate thrown error
-			if ( !expected ) {
-				ok = true;
-			// expected is a regexp
-			} else if ( QUnit.objectType( expected ) === "regexp" ) {
-				ok = expected.test( actual );
-			// expected is a constructor
-			} else if ( actual instanceof expected ) {
-				ok = true;
-			// expected is a validation function which returns true is validation passed
-			} else if ( expected.call( {}, actual ) === true ) {
-				ok = true;
-			}
-		}
-
-		QUnit.push( ok, actual, null, message );
-	}
-};
-
-// @deprecated: Kept assertion helpers in root for backwards compatibility
-extend( QUnit, QUnit.assert );
-
-/**
- * @deprecated: Kept for backwards compatibility
- * next step: remove entirely
- */
-QUnit.equals = function() {
-	QUnit.push( false, false, false, "QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead" );
-};
-QUnit.same = function() {
-	QUnit.push( false, false, false, "QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead" );
-};
-
-// We want access to the constructor's prototype
-(function() {
-	function F() {}
-	F.prototype = QUnit;
-	QUnit = new F();
-	// Make F QUnit's constructor so that we can add to the prototype later
-	QUnit.constructor = F;
-}());
-
-/**
- * Config object: Maintain internal state
- * Later exposed as QUnit.config
- * `config` initialized at top of scope
- */
-config = {
-	// The queue of tests to run
-	queue: [],
-
-	// block until document ready
-	blocking: true,
-
-	// when enabled, show only failing tests
-	// gets persisted through sessionStorage and can be changed in UI via checkbox
-	hidepassed: false,
-
-	// by default, run previously failed tests first
-	// very useful in combination with "Hide passed tests" checked
-	reorder: true,
-
-	// by default, modify document.title when suite is done
-	altertitle: true,
-
-	// when enabled, all tests must call expect()
-	requireExpects: false,
-
-	urlConfig: [ "noglobals", "notrycatch" ],
-
-	// logging callback queues
-	begin: [],
-	done: [],
-	log: [],
-	testStart: [],
-	testDone: [],
-	moduleStart: [],
-	moduleDone: []
-};
-
-// Initialize more QUnit.config and QUnit.urlParams
-(function() {
-	var i,
-		location = window.location || { search: "", protocol: "file:" },
-		params = location.search.slice( 1 ).split( "&" ),
-		length = params.length,
-		urlParams = {},
-		current;
-
-	if ( params[ 0 ] ) {
-		for ( i = 0; i < length; i++ ) {
-			current = params[ i ].split( "=" );
-			current[ 0 ] = decodeURIComponent( current[ 0 ] );
-			// allow just a key to turn on a flag, e.g., test.html?noglobals
-			current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;
-			urlParams[ current[ 0 ] ] = current[ 1 ];
-		}
-	}
-
-	QUnit.urlParams = urlParams;
-
-	// String search anywhere in moduleName+testName
-	config.filter = urlParams.filter;
-
-	// Exact match of the module name
-	config.module = urlParams.module;
-
-	config.testNumber = parseInt( urlParams.testNumber, 10 ) || null;
-
-	// Figure out if we're running the tests from a server or not
-	QUnit.isLocal = location.protocol === "file:";
-}());
-
-// Export global variables, unless an 'exports' object exists,
-// in that case we assume we're in CommonJS (dealt with on the bottom of the script)
-if ( typeof exports === "undefined" ) {
-	extend( window, QUnit );
-
-	// Expose QUnit object
-	window.QUnit = QUnit;
-}
-
-// Extend QUnit object,
-// these after set here because they should not be exposed as global functions
-extend( QUnit, {
-	config: config,
-
-	// Initialize the configuration options
-	init: function() {
-		extend( config, {
-			stats: { all: 0, bad: 0 },
-			moduleStats: { all: 0, bad: 0 },
-			started: +new Date(),
-			updateRate: 1000,
-			blocking: false,
-			autostart: true,
-			autorun: false,
-			filter: "",
-			queue: [],
-			semaphore: 0
-		});
-
-		var tests, banner, result,
-			qunit = id( "qunit" );
-
-		if ( qunit ) {
-			qunit.innerHTML =
-				"<h1 id='qunit-header'>" + escapeInnerText( document.title ) + "</h1>" +
-				"<h2 id='qunit-banner'></h2>" +
-				"<div id='qunit-testrunner-toolbar'></div>" +
-				"<h2 id='qunit-userAgent'></h2>" +
-				"<ol id='qunit-tests'></ol>";
-		}
-
-		tests = id( "qunit-tests" );
-		banner = id( "qunit-banner" );
-		result = id( "qunit-testresult" );
-
-		if ( tests ) {
-			tests.innerHTML = "";
-		}
-
-		if ( banner ) {
-			banner.className = "";
-		}
-
-		if ( result ) {
-			result.parentNode.removeChild( result );
-		}
-
-		if ( tests ) {
-			result = document.createElement( "p" );
-			result.id = "qunit-testresult";
-			result.className = "result";
-			tests.parentNode.insertBefore( result, tests );
-			result.innerHTML = "Running...<br/>&nbsp;";
-		}
-	},
-
-	// Resets the test setup. Useful for tests that modify the DOM.
-	// If jQuery is available, uses jQuery's html(), otherwise just innerHTML.
-	reset: function() {
-		var fixture;
-
-		if ( window.jQuery ) {
-			jQuery( "#qunit-fixture" ).html( config.fixture );
-		} else {
-			fixture = id( "qunit-fixture" );
-			if ( fixture ) {
-				fixture.innerHTML = config.fixture;
-			}
-		}
-	},
-
-	// Trigger an event on an element.
-	// @example triggerEvent( document.body, "click" );
-	triggerEvent: function( elem, type, event ) {
-		if ( document.createEvent ) {
-			event = document.createEvent( "MouseEvents" );
-			event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
-				0, 0, 0, 0, 0, false, false, false, false, 0, null);
-
-			elem.dispatchEvent( event );
-		} else if ( elem.fireEvent ) {
-			elem.fireEvent( "on" + type );
-		}
-	},
-
-	// Safe object type checking
-	is: function( type, obj ) {
-		return QUnit.objectType( obj ) == type;
-	},
-
-	objectType: function( obj ) {
-		if ( typeof obj === "undefined" ) {
-				return "undefined";
-		// consider: typeof null === object
-		}
-		if ( obj === null ) {
-				return "null";
-		}
-
-		var type = toString.call( obj ).match(/^\[object\s(.*)\]$/)[1] || "";
-
-		switch ( type ) {
-			case "Number":
-				if ( isNaN(obj) ) {
-					return "nan";
-				}
-				return "number";
-			case "String":
-			case "Boolean":
-			case "Array":
-			case "Date":
-			case "RegExp":
-			case "Function":
-				return type.toLowerCase();
-		}
-		if ( typeof obj === "object" ) {
-			return "object";
-		}
-		return undefined;
-	},
-
-	push: function( result, actual, expected, message ) {
-		if ( !config.current ) {
-			throw new Error( "assertion outside test context, was " + sourceFromStacktrace() );
-		}
-
-		var output, source,
-			details = {
-				result: result,
-				message: message,
-				actual: actual,
-				expected: expected
-			};
-
-		message = escapeInnerText( message ) || ( result ? "okay" : "failed" );
-		message = "<span class='test-message'>" + message + "</span>";
-		output = message;
-
-		if ( !result ) {
-			expected = escapeInnerText( QUnit.jsDump.parse(expected) );
-			actual = escapeInnerText( QUnit.jsDump.parse(actual) );
-			output += "<table><tr class='test-expected'><th>Expected: </th><td><pre>" + expected + "</pre></td></tr>";
-
-			if ( actual != expected ) {
-				output += "<tr class='test-actual'><th>Result: </th><td><pre>" + actual + "</pre></td></tr>";
-				output += "<tr class='test-diff'><th>Diff: </th><td><pre>" + QUnit.diff( expected, actual ) + "</pre></td></tr>";
-			}
-
-			source = sourceFromStacktrace();
-
-			if ( source ) {
-				details.source = source;
-				output += "<tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr>";
-			}
-
-			output += "</table>";
-		}
-
-		runLoggingCallbacks( "log", QUnit, details );
-
-		config.current.assertions.push({
-			result: !!result,
-			message: output
-		});
-	},
-
-	pushFailure: function( message, source ) {
-		if ( !config.current ) {
-			throw new Error( "pushFailure() assertion outside test context, was " + sourceFromStacktrace(2) );
-		}
-
-		var output,
-			details = {
-				result: false,
-				message: message
-			};
-
-		message = escapeInnerText(message ) || "error";
-		message = "<span class='test-message'>" + message + "</span>";
-		output = message;
-
-		if ( source ) {
-			details.source = source;
-			output += "<table><tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr></table>";
-		}
-
-		runLoggingCallbacks( "log", QUnit, details );
-
-		config.current.assertions.push({
-			result: false,
-			message: output
-		});
-	},
-
-	url: function( params ) {
-		params = extend( extend( {}, QUnit.urlParams ), params );
-		var key,
-			querystring = "?";
-
-		for ( key in params ) {
-			if ( !hasOwn.call( params, key ) ) {
-				continue;
-			}
-			querystring += encodeURIComponent( key ) + "=" +
-				encodeURIComponent( params[ key ] ) + "&";
-		}
-		return window.location.pathname + querystring.slice( 0, -1 );
-	},
-
-	extend: extend,
-	id: id,
-	addEvent: addEvent
-	// load, equiv, jsDump, diff: Attached later
-});
-
-/**
- * @deprecated: Created for backwards compatibility with test runner that set the hook function
- * into QUnit.{hook}, instead of invoking it and passing the hook function.
- * QUnit.constructor is set to the empty F() above so that we can add to it's prototype here.
- * Doing this allows us to tell if the following methods have been overwritten on the actual
- * QUnit object.
- */
-extend( QUnit.constructor.prototype, {
-
-	// Logging callbacks; all receive a single argument with the listed properties
-	// run test/logs.html for any related changes
-	begin: registerLoggingCallback( "begin" ),
-
-	// done: { failed, passed, total, runtime }
-	done: registerLoggingCallback( "done" ),
-
-	// log: { result, actual, expected, message }
-	log: registerLoggingCallback( "log" ),
-
-	// testStart: { name }
-	testStart: registerLoggingCallback( "testStart" ),
-
-	// testDone: { name, failed, passed, total }
-	testDone: registerLoggingCallback( "testDone" ),
-
-	// moduleStart: { name }
-	moduleStart: registerLoggingCallback( "moduleStart" ),
-
-	// moduleDone: { name, failed, passed, total }
-	moduleDone: registerLoggingCallback( "moduleDone" )
-});
-
-if ( typeof document === "undefined" || document.readyState === "complete" ) {
-	config.autorun = true;
-}
-
-QUnit.load = function() {
-	runLoggingCallbacks( "begin", QUnit, {} );
-
-	// Initialize the config, saving the execution queue
-	var banner, filter, i, label, len, main, ol, toolbar, userAgent, val,
-		urlConfigHtml = "",
-		oldconfig = extend( {}, config );
-
-	QUnit.init();
-	extend(config, oldconfig);
-
-	config.blocking = false;
-
-	len = config.urlConfig.length;
-
-	for ( i = 0; i < len; i++ ) {
-		val = config.urlConfig[i];
-		config[val] = QUnit.urlParams[val];
-		urlConfigHtml += "<label><input name='" + val + "' type='checkbox'" + ( config[val] ? " checked='checked'" : "" ) + ">" + val + "</label>";
-	}
-
-	// `userAgent` initialized at top of scope
-	userAgent = id( "qunit-userAgent" );
-	if ( userAgent ) {
-		userAgent.innerHTML = navigator.userAgent;
-	}
-
-	// `banner` initialized at top of scope
-	banner = id( "qunit-header" );
-	if ( banner ) {
-		banner.innerHTML = "<a href='" + QUnit.url({ filter: undefined }) + "'>" + banner.innerHTML + "</a> " + urlConfigHtml;
-		addEvent( banner, "change", function( event ) {
-			var params = {};
-			params[ event.target.name ] = event.target.checked ? true : undefined;
-			window.location = QUnit.url( params );
-		});
-	}
-
-	// `toolbar` initialized at top of scope
-	toolbar = id( "qunit-testrunner-toolbar" );
-	if ( toolbar ) {
-		// `filter` initialized at top of scope
-		filter = document.createElement( "input" );
-		filter.type = "checkbox";
-		filter.id = "qunit-filter-pass";
-
-		addEvent( filter, "click", function() {
-			var tmp,
-				ol = document.getElementById( "qunit-tests" );
-
-			if ( filter.checked ) {
-				ol.className = ol.className + " hidepass";
-			} else {
-				tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " ";
-				ol.className = tmp.replace( / hidepass /, " " );
-			}
-			if ( defined.sessionStorage ) {
-				if (filter.checked) {
-					sessionStorage.setItem( "qunit-filter-passed-tests", "true" );
-				} else {
-					sessionStorage.removeItem( "qunit-filter-passed-tests" );
-				}
-			}
-		});
-
-		if ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem( "qunit-filter-passed-tests" ) ) {
-			filter.checked = true;
-			// `ol` initialized at top of scope
-			ol = document.getElementById( "qunit-tests" );
-			ol.className = ol.className + " hidepass";
-		}
-		toolbar.appendChild( filter );
-
-		// `label` initialized at top of scope
-		label = document.createElement( "label" );
-		label.setAttribute( "for", "qunit-filter-pass" );
-		label.innerHTML = "Hide passed tests";
-		toolbar.appendChild( label );
-	}
-
-	// `main` initialized at top of scope
-	main = id( "qunit-fixture" );
-	if ( main ) {
-		config.fixture = main.innerHTML;
-	}
-
-	if ( config.autostart ) {
-		QUnit.start();
-	}
-};
-
-addEvent( window, "load", QUnit.load );
-
-// `onErrorFnPrev` initialized at top of scope
-// Preserve other handlers
-onErrorFnPrev = window.onerror;
-
-// Cover uncaught exceptions
-// Returning true will surpress the default browser handler,
-// returning false will let it run.
-window.onerror = function ( error, filePath, linerNr ) {
-	var ret = false;
-	if ( onErrorFnPrev ) {
-		ret = onErrorFnPrev( error, filePath, linerNr );
-	}
-
-	// Treat return value as window.onerror itself does,
-	// Only do our handling if not surpressed.
-	if ( ret !== true ) {
-		if ( QUnit.config.current ) {
-			if ( QUnit.config.current.ignoreGlobalErrors ) {
-				return true;
-			}
-			QUnit.pushFailure( error, filePath + ":" + linerNr );
-		} else {
-			QUnit.test( "global failure", function() {
-				QUnit.pushFailure( error, filePath + ":" + linerNr );
-			});
-		}
-		return false;
-	}
-
-	return ret;
-};
-
-function done() {
-	config.autorun = true;
-
-	// Log the last module results
-	if ( config.currentModule ) {
-		runLoggingCallbacks( "moduleDone", QUnit, {
-			name: config.currentModule,
-			failed: config.moduleStats.bad,
-			passed: config.moduleStats.all - config.moduleStats.bad,
-			total: config.moduleStats.all
-		});
-	}
-
-	var i, key,
-		banner = id( "qunit-banner" ),
-		tests = id( "qunit-tests" ),
-		runtime = +new Date() - config.started,
-		passed = config.stats.all - config.stats.bad,
-		html = [
-			"Tests completed in ",
-			runtime,
-			" milliseconds.<br/>",
-			"<span class='passed'>",
-			passed,
-			"</span> tests of <span class='total'>",
-			config.stats.all,
-			"</span> passed, <span class='failed'>",
-			config.stats.bad,
-			"</span> failed."
-		].join( "" );
-
-	if ( banner ) {
-		banner.className = ( config.stats.bad ? "qunit-fail" : "qunit-pass" );
-	}
-
-	if ( tests ) {
-		id( "qunit-testresult" ).innerHTML = html;
-	}
-
-	if ( config.altertitle && typeof document !== "undefined" && document.title ) {
-		// show ✖ for good, ✔ for bad suite result in title
-		// use escape sequences in case file gets loaded with non-utf-8-charset
-		document.title = [
-			( config.stats.bad ? "\u2716" : "\u2714" ),
-			document.title.replace( /^[\u2714\u2716] /i, "" )
-		].join( " " );
-	}
-
-	// clear own sessionStorage items if all tests passed
-	if ( config.reorder && defined.sessionStorage && config.stats.bad === 0 ) {
-		// `key` & `i` initialized at top of scope
-		for ( i = 0; i < sessionStorage.length; i++ ) {
-			key = sessionStorage.key( i++ );
-			if ( key.indexOf( "qunit-test-" ) === 0 ) {
-				sessionStorage.removeItem( key );
-			}
-		}
-	}
-
-	runLoggingCallbacks( "done", QUnit, {
-		failed: config.stats.bad,
-		passed: passed,
-		total: config.stats.all,
-		runtime: runtime
-	});
-}
-
-/** @return Boolean: true if this test should be ran */
-function validTest( test ) {
-	var include,
-		filter = config.filter && config.filter.toLowerCase(),
-		module = config.module,
-		fullName = (test.module + ": " + test.testName).toLowerCase();
-
-	if ( config.testNumber ) {
-		return test.testNumber === config.testNumber;
-	}
-
-	if ( module && test.module !== module ) {
-		return false;
-	}
-
-	if ( !filter ) {
-		return true;
-	}
-
-	include = filter.charAt( 0 ) !== "!";
-	if ( !include ) {
-		filter = filter.slice( 1 );
-	}
-
-	// If the filter matches, we need to honour include
-	if ( fullName.indexOf( filter ) !== -1 ) {
-		return include;
-	}
-
-	// Otherwise, do the opposite
-	return !include;
-}
-
-// so far supports only Firefox, Chrome and Opera (buggy), Safari (for real exceptions)
-// Later Safari and IE10 are supposed to support error.stack as well
-// See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack
-function extractStacktrace( e, offset ) {
-	offset = offset === undefined ? 3 : offset;
-
-	var stack, include, i, regex;
-
-	if ( e.stacktrace ) {
-		// Opera
-		return e.stacktrace.split( "\n" )[ offset + 3 ];
-	} else if ( e.stack ) {
-		// Firefox, Chrome
-		stack = e.stack.split( "\n" );
-		if (/^error$/i.test( stack[0] ) ) {
-			stack.shift();
-		}
-		if ( fileName ) {
-			include = [];
-			for ( i = offset; i < stack.length; i++ ) {
-				if ( stack[ i ].indexOf( fileName ) != -1 ) {
-					break;
-				}
-				include.push( stack[ i ] );
-			}
-			if ( include.length ) {
-				return include.join( "\n" );
-			}
-		}
-		return stack[ offset ];
-	} else if ( e.sourceURL ) {
-		// Safari, PhantomJS
-		// hopefully one day Safari provides actual stacktraces
-		// exclude useless self-reference for generated Error objects
-		if ( /qunit.js$/.test( e.sourceURL ) ) {
-			return;
-		}
-		// for actual exceptions, this is useful
-		return e.sourceURL + ":" + e.line;
-	}
-}
-function sourceFromStacktrace( offset ) {
-	try {
-		throw new Error();
-	} catch ( e ) {
-		return extractStacktrace( e, offset );
-	}
-}
-
-function escapeInnerText( s ) {
-	if ( !s ) {
-		return "";
-	}
-	s = s + "";
-	return s.replace( /[\&<>]/g, function( s ) {
-		switch( s ) {
-			case "&": return "&amp;";
-			case "<": return "&lt;";
-			case ">": return "&gt;";
-			default: return s;
-		}
-	});
-}
-
-function synchronize( callback, last ) {
-	config.queue.push( callback );
-
-	if ( config.autorun && !config.blocking ) {
-		process( last );
-	}
-}
-
-function process( last ) {
-	function next() {
-		process( last );
-	}
-	var start = new Date().getTime();
-	config.depth = config.depth ? config.depth + 1 : 1;
-
-	while ( config.queue.length && !config.blocking ) {
-		if ( !defined.setTimeout || config.updateRate <= 0 || ( ( new Date().getTime() - start ) < config.updateRate ) ) {
-			config.queue.shift()();
-		} else {
-			window.setTimeout( next, 13 );
-			break;
-		}
-	}
-	config.depth--;
-	if ( last && !config.blocking && !config.queue.length && config.depth === 0 ) {
-		done();
-	}
-}
-
-function saveGlobal() {
-	config.pollution = [];
-
-	if ( config.noglobals ) {
-		for ( var key in window ) {
-			// in Opera sometimes DOM element ids show up here, ignore them
-			if ( !hasOwn.call( window, key ) || /^qunit-test-output/.test( key ) ) {
-				continue;
-			}
-			config.pollution.push( key );
-		}
-	}
-}
-
-function checkPollution( name ) {
-	var newGlobals,
-		deletedGlobals,
-		old = config.pollution;
-
-	saveGlobal();
-
-	newGlobals = diff( config.pollution, old );
-	if ( newGlobals.length > 0 ) {
-		QUnit.pushFailure( "Introduced global variable(s): " + newGlobals.join(", ") );
-	}
-
-	deletedGlobals = diff( old, config.pollution );
-	if ( deletedGlobals.length > 0 ) {
-		QUnit.pushFailure( "Deleted global variable(s): " + deletedGlobals.join(", ") );
-	}
-}
-
-// returns a new Array with the elements that are in a but not in b
-function diff( a, b ) {
-	var i, j,
-		result = a.slice();
-
-	for ( i = 0; i < result.length; i++ ) {
-		for ( j = 0; j < b.length; j++ ) {
-			if ( result[i] === b[j] ) {
-				result.splice( i, 1 );
-				i--;
-				break;
-			}
-		}
-	}
-	return result;
-}
-
-function extend( a, b ) {
-	for ( var prop in b ) {
-		if ( b[ prop ] === undefined ) {
-			delete a[ prop ];
-
-		// Avoid "Member not found" error in IE8 caused by setting window.constructor
-		} else if ( prop !== "constructor" || a !== window ) {
-			a[ prop ] = b[ prop ];
-		}
-	}
-
-	return a;
-}
-
-function addEvent( elem, type, fn ) {
-	if ( elem.addEventListener ) {
-		elem.addEventListener( type, fn, false );
-	} else if ( elem.attachEvent ) {
-		elem.attachEvent( "on" + type, fn );
-	} else {
-		fn();
-	}
-}
-
-function id( name ) {
-	return !!( typeof document !== "undefined" && document && document.getElementById ) &&
-		document.getElementById( name );
-}
-
-function registerLoggingCallback( key ) {
-	return function( callback ) {
-		config[key].push( callback );
-	};
-}
-
-// Supports deprecated method of completely overwriting logging callbacks
-function runLoggingCallbacks( key, scope, args ) {
-	//debugger;
-	var i, callbacks;
-	if ( QUnit.hasOwnProperty( key ) ) {
-		QUnit[ key ].call(scope, args );
-	} else {
-		callbacks = config[ key ];
-		for ( i = 0; i < callbacks.length; i++ ) {
-			callbacks[ i ].call( scope, args );
-		}
-	}
-}
-
-// Test for equality any JavaScript type.
-// Author: Philippe Rathé <pr...@gmail.com>
-QUnit.equiv = (function() {
-
-	// Call the o related callback with the given arguments.
-	function bindCallbacks( o, callbacks, args ) {
-		var prop = QUnit.objectType( o );
-		if ( prop ) {
-			if ( QUnit.objectType( callbacks[ prop ] ) === "function" ) {
-				return callbacks[ prop ].apply( callbacks, args );
-			} else {
-				return callbacks[ prop ]; // or undefined
-			}
-		}
-	}
-
-	// the real equiv function
-	var innerEquiv,
-		// stack to decide between skip/abort functions
-		callers = [],
-		// stack to avoiding loops from circular referencing
-		parents = [],
-
-		getProto = Object.getPrototypeOf || function ( obj ) {
-			return obj.__proto__;
-		},
-		callbacks = (function () {
-
-			// for string, boolean, number and null
-			function useStrictEquality( b, a ) {
-				if ( b instanceof a.constructor || a instanceof b.constructor ) {
-					// to catch short annotaion VS 'new' annotation of a
-					// declaration
-					// e.g. var i = 1;
-					// var j = new Number(1);
-					return a == b;
-				} else {
-					return a === b;
-				}
-			}
-
-			return {
-				"string": useStrictEquality,
-				"boolean": useStrictEquality,
-				"number": useStrictEquality,
-				"null": useStrictEquality,
-				"undefined": useStrictEquality,
-
-				"nan": function( b ) {
-					return isNaN( b );
-				},
-
-				"date": function( b, a ) {
-					return QUnit.objectType( b ) === "date" && a.valueOf() === b.valueOf();
-				},
-
-				"regexp": function( b, a ) {
-					return QUnit.objectType( b ) === "regexp" &&
-						// the regex itself
-						a.source === b.source &&
-						// and its modifers
-						a.global === b.global &&
-						// (gmi) ...
-						a.ignoreCase === b.ignoreCase &&
-						a.multiline === b.multiline;
-				},
-
-				// - skip when the property is a method of an instance (OOP)
-				// - abort otherwise,
-				// initial === would have catch identical references anyway
-				"function": function() {
-					var caller = callers[callers.length - 1];
-					return caller !== Object && typeof caller !== "undefined";
-				},
-
-				"array": function( b, a ) {
-					var i, j, len, loop;
-
-					// b could be an object literal here
-					if ( QUnit.objectType( b ) !== "array" ) {
-						return false;
-					}
-
-					len = a.length;
-					if ( len !== b.length ) {
-						// safe and faster
-						return false;
-					}
-
-					// track reference to avoid circular references
-					parents.push( a );
-					for ( i = 0; i < len; i++ ) {
-						loop = false;
-						for ( j = 0; j < parents.length; j++ ) {
-							if ( parents[j] === a[i] ) {
-								loop = true;// dont rewalk array
-							}
-						}
-						if ( !loop && !innerEquiv(a[i], b[i]) ) {
-							parents.pop();
-							return false;
-						}
-					}
-					parents.pop();
-					return true;
-				},
-
-				"object": function( b, a ) {
-					var i, j, loop,
-						// Default to true
-						eq = true,
-						aProperties = [],
-						bProperties = [];
-
-					// comparing constructors is more strict than using
-					// instanceof
-					if ( a.constructor !== b.constructor ) {
-						// Allow objects with no prototype to be equivalent to
-						// objects with Object as their constructor.
-						if ( !(( getProto(a) === null && getProto(b) === Object.prototype ) ||
-							( getProto(b) === null && getProto(a) === Object.prototype ) ) ) {
-								return false;
-						}
-					}
-
-					// stack constructor before traversing properties
-					callers.push( a.constructor );
-					// track reference to avoid circular references
-					parents.push( a );
-
-					for ( i in a ) { // be strict: don't ensures hasOwnProperty
-									// and go deep
-						loop = false;
-						for ( j = 0; j < parents.length; j++ ) {
-							if ( parents[j] === a[i] ) {
-								// don't go down the same path twice
-								loop = true;
-							}
-						}
-						aProperties.push(i); // collect a's properties
-
-						if (!loop && !innerEquiv( a[i], b[i] ) ) {
-							eq = false;
-							break;
-						}
-					}
-
-					callers.pop(); // unstack, we are done
-					parents.pop();
-
-					for ( i in b ) {
-						bProperties.push( i ); // collect b's properties
-					}
-
-					// Ensures identical properties name
-					return eq && innerEquiv( aProperties.sort(), bProperties.sort() );
-				}
-			};
-		}());
-
-	innerEquiv = function() { // can take multiple arguments
-		var args = [].slice.apply( arguments );
-		if ( args.length < 2 ) {
-			return true; // end transition
-		}
-
-		return (function( a, b ) {
-			if ( a === b ) {
-				return true; // catch the most you can
-			} else if ( a === null || b === null || typeof a === "undefined" ||
-					typeof b === "undefined" ||
-					QUnit.objectType(a) !== QUnit.objectType(b) ) {
-				return false; // don't lose time with error prone cases
-			} else {
-				return bindCallbacks(a, callbacks, [ b, a ]);
-			}
-
-			// apply transition with (1..n) arguments
-		}( args[0], args[1] ) && arguments.callee.apply( this, args.splice(1, args.length - 1 )) );
-	};
-
-	return innerEquiv;
-}());
-
-/**
- * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com |
- * http://flesler.blogspot.com Licensed under BSD
- * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008
- *
- * @projectDescription Advanced and extensible data dumping for Javascript.
- * @version 1.0.0
- * @author Ariel Flesler
- * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}
- */
-QUnit.jsDump = (function() {
-	function quote( str ) {
-		return '"' + str.toString().replace( /"/g, '\\"' ) + '"';
-	}
-	function literal( o ) {
-		return o + "";
-	}
-	function join( pre, arr, post ) {
-		var s = jsDump.separator(),
-			base = jsDump.indent(),
-			inner = jsDump.indent(1);
-		if ( arr.join ) {
-			arr = arr.join( "," + s + inner );
-		}
-		if ( !arr ) {
-			return pre + post;
-		}
-		return [ pre, inner + arr, base + post ].join(s);
-	}
-	function array( arr, stack ) {
-		var i = arr.length, ret = new Array(i);
-		this.up();
-		while ( i-- ) {
-			ret[i] = this.parse( arr[i] , undefined , stack);
-		}
-		this.down();
-		return join( "[", ret, "]" );
-	}
-
-	var reName = /^function (\w+)/,
-		jsDump = {
-			parse: function( obj, type, stack ) { //type is used mostly internally, you can fix a (custom)type in advance
-				stack = stack || [ ];
-				var inStack, res,
-					parser = this.parsers[ type || this.typeOf(obj) ];
-
-				type = typeof parser;
-				inStack = inArray( obj, stack );
-
-				if ( inStack != -1 ) {
-					return "recursion(" + (inStack - stack.length) + ")";
-				}
-				//else
-				if ( type == "function" )  {
-					stack.push( obj );
-					res = parser.call( this, obj, stack );
-					stack.pop();
-					return res;
-				}
-				// else
-				return ( type == "string" ) ? parser : this.parsers.error;
-			},
-			typeOf: function( obj ) {
-				var type;
-				if ( obj === null ) {
-					type = "null";
-				} else if ( typeof obj === "undefined" ) {
-					type = "undefined";
-				} else if ( QUnit.is( "regexp", obj) ) {
-					type = "regexp";
-				} else if ( QUnit.is( "date", obj) ) {
-					type = "date";
-				} else if ( QUnit.is( "function", obj) ) {
-					type = "function";
-				} else if ( typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined" ) {
-					type = "window";
-				} else if ( obj.nodeType === 9 ) {
-					type = "document";
-				} else if ( obj.nodeType ) {
-					type = "node";
-				} else if (
-					// native arrays
-					toString.call( obj ) === "[object Array]" ||
-					// NodeList objects
-					( typeof obj.length === "number" && typeof obj.item !== "undefined" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === "undefined" ) ) )
-				) {
-					type = "array";
-				} else {
-					type = typeof obj;
-				}
-				return type;
-			},
-			separator: function() {
-				return this.multiline ?	this.HTML ? "<br />" : "\n" : this.HTML ? "&nbsp;" : " ";
-			},
-			indent: function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing
-				if ( !this.multiline ) {
-					return "";
-				}
-				var chr = this.indentChar;
-				if ( this.HTML ) {
-					chr = chr.replace( /\t/g, "   " ).replace( / /g, "&nbsp;" );
-				}
-				return new Array( this._depth_ + (extra||0) ).join(chr);
-			},
-			up: function( a ) {
-				this._depth_ += a || 1;
-			},
-			down: function( a ) {
-				this._depth_ -= a || 1;
-			},
-			setParser: function( name, parser ) {
-				this.parsers[name] = parser;
-			},
-			// The next 3 are exposed so you can use them
-			quote: quote,
-			literal: literal,
-			join: join,
-			//
-			_depth_: 1,
-			// This is the list of parsers, to modify them, use jsDump.setParser
-			parsers: {
-				window: "[Window]",
-				document: "[Document]",
-				error: "[ERROR]", //when no parser is found, shouldn"t happen
-				unknown: "[Unknown]",
-				"null": "null",
-				"undefined": "undefined",
-				"function": function( fn ) {
-					var ret = "function",
-						name = "name" in fn ? fn.name : (reName.exec(fn) || [])[1];//functions never have name in IE
-
-					if ( name ) {
-						ret += " " + name;
-					}
-					ret += "( ";
-
-					ret = [ ret, QUnit.jsDump.parse( fn, "functionArgs" ), "){" ].join( "" );
-					return join( ret, QUnit.jsDump.parse(fn,"functionCode" ), "}" );
-				},
-				array: array,
-				nodelist: array,
-				"arguments": array,
-				object: function( map, stack ) {
-					var ret = [ ], keys, key, val, i;
-					QUnit.jsDump.up();
-					if ( Object.keys ) {
-						keys = Object.keys( map );
-					} else {
-						keys = [];
-						for ( key in map ) {
-							keys.push( key );
-						}
-					}
-					keys.sort();
-					for ( i = 0; i < keys.length; i++ ) {
-						key = keys[ i ];
-						val = map[ key ];
-						ret.push( QUnit.jsDump.parse( key, "key" ) + ": " + QUnit.jsDump.parse( val, undefined, stack ) );
-					}
-					QUnit.jsDump.down();
-					return join( "{", ret, "}" );
-				},
-				node: function( node ) {
-					var a, val,
-						open = QUnit.jsDump.HTML ? "&lt;" : "<",
-						close = QUnit.jsDump.HTML ? "&gt;" : ">",
-						tag = node.nodeName.toLowerCase(),
-						ret = open + tag;
-
-					for ( a in QUnit.jsDump.DOMAttrs ) {
-						val = node[ QUnit.jsDump.DOMAttrs[a] ];
-						if ( val ) {
-							ret += " " + a + "=" + QUnit.jsDump.parse( val, "attribute" );
-						}
-					}
-					return ret + close + open + "/" + tag + close;
-				},
-				functionArgs: function( fn ) {//function calls it internally, it's the arguments part of the function
-					var args,
-						l = fn.length;
-
-					if ( !l ) {
-						return "";
-					}
-
-					args = new Array(l);
-					while ( l-- ) {
-						args[l] = String.fromCharCode(97+l);//97 is 'a'
-					}
-					return " " + args.join( ", " ) + " ";
-				},
-				key: quote, //object calls it internally, the key part of an item in a map
-				functionCode: "[code]", //function calls it internally, it's the content of the function
-				attribute: quote, //node calls it internally, it's an html attribute value
-				string: quote,
-				date: quote,
-				regexp: literal, //regex
-				number: literal,
-				"boolean": literal
-			},
-			DOMAttrs: {
-				//attributes to dump from nodes, name=>realName
-				id: "id",
-				name: "name",
-				"class": "className"
-			},
-			HTML: false,//if true, entities are escaped ( <, >, \t, space and \n )
-			indentChar: "  ",//indentation unit
-			multiline: true //if true, items in a collection, are separated by a \n, else just a space.
-		};
-
-	return jsDump;
-}());
-
-// from Sizzle.js
-function getText( elems ) {
-	var i, elem,
-		ret = "";
-
-	for ( i = 0; elems[i]; i++ ) {
-		elem = elems[i];
-
-		// Get the text from text nodes and CDATA nodes
-		if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
-			ret += elem.nodeValue;
-
-		// Traverse everything else, except comment nodes
-		} else if ( elem.nodeType !== 8 ) {
-			ret += getText( elem.childNodes );
-		}
-	}
-
-	return ret;
-}
-
-// from jquery.js
-function inArray( elem, array ) {
-	if ( array.indexOf ) {
-		return array.indexOf( elem );
-	}
-
-	for ( var i = 0, length = array.length; i < length; i++ ) {
-		if ( array[ i ] === elem ) {
-			return i;
-		}
-	}
-
-	return -1;
-}
-
-/*
- * Javascript Diff Algorithm
- *  By John Resig (http://ejohn.org/)
- *  Modified by Chu Alan "sprite"
- *
- * Released under the MIT license.
- *
- * More Info:
- *  http://ejohn.org/projects/javascript-diff-algorithm/
- *
- * Usage: QUnit.diff(expected, actual)
- *
- * QUnit.diff( "the quick brown fox jumped over", "the quick fox jumps over" ) == "the  quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over"
- */
-QUnit.diff = (function() {
-	function diff( o, n ) {
-		var i,
-			ns = {},
-			os = {};
-
-		for ( i = 0; i < n.length; i++ ) {
-			if ( ns[ n[i] ] == null ) {
-				ns[ n[i] ] = {
-					rows: [],
-					o: null
-				};
-			}
-			ns[ n[i] ].rows.push( i );
-		}
-
-		for ( i = 0; i < o.length; i++ ) {
-			if ( os[ o[i] ] == null ) {
-				os[ o[i] ] = {
-					rows: [],
-					n: null
-				};
-			}
-			os[ o[i] ].rows.push( i );
-		}
-
-		for ( i in ns ) {
-			if ( !hasOwn.call( ns, i ) ) {
-				continue;
-			}
-			if ( ns[i].rows.length == 1 && typeof os[i] != "undefined" && os[i].rows.length == 1 ) {
-				n[ ns[i].rows[0] ] = {
-					text: n[ ns[i].rows[0] ],
-					row: os[i].rows[0]
-				};
-				o[ os[i].rows[0] ] = {
-					text: o[ os[i].rows[0] ],
-					row: ns[i].rows[0]
-				};
-			}
-		}
-
-		for ( i = 0; i < n.length - 1; i++ ) {
-			if ( n[i].text != null && n[ i + 1 ].text == null && n[i].row + 1 < o.length && o[ n[i].row + 1 ].text == null &&
-						n[ i + 1 ] == o[ n[i].row + 1 ] ) {
-
-				n[ i + 1 ] = {
-					text: n[ i + 1 ],
-					row: n[i].row + 1
-				};
-				o[ n[i].row + 1 ] = {
-					text: o[ n[i].row + 1 ],
-					row: i + 1
-				};
-			}
-		}
-
-		for ( i = n.length - 1; i > 0; i-- ) {
-			if ( n[i].text != null && n[ i - 1 ].text == null && n[i].row > 0 && o[ n[i].row - 1 ].text == null &&
-						n[ i - 1 ] == o[ n[i].row - 1 ]) {
-
-				n[ i - 1 ] = {
-					text: n[ i - 1 ],
-					row: n[i].row - 1
-				};
-				o[ n[i].row - 1 ] = {
-					text: o[ n[i].row - 1 ],
-					row: i - 1
-				};
-			}
-		}
-
-		return {
-			o: o,
-			n: n
-		};
-	}
-
-	return function( o, n ) {
-		o = o.replace( /\s+$/, "" );
-		n = n.replace( /\s+$/, "" );
-
-		var i, pre,
-			str = "",
-			out = diff( o === "" ? [] : o.split(/\s+/), n === "" ? [] : n.split(/\s+/) ),
-			oSpace = o.match(/\s+/g),
-			nSpace = n.match(/\s+/g);
-
-		if ( oSpace == null ) {
-			oSpace = [ " " ];
-		}
-		else {
-			oSpace.push( " " );
-		}
-
-		if ( nSpace == null ) {
-			nSpace = [ " " ];
-		}
-		else {
-			nSpace.push( " " );
-		}
-
-		if ( out.n.length === 0 ) {
-			for ( i = 0; i < out.o.length; i++ ) {
-				str += "<del>" + out.o[i] + oSpace[i] + "</del>";
-			}
-		}
-		else {
-			if ( out.n[0].text == null ) {
-				for ( n = 0; n < out.o.length && out.o[n].text == null; n++ ) {
-					str += "<del>" + out.o[n] + oSpace[n] + "</del>";
-				}
-			}
-
-			for ( i = 0; i < out.n.length; i++ ) {
-				if (out.n[i].text == null) {
-					str += "<ins>" + out.n[i] + nSpace[i] + "</ins>";
-				}
-				else {
-					// `pre` initialized at top of scope
-					pre = "";
-
-					for ( n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++ ) {
-						pre += "<del>" + out.o[n] + oSpace[n] + "</del>";
-					}
-					str += " " + out.n[i].text + nSpace[i] + pre;
-				}
-			}
-		}
-
-		return str;
-	};
-}());
-
-// for CommonJS enviroments, export everything
-if ( typeof exports !== "undefined" ) {
-	extend(exports, QUnit);
-}
-
-// get at whatever the global object is, like window in browsers
-}( (function() {return this;}.call()) ));

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/unit-tests/appSDK-tests.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/unit-tests/appSDK-tests.js b/deleted/archive/js/unit-tests/appSDK-tests.js
deleted file mode 100644
index 698ecad..0000000
--- a/deleted/archive/js/unit-tests/appSDK-tests.js
+++ /dev/null
@@ -1,255 +0,0 @@
-/**
- * @author tPeregrina
- */
-
-function initCore(){
-    prepareLocalStorage();
-    parseParams();    
-           
-};
-
-function cleanFixture(){
-	var $fixture = $("#qunit-fixture");
-	$fixture.children("*").remove("*");
-};
-
-function printScope(scope){
-	for (name in scope){
-		console.log("this["+name+"]");
-	};
-};
-
-
-function loginWithCredentials(calledFunction){	
-	
-	var formdata = {		
-      	grant_type: "password",
-     	username: credentials.login,
-     	password: credentials.password
-   	 	};   		
-		apiClient.runManagementQuery(new Usergrid.Query('GET', 'token', null, formdata,
-		//Success callback
-		function(data){		
-			if(data){
-				calledFunction(data.access_token);
-			};				
-		}, defaultError));
-};
-//CLEANUP: used to remove users created programatically
-function deleteUser(uuid){
-	loginWithCredentials(function(token){
-		apiClient.setToken(token)
-		apiClient.setOrganizationName(mockOrg.UUID);
-		apiClient.setApplicationName(mockOrg.mockApp.UUID);
-		apiClient.runAppQuery(new Usergrid.Query("DELETE", 'users/' + uuid, null, null));
-		console.log("CLEANUP: DELETED USER UUID: " + uuid);		
-	});
-};
-
-//SETUP: used to create users to be deleted or modified
-function createUser(){
-	var uuid;
-	var data = getMockUserData();
-	loginWithCredentials(function(){
-		APIClient.setToken();		
-		apiClient.setOrganizationName(mockOrg.UUID);
-		apiClient.setApplicationName(mockOrg.mockApp.UUID);	
-		apiClient.runAppQuery(new Usergrid.Query("POST", 'users', data, null,
-		function(data){
-			console.log(data.entities[0].uuid);
-			credentials.UUID = data.entities[0].uuid;
-		}));		
-	});
-	
-};
-
-function getMockUserData(){
-	var userMod = "1";
-	var data = {
-		username: mockCreateUser.baseUserName + userMod,
-		name: mockCreateUser.baseName,
-		email: mockCreateUser.emailHead + userMod + mockCreateUser.emailTail,
-		password: mockCreateUser.password,
-	}	
-	return data;
-};
-
-/*
-* Fixtures
-*/
-var	credentials = {		
-		login :"tperegrina@nearbpo.com",
-		password:"123456789",
-		UUID: "",
-		userName: "",		
-};
-	
-var apiClient = APIClient;
-
-var mockOrg = {
-	UUID : "af32c228-d745-11e1-b36a-12313b01d5c1",
-	mockApp: {
-		name: "SANDBOX",
-		UUID: "af4fe725-d745-11e1-b36a-12313b01d5c1",
-	},
-	name: "MusicOrg",
-};
-var mockUser = {
-	username: "User1",
-	name:"Ann User",
-	email :"annUser@AnnUserEnterprises.com",
-	password:"123456789",
-	UUID: "08bc0ec6-dbf8-11e1-93e3-12313b0c5c38",	
-};
-var mockCreateUser = {
-	baseUserName: "User-",
-	baseName : "Mock User",
-	emailHead: "MockUser-",
-	emailTail: "@mockuser.com",
-	password: "12345679",
-	UUID: "",
-}
-/*
-*Default Callbacks
-*/
-function defaultSuccess(data, status, xhr) {
-  start();
-  if (data) {
-	console.log(data);
-  } else {
-	console.log('no data');
-  }  
-  ok(true, "yahoo!!!");
-};
-function userCreateSuccess(data, status, xhr){
-	start();
-	var uuid = data.entities[0].uuid;
-	deleteUser(uuid);
-	ok(true, "UserCreated Success ID:" + uuid);
-}
-
-function defaultError(xhr, status, error) {
-  start();
-  console.log(xhr);
-  console.log('boo!');
-  throw new Error("error!");
-}
-
-module("login", {
-	setup:function(){		
-		initCore();
-		Usergrid.userSession.clearAll();
-	},//FIN SETUP
-	teardown:function(){
-		 cleanFixture();
-	}//END TEARDOWN
-});//END MODULE DEFINITION
-
-asyncTest("login with credentials", function(){
-	expect(1);	
-	loginWithCredentials(function(token){
-		start();		
-		ok(true, "Succesful login TOKEN: " + token);		
-	});
-});
-
-asyncTest("login with Token", function(){	
-	expect(1);	
-	loginWithCredentials(function(token){				
-		apiClient.setToken(token);
-		apiClient.runManagementQuery(new Usergrid.Query("GET","users/" + credentials.login, null, null, defaultSuccess, defaultError));
-	});
-});
-
-module("GET Methods", {
-	setup:function(){		
-		initCore();
-	},//FIN SETUP
-	teardown:function(){
-		 cleanFixture();
-	}//END TEARDOWN
-});//END MODULE DEFINITION
-
-asyncTest("Fetching Apps from Org: " + mockOrg.name + " GET", function(){
-	expect(1);
-	loginWithCredentials(function(token){
-		apiClient.setToken(token);	
-		apiClient.runManagementQuery(new Usergrid.Query("GET", "organizations/" + mockOrg.UUID + "/applications", null, null, defaultSuccess, defaultError));
-	});
-});
-
-asyncTest("Requesting User ID : " + mockUser.UUID + " GET", function(){
-	expect(1);
-	loginWithCredentials(function(token){			
-		apiClient.setToken(token);		
-		apiClient.setOrganizationName(mockOrg.UUID);
-		apiClient.setApplicationName(mockOrg.mockApp.UUID);	
-		apiClient.runAppQuery(new Usergrid.Query("GET", 'users/'+ mockUser.UUID, null, null, defaultSuccess, defaultError));
-	});
-});
-
-module("POST Methods", {
-	setup:function(){		
-		initCore();	
-	},//FIN SETUP
-	teardown:function(){
-		 cleanFixture();
-	}//END TEARDOWN
-});//END MODULE DEFINITION
-
-
-asyncTest("Add new User : " + mockUser.username + " POST", function(){
-	expect(1);		
-		var data = getMockUserData();
-		apiClient.setOrganizationName(mockOrg.UUID);
-		apiClient.setApplicationName(mockOrg.mockApp.UUID);	
-		apiClient.runAppQuery(new Usergrid.Query("POST", 'users', data, null, userCreateSuccess, defaultError));
-});
-
-module("DELETE Methods", {
-	setup:function(){
-		initCore();
-	},
-	teardown:function(){
-		cleanFixture();
-	}
-});
-//TODO: Refractor the user creation out of this method
-asyncTest("Delete User : " + mockUser.username + " DELETE", function(){
-	expect(1);
-	loginWithCredentials(function(token){		
-		apiClient.setToken(token);
-		var data = getMockUserData();
-		apiClient.setOrganizationName(mockOrg.UUID);
-		apiClient.setApplicationName(mockOrg.mockApp.UUID);
-		apiClient.runAppQuery(new Usergrid.Query("POST", 'users', data, null,
-		function(data){
-			console.log(data.entities[0].uuid);
-			var uuid= data.entities[0].uuid;
-			apiClient.runAppQuery(new Usergrid.Query("DELETE", 'users/' + uuid, null, null, defaultSuccess, defaultError));
-		}));			
-		
-	});
-});
-
-module("PUT Methods", {
-	setup:function(){
-		initCore();
-	},
-	teardown:function(){
-		cleanFixture();
-	}
-});
-
-asyncTest("Update AccountUser : " + mockUser.username + " PUT", function(){
-	expect(1);
-	var userData = {
-		username: credentials.login,
-		password: credentials.password,
-		email:	credentials.userName,
-	};
-	apiClient.runManagementQuery(new Usergrid.Query("PUT",'users/' + credentialsUUID, userData, null, userCreateSuccess, defaultError));
-});
-
-
-

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/unit-tests/ie-jquery-tests.js
----------------------------------------------------------------------
diff --git a/deleted/archive/js/unit-tests/ie-jquery-tests.js b/deleted/archive/js/unit-tests/ie-jquery-tests.js
deleted file mode 100644
index 13e4198..0000000
--- a/deleted/archive/js/unit-tests/ie-jquery-tests.js
+++ /dev/null
@@ -1,191 +0,0 @@
-/**
- * @author tPeregrina
- */
-
-/*
- * Intialization
- */
-
-var init = {
-	core: function(){
-		prepareLocalStorage();
-    	parseParams();
-    	init.modAjax();      
-	},
-	modAjax: function(){
-
-	},
-};
-
-/*
- * Callbacks
- */
-
-var cb = {
-	simpleSuccess: function(data){
-		start();		
-	  	if (data) {
-			console.log("DATOS: " + data);
-	  	}else{
-			console.log('no data');
-	  	}  
-	  	ok(true, "Succesful test");		
-	},
-	simpleFailure: function(data, status, xhr){
-		start();
-	  	console.log(xhr);
-	  	console.log('FAIL!');
-	  	throw new Error("error!");		
-	},
-};
-
-/*
- * Utilities
- */
-
-var util = {
-	printScope: function(scope){
-		for (name in scope){
-			console.log("this["+name+"]");
-		};
-	},
-	saveCredentials: function(token){
-		credentials.token = token;
-		console.log("SAVED TOKEN: "+credentials.token);
-	},
-	queryAPI: function(queryType, queryUrl, queryData, successCB, failureCB){
-		if ('XDomainRequest' in window && window.XDomainRequest !== null) {
-		  util.setAjaxToXDom(successCB, failureCB);
-		  $.ajax({
-		  	type: queryType,
-		  	url: queryUrl,
-			data: queryData,
-			contentType: "application/json",
-		  });
-		}else{//REQUEST IS HttpHeadersRequest
-			$.ajax({
-				type: queryType,
-				url: queryUrl,
-				data: queryData,
-				success: successCB,
-				failure: failureCB,
-			});
-		};
-	},
-	setAjaxToXDom:function(success, failure){
-		// override default jQuery transport
-		  jQuery.ajaxSettings.xhr = function(){
-		      try { 
-		        xhr = new XDomainRequest();
-		        xhr.contentType = "application/json";
-				xhr.onload = success;
-				xhr.onerror = failure;
-		        return xhr;}
-		         /*
-		      return new XDomainRequest();}
-		      */
-		      catch(e) { }
-		  };	 
-		  // also, override the support check
-		  jQuery.support.cors = true;	 
-	},
-	login: function(){
-		var loginCredentials = {
-			grant_type: "password",
-			username: credentials.login,
-			password: credentials.password,
-		};
-		
-		var loginUrl = url.base + url.login;
-		
-		function exitoXDom(){
-			response = xhr.responseText;
-			parsedResponse = $.parseJSON(response);
-			util.saveCredentials(parsedResponse.access_token);
-			cb.simpleSuccess(response);
-		};
-		
-		util.queryAPI('GET', loginUrl, loginCredentials, exitoXDom, cb.simpleFailure);		
-		
-	},
-	autoLogin: function(){
-		var tokenURL = url.base + url.autoLogin + credentials.login + url.token + credentials.token;
-		util.queryAPI('GET',tokenURL,null,cb.simpleSuccess, cb.simpleFaillure);
-
-	},
-	createApp: function(){
-		var appURL = url.base + url.managementOrgs + org.UUID + url.app + url.token + credentials.token;
-		var appData = {
-			name : "Nombre Generico 1",
-		}
-		appData = JSON.stringify(appData);
-		console.log("DATOS: " + appData);
-		util.queryAPI('POST', appURL, appData, cb.simpleSuccess, cb.simpleFailure);
-	},
-	createUser: function(){
-		var userUrl= url.base + org.UUID + "/" + org.app.UUID + url.users;
-		var userData = JSON.stringify(mockUser);
-		util.queryAPI('POST', userUrl, userData, cb.simpleSuccess, cb.simpleFailure);		
-	}
-};
-
-/*
- * Fixtures
- */
-
-credentials = {
-	login : "tperegrina@nearbpo.com",
-	password : "123456789",
-	UUID : "",
-	token: "",	
-}
-
-mockUser = {
-	username: "Usuario1",
-	name: "Un Usuario",
-	email: "Usuario@fakeEmailAddress.com",
-	password: "123456789",
-}
-
-apiClient = APIClient;
-
-org = {
-	name: "tperegrina",
-	UUID: "af32c228-d745-11e1-b36a-12313b01d5c1",
-	app: {
-		name: "SANDBOX",
-		UUID: "af4fe725-d745-11e1-b36a-12313b01d5c1",
-	}
-};
-
-
-url = {
-	base: "http://api.usergrid.com/",
-	login: "management/token",
-	autoLogin: "management/users/",
-	managementOrgs : "management/organizations/",
-	app: "/applications",
-	token:	"?access_token=",
-	users: "/users",
-}
-
-/*
- * Tests 
- */
-
-asyncTest("Test CRUD APP", function(){
-	expect(4);
-	start();
-	init.core();
-	util.login();
-	util.autoLogin();
-	util.createApp();
-	util.updateOrg();
-	util.readOrg();
-	util.deleteOrg();	
-});
-
-asyncTest("TEST CRUD USERS", function(){
-	expect(1);
-	util.createUser();
-});

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/archive/js/unit-tests/qunit.css
----------------------------------------------------------------------
diff --git a/deleted/archive/js/unit-tests/qunit.css b/deleted/archive/js/unit-tests/qunit.css
deleted file mode 100644
index a96431a..0000000
--- a/deleted/archive/js/unit-tests/qunit.css
+++ /dev/null
@@ -1,231 +0,0 @@
- /**
- * QUnit v1.10.0pre - A JavaScript Unit Testing Framework
- *
- * http://qunitjs.com
- *
- * Copyright 2012 jQuery Foundation and other contributors
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- */
-
-/** Font Family and Sizes */
-
-#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
-	font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
-}
-
-#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
-#qunit-tests { font-size: smaller; }
-
-
-/** Resets */
-
-#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {
-	margin: 0;
-	padding: 0;
-}
-
-
-/** Header */
-
-#qunit-header {
-	padding: 0.5em 0 0.5em 1em;
-
-	color: #8699a4;
-	background-color: #0d3349;
-
-	font-size: 1.5em;
-	line-height: 1em;
-	font-weight: normal;
-
-	border-radius: 5px 5px 0 0;
-	-moz-border-radius: 5px 5px 0 0;
-	-webkit-border-top-right-radius: 5px;
-	-webkit-border-top-left-radius: 5px;
-}
-
-#qunit-header a {
-	text-decoration: none;
-	color: #c2ccd1;
-}
-
-#qunit-header a:hover,
-#qunit-header a:focus {
-	color: #fff;
-}
-
-#qunit-testrunner-toolbar label {
-	display: inline-block;
-	padding: 0 .5em 0 .1em;
-}
-
-#qunit-banner {
-	height: 5px;
-}
-
-#qunit-testrunner-toolbar {
-	padding: 0.5em 0 0.5em 2em;
-	color: #5E740B;
-	background-color: #eee;
-}
-
-#qunit-userAgent {
-	padding: 0.5em 0 0.5em 2.5em;
-	background-color: #2b81af;
-	color: #fff;
-	text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
-}
-
-
-/** Tests: Pass/Fail */
-
-#qunit-tests {
-	list-style-position: inside;
-}
-
-#qunit-tests li {
-	padding: 0.4em 0.5em 0.4em 2.5em;
-	border-bottom: 1px solid #fff;
-	list-style-position: inside;
-}
-
-#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running  {
-	display: none;
-}
-
-#qunit-tests li strong {
-	cursor: pointer;
-}
-
-#qunit-tests li a {
-	padding: 0.5em;
-	color: #c2ccd1;
-	text-decoration: none;
-}
-#qunit-tests li a:hover,
-#qunit-tests li a:focus {
-	color: #000;
-}
-
-#qunit-tests ol {
-	margin-top: 0.5em;
-	padding: 0.5em;
-
-	background-color: #fff;
-
-	border-radius: 5px;
-	-moz-border-radius: 5px;
-	-webkit-border-radius: 5px;
-}
-
-#qunit-tests table {
-	border-collapse: collapse;
-	margin-top: .2em;
-}
-
-#qunit-tests th {
-	text-align: right;
-	vertical-align: top;
-	padding: 0 .5em 0 0;
-}
-
-#qunit-tests td {
-	vertical-align: top;
-}
-
-#qunit-tests pre {
-	margin: 0;
-	white-space: pre-wrap;
-	word-wrap: break-word;
-}
-
-#qunit-tests del {
-	background-color: #e0f2be;
-	color: #374e0c;
-	text-decoration: none;
-}
-
-#qunit-tests ins {
-	background-color: #ffcaca;
-	color: #500;
-	text-decoration: none;
-}
-
-/*** Test Counts */
-
-#qunit-tests b.counts                       { color: black; }
-#qunit-tests b.passed                       { color: #5E740B; }
-#qunit-tests b.failed                       { color: #710909; }
-
-#qunit-tests li li {
-	padding: 5px;
-	background-color: #fff;
-	border-bottom: none;
-	list-style-position: inside;
-}
-
-/*** Passing Styles */
-
-#qunit-tests li li.pass {
-	color: #3c510c;
-	background-color: #fff;
-	border-left: 10px solid #C6E746;
-}
-
-#qunit-tests .pass                          { color: #528CE0; background-color: #D2E0E6; }
-#qunit-tests .pass .test-name               { color: #366097; }
-
-#qunit-tests .pass .test-actual,
-#qunit-tests .pass .test-expected           { color: #999999; }
-
-#qunit-banner.qunit-pass                    { background-color: #C6E746; }
-
-/*** Failing Styles */
-
-#qunit-tests li li.fail {
-	color: #710909;
-	background-color: #fff;
-	border-left: 10px solid #EE5757;
-	white-space: pre;
-}
-
-#qunit-tests > li:last-child {
-	border-radius: 0 0 5px 5px;
-	-moz-border-radius: 0 0 5px 5px;
-	-webkit-border-bottom-right-radius: 5px;
-	-webkit-border-bottom-left-radius: 5px;
-}
-
-#qunit-tests .fail                          { color: #000000; background-color: #EE5757; }
-#qunit-tests .fail .test-name,
-#qunit-tests .fail .module-name             { color: #000000; }
-
-#qunit-tests .fail .test-actual             { color: #EE5757; }
-#qunit-tests .fail .test-expected           { color: green;   }
-
-#qunit-banner.qunit-fail                    { background-color: #EE5757; }
-
-
-/** Result */
-
-#qunit-testresult {
-	padding: 0.5em 0.5em 0.5em 2.5em;
-
-	color: #2b81af;
-	background-color: #D2E0E6;
-
-	border-bottom: 1px solid white;
-}
-#qunit-testresult .module-name {
-	font-weight: bold;
-}
-
-/** Fixture */
-
-#qunit-fixture {
-	position: absolute;
-	top: -10000px;
-	left: -10000px;
-	width: 1000px;
-	height: 1000px;
-}
\ No newline at end of file